承接上文:
RAG = 各类文档预处理 + Query理解+文档召回 + LLM + 全链路评测
【五】RAG全链路评测
LLM+RAG+知识库落地在企业,它是一整套工程系统,不仅仅是LLM问答,有众多模块组成,需要全链路评测:
1、文档预处理评测
主要是评测文档切分能力,如果基于最大长度+标点符号的切分,一段语义完整话很可能被切分开,或者有10个论点的段落可能被切分成两部分;这块目前没看到有评价框架,考虑构造数据作为 分类问题 ,计算Accuracy、 F1 。
2、Query理解评测
Query改写评测看具体而论了,可能需要改写、分类、槽位/参数提取(用于多轮/Function Call):
- 分类任务评价:Accuracy、F1
- 改写任务评价:ROUGE
- 参数提取任务评价:ROUGE
推荐参考工具:Pyrouge
3、文档召回评测
-
检索阶段:
-
Recall (召回率):衡量模型找出真正正样本的能力,计算为真正正样本数量除以所有正样本数量。
-
排序阶段:
-
MAP (Mean Average Precision,平均准确率均值):综合考虑召回率和准确率的指标,计算为每个查询的平均准确率的平均值,其中准确率是当前召回的正样本数量除以当前召回的所有样本数量。
-
MRR (Mean Reciprocal Rank,平均倒数排名):衡量模型将真正正样本排在前面的能力,计算为每个查询的第一个正样本的倒数排名的平均值。
-
NDCG (Normalized Discounted Cumulative Gain,归一化折损累计增益)则考虑了正样本的位置信息,对排名靠前的正样本给予更高权重。
推荐参考:
排序数据:https://github.com/THUIR/T2Ranking/tree/main
英文MTEB https://github.com/embeddings-benchmark/mteb
中文MTEB:https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB
Embedding榜单:https://huggingface.co/spaces/mteb/leaderboard
4、LLM问答评测
RAG三角形(RAG Triad)的评估方法,它由三个评估指标组成的,分别是:
- 答案相关性
(Answer Relevance):评估 答案 (Response)和 用户问题 (Query)之间的相关性。答案相关性越高,说明LLM越能理解输入的意图和需求,从而生成有用的输出,满足用户的目的。
- 上下文相关性 (Context Relevance):评估 用户问题 (Query)和 检索出的文档 (Context)之间的相关性。上下文相关性越高,说明检索系统越能找到与输入匹配的知识和信息,从而为LLM提供更好的上下文。
- 忠实度 (Groundedness):评估 答案
(Response)和 检索出的文档 (Context)之间的一致性。忠实度越高,说明LLM越能利用检索出的文档来生成有依据的输出,从而避免产生幻觉或错误。
推荐两个开源框架: RAGAS 、 TruLens
数据格式输入格式:
query | response | context | ground_truths |
为什么这个城市被选为首府? | 选择城市作为首府的原因因州而异。在某些情况下,...[1],而在其他情况下,... |
[1 ] 不论一个国家如何决定其首都...
[2]州首府之所以重要...
[3]当安卡拉、伯尔尼、巴西利亚...
| 选择城 市作为首府 的原因因州而异 。 在某些情况下,...[1], 在某些情况下,新的首府城市的选址是...[1][2] |
1、RAGAS: pip install ragas
https://github.com/explodinggradients/ragas
https://arxiv.org/pdf/2309.15217.pdf
RAGAS: Automated Evaluation of Retrieval Augmented Generation
2、TruLens:pip install trulens-eval
https://github.com/truera/trulens
5、后记
前面第3、4部分是分开评测,其实也可以端到端评测,这里推荐一个 RAG评价方法与框架汇总图 ,既有拆开也有end-to-end评测,包含三部分:检索、生成/幻觉、端到端,也列举了很多前文没有涉及到的 框架 :
图片来源:https://twitter.com/NeuralNeron/status/1747254800549630214
欢迎留言交流...