TruLens 做什么
TruLens 通过包装应用记录检索与生成每一步的输入输出,再用「反馈函数」对每一步打分:groundedness 看回答是否扎根于上下文,context relevance 看检索到的片段是否切题,answer relevance 看回答是否对题。它的价值在于分数能追到具体调用轨迹上,可以判断问题出在检索还是生成,而不是只给一个笼统的总分。
基本信息
| 工作方式 | 包装应用、记录轨迹、反馈函数打分、仪表盘查看 |
|---|---|
| 常见反馈函数 | groundedness、context relevance、answer relevance |
| 开销来源 | 反馈函数多由模型打分,会产生额外调用费用 |
| 接入节奏 | 先小流量验证开销与稳定性,再逐步扩大 |
典型使用场景
- 上线前体检:用一批真实问题跑一遍,看各环节分数分布
- 问题归因:回答变差时判断是检索不相关还是生成不忠实
- 改动对比:调切分或换模型后对比同一条轨迹的分数变化
- 灰度监控:小流量接入线上请求,观察真实分布下的表现
- 评审举证:把轨迹截图作为评估材料,便于产品与研发对齐
接入思路
接入思路
from trulens.core import TruSession
from trulens.apps.langchain import TruChain
session = TruSession()
tru_app = TruChain(rag_chain, app_name="kb-rag",
feedbacks=[groundedness, context_relevance, answer_relevance])
with tru_app as rec:
resp = rag_chain.invoke({"question": "……"}) # 正常调用即可被记录
# 在仪表盘按时间线查看每个环节的得分与对应的原文片段
反馈函数指向
| 反馈函数 | 评估对象 | 低分说明什么 |
|---|---|---|
| context relevance | 检索器输出 | 检索到的片段与问题不相关 |
| groundedness | 生成输出 | 回答超出上下文,出现无支撑内容 |
| answer relevance | 生成输出 | 答非所问或漏答要点 |
| 按轨迹综合看 | 整条链路 | 低分环节决定优化顺序 |
追踪数据可先小流量接入,确认开销后再扩大;反馈函数调用模型会产生额外费用,全量开启前先测算单价与量级。
反馈函数的提示词本身也需要校准:先用人工标注过的一小批样本对齐判断口径,再拿它自动打分,否则分数只是看似客观。