RAG 与知识检索
什么是 RAG
Section titled “什么是 RAG”**RAG(Retrieval-Augmented Generation)**会先从外部知识源检索相关内容,再把内容放入 Prompt,让 LLM 根据这些证据生成答案。
它适合处理模型训练数据中没有、经常变化或需要引用来源的知识。
文档 → Chunking → Embedding → 向量数据库Chunking
Section titled “Chunking”Chunking 是把长文档切成适合检索和放入上下文的小片段。
片段太大会混入无关信息,片段太小则可能丢失完整语义,因此通常需要根据文档结构和实际问题测试切块策略。
Embedding
Section titled “Embedding”Embedding 把文本转换成能够表达语义关系的数字向量,含义相近的文本通常会位于相近的向量空间。
向量数据库负责保存 Embedding,并支持根据相似度快速搜索相关向量。
向量数据库是常见方案,但小型项目也可以使用本地索引或支持向量能力的普通数据库。
用户问题 → 问题 Embedding → 向量检索 → Reranking → 相关片段 → Prompt → LLM向量检索通过比较问题向量和文档向量的相似度,快速召回可能相关的内容。
Reranking
Section titled “Reranking”Reranking 使用更准确的模型重新判断初步召回结果,把真正相关的片段排到前面。
常见失败原因
Section titled “常见失败原因”- 原始文档质量差或已经过期。
- Chunking 破坏了上下文。
- 用户问题与文档使用不同术语。
- 只做向量检索,没有关键词检索或 Reranking。
- 把太多检索结果塞入上下文。
- 回答没有要求引用证据,无法判断是否忠于资料。
RAG 与 Agent
Section titled “RAG 与 Agent”普通 RAG 会在每次回答前固定执行检索,而 Agentic RAG 可以让 Agent 判断是否需要检索、选择哪个知识源,并在结果不足时修改查询后再次搜索。