使用LangChain与ChromaDB构建本地知识库RAG问答系统
前言 在大模型应用开发中,RAG(Retrieval-Augmented Generation,检索增强生成)是最核心的技术范式之一。它通过将外部知识库与大语言模型结合,解决了LLM的"幻觉"问题和知识时效性问题。
本文将从零开始,使用 LangChain 框架和 ChromaDB 向量数据库,构建一个完整的本地知识库问答系统。所有代码均可本地运行,无需依赖云端API。
为什么需要RAG? 直接使用大模型存在以下痛点:
知识截断:模型训练数据有截止日期,无法回答最新问题 幻觉问题:模型会"编造"不存在的信息 领域缺失:通用模型缺乏特定领域的专业知识 数据安全:企业内部数据不适合上传到第三方API RAG的核心思路是:先检索,再生成。从知识库中检索相关文档片段,将其作为上下文注入Prompt,让大模型基于真实数据进行回答。
技术架构 用户提问 ↓ [文档加载] → [文本分割] → [向量化] → [ChromaDB存储] ↓ 用户提问 → [Embedding] → [向量检索] → [Top-K相关片段] ↓ [Prompt组装] → [LLM生成回答] 环境准备 安装依赖 # 创建虚拟环境 python -m venv rag_env source rag_env/bin/activate # Linux/Mac # rag_env\Scripts\activate # Windows # 安装核心依赖 pip install langchain langchain-community langchain-chroma chromadb pip install sentence-transformers # 本地Embedding模型 pip install unstructured # 文档加载器 pip install tiktoken # Token计算 项目结构 rag_project/ ├── knowledge_base/ # 知识库文档目录 │ ├── doc1.