RAG 质量评估
此页面内容来自 DeepWiki 重组后的对应页面(来源:9-1.zh.md)
RAG 质量评估
相关源文件
本章引用的主要源码文件:
lightrag/evaluation/README_EVALUASTION_RAGAS.mdlightrag/evaluation/__init__.pylightrag/evaluation/eval_rag_quality.pylightrag/evaluation/offline_retrieval_check.pylightrag/evaluation/sample_dataset.jsonlightrag/evaluation/sample_documents/01_lightrag_overview.mdlightrag/evaluation/sample_documents/02_rag_architecture.mdlightrag/evaluation/sample_documents/03_lightrag_improvements.mdlightrag/evaluation/sample_documents/04_supported_databases.mdlightrag/evaluation/sample_documents/05_evaluation_and_deployment.mdlightrag/evaluation/sample_documents/README.mdlightrag/evaluation/sample_retrieval_oracle.jsonreproduce/Step_0.pyreproduce/Step_1.pyreproduce/Step_1_openai_compatible.pyreproduce/Step_2.pyreproduce/Step_3.pyreproduce/Step_3_openai_compatible.pytests/test_evaluation_offline_retrieval_check.py
LightRAG 提供了一个基于 RAGAS(检索增强生成评估)的全面评估框架,用于评估检索增强生成(RAG)管线的质量。该框架支持使用大语言模型(LLM)进行无参考评估,以衡量事实准确性、相关性和检索效果。
基于 RAGAS 的评估概述
评估系统聚焦于四个核心指标,以提供检索增强生成(RAG)性能的整体视图 lightrag/evaluation/eval_rag_quality.py:5-9:
| 指标 | 描述 | 目标分数 |
|---|---|---|
| 忠实度 | 衡量答案是否基于检索到的上下文在事实上准确(幻觉检查)。 | > 0.80 |
| 答案相关性 | 衡量生成的答案与用户问题的相关程度。 | > 0.80 |
| 上下文召回率 | 衡量检索到的上下文中是否包含来自标准答案的所有相关信息。 | > 0.80 |
| 上下文精确率 | 衡量检索到的上下文中的信噪比。 | > 0.80 |
来源:lightrag/evaluation/eval_rag_quality.py:5-9,lightrag/evaluation/README_EVALUASTION_RAGAS.md:9-15
核心组件与数据流
评估过程涉及与运行中的 LightRAG API 实例交互,获取测试数据集的结果,然后使用独立的"评估大语言模型(LLM)"对这些结果进行评分。
系统架构图
此图展示了评估脚本、LightRAG 服务器和外部大语言模型(LLM)提供商之间的关系。
来源:lightrag/evaluation/eval_rag_quality.py:115-118,lightrag/evaluation/README_EVALUASTION_RAGAS.md:153-179
RAGEvaluator 实现
RAGEvaluator 类管理评估过程的整个生命周期。它会初始化 LangchainLLMWrapper 和 OpenAIEmbeddings,以便与 RAGAS 进行交互 lightrag/evaluation/eval_rag_quality.py:115-200。
关键方法包括:
__init__:使用环境变量(如EVAL_LLM_BINDING_HOST)配置评估大语言模型(LLM)和嵌入向量模型lightrag/evaluation/eval_rag_quality.py:118-192。_get_rag_response:异步查询 LightRAG 端点lightrag/evaluation/eval_rag_quality.py:255-296。run:编排数据集加载、检索增强生成(RAG)查询和 RAGAS 指标计算lightrag/evaluation/eval_rag_quality.py:304-405。
来源:lightrag/evaluation/eval_rag_quality.py:115-405
配置与环境变量
评估器支持用于评分的自定义 OpenAI 兼容端点,这对于使用本地模型(例如 vLLM、Ollama)进行评估以节省成本至关重要。
| 变量 | 默认值 | 描述 |
|---|---|---|
EVAL_LLM_MODEL | gpt-4o-mini | 用于 RAGAS 评分的模型 lightrag/evaluation/eval_rag_quality.py:157。 |
EVAL_LLM_BINDING_HOST | None | 评分大语言模型(LLM)的自定义 OpenAI 兼容端点 lightrag/evaluation/eval_rag_quality.py:158。 |
EVAL_EMBEDDING_MODEL | text-embedding-3-large | 用于 RAGAS 指标的嵌入向量模型 lightrag/evaluation/eval_rag_quality.py:167。 |
EVAL_MAX_CONCURRENT | 2 | 并发评估任务的数量 lightrag/evaluation/README_EVALUASTION_RAGAS.md:175。 |
来源:lightrag/evaluation/eval_rag_quality.py:146-181,lightrag/evaluation/README_EVALUASTION_RAGAS.md:164-179
离线检索检查
在运行昂贵的基于大语言模型(LLM)的评估之前,offline_retrieval_check.py 脚本使用确定性词汇排序器(基于 TF-IDF)提供"健全性检查" lightrag/evaluation/offline_retrieval_check.py:4-6。
- 目的:验证样本问题是否能够从
sample_documents/目录中通过词汇匹配检索到其预期的文档lightrag/evaluation/offline_retrieval_check.py:57-65。 - 逻辑:它对问题和文档进行 Token 化,使用
score_query计算分数,并计算average_recall_at_klightrag/evaluation/offline_retrieval_check.py:134-194。 - 数据:使用
sample_dataset.json和sample_retrieval_oracle.jsonlightrag/evaluation/offline_retrieval_check.py:21-24。
来源:lightrag/evaluation/offline_retrieval_check.py:1-205,tests/test_evaluation_offline_retrieval_check.py:15-50
数据格式
数据集输入(sample_dataset.json)
输入数据集必须包含带有问题和标准答案的 test_cases lightrag/evaluation/sample_dataset.json:2-6。
{
"test_cases": [
{
"question": "LightRAG 如何解决幻觉问题...?",
"ground_truth": "LightRAG 通过结合...来解决幻觉问题",
"project": "lightrag_evaluation_sample"
}
]
}
来源:lightrag/evaluation/sample_dataset.json:1-34
结果输出
eval_rag_quality.py 脚本将结果输出到 lightrag/evaluation/results/ 目录,提供两种格式 lightrag/evaluation/eval_rag_quality.py:29-31:
- JSON:包含完整详情,包括问题、上下文、答案和各个分数
lightrag/evaluation/eval_rag_quality.py:446-455。 - CSV:提供摘要表格,便于在电子表格中进行分析
lightrag/evaluation/eval_rag_quality.py:418-444。
来源:lightrag/evaluation/eval_rag_quality.py:407-458,lightrag/evaluation/README_EVALUASTION_RAGAS.md:94-100
执行流程
下图展示了 eval_rag_quality.py 的内部执行逻辑。
来源:lightrag/evaluation/eval_rag_quality.py:304-458,lightrag/evaluation/eval_rag_quality.py:461-512