生产 RAG 检索故障怎么查?沿着正确证据逐站定位

生产 RAG 检索故障怎么查?沿着正确证据逐站定位

答案引用了正确文件,数字却错了。检查后发现:退款表格来自扫描 PDF,解析时两列文字被拼到一起。团队调了两天提示词,真正丢失的信息却发生在模型调用之前。

生产 RAG 的检索故障,应沿着正确证据逐站定位。本文把原文的诊断顺序改写成与供应商无关的排障方法,去掉产品接入推广,并补充多租户和评测口径的限制。

1. 先确定一段"正确证据"

找出人工确认能够回答问题的片段,记为 gold passage。它不是答案文本,而是后面每一步要追踪的证据。

记录原始查询、改写查询、过滤条件、召回 ID 与分数、重排结果、最终提示词片段和引用。先查看查询改写有没有丢失关键条件,例如"企业合同"被改成了泛化的"合同"。

如果原始查询能找回证据,而改写查询不能,优先排查改写。之后的每一站都问同一个问题:这段证据还在吗?

2. 解析与摄取:信息是否真的存在

按文档 ID 或原文中的精确短语查索引。查不到时,先检查连接器、目录范围、文件类型、同步任务和解析结果。

对扫描文档和表格,应把源页面与存储文本人工对照。列顺序、单位、合并单元格、标题及脚注都可能被破坏。如果解析后的文本已经无法让人读懂,换一个 Embedding 模型通常无济于事。

此阶段的验收是"证据以可理解形式进入索引",不是仅统计成功上传了多少文件。

3. 分块:条件和结论是否被切开

检查证据是否跨块,表格行有没有列标题,例外条件是否与主规则分离。可以尝试按章节或表格分块,并给子块携带标题和必要元数据。

改变分块后,受影响文档通常需要重新生成向量。先在失败查询上验证,再扩大重建范围,避免大规模重索引之后仍无法解释改善来自哪里。

4. 召回:区分模型与索引算法

如果证据完整存在,检查它在原始候选集中的名次。明确候选评测口径:每题若有多个相关片段,Recall@k 是找回数量占全部相关片段的比例;若仅追踪一个 gold chunk,记录的是这条证据是否进入前 k,可称命中率。

包含精确产品代码的问题可以比较稀疏或关键词检索;跨语言和领域术语问题可以比较适用的 Embedding 模型。每种方案都需要在固定数据集上验证。

还有两类容易误判为模型问题的情况。第一,近似向量搜索没有返回精确搜索能找到的结果;应比较当前数据库支持的精确检索或更高搜索精度配置。第二,查询和文档向量来自不同模型版本、维度或归一化策略。维度相同也不保证向量处在可比较空间。

5. 过滤:证据是否被元数据排除了

日期、生效状态、文档类型和租户字段都会影响结果。证据初始排名不错,却在过滤后消失时,要核对文档元数据与实际条件。

原文建议移除过滤来做对照。多租户生产系统不能为了调试关闭授权过滤。应使用合成数据、受控离线副本或同租户的授权诊断环境,只调整允许实验的业务过滤条件。权限边界必须持续生效。

6. 重排与上下文:证据何时被淘汰

对比重排前后名次。如果正确片段从前排掉到截断线外,检查长文本截断、模型适用性和问题分布。

如果重排后仍在列表中,再看上下文组装:去重、Token 预算、模板拼接是否删掉它。最终发送的提示词才是模型实际能利用的输入,候选列表不等于最终上下文。

只有确认完整证据进入提示词,仍被回答忽略或曲解时,才把模型生成和指令作为重点实验对象。

7. 用一张追踪表记录损失位置

虚构查询 已索引 块完整 原始名次 过滤后 重排后 进提示词
企业退款期限 是 否 41 41 22 否
数据保留时间 是 是 3 被排除 --- 否
SSO 配置步骤 是 是 6 6 1 是

第一行优先修分块;第二行查元数据与允许范围内的过滤逻辑;第三行如果仍答错,再查上下文解释与生成。这些数字仅说明诊断方法,没有测量任何客户系统。

8. 修完之后验证完整链路

固定问题和 gold evidence,重跑摄取或检索相关阶段,保存新的 Trace。分别记录候选召回、最终上下文覆盖、答案与引用质量,再比较延迟和成本。

日志可以优先保存 chunk ID,但必须能够按文档版本解析回当时的内容。若索引更新后同一个 ID 指向了不同文本,旧 Trace 就难以复核。

排障的目的,是找到证据最早丢失或变形的位置,并通过一次有边界的实验验证修复。更强的模型可以改善部分生成问题,但不能替系统读取一段从未送达的证据。


相关推荐
仙逆GPT2 小时前
ChatGPT、Codex工程实战:Agent接入企业知识库,文档明明更新了,为什么回答还是旧版本?
chatgpt·codex·rag·企业知识库·ai agent
第404块砖头1 天前
Spring Boot 4.1 + Spring AI 2.0:我如何用 Java 微服务把 RAG、知识图谱和 MCP 协议串成一个 Agent 平台
知识图谱·知识库·graph·rag·mcp·spring boot 4.1·spring ai 2.0
code2cat2 天前
【随笔】RAG混合检索:让关键词与向量一起找证据
人工智能·rag·混合检索
lgcgkCQ2 天前
【AI 转型实战 1】SpringAI 入门:搭建基础大模型对话能力
java·ai·agent·rag·spring ai·mcp·langchain4j
Flynn Liang2 天前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
Flynn Liang2 天前
内存/Redis/PGVector/Milvus/ES 怎么选?Spring AI VectorStore 抽象与向量库选型对照表
redis·elasticsearch·milvus·rag·springai·pgvector·向量库
ynchyong2 天前
OpenAI 技术全景解析
openai·rag·function·guardrails
一枕槐安4873 天前
RAG 服务扛住高并发:缓存、队列、限流三件套
java·spring·缓存·异步任务·rag·断路器
Maiko Star3 天前
【HM-LC】LangChain RAG查询优化详解:查询重写、混合检索与重排序实战
langchain·rag