当前位置: 首页 > news >正文

ftp 上传网站海珠区

ftp 上传网站,海珠区,公司网站运营维护单位,网站建设要做哪些工作基础任务 (完成此任务即完成闯关) 任务要求#xff1a;基于 LlamaIndex 构建自己的 RAG 知识库#xff0c;寻找一个问题 A 在使用 LlamaIndex 之前InternLM2-Chat-1.8B模型不会回答#xff0c;借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力#xff0c;截…基础任务 (完成此任务即完成闯关) 任务要求基于 LlamaIndex 构建自己的 RAG 知识库寻找一个问题 A 在使用 LlamaIndex 之前InternLM2-Chat-1.8B模型不会回答借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力截图保存。 llamaindexInternlm2 RAG实践 本文将分为以下几个部分来介绍如何使用 LlamaIndex 来部署 InternLM2 1.8B以 InternStudio 的环境为例 前置知识环境、模型准备LlamaIndex HuggingFaceLLMLlamaIndex RAG 1. 前置知识 正式介绍检索增强生成Retrieval Augmented GenerationRAG技术以前大家不妨想想为什么会出现这样一个技术。 给模型注入新知识的方式可以简单分为两种方式一种是内部的即更新模型的权重另一个就是外部的方式给模型注入格外的上下文或者说外部信息不改变它的的权重。 第一种方式改变了模型的权重即进行模型训练这是一件代价比较大的事情大语言模型具体的训练过程可以参考InternLM2技术报告。第二种方式并不改变模型的权重只是给模型引入格外的信息。类比人类编程的过程第一种方式相当于你记住了某个函数的用法第二种方式相当于你阅读函数文档然后短暂的记住了某个函数的用法。  RAG 效果比对 如图所示由于xtuner是一款比较新的框架 InternLM2-Chat-1.8B 训练数据库中并没有收录到它的相关信息。左图中问答均未给出准确的答案。右图未对 InternLM2-Chat-1.8B 进行任何增训的情况下通过 RAG 技术实现的新增知识问答。 进入开发机后创建新的conda环境命名为 llamaindex在命令行模式下运行 conda create -n llamaindex python3.10 复制完成后在本地查看环境。 conda env list 结果如下所示。 # conda environments: # base * /root/.conda llamaindex /root/.conda/envs/llamaindex 运行 conda 命令激活 llamaindex 然后安装相关基础依赖 python 虚拟环境: conda activate llamaindex conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.7 -c pytorch -c nvidia 安装python 依赖包 pip install einops0.7.0 protobuf5.26.1 环境激活后命令行左边会显示当前也就是 llamaindex 的环境名称如下图所示:  2.2 安装 Llamaindex 安装 Llamaindex和相关的包 conda activate llamaindex pip install llama-index0.10.38 llama-index-llms-huggingface0.2.0 transformers[torch]4.41.1 huggingface_hub[inference]0.23.1 huggingface_hub0.23.1 sentence-transformers2.7.0 sentencepiece0.2.0 2.3 下载 Sentence Transformer 模型 源词向量模型 Sentence Transformer:我们也可以选用别的开源词向量模型来进行 Embedding目前选用这个模型是相对轻量、支持中文且效果较好的同学们可以自由尝试别的开源词向量模型 运行以下指令新建一个python文件 cd ~ mkdir llamaindex_demo mkdir model cd ~/llamaindex_demo touch download_hf.py 打开download_hf.py 贴入以下代码 import os# 设置环境变量 os.environ[HF_ENDPOINT] https://hf-mirror.com# 下载模型 os.system(huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local-dir /root/model/sentence-transformer) 然后在 /root/llamaindex_demo 目录下执行该脚本即可自动开始下载 cd /root/llamaindex_demo conda activate llamaindex python download_hf.py 更多关于镜像使用可以移步至 HF Mirror 查看。 2.4 下载 NLTK 相关资源 我们在使用开源词向量模型构建开源词向量的时候需要用到第三方库 nltk 的一些资源。正常情况下其会自动从互联网上下载但可能由于网络原因会导致下载中断此处我们可以从国内仓库镜像地址下载相关资源保存到服务器上。 我们用以下命令下载 nltk 资源并解压到服务器上 cd /root git clone https://gitee.com/yzy0612/nltk_data.git --branch gh-pages cd nltk_data mv packages/* ./ cd tokenizers unzip punkt.zip cd ../taggers unzip averaged_perceptron_tagger.zip 之后使用时服务器即会自动使用已有资源无需再次下载 3. LlamaIndex HuggingFaceLLM 运行以下指令把 InternLM2 1.8B 软连接出来 cd ~/model ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b/ ./ 运行以下指令新建一个python文件 cd ~/llamaindex_demo touch llamaindex_internlm.py 打开llamaindex_internlm.py 贴入以下代码 from llama_index.llms.huggingface import HuggingFaceLLM from llama_index.core.llms import ChatMessage llm HuggingFaceLLM(model_name/root/model/internlm2-chat-1_8b,tokenizer_name/root/model/internlm2-chat-1_8b,model_kwargs{trust_remote_code:True},tokenizer_kwargs{trust_remote_code:True} )rsp llm.chat(messages[ChatMessage(contentxtuner是什么)]) print(rsp) 之后运行 conda activate llamaindex cd ~/llamaindex_demo/ python llamaindex_internlm.py 结果为 回答的效果并不好并不是我们想要的xtuner。 4. LlamaIndex RAG 安装 LlamaIndex 词嵌入向量依赖 conda activate llamaindex pip install llama-index-embeddings-huggingface0.2.0 llama-index-embeddings-instructor0.1.3 运行以下命令获取知识库 cd ~/llamaindex_demo mkdir data cd data git clone https://github.com/InternLM/xtuner.git mv xtuner/README_zh-CN.md ./ 运行以下指令新建一个python文件 cd ~/llamaindex_demo touch llamaindex_RAG.py 打开llamaindex_RAG.py贴入以下代码 from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settingsfrom llama_index.embeddings.huggingface import HuggingFaceEmbedding from llama_index.llms.huggingface import HuggingFaceLLM#初始化一个HuggingFaceEmbedding对象用于将文本转换为向量表示 embed_model HuggingFaceEmbedding( #指定了一个预训练的sentence-transformer模型的路径model_name/root/model/sentence-transformer ) #将创建的嵌入模型赋值给全局设置的embed_model属性 #这样在后续的索引构建过程中就会使用这个模型。 Settings.embed_model embed_modelllm HuggingFaceLLM(model_name/root/model/internlm2-chat-1_8b,tokenizer_name/root/model/internlm2-chat-1_8b,model_kwargs{trust_remote_code:True},tokenizer_kwargs{trust_remote_code:True} ) #设置全局的llm属性这样在索引查询时会使用这个模型。 Settings.llm llm#从指定目录读取所有文档并加载数据到内存中 documents SimpleDirectoryReader(/root/llamaindex_demo/data).load_data() #创建一个VectorStoreIndex并使用之前加载的文档来构建索引。 # 此索引将文档转换为向量并存储这些向量以便于快速检索。 index VectorStoreIndex.from_documents(documents) # 创建一个查询引擎这个引擎可以接收查询并返回相关文档的响应。 query_engine index.as_query_engine() response query_engine.query(xtuner是什么?)print(response) 之后运行 conda activate llamaindex cd ~/llamaindex_demo/ python llamaindex_RAG.py 结果为  借助RAG技术后就能获得我们想要的答案了。 5. LlamaIndex web 运行之前首先安装依赖 pip install streamlit1.36.0 运行以下指令新建一个python文件 cd ~/llamaindex_demo touch app.py 打开app.py贴入以下代码 import streamlit as st from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings from llama_index.embeddings.huggingface import HuggingFaceEmbedding from llama_index.llms.huggingface import HuggingFaceLLMst.set_page_config(page_titlellama_index_demo, page_icon) st.title(llama_index_demo)# 初始化模型 st.cache_resource def init_models():embed_model HuggingFaceEmbedding(model_name/root/model/sentence-transformer)Settings.embed_model embed_modelllm HuggingFaceLLM(model_name/root/model/internlm2-chat-1_8b,tokenizer_name/root/model/internlm2-chat-1_8b,model_kwargs{trust_remote_code: True},tokenizer_kwargs{trust_remote_code: True})Settings.llm llmdocuments SimpleDirectoryReader(/root/llamaindex_demo/data).load_data()index VectorStoreIndex.from_documents(documents)query_engine index.as_query_engine()return query_engine# 检查是否需要初始化模型 if query_engine not in st.session_state:st.session_state[query_engine] init_models()def greet2(question):response st.session_state[query_engine].query(question)return response# Store LLM generated responses if messages not in st.session_state.keys():st.session_state.messages [{role: assistant, content: 你好我是你的助手有什么我可以帮助你的吗}] # Display or clear chat messages for message in st.session_state.messages:with st.chat_message(message[role]):st.write(message[content])def clear_chat_history():st.session_state.messages [{role: assistant, content: 你好我是你的助手有什么我可以帮助你的吗}]st.sidebar.button(Clear Chat History, on_clickclear_chat_history)# Function for generating LLaMA2 response def generate_llama_index_response(prompt_input):return greet2(prompt_input)# User-provided prompt if prompt : st.chat_input():st.session_state.messages.append({role: user, content: prompt})with st.chat_message(user):st.write(prompt)# Gegenerate_llama_index_response last message is not from assistant if st.session_state.messages[-1][role] ! assistant:with st.chat_message(assistant):with st.spinner(Thinking...):response generate_llama_index_response(prompt)placeholder st.empty()placeholder.markdown(response)message {role: assistant, content: response}st.session_state.messages.append(message) 之后运行 streamlit run app.py 然后在命令行点击红框里的url。 即可进入以下网页然后就可以开始尝试问问题了。 询问结果为
http://www.hkea.cn/news/14265869/

