为什么需要对RAG系统评估
评估是AI开发流程中的一个非常关键步骤,它被用于检查当前策略相对于其他策略的有效性,或在当你对流程进行更改时进行评估。因此在进行LLM项目的开发和改进时,必须要有衡量其表现的方法。
LlamaIndex中RAG处理过程(图片来源:https://docs.llamaindex.ai/en/stable/getting_started/concepts/ ):
为了评估RAG系统,我们通常使用两种类型的评估:
-
检索评估
-
响应评估
评估RAG系统更复杂。这种复杂性的原因在于RAG系统生成的响应是非结构化文本,需要结合定性和定量指标来准确评估其性能。
为了有效评估RAG系统,我们通常遵循TRIAD框架。该框架由三个主要组成部分组成:
- 上下文相关性:这个组件评估RAG系统的检索部分。它评估从大型数据集中准确检索到的文档。这里使用的度量指标包括精确度、召回率、MRR和MAP。
- 精确度衡量了检索到的文档的准确性。它是检索到的相关文档数量与检索到的文档总数之比。
- 召回率衡量了检索到的文档的全面性。它是检索到的相关文档数量与数据库中相关文档的总数之比。
- 平均倒数排名(MRR)是一种评估检索系统效果的度量指标,它考虑了第一个相关文档的排名位置。
- 平均准确率(MAP)是一种评估多个查询的检索精确度的度量指标。它同时考虑了检索的精确度和检索文档的顺序。MAP定义为一组查询的平均准确率得分的平均值。为了计算单个查询的平均准确率,需要在检索到的文档的排序列表中的每个位置计算精确度,只考虑前K个检索到的文档,其中每个精确度都根据文档是否相关进行加权。
- 忠实度(基于检索):这个组件属于响应评估。它检查生成的响应是否准确无误,并且基于检索到的文档。通过人工评估、自动事实检查工具和一致性检查等方法来评估忠实度。
- 人工评估:专家手动评估生成的响应是否事实准确,并且是否正确引用了检索到的文档。这个过程涉及检查每个响应与源文档,以确保所有主张都有证据支持。
- 自动事实检查工具:这些工具将生成的响应与已验证事实的数据库进行比较,以识别不准确之处。它们提供了一种无需人工干预即可检查信息有效性的自动方式。
- 一致性检查:这些评估模型是否在不同查询中始终提供相同的事实信息。这确保模型可靠,不会产生矛盾的信息。
- 答案相关性:这也是响应评估的一部分。它衡量生成的响应对用户的查询提供了多少有用的信息。使用的度量指标包括BLEU、ROUGE、METEOR和基于嵌入的评估。
RAG应用评估工具
Ragas(https://docs.ragas.io/en/latest/getstarted/index.html):Ragas 是专注于评估 RAG 应用的工具,通过简单的接口即可实现评估。Ragas 指标种类丰富多样,对 RAG 应用的框架无要求。也可以通过 langsmith(https://www.langchain.com/langsmith)/langfuse来监控每次评估的过程,帮助分析每次评估的原因和观察 API key 的消耗。
Continuous Eval(https://docs.relari.ai/v0.3):Continuous-eval 是一个用于评估 LLM 应用 pipelines 的开源软件包,重点放在检索增强生成(RAG)pipelines 上。它提供了一种更便宜、更快速的评估选项。此外,它还允许创建具有数学保证的可信的集成评估管道。
TruLens-Eval:Trulens-Eval 是专门用于评估 RAG 指标的工具,它对 LangChain 和 Llama-Index 都有比较好的集成,可以方便地用于评估这两个框架搭建的 RAG 应用。另外,Trulens-Eval 也可以在浏览器中启动页面进行可视化地监控,帮助分析每次评估的原因和观察 API key 的消耗。
Llama-Index:Llama-Index 是很适合用来搭建 RAG 应用,并且它目前的生态比较丰富,目前也在快速迭代发展中。它也包含评估 RAG 的功能和生成合成数据集的功能,用户可以方便地对由 Llama-Index 本身搭建的 RAG 应用进行评估。
DeepEval 是一个类似于Pytest的轻量级框架,专门针对LLM单元测试。它利用最新的研究方法,如G-Eval、幻觉检测、答案相关性等,通过本地运行的LLM和NLP模型来评估模型性能。无论是RAG还是微调应用,无论你是LangChain还是LlamaIndex的用户,DeepEval都能无缝融入你的开发流程。
除此之外,还有一些评估工具,它们在使用功能上,与上述的这些大同小异。比如 Phoenix(https://docs.arize.com/phoenix)、DeepEval(https://github.com/confident-ai/deepeval)、LangSmith、OpenAI Evals(https://github.com/openai/evals)。这些评估工具的迭代发展也非常快,关于具体的功能与使用方式可以查阅相应的官方文档。