Skip to content

RAG 与知识检索

**RAG(Retrieval-Augmented Generation)**会先从外部知识源检索相关内容,再把内容放入 Prompt,让 LLM 根据这些证据生成答案。

它适合处理模型训练数据中没有、经常变化或需要引用来源的知识。

文档 → Chunking → Embedding → 向量数据库

Chunking 是把长文档切成适合检索和放入上下文的小片段。

片段太大会混入无关信息,片段太小则可能丢失完整语义,因此通常需要根据文档结构和实际问题测试切块策略。

Embedding 把文本转换成能够表达语义关系的数字向量,含义相近的文本通常会位于相近的向量空间。

向量数据库负责保存 Embedding,并支持根据相似度快速搜索相关向量。

向量数据库是常见方案,但小型项目也可以使用本地索引或支持向量能力的普通数据库。

用户问题 → 问题 Embedding → 向量检索 → Reranking → 相关片段 → Prompt → LLM

向量检索通过比较问题向量和文档向量的相似度,快速召回可能相关的内容。

Reranking 使用更准确的模型重新判断初步召回结果,把真正相关的片段排到前面。

  • 原始文档质量差或已经过期。
  • Chunking 破坏了上下文。
  • 用户问题与文档使用不同术语。
  • 只做向量检索,没有关键词检索或 Reranking。
  • 把太多检索结果塞入上下文。
  • 回答没有要求引用证据,无法判断是否忠于资料。

普通 RAG 会在每次回答前固定执行检索,而 Agentic RAG 可以让 Agent 判断是否需要检索、选择哪个知识源,并在结果不足时修改查询后再次搜索。