链载Ai
标题: 《构建和评估高级RAG》: RAG评估要素和方法 [打印本页]
作者: 链载Ai 时间: 昨天 15:10
标题: 《构建和评估高级RAG》: RAG评估要素和方法
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">本文带你了解如下知识:ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin-left: 8px;padding-left: 1em;list-style: circle;color: rgb(63, 63, 63);" class="list-paddingleft-1">•评估RAG程序的三要素、
•RAG评估的详细流程、
•LLM评估的方式有哪些、
•反馈函数的构成和使用
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;color: rgb(63, 63, 63);">
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-radius: 8px;display: block;margin: 0.1em auto 0.5em;border-width: 0px;border-style: solid;border-color: initial;height: auto !important;" title="null" src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=83052&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9hZzdaM2RDcTdMbXI0REk0MGNMaDZUeW5OelpoZ2NqenFoMWZ6NFRsejZidWY2akR2UlFmNk44cmljRVVTU0o0VHZ4SGhOdExaMnpGMVpwc3NDNTR4R2cvNjQwP3d4X2ZtdD1wbmcmYW1w;from=appmsg"/>ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 20px;font-weight: bold;display: table;margin: 2em auto 1.5em;padding-top: 6px;padding-bottom: 6px;padding-left: 16.75px;background-image: linear-gradient(135deg, rgb(113, 23, 234), rgba(113, 23, 234, 0.667), rgba(234, 96, 96, 0.533), rgba(217, 57, 205, 0.267), rgba(217, 57, 205, 0));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;color: rgb(255, 255, 255);border-radius: 8px;width: 318.25px;">RAG评估要素ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">RAG 的评估围绕 RAG 的三要素展开:输入、上下文、输出。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">形成了三个主要的指标:ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin-left: 8px;padding-left: 1em;list-style: circle;color: rgb(63, 63, 63);" class="list-paddingleft-1">•问题相关性、
•上下文相关性、
•事实度(植地性怪怪的,我翻译成事实度,表示结果是否终于上下文和提问)。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;color: rgb(63, 63, 63);">
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-radius: 8px;display: block;margin: 0.1em auto 0.5em;border-width: 0px;border-style: solid;border-color: initial;height: auto !important;" title="null" src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=83052&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9hZzdaM2RDcTdMbXI0REk0MGNMaDZUeW5OelpoZ2NqelQ3M1BwVkd0WkVPSmljZGp5NjJPWFJNaWJ0MEZNcmNFRmljTEY5ano2ZUdVMThkd2VnajU1OWtjZy82NDA/d3hfZm10PXBuZyZhbXA=;from=appmsg"/>详细信息参考「数翼」其他文章,这里不做深入。
评估流程
上一篇文章,我们提到了 TruLens 的评估流程,今天详细看看。

1. 构建 LLM 程序
第一步当然是构建 LLM 应用程序,也是我们要评估的主体。
应用程序可以你问答程序、AI助手等等,你也可以用你任何喜欢的 API。
2. TruLens 连接 LLM 程序
第二步就是将您的 LLM 应用程序连接到 TruLens,同时记录LLM的输入和响应。
前面已经演示过,这个步骤非常简单。
3. 使用反馈函数评估和记录结果
第三步就是通过针对应用程序的提示和响应运行反馈函数并记录结果并评估质量。
为什么需要反馈函数
衡量 LLM 应用的性能是从开发到生产过程中的关键一步。如果没有先在代表性测试集上衡量其准确性,就不会将传统 ML 系统投入生产。
然而与传统机器学习不同的是,基本事实是稀疏的,而且通常完全不可用。
由于没有基本事实来计算我们的 LLM 应用程序的指标,因此可以使用反馈函数来计算 LLM 应用程序的指标。
什么是反馈函数
反馈函数提供了一种在应用程序运行时生成评估的编程方法,可以衡量应用程序在数据上的表现,以及用户的表现。
评估方式
评估可以有多种方式,传统NLP、人工、大模型等等,我们这里使用 LLM。

反馈函数的结构
下图展示了反馈函数的结构。

反馈提供者
反馈提供者是运行给定反馈功能的后端。每个提供程序都提供多个底层模型, 例如 GPT-4 或 Llama-2。在许多情况下(但并非所有情况下), 反馈实现是跨提供程序共享的(例如基于 LLM 的评估)。
4. 创建反馈函数
fromtrulens_evalimportOpenAIasfOpenAI
provider=fOpenAI()
问题相关性反馈函数
fromtrulens_evalimportFeedback
f_qa_relevance=Feedback(
provider.relevance_with_cot_reasons,
name="AnswerRelevance"
).on_input_output()
上下文相关性反馈函数
使用TruLlama获取上下文,
fromtrulens_evalimportTruLlama
context_selection=TruLlama.select_source_nodes().node.text
创建上下文相关性评估函数:
importnumpyasnp
f_qs_relevance=(
Feedback(provider.qs_relevance,
name="ContextRelevance")
.on_input()
.on(context_selection)
.aggregate(np.mean)
)
事实度反馈函数
fromtrulens_eval.feedbackimportGroundedness
grounded=Groundedness(groundedness_provider=provider)
f_groundedness=(
Feedback(grounded.groundedness_measure_with_cot_reasons,
name="Groundedness"
)
.on(context_selection)
.on_output()
.aggregate(grounded.grounded_statements_aggregator)
)
5. 评估应用程序
使用 TruLlama 创建记录器来连接应用程序,传入前面我们创建的三个反馈函数:
•f_qa_relevance,
•f_qs_relevance,
•f_groundedness
fromtrulens_evalimportTruLlama
fromtrulens_evalimportFeedbackMode
tru_recorder=TruLlama(
sentence_window_engine,
app_id="App_1",
feedbacks=[
f_qa_relevance,
f_qs_relevance,
f_groundedness
]
)
从文件获取和手动添加要评估的问题,
eval_questions=[]
withopen('eval_questions.txt','r')asfile:
forlineinfile:
#Removenewlinecharacterandconverttointeger
item=line.strip()
eval_questions.append(item)
eval_questions.append("HowcanIbesuccessfulinAI?")
使用查询引擎进行提问,同时使用 TruLens 进行记录,
forquestionineval_questions:
withtru_recorderasrecording:
sentence_window_engine.query(question)
获取评估结果:
records,feedback=tru.get_records_and_feedback(app_ids=[])
records.head()
结果的可读性并不好,

使用 Pandas 显示一下,
importpandasaspd
pd.set_option("display.max_colwidth",None)
records[["input","output"]+feedback]

查看第一条记录,
tru.get_leaderboard(app_ids=[])

或者运行 Dashboard 查看,
tru.run_dashboard()
从下图可以看到,问题相关性挺高,但是其他两个指标不太好。

查看 11 条记录的评估数据:

点击任意一条记录查看详细结果,可以根据上下文、输入、输出来进行诊断。

--- END ---
《构建和评估高级RAG》001: 实现高级RAG管道
| 欢迎光临 链载Ai (https://www.lianzai.com/) |
Powered by Discuz! X3.5 |