ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

使用 DeepEval 对 LlamaIndex LLM/RAG 应用进行单元测试:安装、指标与评估器集成全指南

使用 DeepEval 对 LlamaIndex LLM/RAG 应用进行单元测试:安装、指标与评估器集成全指南 使用 DeepEval 对 LlamaIndex LLM/RAG 应用进行单元测试安装、指标与评估器集成全指南【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址: https://gitcode.com/GitHub_Trending/ll/llama_indexDeepEval 是一套面向 AI Agent 与 LLM 应用的单元测试框架以零配置、开箱即用的方式为 LlamaIndex 用户提供 LLM 输出的自动化测试能力帮助开发者在生产环境中及时发现破坏性变更breaking changes。本篇指南基于 deepeval.md 展开完整覆盖 DeepEval 的安装配置、test_rag.py测试用例编写、deepeval test run命令行执行方式、十一类核心评估指标以及 DeepEval 评估器如何无缝接入 LlamaIndex 的BaseEvaluator评估体系含全部 6 个官方评估器读完即可为你的 RAG 应用搭建一套可重复运行的回归测试流水线。为什么用 DeepEval 做 LLM 单元测试LLM 输出具有天然的随机性与不确定性传统断言式单元测试难以直接套用。DeepEval 提供了一套有观点opinionated的评估框架把一次评估拆解为一个个test case测试用例针对每个用例自由组合多种评估指标metrics对响应进行打分与阈值判定从而将LLM 输出是否符合预期这一模糊问题转化为可量化的测试断言。DeepEval 完全开源open-source对 LlamaIndex 用户而言其最直接的价值在于通过pip install deepeval即可获得测试编写、指标计算、CLI 执行、结果仪表盘dashboard分析的一整套闭环能力无需额外搭建评估服务或标注数据即可在生产发布前捕获 RAG 应用的回归问题。安装与初始化设置DeepEval 的接入非常简单官方宣称0 setup即可使用。只需两步pip install -U deepeval # 可选登录以在后续获得可视化的测试结果仪表盘 deepeval loginpip install -U deepeval安装或升级到最新版DeepEval 及其依赖。deepeval login可选步骤。登录后deepeval test run的执行结果会上传至 DeepEval 的云端仪表盘便于跨时间维度对比分析测试历史。安装完成后即可创建test_rag.py开始编写测试。编写第一个测试用例test_rag.py以下示例演示了用pytest编写一个基于Answer Relevancy回答相关性指标的测试用例import pytest from deepeval import assert_test from deepeval.metrics import AnswerRelevancyMetric from deepeval.test_case import LLMTestCase def test_case(): answer_relevancy_metric AnswerRelevancyMetric(threshold0.5) test_case LLMTestCase( inputWhat if these shoes dont fit?, # Replace this with the actual output from your LLM application actual_outputWe offer a 30-day full refund at no extra costs., retrieval_context[ All customers are eligible for a 30 day full refund at no extra costs. ], ) assert_test(test_case, [answer_relevancy_metric])代码要点拆解AnswerRelevancyMetric(threshold0.5)设置该指标的通过阈值为 0.5即指标得分低于 0.5 时测试判定失败。threshold是 DeepEval 各指标类的通用参数决定通过/失败的分界线。LLMTestCase定义单个测试用例核心字段包括input用户输入即 queryactual_outputLLM 应用实际生成的回答文本——在真实场景中应替换为你的应用如 LlamaIndex query engine的真实输出retrieval_context检索返回的上下文片段列表供 Faithfulness、Contextual Recall 等依赖上下文的指标使用。assert_test(test_case, [answer_relevancy_metric])将测试用例与一个或多个指标绑定并执行断言任一指标不达标即测试失败。随后在终端中运行测试deepeval test run test_rag.py若已执行过deepeval login运行结果会上传至 DeepEval 仪表盘可在网页端分析每个测试用例的指标得分、失败原因与历史趋势从而追踪 RAG 应用在迭代过程中的质量变化。DeepEval 支持的评估指标类型DeepEval 将评估组织为 test case 指标的结构并针对 RAG 应用提供了丰富的指标族每个指标可独立应用在任意测试用例上。文档列出的指标包括G-Eval基于 GPT-4 等 LLM 按自定义评估步骤打分的通用指标融合了链式思考推理与格式约束Summarization评估摘要对原文信息的覆盖度与准确性Answer Relevancy回答与问题的相关性Faithfulness回答是否忠实于检索上下文是否忠于事实而非编造Contextual Recall检索到的上下文是否包含回答所需的关键信息Contextual Precision检索结果中相关信息的排序是否靠前、无关信息是否更少Contextual Relevancy检索上下文整体与查询的相关程度RAGAS源自 RAGAS 论文的 RAG 端到端评估指标族涵盖忠实度、答案相关性、上下文相关性等维度Hallucination检测回答中是否存在上下文无法支撑的幻觉内容Bias检测回答是否包含刻板印象或偏见性表述Toxicity检测回答是否包含有害、攻击性或不当内容。从官方说明看DeepEval 持续将最新研究成果纳入其评估指标的计算方法中。指标的具体计算方式与完整清单可查阅 DeepEval 的指标文档。将 DeepEval 接入 LlamaIndex 的评估体系DeepEval 与 LlamaIndex 的核心集成点在于BaseEvaluator抽象类。LlamaIndex 自带的评估模块位于 llama-index-core/llama_index/core/evaluation统一以BaseEvaluator为基类定义了统一的评估接口evaluate(query, response, contexts)/aevaluate(...)接收查询、响应字符串与上下文列表返回EvaluationResult包含passing、score、feedback、invalid_result等字段evaluate_response(query, response)/aevaluate_response(...)直接接收 LlamaIndex 的Response对象——实现中会自动从response.response提取输出文本并从response.source_nodes提取每个节点的get_content()作为上下文见 base.py。DeepEval 的评估器正是以BaseEvaluator子类的形态嵌入这套体系因此可以与其他 LlamaIndex 原生评估器如AnswerRelevancyEvaluator、FaithfulnessEvaluator等一起通过BatchEvalRunner统一批量执行。下面的示例演示了如何把 DeepEval 指标包装成 LlamaIndex 评估器直接评估 RAG 应用的查询响应from llama_index.core import VectorStoreIndex, SimpleDirectoryReader from deepeval.integrations.llama_index import DeepEvalAnswerRelevancyEvaluator # 更多细节可参考 LlamaIndex 的快速入门文档 documents SimpleDirectoryReader(YOUR_DATA_DIRECTORY).load_data() index VectorStoreIndex.from_documents(documents) rag_application index.as_query_engine() # 一个输入给 RAG 应用的示例问题 user_input What is LlamaIndex? # LlamaIndex 返回的 response 对象同时包含输出字符串与检索到的节点 response_object rag_application.query(user_input) evaluator DeepEvalAnswerRelevancyEvaluator()然后执行评估evaluation_result evaluator.evaluate_response( queryuser_input, responseresponse_object ) print(evaluation_result)这里的关键在于evaluate_response直接消费 LlamaIndex 的Response对象——借助BaseEvaluator基类中实现的上下文自动提取逻辑检索到的source_nodes会被自动转换为 DeepEval 评估所需的retrieval_context无需手工拼接。DeepEval 提供的全部 6 个 LlamaIndex 评估器DeepEval 官方为 LlamaIndex 提供了 6 个开箱即用的评估器一次 import 即可全部引入from deepeval.integrations.llama_index import ( DeepEvalAnswerRelevancyEvaluator, DeepEvalFaithfulnessEvaluator, DeepEvalContextualRelevancyEvaluator, DeepEvalSummarizationEvaluator, DeepEvalBiasEvaluator, DeepEvalToxicityEvaluator, )6 个评估器与前述指标一一对应DeepEvalAnswerRelevancyEvaluator回答相关性、DeepEvalFaithfulnessEvaluator忠实度、DeepEvalContextualRelevancyEvaluator上下文相关性、DeepEvalSummarizationEvaluator摘要、DeepEvalBiasEvaluator偏见、DeepEvalToxicityEvaluator毒性。它们均可像上文示例那样用evaluate_response(query..., response...)接入 RAG 应用的查询流程。与 LlamaIndex 原生评估体系的配合使用从源码结构看DeepEval 评估器继承自 LlamaIndex 的BaseEvaluator基类定义见 base.py因此天然兼容 LlamaIndex 的评估基础设施典型应用方式包括批量评估将多个 DeepEval 评估器甚至混入 LlamaIndex 原生评估器以{evaluator_name: evaluator}字典形式传给BatchEvalRunner见 batch_runner.py对一组查询-响应对并行执行、统一收集EvaluationResult统一结果结构所有评估结果都归一化为EvaluationResultscore、passing、feedback等字段便于后续落库、报表或 CI 断言回归测试将 DeepEval 测试作为 CI 流水线的一环在每次代码变更后自动运行通过threshold阈值捕获 RAG 应用的破坏性变更。总结DeepEval 为 LlamaIndex 生态补上了LLM 应用单元测试这一关键环节通过pip install deepevaldeepeval test run即可完成测试的编写与执行借助LLMTestCase与assert_test快速断言依托 Answer Relevancy、Faithfulness、Hallucination、Toxicity 等十一类指标量化响应质量更进一步通过deepeval.integrations.llama_index提供的 6 个评估器均实现 LlamaIndex 的BaseEvaluator接口可直接对真实 RAG 应用的Response对象做端到端评估并与BatchEvalRunner等原生工具无缝协作。无论是开发期的快速验证还是生产环境的持续回归监控这套组合都能让 LLM 应用的质量评估变得可重复、可量化、可追踪。【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表