当前位置: 首页 > news >正文

基于 Ragas 与通义千问实现 RAG 系统答案正确性自动评估

基于 Ragas 与通义千问实现 RAG 系统答案正确性自动评估

本文基于 Ragas 评估框架与通义千问(qwen-plus)大模型,结合 DashScope text-embedding-v3 向量模型,构建 RAG(检索增强生成)系统的自动化评估流水线。通过 answer_correctness 指标量化评估模型生成答案与标准答案的一致性,并进一步使用 context_recall 和 context_precision 评估检索质量。


一、核心概念:RAG 评估是什么?

RAG(Retrieval-Augmented Generation)系统将检索与生成结合:先从知识库中检索相关文档,再让 LLM 基于检索结果生成答案。但如何衡量 RAG 系统的输出质量?这就是Ragas要解决的问题。

评估维度指标说明
答案质量answer_correctness生成答案与标准答案的一致程度
检索质量context_recall检索到的文档覆盖标准答案的程度
检索精度context_precision检索到的文档中相关内容的占比

为什么需要自动评估?传统方式依赖人工判断,效率低且主观性强。Ragas 通过 LLM + Embedding 的组合,实现自动化、可量化的评估:

  • LLM 判断:让大模型对比生成答案与标准答案的语义差异
  • Embedding 相似度:通过向量余弦相似度衡量语义接近程度
  • 综合评分:两者加权得到最终分数

二、系统架构

评估数据集

question + answer + ground_truth

Ragas evaluate 入口

通义千问 qwen-plus

LLM 语义判断

DashScope text-embedding-v3

向量相似度计算

answer_correctness 评分

输出评估报告 DataFrame

核心组件:

组件版本/模型职责
ragas评估框架定义评估指标与评估流程
langchain_community工具库封装 Tongyi LLM 和 DashScope Embeddings
datasetsHuggingFace 数据集库构建标准化评估数据集
qwen-plus通义千问作为裁判 LLM,判断答案语义正确性
text-embedding-v3DashScope 向量模型将文本转为向量,计算语义相似度

三、环境准备

3.1 依赖安装

pipinstalllangchain_community datasets ragas-ihttps://pypi.tuna.tsinghua.edu.cn/simple

3.2 环境变量配置

需要配置 DashScope API Key(通义千问的 API 密钥):

DASHSCOPE_API_KEY=sk-your-api-key-here

说明:Tongyi LLM 和 DashScopeEmbeddings 会自动从环境变量中读取DASHSCOPE_API_KEY,无需手动传入。


四、步骤详解

步骤 1:构建评估数据集

评估数据包含三个核心字段:

data_samples={'question':['杭州最值得去的景点有哪些?','去成都旅游的话,有哪些特色美食推荐?','在西安游览时,参观兵马俑需要提前预约吗?'],'answer':['杭州西湖、灵隐寺和千岛湖是比较受欢迎的景点。','成都有很多好吃的,比如火锅、串串香和担担面。','参观兵马俑不需要预约,现场买票就可以进去。'],'ground_truth':['杭州必游景点包括西湖、灵隐寺、雷峰塔、千岛湖和宋城,其中西湖是国家5A级景区,建议清晨游览以避开人流。','成都作为美食之都,推荐品尝火锅、串串香、担担面、龙抄手和钟水饺,宽窄巷子和锦里是集中体验地道小吃的好去处。','参观秦始皇兵马俑博物馆必须通过官方平台提前实名预约购票,旺季时需至少提前3天预约,现场不保证有票。']}

各字段含义:

字段说明示例
question用户提问“杭州最值得去的景点有哪些?”
answerRAG 系统生成的答案“杭州西湖、灵隐寺和千岛湖…”
ground_truth人工标注的标准答案“杭州必游景点包括西湖、灵隐寺、雷峰塔…”

设计要点:answer是不完整或有错误的回答,ground_truth是完整且准确的标准答案。通过对比两者,评估 RAG 系统的生成质量。


步骤 2:初始化 LLM 与 Embedding

fromlangchain_community.llms.tongyiimportTongyifromlangchain_community.embeddingsimportDashScopeEmbeddings# 裁判 LLM:通义千问 qwen-plusllm=Tongyi(model_name="qwen-plus")# 向量模型:DashScope text-embedding-v3embeddings=DashScopeEmbeddings(model="text-embedding-v3")

选型说明:

组件选型理由
裁判 LLMqwen-plus语义理解能力强,性价比高
向量模型text-embedding-v3DashScope 最新向量模型,中文语义表征好

步骤 3:执行评估

fromdatasetsimportDatasetfromragasimportevaluatefromragas.metricsimportanswer_correctness# 构建评估数据集dataset=Dataset.from_dict(data_samples)# 执行评估score=evaluate(dataset=dataset,metrics=[answer_correctness],llm=llm,embeddings=embeddings)# 输出评估结果print(score.to_pandas())

answer_correctness 的计算原理:

  • 语义 F1 分数(权重 75%):LLM 将答案分解为原子陈述,对比 TP/FP/FN
  • 向量相似度(权重 25%):通过 Embedding 余弦相似度衡量整体语义接近度

步骤 4:检索质量评估(扩展)

当评估数据包含contexts(检索到的文档片段)时,可以进一步评估检索质量:

