前言:

在上一版(v0.2-regression-baseline)中,为 RAG Copilot 建立了 20 条回归用例:

  • 10 条应答(ANSWER)

  • 10 条应拒(REFUSE)

回归结果:

Overall:80%
ANSWER:90%
REFUSE:70%

问题也很明确:
系统在“该拒答的场景”下不够稳定。

一、问题定位:误答都发生在哪?

分析失败用例后发现一个共性:

它们几乎都是方法型问题

  • 如何使用 Transformer?

  • RAG 系统中如何使用 embedding?

  • temperature 参数如何设置?

而 demo.pdf 文档中:

  • 提到了“大模型”

  • 提到了“RAG”

  • 提到了“模型”

并没有任何步骤、参数说明、代码示例

关键词检索命中了“模型”“RAG”等泛词,
系统误以为“证据充分”,进入 ANSWER 分支。

本质问题:

命中 ≠ 可答

二、思路:加一道“证据门槛”

不改检索逻辑,
不引入 embedding,
不增加模型。

只做一刀式优化:

Step 1:识别方法型问题

判断 question 是否包含:

如何 / 怎么 / 怎样 / 实现 / 设置 / 使用

(同时排除“什么是 / 如何定义”等定义型问题)


Step 2:检查是否存在方法证据

在 top_chunks 拼接文本中,是否包含:

步骤 / 参数 / 示例 / 代码 / 例如 / 如下 / 方式 / 可以通过


Step 3:Gate 逻辑

若:

is_howto_question == True
AND
has_howto_evidence == False

则:

[DECISION] REFUSE reason=evidence_insufficient

直接拒答,不进入模型生成。

三、优化后回归结果

优化后再次运行回归集:

Overall:100% (20/20)
ANSWER:100%
REFUSE:100%

所有误答被修复。

关键点:

没有追求“更聪明的模型”,
而是增加了“更明确的边界”。

四、为什么先这样做,而不是调参?

如果继续深挖,可以做:

  • embedding 相似度过滤

  • 二次模型判断 answerability

  • 语义规则增强

但那会把系统复杂度指数级拉高。

本次优化只做:

规则增强 + 回归验证 + 打 tag 固化版本

这是常见的工程闭环:

  1. 建立回归基线

  2. 分析失败模式

  3. 精准补刀

  4. 回归验证

  5. 版本冻结

五、版本记录

本次优化已打 tag:

v0.3-refuse-gate

GitHub 地址:

👉 https://github.com/test202005/project2_mvp/releases/tag/v0.3-refuse-gate

六、当前系统状态

  • 关键词检索(2-gram scoring)

  • 最小决策断言(ANSWER / REFUSE)

  • 方法型证据 Gate

  • 20 条黄金回归集

  • 全绿回归

这是一个稳定的“可控 RAG MVP”。


下一步,会开始考虑:

  • 是否引入向量数据库

  • 是否增加 answerability 二层判定

  • 是否做多文档场景测试

但在进入新阶段之前,

先把边界打稳。

更多推荐