jev-filter

将 RAG 搜索结果筛成类型化、可回查的证据

English

Jev Filter 可以放在检索之后、主模型阅读之前,筛选已经找到的段落。 程序提供稳定的来源 ID、任务上下文和独立的纳入条件;它返回选中 ID、待复核 ID 与精简证据,同时在本地保留传入原文。它不抓取整个语料库,也不替代检索器。

本教程回答:哪些检索到的 API 段落,既支持重试 HTTP 429,又说明如何避免重复扣费? 输入是五条固定的合成段落,不是真实 API 文档。下文预期判定是手工编写的教学标签, 不是本次新测的准确率或性能结果。

筛选在 RAG 中放在哪里?

典型流程是:

检索器 → 程序校验 → Jev 类型化判断 → 证据包 → 主模型
                                           ↓
                                      原始来源核验

保留现有系统中的关键词、向量或混合检索。Elastic 的 RAG 概述介绍这些检索方式; 语义重排指南 说明如何按与查询的语义相似度重新排序候选结果。

重排适合解决相关性顺序。本例要求同时满足两个条件:段落允许这种重试,并且 解释如何避免重复扣费。即使段落高度相关,缺少第二项也仍是不完整证据。 Jev 的原子条件分别返回 SUPPORTED / CONTRADICTED / UNKNOWN,随后由程序规则 保留匹配、排除已知矛盾,并将未解决项留待复核。筛选可以与重排配合使用, 但两者的结果回答不同问题。

安装并取得固定输入

npm CLI 要求 macOS 或 Linux 上的 Node.js 22+。Windows 可使用 WSL,或参考 Python 源码安装。

npm install -g @apixly/jev-filter
jev-filter doctor
git clone https://github.com/apixly-ai/jev-filter.git
cd jev-filter

doctor 是离线检查。后面的语义调用需要你自己的 Typesafe API key,并会计费。 按密钥配置指南设置,不要把凭据放入样例或提示词。

仓库包含 retrieved.json 和 analysis.json。每条记录都有 id、 text 与观察到的来源元数据。样例里的 synthetic:// 引用只标识本地教学来源, 不是真实网页地址。

程序负责采集,Jev 负责判定

真实接入中,程序先取得有界候选集,处理访问权限、精确元数据规则和稳定 ID 去重, 再输出 JSON。当版本或租户 ID 已能决定结果时,直接用代码判断。 每个段落要带足够的相邻内容:裁掉例外条款可能改变答案。

共享契约给出目标、API 版本、排除条件和必需上下文;每条标准化记录还必须有 source.api_version、source.source_uri、source.revision。 输入元数据应放在记录顶层,由 CLI 添加 source 包装。两个独立条件是:

  1. 段落明确允许针对 API v4 的 HTTP 429 重试。
  2. 段落说明这种重试如何避免重复扣费。

先离线检查上下文准入和合批,不调用模型:

jev-filter query --input examples/search-filtering/retrieved.json \
  --analysis examples/search-filtering/analysis.json \
  --task 'Find API v4 passages permitting HTTP 429 retries with duplicate-charge protection' \
  --plan

缺少版本的记录会因上下文缺失而延后。规划不会产生语义判定。 当你决定运行计费推理时,去掉 --plan:

jev-filter query --input examples/search-filtering/retrieved.json \
  --analysis examples/search-filtering/analysis.json \
  --task 'Find API v4 passages permitting HTTP 429 retries with duplicate-charge protection' \
  > search-result.json
来源 ID 预期判定 原因
v4-429-idempotency 匹配 两个条件都有明确依据
v4-timeout 排除 描述的是其他失败阶段
v4-429-no-retry 排除 明确禁止这种重试
v4-429-incomplete 复核 避免重复扣费的措施未知
version-missing 复核 缺少必需的版本元数据

消费证据,并核验原始来源

一起解析 selected_ids、review_ids 与 complete。本样例包含预期复核项, 语义运行可能以 2 退出,同时返回有用的部分 JSON 结果。 不要因为进程返回非零就丢弃 stdout。退出 0 表示处理完成,不证明陈述为真; 退出 1 表示输入、配置或执行错误。详见 CLI 契约。

把精简证据包交给主模型。复制结果中的 archive 路径,按 ID 读取传入原文:

jev-filter list ARCHIVE_PATH
jev-filter read ARCHIVE_PATH --id v4-429-idempotency

应用在把段落作为政策依据前,仍需独立核验权威来源、版本、权限与新鲜度。 归档只保留采集器当时传入的内容,不能证明来源诚实或仍然有效。 共享上下文不足会返回 NEEDS_CONTEXT;单条记录缺事实会保留为复核项。 两者都应留在工作流中。

什么时候值得增加这一层?

大量检索段落需要按统一语义条件逐条判断时适合使用;精确字段用原生代码, 少量短段落或开放推理继续交给主模型。修改生产链路前,测量检索召回、筛选质量、 复核与失败率、返回上下文、整段耗时和两个模型的用量。 公开基准同时保留了返回上下文减少、整段变慢和费用估算升高 的情况;这些是固定合成测试,不是普遍提速或降费承诺。

继续阅读语义代码搜索、 关联日志筛选或上下文契约。