fromragas.metricsimportcontext_recall,context_precision data_samples_with_context={'question':[...],'answer':[...],'ground_truth':[...],'contexts':[['西湖是杭州的核心景区...','灵隐寺是中国著名的佛教古刹...','千岛湖以湖泊和岛屿景观著称...'],['成都被誉为"美食之都"...','串串香起源于四川街头...','担担面是川菜经典面食...'],['秦始皇兵马俑位于陕西省...','兵马俑博物馆实行实名制预约购票制度...','旺季参观需至少提前3天预约...']]}score=evaluate(dataset=Dataset.from_dict(data_samples_with_context),metrics=[context_recall,context_precision],llm=Tongyi(model_name="qwen-plus"),embeddings=DashScopeEmbeddings(model="text-embedding-v3"))

检索指标说明:

指标含义计算方式
context_recall检索覆盖度标准答案中的陈述有多少被检索文档覆盖
context_precision检索精确度检索到的文档中有多少真正与问题相关

五、评估结果分析

评估结果

结果分析:

问题预期分数区间分析
杭州景点0.6~0.8答案覆盖了部分景点,但遗漏了雷峰塔、宋城
成都美食0.7~0.9答案基本正确,但遗漏了龙抄手、钟水饺等
兵马俑预约0.3~0.5答案事实错误(说不需要预约),与标准答案矛盾

关键发现:第 3 个问题的 answer 声称"不需要预约",而 ground_truth 明确指出"必须提前预约"。answer_correctness 会对这种事实性错误给予严厉扣分。


六、核心技术点总结

技术点实现方式作用
LLM 裁判qwen-plus 判断语义正确性替代人工评估,实现自动化
Embedding 相似度text-embedding-v3 向量对比补充语义层面的整体相似度衡量
原子陈述分解LLM 将答案拆解为独立事实精确计算 TP/FP/FN
F1 + 相似度加权75% F1 + 25% 向量相似度兼顾事实准确性和整体语义
HuggingFace DatasetsDataset.from_dict 构建数据标准化数据格式,便于批量评估
检索质量评估context_recall + context_precision分离评估生成和检索两个环节

七、延伸思考

  1. 更多评估指标:Ragas 还支持 faithfulness(忠实度)、answer_relevancy(答案相关性)等指标,可全面评估 RAG 系统
  2. 批量评估:将评估数据集扩大到数百条,统计各指标的平均分和分布
  3. 自定义指标:基于 Ragas 的 Metric API 实现领域特定的评估标准
  4. 对比实验:对比不同 LLM(qwen-plus vs qwen-max)作为裁判的评分差异
  5. 检索优化闭环:通过 context_recall 定位检索不足的 case,针对性补充知识库文档
  6. CI/CD 集成:将 Ragas 评估集成到 RAG 系统的持续集成流程中,每次更新自动回归测试
http://www.jsqmd.com/news/1092844/

相关文章:

  • 基于鸿蒙十二阶均衡体系:境外全域隐性渗透的安全风险与均衡治理路径——基于全域均衡数理模型推演(十三)
  • 2026在线去除本地视频水印工具推荐!免费无水印导出、安全无需下载电脑端
  • 每日更新!免费股票日k、分时k线数据,etf分钟数据,截至到2026-07月最新数据,含全沪京深7000+股票
  • YgoMaster终极指南:如何免费搭建游戏王大师决斗离线服务器
  • 新手也能上手!2026年实测靠谱的专业降AI率平台
  • 智能微博文案助手项目介绍
  • 从“方阵的行列式”说起:一次对数学严谨性的追问
  • 5分钟高效激活Windows与Office:实用智能激活完整指南
  • MicroPython BLE HID开发指南:打造无线键盘、鼠标和游戏手柄
  • iTrustee Client安全认证机制:CA认证与TEE通信的7个安全层级详解
  • 【深度解析】GPT-5.6 Sol/Tara/Luna能力边界、安全风险与Python选型评估实
  • Ubuntu SSH 强制密钥登录:配置不生效的排查与修复
  • 北京IT培训机构有哪些:深度解析北京IT职业教育市场现状
  • 酷狗KGM文件怎么转MP3?推荐几种实用转换工具
  • 亿元合家欢动画《悟空大圣》正式定档7月24日暑期上映
  • 2024年德化钙钛矿太阳能路灯选购指南:3招帮你挑对好产品
  • 2026 降AIGC工具实测盘点:值得体验,毕业党生存手册
  • 【云原生与DevOps】03-K8s生产环境部署Checklist:你踩过这18个坑吗
  • 秦兵马俑博物馆小程序-springboot+app
  • “线代”初探:数、方向与连续运算的陷阱
  • DICOM图像核心参数实战指南:从像素到诊断的精准度量
  • Python高级编程 + AI代码生成实战
  • AI不只会写脚本:如何让大模型帮你搭建高可用Python系统
  • 从矩阵运算到密码实践:深入理解Hill密码的加解密机制
  • Unity Mod Manager终极指南:5步轻松管理Unity游戏模组
  • iTrustee Client日志定制化:如何实现自定义日志输出与安全审计
  • .NET DES加密实战:从原理到安全实现的完整指南
  • Qwen3 Plus 接入 Cursor 配置教程:base_url 末尾斜杠 + model name 写法,填错直接静默 404
  • BiliTools终极指南:如何用跨平台工具箱高效管理B站资源
  • Python操控AutoCAD完全指南:5个实战技巧提升设计效率