•了解 RAGAS 评估库的起源和发展。
•了解 RAG 评估分数。
•学会使用 RAGAS 评估库评估 RAG 系统。
在本节中,我们将演示如何通过在现有的RAG流水线上实施RAGAS评估库来工作。我们不会从头开始构建一个RAG流水线,所以有一个现有的RAG流水线可以生成查询的响应是前提条件。我们将使用来自Kaggle的COQA-QUAC数据集。该数据集包含各种问题、上下文和它们的响应,将用作RAG流水线的数据。我们将手动为一些查询生成响应,并使用参考/真实响应生成RAGAS分数。
RAGAS提供以下评估分数:
•准确性:这衡量了生成的答案与给定上下文的事实一致性。它是根据答案和检索到的上下文计算的。答案的范围是(0,1),数值越高越好。
•答案相关性:评估指标答案相关性专注于评估生成的答案与给定提示的相关性。对于不完整或包含冗余信息的答案,分配较低的分数,较高的分数表示更好的相关性。该指标使用问题、上下文和答案进行计算。
•上下文回忆:上下文回忆度衡量了检索到的上下文与注释答案(视为真实答案)的一致程度。它是基于真实答案和检索到的上下文计算的,值的范围在0到1之间,数值越高表示性能越好。
•上下文精确度:上下文精确度是一个度量标准,用于评估上下文中是否将所有与真实相关的项目排名较高。理想情况下,所有相关的块都应该出现在前几个排名中。该指标使用问题、真实答案和上下文进行计算,值的范围在0到1之间,数值越高表示精确度越高。
•上下文相关性:该指标根据问题和上下文计算检索到的上下文的相关性。值的范围在(0,1)之间,数值越高表示相关性越好。
•上下文实体回忆:该指标根据与上下文和真实答案中的实体数量相对应的检索到的上下文的召回率来衡量。
此外,RAGAS还提供了两个端到端评估指标,用于评估RAG流水线的端到端性能。
•答案语义相似度:答案语义相似度的概念涉及评估生成的答案与真实答案之间的语义相似程度。该评估基于真实答案和生成的答案,值的范围在0到1之间。
•答案正确性:答案正确性的评估涉及将生成的答案与真实答案进行比较,以判断生成的答案的准确性。该评估依赖于真实答案和生成的答案,得分范围从0到1。在本文中,我们将仅关注使用忠实度、答案相关性、上下文相关性和上下文召回度指标评估 RAG 管道。这里的唯一要求是评估输入必须是一个包含查询、响应和源文档的字典。现在我们已经讨论了目标和要求,让我们直接开始使用 RAGAS 进行评估。
首先,让我们安装 RAGAS 的所有必要包。下面是安装所需的所有包及其特定版本的列表:
langchain==0.1.13
openai
ragas==0.0.22注意:避免使用最新版本的 RAGAS,因为它没有实现 Langchain。现在我们已经设置好了环境,让我们开始使用 RAGAS 进行生成的响应的评估。
首先,我们将使用 RAG 管道生成一个响应。RAG 管道的输出必须是一个包含“query”、“result”和“source_documents”键的字典。我们可以通过在 Langchain 的 RetrievalQA 链中将 return_source_documents 参数设置为 True 来简单地实现这一点。下面的图片显示了我用于相同目的的参数:
这是 Ragas 评估器接受的格式。下面是一个响应变量应该是什么样子的示例:
{'query':'印度的马拉雅利人分布在哪里?',
'result':'马拉雅利人分布在各个...',
'source_documents':[
Document(
page_content=':0\nquestion:马拉雅利人位于哪里?',
metadata={'source':'data/dummy-rag.csv','row':0}
),
...
]
}注意,源文档是一个包含源参考的文档列表。这个字典本身将被传递给 RAGAS 评估器来计算每个分数。我们将为2-3个查询生成响应,并以上述格式作为 Python 字典存储它们,然后将它们存储在 responses 列表中,稍后将使用它们。
接下来,我们将使用 RAGAS 评估器创建评估链。我们将使用忠实度、答案相关性、上下文相关性和上下文召回链。首先,我们需要从 RAGAS 中导入一些必要的包。
fromragas.langchain.evalchainimportRagasEvaluatorChain
fromragas.metricsimport(
faithfulness,
answer_relevancy,
context_relevancy,
context_recall,
)我们使用 RagasEvaluatorChain 来创建评估的指标。它接受一个指标并初始化我们用来生成评估分数的指标。
接下来,我们将使用 RagasEvaluatorChain 创建4个不同的指标。
eval_chains={
m.name:RagasEvaluatorChain(metric=m)
formin[faithfulness,answer_relevancy,context_relevancy,context_recall]
}这段代码创建了一个包含4个不同评估链的字典:忠实度、答案相关性、上下文相关性和上下文召回。
现在,我们将循环遍历生成的响应字典并对其进行评估。假设响应存在于名为“responses”的列表中,我们将遍历它并获取每个响应字典,其中包含以下键值对:查询、响应、源文档。
forresponseinresponses:
forname,eval_chainineval_chains.items():
score_name=f"{name}_score"
print(f"{score_name}:{eval_chain(response)[score_name]}")上面的代码片段循环遍历每个字典并生成分数。内部循环遍历每个评估指标以生成它们的分数。下面是上述代码的示例输出:
faithfulness_score:1.0
answer_relevancy_score:0.7461039226035786
context_relevancy_score:0.0
context_recall_score:1.0上面是单个查询响应的分数。然而,我们可以自动化它以生成更多查询响应的分数。下面是所有步骤的完整代码:
fromragas.langchain.evalchainimportRagasEvaluatorChain
fromragas.metricsimport(
faithfulness,
answer_relevancy,
context_relevancy,
context_recall,
)
eval_chains={
m.name:RagasEvaluatorChain(metric=m)
formin[faithfulness,answer_relevancy,context_relevancy,context_recall]
}
forresponseinresponses:
forname,eval_chainineval_chains.items():
score_name=f"{name}_score"
print(f"{score_name}:{eval_chain(response)[score_name]}")RAGAS在语言模型应用中崭露头角,尤其在RAG系统范围内。通过将MDD集成到RAG流程的核心中,RAGAS提供了一种结构化的方法来评估和提升这类系统的性能。全面的评估指标包括忠实度、答案相关性、上下文回忆和上下文相关性。这些指标有助于对RAG流程生成的响应进行全面分析,确保其与上下文和真实情况相一致。
在使用COQA-QUAC数据集对现有的RAG流程进行实际演示时,RAGAS展示了其为开发人员提供可量化的见解和可操作的反馈的能力。该过程涉及初始化环境、生成响应,并利用RAGAS评估器链计算各种得分。这个实际例子突显了RAGAS在持续改进LLM的可访问性和实用性,从而增强了它们的可靠性和效率。RAGAS作为一个开源标准和开发人员、研究人员确保提供负责任的AI和ML应用的重要工具。
• RAGAS评估库将MDD的原则融入到LLM和RAG系统开发的工作流中。
•使用RAGAS评估生成的响应的过程包括以所需的字典格式生成响应,并创建和利用评估器链来计算得分。
•通过利用RAGAS,开发人员和研究人员可以客观地了解他们的RAG应用的性能,从而能够开发精确和明智的改进措施。
| 欢迎光临 链载Ai (http://www.lianzai.com/) | Powered by Discuz! X3.5 |