需求背景
FastGPT(https://fastgpt.cn) 系统目前缺乏一个直观的评估指标,无法有效衡量对 RAG 部分的修改或模型参数微调后的效果。因此,我们迫切需要一个评测机制来评估这些改动对系统整体性能的影响。
为了解决这个问题,我们引入了评价框架 Ragas[1]。该框架通过问题定义、信息检索、答案生成和标准答案四个核心要素,结合多种评估指标,提供了一套直观而全面的评估方法来衡量 RAG 模型的效果。我们已将 Ragas 评测方法整合到 FastGPT 应用中,使用户可以随时对其自定义的 FastGPT 应用进行效果评估。

评测指标
• 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_input | reference |
question1 | answer1 |
question2 | answer2 |
接口访问
测评接口
准备好评测数据集后,可以通过以下接口发起评测请求:
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 就可以用在查询接口中:

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

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

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

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

重点将 SemanticSimilarity 作为主要的评价指标。
FastGPT 评测结果
我们使用 50 条中英文混合的测试数据进行评测,主要测试了以下配置:
• 启用结果重排时,设置 Rerank 最低相关度阈值为 0.3
• 不启用结果重排时,设置 Rerank 最低相关度阈值为 0.4
• 单次引用上下文的上限为 5000
以下是各项评测指标的平均值统计结果:
参数 | FactualCorrectness | SemanticSimilarity | RougeScore | |
语义检索 | ![]() | 0.4812 | 0.8995 | 0.5370 |
语义检索+结果重排 | ![]() | 0.4606 | 0.8992 | 0.5245 |
全文检索+结果重排 | ![]() | 0.3562 | 0.8528 | 0.3829 |
混合检索+结果重排 | ![]() | 0.4128 | 0.8703 | 0.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/