当前位置: 首页 > 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.gsyq.cn/news/1604803.html

相关文章:

  • 每日更新!免费股票日k、分时k线数据,etf分钟数据,截至到2026-07月最新数据,含全沪京深7000+股票
  • 基于鸿蒙十二阶均衡体系:境外全域隐性渗透的安全风险与均衡治理路径——基于全域均衡数理模型推演(十三)
  • 新手也能上手!2026年实测靠谱的专业降AI率平台
  • Ubuntu SSH 强制密钥登录:配置不生效的排查与修复
  • DICOM图像核心参数实战指南:从像素到诊断的精准度量
  • 亿元合家欢动画《悟空大圣》正式定档7月24日暑期上映
  • 2026 降AIGC工具实测盘点:值得体验,毕业党生存手册
  • 【云原生与DevOps】03-K8s生产环境部署Checklist:你踩过这18个坑吗
  • Python操控AutoCAD完全指南:5个实战技巧提升设计效率
  • 从矩阵运算到密码实践:深入理解Hill密码的加解密机制
  • BiliTools终极指南:如何用跨平台工具箱高效管理B站资源
  • .NET DES加密实战:从原理到安全实现的完整指南
  • SAP FI 实战解析:会计凭证冲销与反记账的配置与报表影响
  • 【紧急预警】ChatGPT Plus个人账户额度正被动态收紧!3类高危使用行为触发自动降额(附2024Q2真实审计日志)
  • 办收据登报挂失多钱?收据登报挂失怎么办理?遗失声明怎么写
  • SQL注入核心原理与实战:数字型、字符型、搜索型注入深度解析
  • 从选型到实战:深入解析瓷片电容在电路设计中的核心应用
  • 全栈接口测试实战指南:从工具选型到自动化框架构建
  • 深入解析MSP-GANG430量产编程器底层协议与DLL API开发指南
  • SetDPI:3步掌握Windows命令行DPI调整的终极方案
  • MTEX工具箱:材料科学家必备的晶体学纹理分析利器
  • 3步实现Gmail账号自动化生成:告别繁琐手动注册的Python解决方案
  • 【课程设计/毕业设计】基于 SpringBoot+Vue 的考勤数据统计分析系统 企业员工日常出勤管控服务平台设计与实现【附源码、数据库、万字文档】
  • 信用卡拒付率高达83%?ChatGPT Plus国内订阅的5大支付陷阱,金融级风控专家亲授合规替代方案
  • TVS管实战选型指南:从关键参数到电路防护设计
  • 三分钟快速上手:哔咔漫画下载器终极指南,打造个人永久漫画库
  • HOG+SVM:从特征提取到行人检测的经典实践
  • 企业级应用逻辑漏洞挖掘实战:从越权访问到业务安全防御
  • 移动端API签名逆向实战:从抓包到算法还原的完整方法论
  • 即插即用 | 重塑跨维度交互,GAM注意力机制在ResNet上的实战优化(附完整代码)