上一题下一题

检索链路日志不足导致线上问题难复现时,如何补充 trace、召回快照和模型输入输出记录

进阶版
来源:baidu初级工程师RAG时间与版本管理元数据过滤RAG问题复现检索链路可观测性
答案解析

我一般会从“链路可追踪、召回可回放、模型可复现”三个层面补齐日志和观测能力。

首先是补充统一的 trace。入口请求生成全局 traceId,贯穿网关、检索服务、召回服务、排序服务、模型服务以及下游依赖。每个阶段记录 spanId、耗时、状态码、异常信息、降级标识、命中的策略版本和实验分组。这样线上出现问题时,至少能知道请求走了哪些模块、在哪一步异常、是超时、空召回、排序异常,还是模型结果异常。

检索链路里我会重点记录这些信息:

请求侧:用户标识脱敏后的 ID、query、query 改写结果、地域、端类型、业务场景、实验桶、请求时间。 检索侧:召回通道列表、每个通道的请求参数、召回数量、耗时、失败原因、是否触发降级或兜底。 排序侧:候选集规模、特征获取状态、粗排/精排模型版本、排序分数分布、最终截断原因。 结果侧:最终返回的 item 列表、排序位置、过滤原因、去重原因、业务规则干预原因。

第二是做召回快照。因为线上问题经常不是代码本身,而是数据、索引、配置、实验策略在变化,所以只记录日志还不够。我会在关键请求上保存一份可回放的快照,比如:

原始

登录后查看完整内容