别再盲目调参!3个核心指标帮你量化RAG系统,内附FastGPT最新评测数据

需求背景

FastGPT(https://fastgpt.cn) 系统目前缺乏一个直观的评估指标,无法有效衡量对 RAG 部分的修改或模型参数微调后的效果。因此,我们迫切需要一个评测机制来评估这些改动对系统整体性能的影响。

为了解决这个问题,我们引入了评价框架 Ragas[1]。该框架通过问题定义、信息检索、答案生成和标准答案四个核心要素,结合多种评估指标,提供了一套直观而全面的评估方法来衡量 RAG 模型的效果。我们已将 Ragas 评测方法整合到 FastGPT 应用中,使用户可以随时对其自定义的 FastGPT 应用进行效果评估。

ace8904ef3ecbee60cd9d9929d2d5fd9.png

评测指标

  • FactualCorrectness:是一个评估语言模型生成的响应事实正确性的指标类。它通过断言分解和自然语言推理 (NLI) 来验证响应中所提出的断言是否与参考文本相符。

  • SemanticSimilarity:采用交叉编码器得分评估真实答案与生成答案之间的语义相似度。

  • RougeScore:基于最长公共子序列的重叠度来计算的 F1-score。

详情可参考 Ragas 的指标解析文档:Ragas_metrics[2]

使用方法

拉取阿里云镜像并创建容器

docker pull crpi-h3snc261q1dosroc.cn-hangzhou.personal.cr.aliyuncs.com/fastgpt_ck/ragas_eval:v1
docker run -idt -p 7222:7222 --name fastgpt_eval crpi-h3snc261q1dosroc.cn-hangzhou.personal.cr.aliyuncs.com/fastgpt_ck/ragas_eval:v1 /bin/bash

准备评测数据集

在开始评测之前,我们需要准备一个包含标准问题标准答案的评测数据集。数据集需要按照以下 CSV 文件格式组织:

  • • CSV 文件的第一行为表头,包含两列:user_input (问题) 和 reference (标准答案)

  • • 从第二行开始为实际的测试数据,每行包含一个问题及其对应的标准答案

示例格式如下:

user_inputreference
question1answer1
question2answer2

接口访问

测评接口

准备好评测数据集后,可以通过以下接口发起评测请求:

curl --location --request POST 'http://localhost:7222/v1/parse/eval_rag' \
--header 'Authorization: Bearer your_access_token' \
--form 'input_file=@"/Rag_FW/dataset/test_data_50_inference_input.csv"' \
--form 'api_url="https://api.fastgpt.in/api"' \
--form 'api_key="fastgpt-xxxxxxxxx"'\
--form 'query_id="02899f89-1e77-4eed-aa74-24294461bdab"'
  • api_url:FastGPT 应用的 API 根地址,用于指定请求发送的目标地址

  • api_key:FastGPT 应用的 API Key,用于身份验证和授权访问

  • query_id:用于断点续传的标识符 (可选)。当评测过程因服务崩溃等意外中断时,可以使用相同的 query_id 重新发起请求,继续未完成的评测任务。

返回信息:接口会返回一个 query_id,可用于后续通过查询接口获取评测结果。

查询接口

评测完成后,可以通过以下接口查询评测结果:

curl --location --request POST 'http://localhost:7222/v1/parse/eval_rag_query' \
--header 'Authorization: Bearer your_access_token' \
--form 'query_id="1afb0593-eeec-42e9-a90b-be4ad0f4b76a"'
  • query_id:评测任务的唯一标识符。可以通过评测接口获取,如果遗失可以在 docker logs 中查看

返回信息:接口会以 CSV 文件流的形式返回包含各项评价指标的评测结果。

评测过程中,可以通过 docker logs 命令实时查看任务的处理进度。

效果演示

启动 Docker 容器后,利用测评接口来访问评测服务,可以得到下图的信息,其中的 file_id 就可以用在查询接口中:

3c1b41e798552822dc6f56b0356ab863.png

可以通过 docker logs 命令实时查看评测任务的处理进度:

9feefa2d9f2a5ed8ec96ca1e5d151449.png

评测所需的输入文件格式如下:

7b1aa8db07a71d9937b089b1235ba5d7.png

评测完成后,输出文件将包含详细的评测指标:

ace865019af8d6226c4a0a49e3af3111.png

输出文件的最后一行会显示所有评测指标的平均值,方便整体评估系统性能。

55d81680c4cd486ee8b344185b7d0cec.png

重点将 SemanticSimilarity 作为主要的评价指标。

FastGPT 评测结果

我们使用 50 条中英文混合的测试数据进行评测,主要测试了以下配置:

  • • 启用结果重排时,设置 Rerank 最低相关度阈值为 0.3

  • • 不启用结果重排时,设置 Rerank 最低相关度阈值为 0.4

  • • 单次引用上下文的上限为 5000

以下是各项评测指标的平均值统计结果:


参数FactualCorrectnessSemanticSimilarityRougeScore
语义检索81183234c670b7f0494888c0bc46a9a3.png
0.48120.89950.5370
语义检索+结果重排4f04ec90f6292da377710024c9c9d640.png
0.46060.89920.5245
全文检索+结果重排97c5cca20b7da84f3ed00e371e737eb8.png
0.35620.85280.3829
混合检索+结果重排b608726cda678576c27d37c271fe515a.png
0.41280.87030.4505

附件

输入文件:https://objectstorageapi.bja.sealos.run/czrn86r1-yyh/ragas_eval/test_data_50_inference_input.csv

知识库:https://objectstorageapi.bja.sealos.run/czrn86r1-yyh/ragas_eval/retrieved_contexts.txt

引用链接

[1] Ragas: https://github.com/explodinggradients/ragas
[2] Ragas_metrics: https://docs.ragas.io/en/latest/references/metrics/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值