FastGPT(https://fastgpt.cn) 系统目前缺乏一个直观的评估指标,无法有效衡量对 RAG 部分的修改或模型参数微调后的效果。因此,我们迫切需要一个评测机制来评估这些改动对系统整体性能的影响。
为了解决这个问题,我们引入了评价框架 Ragas[1]。该框架通过问题定义、信息检索、答案生成和标准答案四个核心要素,结合多种评估指标,提供了一套直观而全面的评估方法来衡量 RAG 模型的效果。我们已将 Ragas 评测方法整合到 FastGPT 应用中,使用户可以随时对其自定义的 FastGPT 应用进行效果评估。
详情可参考 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 文件格式组织:
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"'
返回信息:接口会返回一个 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"'
返回信息:接口会以 CSV 文件流的形式返回包含各项评价指标的评测结果。
评测过程中,可以通过 docker logs
命令实时查看任务的处理进度。
启动 Docker 容器后,利用测评接口来访问评测服务,可以得到下图的信息,其中的 file_id 就可以用在查询接口中:
可以通过 docker logs 命令实时查看评测任务的处理进度:
评测所需的输入文件格式如下:
评测完成后,输出文件将包含详细的评测指标:
输出文件的最后一行会显示所有评测指标的平均值,方便整体评估系统性能。
重点将 SemanticSimilarity 作为主要的评价指标。
我们使用 50 条中英文混合的测试数据进行评测,主要测试了以下配置:
以下是各项评测指标的平均值统计结果:
参数 | 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/