检索结果过滤

让 Jev 先筛一遍,省 token 也防答偏

模型
jev-1.14.0
耗时
1113 ms
token
444
单次花费
$0.00001865
每千次
$0.019

痛点

检索回来的段落常常一半都不相关,全塞给大模型既费 token,又容易让答案跑偏。在做 RAG 这类功能时,过滤这一步直接决定后续成本和质量。

Jev 判断什么

这次我用 Noul(是非题)题型,针对 query 和每个 passage 单独出一道题,让 Jev 判定这段内容对回答 query 是否有帮助。

p1_answers:问「Does passage passages.p1 help answer the query?」。返回「是」的概率(probability)为 0.97。p1 直接写了 Jev 的计费方式,是回答价格问题的关键段落,应当保留。

p2_answers:问「Does passage passages.p2 help answer the query?」。返回「是」的概率为 0.07。p2 只解释 Jev 是什么,跟价格无关,应当过滤掉。

p3_answers:问「Does passage passages.p3 help answer the query?」。返回「是」的概率为 0.09。p3 只给了一个模型名,跟价格无关,应当过滤掉。

代码侧拿到这三个结果,按阈值(比如 0.5)切一刀:高于阈值的保留,低于的丢弃。

和大模型怎么配合

流程是 Jev 先判断,代码再按结果分流。概率高的段落拼成上下文发给大模型,让它基于这些材料生成最终答案;概率低的直接丢掉,不进上下文。

还有两种情况可以完全跳过调用大模型:一是所有段落都被判否,直接返回「无法回答」之类的兜底;二是只剩一两条高置信段落、且用户问题很明确,可以把段落原文直接当作答案。

这批 3 段判断在 jev-1.14.0 上跑了 1113 毫秒,输入 444 个 token,花费 0.000019 美元,按这个折算每 1000 次约 0.0186 美元,比把全量段落塞给大模型便宜得多。

上线前注意

  • 题目用英文写,state(上下文状态)里的 query 和 passages 保留中文原文,Jev 对中英混合 state 都能处理。
  • 阈值要用自己 20–30 条真实数据校准,先看分布再定,不要拍脑袋用 0.5。
  • 概率落在 0.5 附近、置信度低,或者 Noul 结果本身分歧大时,不要硬走规则,交给人或大模型复核。
  • 题目里写明字段路径,比如 passages.p1,让 Jev 知道评的是哪一段,避免它自作主张去评整段。

真实调用

请求

bash
curl https://api.typesafe.ai/v1/systemone \
  -H "Authorization: Bearer $TYPESAFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "jev-1.14.0",
  "state": {
    "query": "Jev 的价格是多少?",
    "passages": {
      "p1": "Jev 按输入 token 计费,每百万 token 0.042 美元,输出不收费。",
      "p2": "Jev 是 TypeSafe 推出的判断模型,不生成文字。",
      "p3": "OpenRouter 上的模型名是 typesafe/jev-1.14。"
    }
  },
  "questions": {
    "p1_answers": {
      "type": "noul",
      "instructions": "Does passage `passages.p1` help answer the query?"
    },
    "p2_answers": {
      "type": "noul",
      "instructions": "Does passage `passages.p2` help answer the query?"
    },
    "p3_answers": {
      "type": "noul",
      "instructions": "Does passage `passages.p3` help answer the query?"
    }
  }
}'

返回

json
{
  "model": "jev-1.14.0",
  "answers": {
    "p1_answers": {
      "type": "noul",
      "noul": 0.97
    },
    "p2_answers": {
      "type": "noul",
      "noul": 0.07
    },
    "p3_answers": {
      "type": "noul",
      "noul": 0.09
    }
  },
  "usage": {
    "input_tokens": 444,
    "output_tokens": 58
  }
}

人话解读

  • Noul:「是」的概率 0.97
  • Noul:「是」的概率 0.07
  • Noul:「是」的概率 0.09