真实面经题目 · 原创解析

向量数据库检索到语义相关但时间过久的历史信息时,RAG 系统应如何判断能否使用?

这道题考察 RAG 系统面对“语义相关但时间过久”的向量检索结果时,如何把相关性判断升级为证据可用性判断。回答要说明不能只看 embedding 分数,而要结合问题的时效敏感度、文档时间戳、版本、生效范围、来源权威性、与新证据的冲突情况和业务风险来决定使用、降权、补检、拒答或提示不确定。好的方案还要覆盖元数据过滤、时间衰减、动态检索、冲突检测、评估指标和上线监控。

出现于:快手 · 后端开发

60 秒回答模板

向量数据库返回语义相关的历史信息时,RAG 不能直接把它塞进上下文,而要先判断这个问题是否时间敏感。第一步是 query 分流:如果用户问定义、基础原理、历史事实,旧文档可能仍可用;如果问价格、政策、接口状态、库存、版本兼容、当前负责人或线上配置,就必须要求新鲜证据。第二步看候选元数据,包括发布时间、更新时间、生效时间、失效时间、版本号、适用地区、数据源和文档状态。第三步做 freshness-aware ranking,对过期候选降权或过滤,同时优先召回最近文档;必要时触发静态库之外的动态网页、数据库或业务 API 检索。第四步做证据一致性检查,如果旧文档与新文档冲突,以更权威、更近、更明确生效范围的证据为准,并在无法判定时让生成模型说明不确定或请求用户限定时间。最终输出要带时间边界,例如“截至某日期的文档显示”。工程上还要通过时效敏感 query 集合评估 stale evidence rate、冲突率、引用新鲜度、拒答准确率和答案正确率。

考点 相关不等于可用
难度 真实面经题
回答目标 让读者能把 stale retrieval 问题讲成一套证据可用性判断机制,覆盖时效识别、元数据治理、重排过滤、动态补检、冲突处理和评估监控。

深入解析

01

先判问题时效性

不是所有旧信息都不可用。数学概念、算法原理、历史事件和长期稳定的产品说明,旧文档仍可能有价值;而实时状态、政策、价格、接口版本、排班、库存、榜单和线上配置高度时间敏感。RAG 应先识别 query 是否需要当前信息,再决定旧文档的可用门槛。

02

元数据是基础

向量相似度本身无法表达文档是否过期,因此写入向量库时就要保留 created_at、updated_at、effective_at、expires_at、version、source_type、authority、region、tenant、status 等字段。没有这些元数据,后续只能做模糊猜测,难以形成稳定规则。

03

过滤与衰减

对明确失效、归档、废弃版本或适用范围不匹配的文档应直接过滤;对未明确失效但时间较久的文档可做时间衰减,降低排序分。衰减强度不能全局固定,应该按文档类型和问题类别配置,例如 API 文档衰减快,基础概念文档衰减慢。

04

补充检索

如果 topK 中高相关结果普遍过旧,系统不应勉强回答,而应触发补充检索:扩大时间过滤后的召回、查结构化业务库、调用权威 API、搜索动态网页或请求用户指定时间范围。补检的目标是找到更新证据,而不是简单增加旧候选数量。

05

冲突判定

旧文档和新文档同时出现时,要识别它们是否冲突。常见规则是优先选择更近更新时间、更高来源权威、更明确生效范围、更接近用户场景的证据;如果旧文档只是解释背景而新文档给出当前状态,可以保留旧文档作为背景但不能让它主导结论。

06

生成约束

进入生成模型的上下文应标注时间和状态,提示模型不要把旧证据当成当前事实。答案中可以写明“根据 2026-05-01 更新的文档”或“没有检索到最近证据”。当证据过旧且问题强时效时,正确行为可能是拒答、提示不确定或要求用户允许联网/查询实时系统。

07

索引写入策略

防 stale 不能只靠查询时补救。数据管道要支持增量更新、删除传播、过期标记、版本归并、文档状态同步和 embedding 重建。若旧版本没有从索引中删除或降权,再强的重排也会不断把历史答案带回上下文。

08

评估监控

需要构造时效敏感评测集,覆盖新旧版本冲突、过期政策、接口变更和无新证据场景。指标包括 stale evidence rate、freshness@K、冲突检测准确率、最终答案正确率、拒答准确率、引用时间覆盖率和用户纠错率。线上还要监控旧文档引用占比突然上升等异常。

易错点

  • 只按向量相似度选上下文,忽略文档更新时间和生效状态。
  • 把所有旧文档都过滤掉,导致基础知识和历史背景召回下降。
  • 只看 created_at,不看 updated_at、effective_at、expires_at 和版本号。
  • 让生成模型自己判断过期与否,却不给它结构化时间和来源信息。
  • 新旧证据冲突时简单拼进上下文,导致模型生成混合结论。
  • 高时效问题没有补检机制,仍用静态向量库硬答。
  • 索引更新只追加新文档,不处理旧版本删除、归档和降权。
  • 评估只看回答流畅度,不统计过期证据率和引用新鲜度。

面试官追问

如何自动识别一个 query 是否属于强时效问题?

可以结合规则和分类模型。规则捕捉“最新、今天、当前、是否还支持、价格、版本、状态、负责人”等词,也要识别业务字段本身的时效属性。模型再根据语义判断隐含时效,例如“这个接口还能用吗”。最终输出不只是是非,还应给出新鲜度要求和可接受证据时间窗口。

时间衰减应该放在召回、重排还是生成前过滤阶段?

三层都可以用,但目的不同。召回前过滤适合明确过期或权限不符的文档;重排阶段适合把相关性和新鲜度综合打分;生成前过滤用于最后阻断不应进入上下文的证据。工程上通常组合使用,避免早过滤过严导致漏召回,也避免旧证据进入最终答案。

如果旧文档权威但新网页来源不可靠,应该如何决策?

不能简单按新旧排序。旧权威文档可作为可信背景,新网页需要看发布方、引用链、是否来自官方渠道、是否有多源交叉验证。如果新来源不可靠且无法验证,答案应说明当前证据不足,而不是用低可信网页覆盖权威文档;必要时提示查询权威系统或等待确认。

向量库删除或更新延迟会怎样影响 RAG 答案,如何做一致性保障?

删除或更新延迟会让旧向量继续被召回,生成模型可能引用废弃政策、旧接口或错误状态。保障方式包括版本号、tombstone、查询时状态过滤、索引增量合并、删除传播监控和写入可检索延迟指标。对高风险集合,还可以在生成前回源校验文档状态。

当没有足够新证据时,系统应该拒答、联网补检,还是给出旧答案并标注?

取决于风险和用户需求。低风险背景问题可以给出旧答案并清楚标注时间;强时效或高风险问题应先尝试权威补检,补检失败就拒答或说明无法确认。不要把旧答案包装成当前事实,尤其是涉及价格、政策、线上状态、合规和生产操作的场景。

如何设计评测集来发现 stale evidence 导致的幻觉?

评测集应刻意构造旧文档高相关但结论已失效的样本,包括版本变更、政策废止、配置迁移和新旧证据冲突。期望输出要标注应使用的新证据、应拒绝的旧证据和正确回答边界。指标看过期引用率、冲突处理准确率、拒答是否合理以及最终答案是否把旧事实说成现状。