范琳
← 返回作品集

财税 RAG 问答系统测试与评测

面向 LLM 应用测试与评测的实践项目:手写实现财税 RAG 问答系统作为被测对象,并建立完整的 AI 评测体系(45 道黄金用例、七项评测指标、LLM 裁判、对比实验),通过评测定位三类问题并驱动优化,整体准确率从 76% 提升至 93%。

RAGLLM评测LLM-as-judgePythonDeepSeek

项目背景

求职 AI 测试方向时,岗位 JD 要求「设计评测用例与数据集、做 Prompt 调整前后对比、协助定位模型/数据/Prompt/系统工程问题」。我决定用一个项目完整覆盖这些职责:自己先搭一个 AI 系统当被测对象,再为它建立一套完整的测试与评测体系,让"测 AI"这件事有真实的被测物、可量化的指标和可追溯的归因。

选择财税领域,是因为法规文本有官方标准答案、可判对错,天然适合做评测;同时财税/企业服务也是目标岗位的加分场景。

我的工作

1. 手写被测系统:财税 RAG 问答

未使用 LangChain 等框架,全部代码手写,原理可逐行讲清:

4 份官方法规文本(增值税法、实施条例、发票管理办法、12366 问答)
   ↓ 按条文结构切分(152 个知识块,每块带来源编号)
bge-m3 Embedding(1024 维向量库)
   ↓ 余弦相似度检索(top-5)
问题 → 最相关卡片 → 拼接 Prompt → DeepSeek-chat 生成答案
  • 时效性校验:选教材时发现旧《增值税暂行条例》已于 2026-01-01 被《增值税法》取代——若用失效文本做标准答案,整个评测将全部错误。AI 测试的第一步是确保测试依据权威、现行、可追溯。
  • 分块踩坑:正则按"第 X 条"切分时,正文中的交叉引用(如"增值税法第十条")会误切条文,一度把实施条例切成 75 块;改为"仅行首匹配"后恢复 55 块。

2. 建立评测体系

层级设计
黄金数据集45 道人工标注用例:正常 15 / 边界 10 / 异常 10 / 安全 10,每题含标准答案与标准出处(对应知识块 id),尺子独立于被测对象
七项指标准确率、幻觉率、平均相关性、安全拒绝率、检索召回率、检索精确率、平均响应时间
双通道判分检索两项指标纯代码计算(id 比对,无 AI 参与);安全题规则判分(确定性);其余 LLM-as-judge,且裁判与被测模型分属不同厂商(DeepSeek 被测 / Qwen 裁判)
结果落盘每道题的回答、命中卡片、裁判评分全部可逐题追溯

3. 评测发现与根因定位

基线 v1 整体 76%,问题归为三类:

  • 检索问题:标准出处卡未进入 top-3 命中(如"按次纳税"标准出处被挤出),模型基于不完整资料作答;
  • 生成问题:回答不完整,遗漏标准答案第二要点;
  • 评测工具问题(最关键):安全类初版只判对 4/10,人工逐题复核后确认模型实际 10/10 全部正确拒绝——是裁判把"拒绝"误判成"未拒绝"。分数低不是产品差,是尺子坏了。

4. 对比实验驱动优化(被测系统与数据集不变)

版本改动整体准确率
v1基线(基础 Prompt、top-3、Qwen 裁判)76%
v2增强 Prompt(完整+安全红线)、top-5、安全题规则判分82%
v3换 DeepSeek 裁判 + 修正裁判规则(核心要点一致即可)93%

每轮改动都有逐题归因证据:安全题规则判分修复评测工具、top-5 修复召回、更强裁判修复误判;还发现"多要点全覆盖"规则过严误伤 3 题并及时修正——每一步是数据驱动的,不是调参玄学。

评测结果

分类v1v2v3
正常(15 题)100%93%93%
边界(10 题)60%60%80%
异常(10 题)90%70%100%
安全(10 题)40%(裁判噪音)100%100%
整体(45 题)76%82%93%

v3 完整成绩单:幻觉率 11%、平均相关性 0.96、安全拒绝率 100%、检索召回率(top-5)89%、平均响应 1.7s。

剩余缺陷与优化方向

当前 3 个已知失败用例根因均为检索召回瓶颈(标准出处卡未进入 top-5 命中):

  1. 混合检索:BM25 关键词 + 向量检索融合重排;
  2. 候选窗口放大 + 去重;
  3. 超长块(最长 593 字)按知识点二次切分。

收获

  • 先验证测试工具,再怀疑被测产品:AI 评测里看到的结果要优先怀疑尺子本身,这是测试工程师的验证意识;
  • 从被测系统到评测体系全部独立完成,代码逐行可讲——分块、检索、裁判每一层原理都清楚;
  • 学会了用"数据归因"代替"感觉调参":每道题从错到对、从对到错,都能说出是哪个改动导致的。

代码仓库

完整代码(4 个 notebook、全部实验脚本、评测数据集与报告文档):github.com/MOMfunny/tax-rag-eval