相关文章:

  • 如何在谷歌上做网站优秀企业宣传册样本
  • 网站建设单位哪家好开发软件赚一千万
  • 网页制作与网站建设从入门到精通公司有网站有什么好处
  • 做电商网站赚钱吗网站增值业务
  • 东莞建网站找哪里找人做网站去哪里
  • 营销型网站建设范文百度店面定位怎么申请
  • 做服装外贸哪个网站好阿里云万网建网站
  • 巴中做网站公司移动网站建设公司
  • 江苏水利厅建设网站最好的开发网站建设价格
  • 企业服饰网站模板网站运营小结
  • 全站仪如何建站购物网站app
  • 专业网站推广软件网站属于什么公司
  • jsp做的网站代码平面设计软件哪个好用
  • 如何建立自己的微网站广告投放平台公司
  • 医疗教育的网站建设网站建设与管理设计
  • 武义建设局网站第1模板网
  • 物流网站首页图片红酒网站建设方案
  • wordpress 导航站模板装修网站建设方案
  • 国际域名的外贸网站太原那有网站设计公司
  • 建湖县建设局网站制作属于自己的app教程
  • 手机网站开发还是调用wordpress pshow
  • 工商局网站查询入口百度关键词优化软件排名
  • 深圳网站制作07551购物网站毕业设计论文
  • 开封府景点网站建设的目的宁波网站建设主页
  • 淘宝买cdk自己做网站近期十大热点事件
  • 婚恋网站做翻译西安制作网站
  • 怎么做网上网站宁波做公司网站的公司
  • 网站开发公司会在最后面加上公司自己制作的网站
  • 缙云企业网站建设浙江进出口贸易公司名录
  • 企业网站建设的注意事项373网站怎么做这样的网站