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

RAG 评估系统:如何用“打分机制”让智能问答越用越聪明?

RAG 评估系统:如何用“打分机制”让智能问答越用越聪明?

上一期我们搭建了从禅道SQL到智能问答的RAG系统,但它真的“好用”吗?
这一期,我们聊聊如何通过人工打分 + 指标体系,让系统自我进化,从“能回答”到“答得准”。


一、为什么需要评估系统?

RAG系统上线后,我们面临几个现实问题:

  • 检索结果相关性如何? 有没有把真正相关的用例排到前面?
  • 不同模型、参数组合,哪个更好? 靠直觉还是靠数据?
  • 怎么才能持续优化? 总不能每次靠人工翻看几百条结果吧?

答案就是:建立一套可量化的评估体系,用打分数据驱动模型迭代。


二、整体数据流:从“检索”到“打分”再到“优化”

┌─────────────────────────────────────────────────────────────────┐
│                        RAG 评估系统核心流程                        │
└─────────────────────────────────────────────────────────────────┘原始数据           数据清洗           向量化存储           检索查询zentao.sql  ──▶  zentao_rag  ──▶  ChromaDB  ──▶  两阶段检索│▼┌──────────────────┐│ 检索结果(Top5)   ││ + 期望用例ID     │└────────┬─────────┘│▼┌──────────────────┐反馈到优化方向 ◀── 评估报告 ◀── 人工打分       │  人工打分界面     ││                    │              (1-5分评价) │▼                    ▼                          ▼┌─────────────┐    ┌─────────────┐           ┌─────────────┐│ 模型/策略   │    │ 指标分析    │           │ 打分数据    ││ 迭代更新    │    │ 问题诊断    │           │ JSON存储    │└─────────────┘    └─────────────┘           └─────────────┘

整个流程可以概括为:检索 → 打分 → 分析 → 改进 → 再检索,形成闭环。


三、详细数据流拆解

3.1 数据预处理阶段

SQL文件 ──▶ 正则提取 ──▶ 字段清洗 ──▶ JSON ──▶ Markdown ──▶ 分块 ──▶ 向量化
(zentao.sql)              (HTML转义)  (5450条)  (5450条)   (5450条)  (768维向量)│▼ChromaDB持久化存储

这一步为后续检索打好了基础,每个测试用例都是一个独立的语义单元。

3.2 检索阶段(两阶段召回)

用户查询 ──▶ Bi-Encoder ──▶ ChromaDB ──▶ 粗排Top10 ──▶ Cross-Encoder ──▶ 精排Top5(text2vec)      向量检索      (快速召回)      (mmmarco)        (精准重排)
  • Bi-Encoder:速度快,负责从全库中召回候选集。
  • Cross-Encoder:精度高,对候选集精排,保证最终输出质量。

3.3 人工打分阶段(核心数据来源)

┌─────────────────────────────────────────────────────────────────┐
│                      人工打分流程示例                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   查询: "如何测试车辆压地感后的云支付功能?"                        │
│   期望用例ID: [7]                                                │
│                                                                 │
│   ┌───────────────────────────────────────────────────────────┐ │
│   │ 用例 #1 (ID: 92065)                                        │ │
│   │ 得分: [1] [2] [3] [4] [5]   ← 用户根据相关性点击           │ │
│   │ 内容: "天启月卡延期测试..."                                 │ │
│   └───────────────────────────────────────────────────────────┘ │
│                                                                 │
│   ┌───────────────────────────────────────────────────────────┐ │
│   │ 用例 #2 (ID: 7)           ✅ 与期望匹配                    │ │
│   │ 得分: [1] [2] [3] [4] [5]   ← 用户点击 5 分               │ │
│   │ 内容: "车辆压地感后云支付功能测试..."                        │ │
│   └───────────────────────────────────────────────────────────┘ │
│                                                                 │
│   ... (其余3个用例)                                              │
│                                                                 │
│   保存打分记录:                                                  │
│   {                                                             │
│     "query_id": 0,                                              │
│     "ratings": [4, 5, 2, 1, 3],                                 │
│     "timestamp": "2026-03-25T..."                               │
│   }                                                            │
└─────────────────────────────────────────────────────────────────┘

