景泰拾伍.
首页 / Agent 工程

RAG 回答不准,先看检索到了什么

RAG / 检索评估   ·   整理于 2026-10-30

回答不准时马上换模型,可能只是让模型更流畅地解释错误材料。先保存“问题 → 检索结果 → 最终上下文 → 回答”这条链路,才能判断应该改哪里。

先给切片留好来源

向量库中的 chunk 不应该只包含一段 text。至少保留文档标识、版本、章节位置和切片标识。这样回答引用才能回到原文,文档更新时也能清理旧版本。

{
  "chunkId": "guide-v3-section-4-02",
  "documentId": "deployment-guide",
  "version": "v3",
  "section": "4.2 反向代理",
  "text": "...",
  "source": "/docs/deployment#proxy"
}

切片长度和重叠比例没有一个适用于所有资料的固定值。表格、代码和操作步骤尽量保留语义边界;切得太短可能丢掉前提,太长又可能稀释真正相关的部分。

建一个很小但能复查的题集

先整理二三十个真实使用方式的问题,为每题标注能够支持答案的文档或段落。加入缩写、同义表达、跨章节问题,以及资料中根本没有答案的问题。

记录 Top-k 是否包含相关段落。例如 Hit@5 是前五个结果中是否至少命中一个相关项;Recall@5 则需要知道全部相关项,衡量其中被找回的比例。不要把两者混用。

把错误分成三层

  • 没找到:相关段落不在候选中。检查文档是否入库、切片、查询表达、关键词与向量混合检索。
  • 找到了但没送进去:相关段落被重排或上下文裁剪丢掉。检查排序、去重、token 预算和拼接顺序。
  • 送进去了但回答错:检查提示约束、冲突版本、引用对应关系和模型对证据的使用。

相似度分数不是答案正确率。不同嵌入模型、距离度量和索引参数下,阈值的意义会变。需要用自己的题集调参,再留一部分未参与调参的样本检查效果。

回答与来源要能相互核对

让回答带来源编号只是第一步,还要验证被引用的片段是否真的支持对应结论。如果资料不足,允许回答“当前资料无法确认”,比强行补齐一段更有用。

多租户或私有知识库必须在检索阶段应用访问范围,重排和上下文拼接也不能混入其他用户的文档。不要依赖模型在生成阶段自行隐藏越权内容。

← 返回文章列表