手把手系列 | 利用Milvus、Llama 3、Ollama、LangChain当地设置RAG应用 ...

打印 上一主题 下一主题

主题 1481|帖子 1481|积分 4443


  随着 Llama、Mistral、Gemma 等开源大语言模子(LLM)的出现,我们越来越能感受到 LLM 的气力,而当地运行基于 LLM 的 RAG 应用的需求越来越强烈。在将应用推至生产情况前,我们往往都需要先当地运行和测试。
  因此,本文将先容如何利用 Ollama、Llama 3 和 Milvus 向量数据库在当地摆设一个检索增强生成(RAG)应用。
  本文将利用到的软件和工具包括:
  

  • LangChain:用于创建代理,实现与数据的互动。
  • Ollama:在笔记本电脑中利用 LLM 的强大功能,简化当地操作。
  • Milvus:向量数据库用于高效存储和检索数据。
  • Llama 3:由 Meta 推出的大语言模子,Llama 系列的最新版本。
  01.

  问答与检索增强生成(RAG)
  本文中,我们将利用 RAG 技术搭建一个高级的问答机器人。
  02.

  什么是 RAG?
  RAG,即检索增强生成,是一种通过整合外部数据源来增强大语言模子(LLM)的技术。一个典范的 RAG 应用包括:

  

  • 索引流水线(Pipeline):用于从外部数据源中摄取数据并对其举行索引,随后加载、拆分并将数据存储在 Milvus 中。
  • 检索和生成:将用户查询转换为 Embedding 向量,然后从 Milvus 中检索相干数据形成上下文,然后 LLM 上下文生成响应。
  文本将提供实用的操作引导,向您展示如何利用当地 LLM 构建 RAG 应用。欢迎初学者跟随本指南开始构建自己的问答机器人!
  03.

  条件条件
  开始前,请先确保您已安装:

  

  • Docker 和 Docker-Compose
  • Milvus  standalone
  • Ollama
  04.

  设置 RAG 应用
  如今开始设置 RAG 应用 :
  

  • 通过下令 docker-compose up -d 启动 Milvus standalone 实例。该下令将以 Docker 分离(detached)模式启动您的 Milvus 实例,在配景安静运行。
  • 通过下令 ollama pull <模子名称> (比方 ollama pull llama3)获取 LLM 模子。点击此处查察可用模子列表。该下令将下载模子的默认版本(通常是最新且最小的版本)。
  • 通过下令 ollama run <模子名称> 要直接与模子举行交互。
  05.

  安装依靠
  您还需要安装所需的依靠库。假如您直接利用 Github 上的代码,可以利用 Poetry,大概您也可以利用 pip 举行安装。

  1. pip install langchain pymilvus ollama pypdf langchainhub langchain-community langchain-experimental
复制代码
06.

  搭建并运行 RAG 应用
  如前文所述,RAG 应用中的重要组成部分就是数据索引。
  

  • 利用 PyPDFLoader 导入 PDF 数据。
  1. from langchain_community.document_loaders import PyPDFLoader
  2. loader = PyPDFLoader(
  3. "https://d18rn0p25nwr6d.cloudfront.net/CIK-0001813756/975b3e9b-268e-4798-a9e4-2a9a7c92dc10.pdf"
  4. )
  5. data = loader.load()
复制代码

  • 切分数据
  利用 RecursiveCharacterTextSplitter 将已加载数据切分为切片。

  1. from langchain.text_splitter import RecursiveCharacterTextSplitter
  2. text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
  3. all_splits = text_splitter.split_documents(data)
复制代码

  • 利用 Jina 的 Small English embeddings 将文本数据转换为 Embedding 向量并存储在 Milvus 中。
  1. from langchain_community.embeddings.jina import JinaEmbeddings
  2. from langchain.vectorstores.milvus import Milvus
  3. embeddings = JinaEmbeddings(jina_api_key=JINA_AI_API_KEY, model_name="jina-embeddings-v2-small-en"
  4. )
  5. vector_store = Milvus.from_documents(documents=all_splits, embedding=embeddings)
复制代码
4. 利用 Ollama 轻松在当地加载 LLM(本示例中利用 Meta 的 Llama 3)。
  1. from langchain_community.llms import Ollama
  2. from langchain.callbacks.manager import CallbackManager
  3. from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
  4. llm = Ollama(
  5. model="llama3",
  6. callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]
  7. ),
  8. stop=["<|eot_id|>"],
  9. )
复制代码
5. 利用 Langchain 搭建问答机器人。构建问答链来处理和响应用户查询。
  1. from langchain import hub
  2. from langchain.chains import RetrievalQA
  3. query = input("\nQuery: ")
  4. prompt = hub.pull("rlm/rag-prompt")   
  5. qa_chain = RetrievalQA.from_chain_type(
  6.     llm, retriever=vectorstore.as_retriever(), chain_type_kwargs={"prompt": prompt}
  7. )
  8. result = qa_chain({"query": query})
  9. print(result)
复制代码

  07.
  运行 RAG 应用
  通过下令 python rag_ollama.py 运行 RAG 应用。
  以下为回答示例:
  1. Query: What is this document about?
  2. The document appears to be a 104 Cover Page Interactive Data File for an SEC filing. It contains information about the company's financial statements and certifications.{'query': 'What is this document about?', 'result': "The document appears to be a 104 Cover Page Interactive Data File for an SEC filing. It contains information about the company's financial statements and certifications."}
复制代码
我们已成功利用 Ollama、Llama 3、Langchain 和 Milvus 搭建了一个复杂的问答机器人。我们搭建的不应用不但可以高效处理大规模数据集,还能够在当地针对用户标题举行回答。

  欢迎相识 Milvus 及其 GitHub 代码仓库,并通过微信群交流分享 Milvus 利用履历!
  相干链接:

  

  • Milvus  standalone:
    https://milvus.io/docs/install_standalone-docker-compose.md
  • Ollama 可用模子列表:
    https://ollama.com/library
  
推荐阅读

  

  

  


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表