关键点:每个查询都预先标注了“期望相关用例ID”,打分的核心就是看系统能否把期望用例排到前面。


四、打分机制如何指导模型优化

4.1 从分数到改进路径

人工打分结果 ──▶ 分析问题 ──▶ 确定优化方向 ──▶ 实施改进│                │                  │▼                ▼                  ▼
┌─────────┐    ┌───────────┐    ┌─────────────────┐
│ 原始分数 │    │ 问题诊断  │    │ 改进措施         │
└─────────┘    └───────────┘    └─────────────────┘

一个真实案例

查询 期望ID 检索ID 打分 问题诊断
跟车行为 8626 92065,41459,31608,68071,34808 1,1,1,1,1 期望用例未被召回,检索完全失效

诊断:召回能力不足 → 措施:更换更强的 Embedding 模型(如 bge-large-zh),或扩大 Top_K 范围。

4.2 指标体系(量化目标)

有了打分数据,就可以计算标准指标,用数字说话:

指标 计算方式 含义 优化目标
平均相关性 所有打分平均值 答案整体质量 ↑ 越高越好
精确率@K 3分以上/总数 返回结果中有用比例 ↑ 越高越好
Recall@K 命中期望/总期望 召回能力 ↑ 越高越好
MRR 首个相关排名倒数 首位结果质量 ↑ 越高越好
NDCG 考虑排名的加权相关 整体排序质量 ↑ 越高越好

4.3 实验追踪(让每次优化都有据可查)

# experiment_logger.py 自动记录
{"id": 1,"name": "text2vec-base-v1","config": {"embedding_model": "shibing624/text2vec-base-chinese","reranker_model": "cross-encoder/mmarco-mMiniLMv2","top_k": 5},"metrics": {"recall@5": 0.75,"precision@5": 0.60,"mrr": 0.72,"ndcg@5": 0.68,"avg_relevance": 0.65}
}

通过对比不同实验的指标,可以客观选择最优配置。


五、决策树:如何根据打分结果选择优化方向

人工打分完成│▼
┌──────────────────────────────────────────┐
│ 分析打分结果                              │
└──────────────────────────────────────────┘│├─▶ 平均分 < 3.0(普遍偏低)│      ││      ▼│   问题: 整体语义理解差│   解决: 更换 Embedding 模型│        - bge-large-zh-v1.5(推荐)│        - m3e-base│        - bce-embedding-base-v1│├─▶ Recall@5 < 0.5(期望用例常未召回)│      ││      ▼│   问题: 召回能力不足│   解决: - 增加 Top_K 初筛数量│        - 添加查询扩展(同义词/关键词)│        - 调整分块策略(增大重叠度)│├─▶ MRR 低(相关用例排名靠后)│      ││      ▼│   问题: 重排序模型不够强│   解决: - 使用更强的 Cross-Encoder│        - 用领域数据微调 reranker│└─▶ 部分高分、部分低分│▼问题: 领域匹配度不够解决: - 优化 prompt(强调停车场领域)- 增加元数据过滤(如用例类型)- 引入关键词权重

六、迭代优化闭环

    ┌──────────────┐│  基准版本    ││ (baseline)  │└──────┬───────┘│▼┌──────────────┐│ 人工打分评估  │ ◀──────────────┐└──────┬───────┘                ││                         │▼                         │┌──────────────┐                ││ 分析问题     │                │└──────┬───────┘                ││                         │▼                         │┌──────────────┐                ││ 改进策略     │                ││ (换模型/参数)│                │└──────┬───────┘                ││                         │▼                         │┌──────────────┐                ││ 重新评估     │────────────────┘└──────┬───────┘│▼┌──────────────┐│ 对比报告     │ ──▶ 选出最优模型└──────────────┘

每轮迭代都是一个“假设 → 实验 → 验证”的科学过程,打分数据就是最好的证据。


