RAG 实操教程:使用 LangChain + Milvus 构建本地知识库
本文是 Milvus 向量数据库学习的总结篇,旨在通过实战打造自己的本地知识库系统。我们将深入探讨检索增强生成(RAG)技术,并演示如何使用 LangChain 框架结合 Milvus 向量数据库实现基于私有文档的智能问答。
一、RAG 是什么
RAG(Retrieval-Augmented Generation)即检索增强生成。其核心思想是将大语言模型(LLM)与外部知识库相结合。当用户提问时,系统先从外部知识库中检索相关信息,然后将这些信息作为上下文提供给 LLM,由 LLM 基于这些准确的信息生成回答。
这种方法解决了传统 LLM 仅依赖训练数据的问题,使其能够访问最新、最准确的数据。
二、LLM 的痛点与挑战
现有的开源或商业 LLM 通常基于网络公开数据进行训练,这带来了以下主要痛点:
- 知识滞后性:模型的训练数据截止于特定时间点,无法知晓最新的新闻、政策或技术更新。
- 私有数据缺失:企业内部的规章制度、业务文档、代码库等私有数据具有极高价值且涉及安全,无法直接用于公共模型训练,导致 LLM 无法回答企业内部问题。
- 幻觉问题:当面对未知问题时,LLM 可能会产生'幻觉',编造看似合理但实际错误的答案,严重影响可信度。
三、为什么选择 RAG
针对上述问题,提升 LLM 能力主要有三种路径:
- Prompt Engineering(提示工程):通过优化输入提示词来引导模型输出。例如 In-context Learning,在提示中提供示例或上下文。优点是成本低,但受限于模型本身的参数容量和上下文窗口限制。
- Fine-tuning(微调):在特定数据集上重新训练模型参数。适用于让模型学习特定的风格或领域知识。缺点是成本高、周期长,且难以快速迭代新数据,容易遗忘旧知识(灾难性遗忘)。
- RAG(检索增强生成):不修改模型参数,而是外挂知识库。检索系统从数据库提取信息,LLM 基于此生成答案。
RAG 的核心优势:
- 准确性:通过引用外部事实来源,显著减少虚假信息。
- 及时性:知识库可以随时更新,LLM 能获取最新信息。
- 可解释性:可以追溯信息来源,增强用户信任。
- 成本效益:无需频繁微调模型,只需更新向量数据库。
- 安全性:敏感数据存储在私有数据库中,不泄露给公共模型。
四、环境准备与安装
本教程将使用 Python 生态进行开发。首先安装必要的依赖库。
1. 安装 LangChain 及相关组件
pip install langchain
pip install langchain-community
pip install langchain-core
pip install langchain-cli
pip install --upgrade --quiet pypdf
2. 安装 Milvus 客户端
Milvus 是一个高性能的向量数据库。我们需要安装 Python SDK。
pip install pymilvus
确保你的本地或服务器已部署好 Milvus 服务(默认端口 19530)。
五、文档加载与处理
构建知识库的第一步是将非结构化数据(如 PDF)转化为模型可理解的文本。
1. 文档加载器
LangChain 提供了丰富的文档加载器,支持 txt、pdf、html、url 等多种格式。我们这里以 PDF 为例。
from langchain_text_splitters CharacterTextSplitter
langchain_community.document_loaders PyPDFLoader
file_path =
loader = PyPDFLoader(file_path=file_path)
documents = loader.load()


