跳转至

RAG

RAG(Retrieval-Augmented Generation)是把检索系统和生成模型结合起来的工作流。它适合知识密集、内容经常变化、需要引用来源的任务。

三种常见 AI 工作流

  • 先检索外部知识,再让模型基于上下文回答。
  • 重点是知识覆盖、召回、重排、引用和抗幻觉。
  • 模型根据任务状态选择下一步动作。
  • 重点是规划、工具调用、状态管理和错误恢复。
  • 用统一协议把工具和资源暴露给模型客户端。
  • 重点是工具边界、权限、上下文和可组合性。

基本流程

  1. Query Understanding:理解用户问题,必要时改写 query。
  2. Retrieval:从向量库、全文索引或数据库中召回候选片段。
  3. Rerank:用更强的模型或规则重新排序候选内容。
  4. Context Packing:把最相关内容组织进上下文窗口。
  5. Generation:模型基于上下文生成回答。
  6. Citation / Verification:给出引用,检查回答是否被材料支持。

一图以蔽之:

RAG示意图

关键设计点

文档切分

切分粒度会影响召回质量:

  • 太短:上下文不完整,模型难以判断语义。
  • 太长:召回不精确,占用上下文窗口。
  • 常见做法:按标题、段落、语义块切分,并保留层级元数据。

检索方式

  • 稠密向量检索:适合语义相似。
  • BM25 / 全文检索:适合关键词、术语、代码符号。
  • Hybrid Search:同时利用语义和关键词。

重排

召回阶段追求覆盖,重排阶段追求精度。Reranker 可以显著改善“召回到了但排序靠后”的问题。

引用与可信度

RAG 的输出应该能追溯到来源。对于严肃任务,回答需要标注引用片段,并避免生成材料中没有支持的结论。

常见开源项目

  • LlamaIndex:偏数据连接、索引和 RAG pipeline。
  • LangChain:偏应用编排、工具调用和链式流程。
  • vLLM / TGI:更偏模型推理服务,可作为 RAG 的生成后端。

常见失败模式

  • 文档没进库:召回阶段没有正确知识。
  • 切分不合理:相关信息被拆散。
  • query 表达不匹配:用户问题和文档术语不同。
  • 上下文塞太多:模型被噪声干扰。
  • 没有引用校验:生成内容看似合理但无法溯源。