随着 Llama、Mistral、Gemma 等开源大语言模型(LLM)的出现,我们越来越能感受到 LLM 的力量,而本地运行基于 LLM 的 RAG 应用的需求越来越强烈。在将应用推至生产环境前,我们往往都需要先本地运行和测试。

因此,本文将介绍如何使用 Ollama、Llama 3 和 Milvus 向量数据库在本地部署一个检索增强生成(RAG)应用。

本文将使用到的软件和工具包括:

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

一、问答与检索增强生成(RAG)

本文中,我们将使用 RAG 技术搭建一个高级的问答机器人。

什么是 RAG?

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

  • 索引流水线(Pipeline):用于从外部数据源中摄取数据并对其进行索引,随后加载、拆分并将数据存储在 Milvus 中。

  • 检索和生成:将用户查询转换为 Embedding 向量,然后从 Milvus 中检索相关数据形成上下文,然后 LLM 上下文生成响应。

文本将提供实用的操作指导,向您展示如何使用本地 LLM 构建 RAG 应用。

二、前提条件

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

  • Docker 和 Docker-Compose
  • Milvus standalone
  • Ollama

三、设置 RAG 应用

现在开始设置 RAG 应用 :

  • 通过命令 docker-compose up -d 启动 Milvus standalone 实例。该命令将以 Docker 分离(detached)模式启动您的 Milvus 实例,在后台安静运行。

  • 通过命令 ollama pull <模型名称> (例如 ollama pull llama3)获取 LLM 模型。点击此处查看可用模型列表。该命令将下载模型的默认版本(通常是最新且最小的版本)。

  • 通过命令 ollama run <模型名称> 要直接与模型进行交互。

四、安装依赖

您还需要安装所需的依赖库。如果您直接使用 Github 上的代码,可以使用 Poetry,或者您也可以使用 pip 进行安装。

pip install langchain pymilvus ollama pypdf langchainhub langchain-community langchain-experimental

五、搭建并运行 RAG 应用

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

1. 使用 PyPDFLoader 导入 PDF 数据。

from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader(
"https://d18rn0p25nwr6d.cloudfront.net/CIK-0001813756/975b3e9b-268e-4798-a9e4-2a9a7c92dc10.pdf"
)
data = loader.load()

2. 切分数据

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

from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(data)

3. 使用 Jina 的 Small English embeddings 将文本数据转换为 Embedding 向量并存储在 Milvus 中。

from langchain_community.embeddings.jina import JinaEmbeddings
from langchain.vectorstores.milvus import Milvus
embeddings = JinaEmbeddings(jina_api_key=JINA_AI_API_KEY, model_name="jina-embeddings-v2-small-en"
)
vector_store = Milvus.from_documents(documents=all_splits, embedding=embeddings)

4. 使用 Ollama 轻松在本地加载 LLM(本示例中使用 Meta 的 Llama 3)。

from langchain_community.llms import Ollama
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
llm = Ollama(
model="llama3",
callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]
),
stop=["<|eot_id|>"],
)

5. 使用 Langchain 搭建问答机器人。构建问答链来处理和响应用户查询。

from langchain import hub
from langchain.chains import RetrievalQA
query = input("\nQuery: ")
prompt = hub.pull("rlm/rag-prompt")   

qa_chain = RetrievalQA.from_chain_type(
    llm, retriever=vector_store.as_retriever(), chain_type_kwargs={"prompt": prompt}
)
result = qa_chain({"query": query})
print(result)

六、运行 RAG 应用

通过命令 python rag_ollama.py 运行 RAG 应用。

以下为回答示例:

Query: What is this document about?
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 standalone:
    https://milvus.io/docs/install_standalone-docker-compose.md

  • Ollama 可用模型列表:
    https://ollama.com/library


七、最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