首页/AI/RAG 与向量库速查/RAG 可观测性与日志追踪

RAG 可观测性与日志追踪

为每次问答记录改写后查询、召回片段与分数、重排结果、实际进上下文的片段与最终回答,是定位问题与沉淀评测集的基础数据。

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

RAG 可观测性是什么

RAG 出错时最需要回答的是一个具体问题:这次答错,是改写跑偏、检索没召回、重排排错,还是生成端把材料读错?要能回答它,就必须把链路中间态完整记录下来——改写后的查询、召回片段 id 与分数、重排结果、真正进上下文的片段、模型与提示词版本、各环节耗时。这些数据同时是沉淀评测集的原料:用户差评或转人工的会话,打标后就能回流成回归用例。

基本信息

记录粒度每次问答一条结构化记录,按 trace id 串联
必记字段原问题、改写查询、召回与重排片段 id 及分数、进上下文片段、模型与提示词版本
耗时拆分检索、重排、生成分别计时
常用工具Langfuse、LangSmith、Phoenix 等追踪平台
合规要求问题与片段入库前脱敏,访问权限收窄

典型使用场景

  • 线上排错:用户报“答错了”,按 trace id 取回全过程复现判断
  • 评测集沉淀:低分与转人工会话打标后加入回归集
  • 成本与延迟分析:按环节拆分耗时,定位优化重点
  • 模型迭代对比:换模型或提示词后按版本分组比指标
  • 容量规划:按召回条数与上下文长度统计资源消耗趋势

结构化日志示例

结构化日志示例
{"trace_id": "8f3a...", "question": "报销标准是多少",
 "rewritten": "差旅费报销标准",
 "retrieved": [{"chunk_id": "hr-3#c2", "score": 0.83}],
 "reranked": [{"chunk_id": "hr-3#c2", "score": 0.91}],
 "used_in_context": ["hr-3#c2"], "model": "large-v2", "prompt_version": "v3",
 "latency_ms": {"rewrite": 320, "retrieval": 28, "rerank": 210, "generate": 2600}}

关键字段与用途

字段用途缺失后果
改写查询判断是否跑题无法区分改写问题与检索问题
召回 id 与分数复现检索层表现调参无依据
进上下文片段定位模型实际看到什么误把召回内容当成模型输入
模型与提示词版本按版本对比指标质量变化无法归因
日志含用户问题与文档片段,属于敏感数据:写入前脱敏、访问权限收窄、保留期限按合规要求设定,并且不要把完整的系统提示明文落盘。

易错点

  • 只记录最终回答,出问题无法判断是检索还是生成环节
  • 日志未做脱敏,把敏感知识与用户信息写入明文日志
  • trace id 未贯穿全链路,跨服务排查时拼不出一条完整记录
  • 只记录召回内容而不记录真正进上下文的片段,误判模型输入
  • 采样率设成 1% 图省事,出问题时恰好没有样例,可观测性名存实亡

数据来源与参考

  • LangSmith 官方文档(docs.smith.langchain.com)
  • Langfuse 官方文档(langfuse.com/docs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