TruLens评测使用教程:从安装到跑通RAG应用评估
TruLens 是一个给大模型应用打分的 Python 库,常用来评估 RAG 的检索质量和回答质量。
如果你已经有一个能跑通的问答链,想快速看到“检索到的上下文是否相关”“回答是否忠于上下文”,可以按下面的步骤安装并跑通一次评估。
本文以本地 Python 环境为例,不涉及生产集群部署。
先确认运行环境和依赖
TruLens 的核心依赖包括 Python、pandas 等,建议使用 Python 3.9 以上版本,并在虚拟环境中安装,避免污染系统包。
python -m venv trulens-env
source trulens-env/bin/activate
python -m pip install --upgrade pip
pip install trulens
安装完成后,用一条命令验证导入是否正常:
python -c "import trulens; print(trulens.__version__)"
能打印出版本号就说明基础包可用。
如果提示找不到模块,先检查当前终端是否处于虚拟环境中,再确认 pip 和 python 指向同一个解释器:which python 和 which pip 的路径应位于同一虚拟环境目录下。
准备一个可评估的问答链
TruLens 本身不负责构建 RAG,它做的是“记录并打分”。
因此你需要先有一个可调用的问答函数或 LangChain 链。
最小结构是:输入问题,返回答案,同时能拿到检索到的上下文。
如果暂时没有现成链,可以用一个简单函数模拟,先跑通评估流程:
def qa_chain(question: str):
answer = "这是一个示例回答"
contexts = ["这是检索到的上下文片段"]
return answer, contexts
真实场景中,把 answer 换成模型输出,把 contexts 换成向量库检索结果即可。
注意返回顺序要固定,后面配置 Feedback 时依赖这个顺序。
初始化 TruChain 并配置评估指标
TruLens 用 TruChain 包装应用,用 Feedback 定义打分逻辑。
下面用“上下文相关性”和“答案与上下文一致性”两个常用指标做示例,模型调用部分需要你替换成自己的 LLM 提供商配置。
from trulens.core import TruSession, Feedback
from trulens.apps.langchain import TruChain
session = TruSession()
f_context_relevance = Feedback(
lambda question, contexts: 0.8,
name="Context Relevance"
).on_input_output()
f_groundedness = Feedback(
lambda answer, contexts: 0.9,
name="Groundedness"
).on({"answer": lambda x: x[0], "contexts": lambda x: x[1]})
tru_chain = TruChain(
qa_chain,
app_name="demo_rag",
feedbacks=[f_context_relevance, f_groundedness]
)
上面的 lambda 只是占位打分函数,用来验证流程能否跑通;
真实评估需要把打分逻辑替换为模型调用或规则计算。on_input_output() 表示该指标接收输入和输出,on() 则用于从输出中拆出答案和上下文。
运行记录并查看仪表盘
包装完成后,用 with 语句调用应用,TruLens 会自动记录这次调用:
with tru_chain as recorder:
recorder.invoke("TruLens 怎么评估 RAG?")
运行结束后,启动仪表盘查看记录:
trulens dashboard
默认会在本地启动一个 Web 服务,终端会打印访问地址,用浏览器打开即可看到应用名称、输入输出和每条 Feedback 的得分。
如果端口被占用,可以按终端提示换端口,或在启动命令中指定端口参数。
验证是否成功,重点看三处:应用记录里是否出现本次问题、输出中是否包含答案和上下文、Feedback 列是否有分数。
三者齐全,说明评估闭环已经跑通。
容易踩的坑
- 导入路径随版本变化:TruLens 不同版本的模块路径可能不同,安装后先看实际版本,再对照官方文档确认
TruSession、TruChain的导入位置。 - Feedback 的输入不匹配:
on()里的字段名必须和函数参数名一致,否则运行时会报参数缺失。 - 没有记录到数据:只有通过
TruChain包装后的调用才会被记录,直接调用原函数不会产生记录。 - 打分函数返回非数值:Feedback 需要返回可比较的分数,返回字符串或 None 会导致面板显示异常。
如果启动仪表盘后页面打不开,先检查终端是否仍在运行、访问地址是否为本机地址,再确认防火墙没有拦截本地端口。
常见疑问
TruLens 必须配合 LangChain 使用吗? 不是。
TruLens 提供通用的记录与评估能力,LangChain 只是常见集成方式之一,自定义函数同样可以包装。
评估指标需要自己写吗? 内置指标可以直接用,但涉及模型判断的指标通常需要配置 LLM 提供商;
规则类指标可以自己写函数。
评估结果存在哪里? 默认使用本地数据库记录,仪表盘读取同一份数据。
需要持久化或多人共享时,再按官方说明切换数据库配置。
跑通一次完整评估后,建议先用少量问题验证指标是否符合预期,再扩大测试集。
TruLens 的价值在于把“感觉回答不错”变成可比较的分数,前提是打分逻辑和业务目标对齐。