[智能体-315]:LangChain 实现 RAG(检索增强生成)的完整工作流,并且是基于 ChatGLM 大模型的实现方案。
这张图是LangChain 实现 RAG(检索增强生成)的完整工作流,并且是基于 ChatGLM 大模型的实现方案。下面按「离线知识库构建」和「在线问答推理」两大阶段,拆解每一步的作用与原理。
一、整体流程概览
整个流程分为两大阶段:
- 离线阶段:知识库构建(步骤 1-7)
- 在线阶段:问答与生成(步骤 8-15)
二、阶段 1:离线知识库构建(数据准备)
目标:把本地文档变成可被检索的向量知识库。
表格
| 步骤 | 环节 | 核心作用 | 通俗解释 |
|---|---|---|---|
| 1 | Local Documents → Unstructured Loader | 加载本地非结构化文档(PDF/Word/Markdown 等),解析成纯文本 | 把文件 “读进来”,提取文字内容 |
| 2 | Unstructured Loader → Text | 输出统一格式的纯文本 | 解决不同文件格式的解析问题 |
| 3 | Text → Text Splitter | 按固定大小 / 语义边界,将长文本切割成短片段(Chunks) | 解决大模型上下文窗口限制,让文本适合后续处理 |
| 4 | Text Splitter → Text Chunks | 输出标准化文本片段 | 每个片段都是后续向量化和检索的最小单元 |
| 5 | Text Chunks → Embedding | 使用嵌入模型,将文本片段转换为高维向量 | 把文字变成机器能计算的数字 |
| 6 | Embedding → VectorStore | 将文本片段、向量和元数据存入向量数据库 | 建立可快速检索的知识库 |
| 7 | VectorStore | 向量数据库就绪,支持相似度检索 | 为后续问答提供数据支持 |
三、阶段 2:在线问答推理(用户提问→生成答案)
目标:基于用户问题,从知识库召回相关信息,辅助大模型生成答案。
表格
| 步骤 | 环节 | 核心作用 | 通俗解释 |
|---|---|---|---|
| 8 | Query → Embedding | 将用户提问文本向量化 | 把用户问题也变成向量,方便在知识库中匹配 |
| 9 | Embedding → Query Vector | 输出问题向量 | 为相似度检索做准备 |
| 10 | Query Vector → Vector Similarity | 在向量数据库中计算问题向量与库中向量的相似度 | 找出和问题语义最相关的文本片段 |
| 11 | Vector Similarity → Related Text Chunks | 召回 Top-K 个相关文本片段 | 从知识库中取出能回答问题的参考材料 |
| 12 | Related Text Chunks → Prompt Template | 将召回的文本片段填入预设的提示词模板 | 把参考资料和用户问题整合成大模型能理解的指令 |
| 13 | Prompt Template → Prompt | 输出完整的提示词(包含用户问题 + 参考上下文) | 形成给大模型的最终输入 |
| 14 | Prompt → LLM(ChatGLM) | 调用 ChatGLM 大模型,基于提示词生成回答 | 让大模型结合参考资料回答问题 |
| 15 | LLM → Answer | 输出最终答案 | 呈现给用户的结果 |
四、关键模块解析
1. Text Splitter(文本分割)
- 核心目的:解决长文本超出大模型上下文窗口的问题,同时保证分割后的片段语义完整。
- 常见策略:按字符数分割、按句子分割、按语义分割(如 LangChain 的
RecursiveCharacterTextSplitter)。
2. Embedding(向量化)
- 核心目的:实现自然语言的数值化,让机器可以通过向量空间的距离来判断文本语义的相似度。
- 常见模型:OpenAI Embeddings、BGE、Sentence-BERT,国内场景也可使用与 ChatGLM 配套的嵌入模型。
3. VectorStore(向量数据库)
- 核心目的:高效存储和检索向量,支持亿级数据下的毫秒级召回。
- 常见工具:Chroma、Milvus、FAISS、Pinecone,LangChain 对这些数据库都提供了统一的接口。
4. Prompt Template(提示词模板)
- 核心目的:规范大模型的输入格式,引导模型基于召回的上下文生成答案,减少模型幻觉。
- 典型模板:
“根据以下上下文回答问题:{context}。问题:{query}。回答:”
五、与 ChatGLM 的适配
这张图是基于LangChain + ChatGLM的组合方案:
- LangChain 提供了统一的工作流编排能力,负责数据加载、分块、向量化、检索和提示词构建;
- ChatGLM 作为后端大模型,负责理解提示词并生成答案;
- 这种架构的优势是:可以灵活替换嵌入模型、向量数据库和大模型,适配不同的业务场景和部署环境。
六、核心价值总结
这个流程解决了大模型的两个关键问题:
- 知识过时:通过向量数据库接入最新的私有数据,让模型能回答超出其训练数据范围的问题;
- 模型幻觉:通过召回相关上下文并引导模型基于事实生成答案,大幅降低模型编造信息的概率。
