前面的章节介绍了 RAG 的核心思想与工作流程,但要将这套流程落地为可用的系统,需要一系列技术组件的有机配合。本章从工程视角梳理构成一个端到端 RAG 系统的关键技术栈,帮助你在实际搭建时认清各环节的职责与选型思路。
核心组件一览
一个完整的 RAG 系统大致可分为五个层次:数据准备层、嵌入与索引层、检索层、生成层、应用与编排层。各层之间通过数据流串联,也可按需替换其中的单个模块。
1. 数据准备与预处理层
这一层负责将原始知识源转化为适合检索的标准化格式。
- 数据接入:支持多种数据类型的读取,如 PDF、Word、Markdown、HTML、数据库记录、API 返回的文本等。
- 文档解析与清洗:提取正文、去除页眉页脚、处理表格和图片中的文字,剔除无意义字符和格式噪音。
- 智能切块(Chunking):将长文档拆成若干语义相对完整的片段,通常有固定长度切分、按段落或句子切分、基于语义模型的分割等策略。切片大小直接影响检索精度与上下文完整性。
- 元数据提取与保存:为每个切片保留来源文档名、章节、页码、版本、时间戳等信息,为后续溯源和过滤提供依据。
常用工具举例:LangChain 的 Document Loaders、Unstructured、LlamaIndex 的 SimpleDirectoryReader,或自研解析脚本。
2. 嵌入与向量索引层
负责将文本片段转换为向量表示,并存入可高效检索的向量数据库。
- 嵌入模型(Embedding Model):选用高质量的文本嵌入模型,将每个切片和后续的用户问题映射为固定维度的向量。中英文混合场景需特别关注多语言支持。
- 向量数据库(Vector Store):存储向量及其对应的文本和元数据,并提供高效的近似最近邻搜索(ANN)。选型时关注查询延迟、规模扩展性、过滤能力以及是否支持混合检索。
- 索引策略:对入库向量建立索引以加速检索,可按需选择 HNSW、IVF 等算法,在速度与精度间取得平衡。
常用嵌入模型:OpenAI text-embedding-3、Cohere Embed、BGE 系列、智源 BGE/M3E 等。
常用向量数据库:Chroma、Milvus、Qdrant、Pinecone、Weaviate、Elasticsearch(配合向量插件)。
3. 检索层
接收用户问题后,完成相似内容搜索与候选片段排序。
- 检索主流程:将用户问题向量化,在向量数据库中执行 top-k 召回,返回最相关的若干个切片。
- 多路召回与混合检索:单一向量检索可能遗漏特定术语匹配,实际系统常加入关键词检索(如 BM25)形成混合检索,再通过融合排序综合两者优势。
- 重排序(Reranking):对初步召回的候选片段做更精确的相关性打分,把最相关的片段排在前面,并截断供给生成模型的数量。这一步对最终回答质量影响很大。
- 元数据过滤:基于用户属性、权限、日期等条件过滤检索范围,如只检索特定部门或特定时间段的文档。
常用重排序模型:Cohere Rerank、bge-reranker、Cross-Encoder 模型。
4. 生成层
将检索到的上下文与用户问题组装成提示,输送给大语言模型生成最终回答。
- 提示模板管理:设计并维护提示模板,明确指示模型“仅根据提供的资料回答”“资料不足时明确告知”等规则,并可融入系统角色设定、回答格式与引用格式要求。
- 大语言模型调用:通过 API 或本地部署调用 LLM。可根据场景在追求质量的超大模型和追求速度的小模型之间权衡,也可使用经过指令微调的开源模型降低成本。
- 引用关联与后处理:将模型中引用的来源标记(如在回答中插入序号或 doc_id)映射回具体文档,并格式化输出,含溯源链接或段落高亮。
常用 LLM:GPT-4o、Claude 3、Gemini、文心一言、通义千问,或开源模型如 Llama 3、Qwen、DeepSeek 等。
5. 应用与编排层
连通上述组件,并提供用户交互界面和系统运维能力。
- 编排框架:负责串联数据摄入、检索、生成的全链路,管理组件的依赖和异常处理。常用框架有 LangChain、LlamaIndex、Haystack,或基于自研工作流引擎。
- 接口服务:通过 RESTful 或 WebSocket 接口对外暴露能力,提供问答、批量处理、文档管理等 API。
- 反馈与监控:收集用户对回答的评价(赞、踩、纠错),记录检索结果和生成内容日志,监控延迟、召回率和回答质量指标,为持续优化提供依据。
- 用户界面:根据场景的需要,可以是 Web 聊天窗口、企业 IM 机器人、内部知识库搜索框,或集成到现有业务系统的侧边面板。
典型组合示例
一个中小团队的快速搭建方案可能如下:
使用 LlamaIndex 作为编排框架,文档存入本地 Chroma 向量库,嵌入模型选用 BGE-large,重排序用 bge-reranker,生成调用通义千问 API,前端用 Streamlit 或 Gradio 快速搭建交互界面。
选型要点
- 从场景出发:私有化部署要求高的,倾向开源向量库和可本地运行的嵌入、生成模型;对性能和规模敏感的,选择支持分布式的高性能向量数据库。
- 迭代思维:不必一次全部就位。可先用简单的切块策略和基础嵌入模型,跑通全链路后,再逐步加入混合检索、重排序等优化模块。
- 数据安全:确保知识库内容与模型服务之间的数据流转符合企业安全要求,必要时采用模型本地部署或私有化 API。
以上便是构成端到端 RAG 系统的基本技术栈。每一层都有成熟的工具可选,关键在于明确各自定位后,依据业务需求组合调优,即可搭建出稳定、可维护的知识增强型智能应用。