七、实际改进案例:从“答非所问”到“精准命中”

初始打分结果

查询 期望ID 检索ID 打分 问题
跟车行为 8626 92065,41459,31608... 1,1,1,1,1 未召回
邻道干扰 8690 8690,8691,8692... 5,2,1,1,1 首位命中,但后续差
月租车延期 41459,46102 92065,31608,68071... 2,1,2,1,1 部分召回

诊断与改进

  1. 召回不足 → 换用 bge-large-zh-v1.5 模型
  2. 排序不准 → 增加查询扩展(如“月租车”补充“包月车”)
  3. 二次评估 → 重新打分,验证效果

经过 2 轮迭代,Recall@5 从 0.52 提升到 0.81,MRR 从 0.63 提升到 0.79。


八、总结:打分机制的核心价值

  1. 量化“好与坏”:把主观感受变成可对比的数字。
  2. 定位问题根源:通过指标(Recall、MRR)区分是召回问题还是排序问题。
  3. 支撑科学决策:每次改进都有数据验证,避免“拍脑袋”。
  4. 形成持续闭环:打分 → 分析 → 优化 → 再打分,让系统越用越聪明。

如果你也在做 RAG 应用,不妨从今天开始,为自己的系统加一套“打分机制”。
有数据,才有方向。


http://www.jsqmd.com/news/535601/

相关文章:

  • 使用Gradio Chatbot组件构建高效AI对话界面的实战指南
  • Local SDXL-Turbo基础教程:Autodl资源监控告警设置(GPU>90%触发)
  • 如何彻底告别C盘爆红:Windows Cleaner终极系统优化实战指南
  • 从loss-epoch曲线诊断过拟合:训练集下降而验证集上升的深度解析
  • 谁才是律师的真帮手?五款主流法律AI实务深度横向测评报告
  • 基于Spring AI构建智能客服系统的架构设计与性能优化实战
  • 线控转向失效下的容错差动转向控制:保障车辆安全的关键技术
  • 一款基于 .NET 开源、跨平台应用程序自动升级组件
  • 3分钟快速上手:体验开源卡牌游戏的策略对决魅力
  • ssm+java2026年毕设蔬菜水果销售网站【源码+论文】
  • AI问答流式输出避坑指南:WebSocket连接管理与讯飞星火API的实战经验
  • ECharts setOption 参数详解
  • AI 通关攻略 · 第 9 关 | Token 定价:AI 是怎么收费的,怎么用才省钱
  • 【单片机】J-Link的RTT-Viewer连不上?
  • 北京白发养黑机构哪家好?黑奥秘全生命周期管理贴合毛发慢病需求 - 美业信息观察
  • 从VC++到Halcon:手把手教你玩转HTuple数据交互(含类型转换陷阱)
  • 实测数据:矩阵跃动小陌GEO+龙虾机器人,助力企业AI搜索曝光提升3倍+的技术实践
  • VLC播放器换肤终极指南:5款VeLoCity主题让你的播放器焕然一新
  • HY-MT1.5-1.8B部署避坑指南:3步搞定环境,小白也能轻松运行
  • MPU9150与MPU9250惯性测量单元驱动开发实战
  • ChatGPT与GitHub高效集成:自动化代码审查与协作实践
  • 高校与教培机构如何选网盘?2026 主流 5 款企业网盘深度实测与避坑指南
  • DISM与VHDX:Windows离线部署与维护实战
  • 开源工具WorkshopDL:跨平台资源获取的轻量级解决方案
  • 收藏!小白程序员轻松入门大模型,从基础到进阶的完整指南
  • 科研党福音:用Zotero 7.0和硅基流动API,免费搞定DeepSeek文献分析(保姆级配置)
  • 释放C盘,提升性能:系统文件迁移对Windows性能影响的实证分析
  • Virtual Display Driver:让单屏秒变多屏工作站的黑科技
  • 用Multisim 14.2复刻经典课程设计:十字路口交通灯仿真(含数码管倒计时与总清零)
  • # 20253910 2024-2025-2 《网络攻防实践》实验三