spring的技术笔记
AI 学习1 分钟阅读

RAG 管线拆解:切分、检索、重排到带引用回答

从文档切分到引用生成,梳理一条可调试的 RAG 流水线,并指导你在哪一层做评测。

RAG(检索增强生成)的价值,是把可更新的私有知识接到生成模型前面。出问题最多的不是「换更大模型」,而是切分与检索质量。

管线五步

  1. 加载:Markdown、PDF、网页 → 纯文本。
  2. 切分:按标题/段落分块,保留元数据(路径、标题、锚点)。
  3. 嵌入与索引:块 → embedding → 向量库。
  4. 检索 + 重排:先召回 topK,再交叉编码器或规则重排。
  5. 生成:只根据检索片段回答,并输出引用。
const chunks = splitByHeading(markdown, { maxTokens: 500, overlap: 80 });
const hits = await index.search(queryEmbedding, { k: 20 });
const reranked = await rerank(query, hits).slice(0, 5);
const answer = await generate({ query, contexts: reranked });

切分经验

  • 过碎:检索噪声大;过长:相关句被稀释。
  • 保留标题路径当 metadata,生成引用时用户才找得到原文。
  • overlap 用于避免句子在边界被切断。

一定要评测

准备 20–50 条问答金标:

  • 检索是否命中正确块(Recall@K)
  • 答案是否引用了正确来源
  • 知识不在库内时是否拒答

没有评测集,换模型也只是换一种感觉。

小结

RAG 是系统工程。把「检索是否对」和「生成是否守规矩」拆开优化,进度会快得多。