首页/AI/RAG 与向量库速查/全链路日志与可观测性

全链路日志与可观测性

每次问答要留下可复盘的轨迹:原始问题、改写后查询、候选片段 id 与分数、重排结果、上下文条数、模型参数、输出与校验结果;按 trace id 串联,才能回答“为什么这次答错了”。

RAG 与向量库速查AI更新于 2026-10-13

全链路日志是什么

全链路日志的目标是让每一次问答都能被复现:原始问题、改写后查询、候选片段 id 与分数、重排结果、实际进上下文的片段、模型与提示词版本、各环节耗时、最终输出与校验结果。全部字段用同一个 trace id 串起来,才能在用户报“这次答错了”时,把当时模型看到的输入完整还原出来。没有这份记录,调参与排错都只能靠猜;有了它,评测集的增补也有了现成来源。

基本信息

串联键trace_id,贯穿改写、检索、重排、生成各环节
必记内容各环节输入输出与耗时、模型与提示词版本
采样策略关键路径全量记录,高频路径按比例采样并保底
存储结构化字段存入日志或追踪平台,便于按条件检索
合规脱敏、访问权限收窄、保留期限受控

典型使用场景

  • 线上排错:按 trace id 还原本次问答的完整链路,定位环节
  • 评测集沉淀:低分与转人工会话打标后加入回归集
  • 延迟分析:按环节统计耗时分布,找出真正的瓶颈
  • 版本对比:按模型与提示词版本分组比对质量指标
  • 安全审计:回溯可疑输入与输出,支撑注入事件的复盘

trace 结构示例

trace 结构示例
{"trace_id": "t-9f2", "query": "…", "rewritten": "…",
 "retrieved": [{"id": "c-1", "score": 0.83}],
 "reranked": [{"id": "c-7", "score": 0.91}],
 "used_in_context": ["c-7", "c-1"],
 "model": "large-v2", "prompt_version": "v3",
 "answer": "…", "validation": {"citations_ok": true},
 "latency_ms": {"retrieval": 31, "rerank": 205, "generate": 2400}}

字段与用途

字段用途缺失后果
改写查询区分改写问题与检索问题排错从第一环就断链
进上下文片段确认模型实际输入把召回内容误当输入
版本信息按版本对比与回滚质量变化无法归因
校验结果统计引用与越权拦截安全事件无痕迹
日志本身可能含敏感数据:写入前脱敏,访问权限收窄,保留期限按合规要求设定,并避免把完整系统提示明文落盘。

易错点

  • 日志只记最终答案,中间检索与重排信息缺失,排错无从下手
  • trace 含用户原文未脱敏,合规审计发现问题
  • trace id 未贯穿全链路,跨服务排查时拼不出完整记录
  • 采样策略过于激进,出问题的时间段恰好没有样例
  • 日志字段随代码随意变更,历史数据无法与新数据对比
  • 把完整上下文与系统提示整段落盘,日志体积膨胀且泄露风险上升

数据来源与参考

  • TruLens 官方文档(Tracing)
  • OpenTelemetry 官方文档(追踪语义)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