RAG¶
RAG(Retrieval-Augmented Generation)是把检索系统和生成模型结合起来的工作流。它适合知识密集、内容经常变化、需要引用来源的任务。
三种常见 AI 工作流
- 先检索外部知识,再让模型基于上下文回答。
- 重点是知识覆盖、召回、重排、引用和抗幻觉。
- 模型根据任务状态选择下一步动作。
- 重点是规划、工具调用、状态管理和错误恢复。
- 用统一协议把工具和资源暴露给模型客户端。
- 重点是工具边界、权限、上下文和可组合性。
基本流程¶
- Query Understanding:理解用户问题,必要时改写 query。
- Retrieval:从向量库、全文索引或数据库中召回候选片段。
- Rerank:用更强的模型或规则重新排序候选内容。
- Context Packing:把最相关内容组织进上下文窗口。
- Generation:模型基于上下文生成回答。
- Citation / Verification:给出引用,检查回答是否被材料支持。
一图以蔽之:
关键设计点¶
文档切分¶
切分粒度会影响召回质量:
- 太短:上下文不完整,模型难以判断语义。
- 太长:召回不精确,占用上下文窗口。
- 常见做法:按标题、段落、语义块切分,并保留层级元数据。
检索方式¶
- 稠密向量检索:适合语义相似。
- BM25 / 全文检索:适合关键词、术语、代码符号。
- Hybrid Search:同时利用语义和关键词。
重排¶
召回阶段追求覆盖,重排阶段追求精度。Reranker 可以显著改善“召回到了但排序靠后”的问题。
引用与可信度¶
RAG 的输出应该能追溯到来源。对于严肃任务,回答需要标注引用片段,并避免生成材料中没有支持的结论。
常见开源项目¶
- LlamaIndex:偏数据连接、索引和 RAG pipeline。
- LangChain:偏应用编排、工具调用和链式流程。
- vLLM / TGI:更偏模型推理服务,可作为 RAG 的生成后端。
常见失败模式¶
- 文档没进库:召回阶段没有正确知识。
- 切分不合理:相关信息被拆散。
- query 表达不匹配:用户问题和文档术语不同。
- 上下文塞太多:模型被噪声干扰。
- 没有引用校验:生成内容看似合理但无法溯源。
