开源教程 · 可运行代码 · 本地优先

Jev 怎么做 RAG?
先召回,再判断。

最小可用流程是:本地文件 → SQLite BM25 召回 → Jev 证据重排 → MiniMax 生成带文件引用的答案。默认不需要 Embedding 或向量数据库;当关键词召回不足时,再选择 Agentic 多查询或混合检索。

直接答案

Jev 在 RAG 里负责什么?

Jev 不负责从整个知识库中生成答案。它更适合放在候选召回和答案生成之间:BM25、Agentic 关键词或 Embedding 先取回一批候选文段,Jev 再逐批判断哪些文段真正支持用户问题,并据此重排。最终回答模型只接收排名靠前的证据。

关键边界:Jev 可以改善候选顺序,却无法找回召回阶段完全漏掉的文档。RAG 效果不好时,要先区分“没召回”与“召回了但没排上去”。

阶段默认实现职责
索引本地 SQLite FTS5保存文件、段落与词法索引
召回BM25 Top 30快速找出可能相关的候选文段
判断与重排Jev,自动分批判断证据相关性并调整候选顺序
回答MiniMax根据最多 10 段证据流式生成带引用答案

十分钟起步

如何搭建 Jev RAG。

1. 下载和安装

git clone https://github.com/aifabrice/jev-rag.git
cd jev-rag
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[documents]'
cp .env.example .env

Windows PowerShell 使用 .venv\Scripts\Activate.ps1。如果要测试 Embedding 混合检索,安装 '.[documents,embeddings]'。

2. 配置模型服务

OPENROUTER_API_KEY=your_key_here
# 可选:直接调用 TypeSafe Jev
TYPESAFE_API_KEY=your_key_here

默认端到端路径可通过 OpenRouter 调用 Jev 和 MiniMax。不要把真实 Key 提交到 Git;如果已经泄露,应立即在服务商后台撤销。

3. 索引本地文件夹

jev-rag \
  --documents /absolute/path/to/documents \
  --db .knowledge/documents.db \
  index --rebuild

支持 Markdown、TXT、HTML、JSON、CSV、YAML、DOCX 和 PDF。默认 auto 分块会保留短文件,并按标题和段落拆分长文档。若想整篇索引,可加 --chunking none。

4. 启动本地问答

jev-rag \
  --documents /absolute/path/to/documents \
  --db .knowledge/documents.db \
  serve

浏览器打开 http://127.0.0.1:8765。界面会显示召回、Embedding、Jev、首 Token、答案生成和总耗时,并展示文件引用。

5. 用命令行比较路径

# 默认:BM25 + Jev,不建向量索引
jev-rag search '我的文档里有哪些 AI 产品?'

# 无向量 Agentic 多查询 + Jev
jev-rag search '我的文档里有哪些 AI 产品?' --retrieval-mode agentic

# BM25 + Embedding/RRF + Jev
jev-rag search '我的文档里有哪些 AI 产品?' --retrieval-mode hybrid

# 只看 BM25 召回,不调用 Jev
jev-rag search '我的文档里有哪些 AI 产品?' --no-jev

路径选择

什么时候该用哪一种 Jev RAG?

搜索问题建议路径原因
名称、编号、术语与原文重合BM25 + Jev简单、快速、可检查,不需要向量
用户说法和文档词汇不同Agentic 关键词 + Jev模型生成多组检索词,仍不建立文档向量
同义改写很多,召回优先Hybrid + JevBM25 与 Embedding 召回互补
愿意用更高延迟追求最高实测点Agentic Hybrid两轮规划与语义召回并行,再融合 Jev 和原召回排名
小规模、高价值语料深搜Jev Line Search直接搜索全库窗口,但成本和延迟最高

在完整 BEIR NFCorpus 测试中,BM25 Top 30 为 0.305654 nDCG@10,加入 Jev 后为 0.353235;无向量 Agentic + Jev 为 0.430969;Hybrid + Jev 为 0.444327。这些是项目可复现自测结果,不是官方 MTEB 提交,也不应直接外推到你的私有语料。

查看七种路径、费用、延迟和负面实验 →

Jev 能替代向量数据库吗?

Jev 不是向量数据库。Jev RAG 默认用 SQLite BM25 召回,所以可以在不部署向量数据库的情况下运行;语义召回有明确收益时,也可以选择混合路径。

Jev 是 Reranker 吗?

在这套应用里,Jev 承担证据判断和重排角色。应用代码负责分批请求、缓存、阈值策略、排序和失败回退;不能把整套检索系统等同于单个模型。

必须给知识库分块吗?

不必须。短而聚焦的文件可以整篇索引;长文档通常需要按标题和段落分块,否则召回得分会被无关内容稀释,Jev 判断和引用也不够精确。

Jev RAG 是完全离线的吗?

不是。文件、索引和 BM25 检索保留在本机,但候选证据会发送到 Jev,最终证据会发送到回答模型。混合模式还会调用 Embedding 服务,Line Search 会把每个索引文段的受限表示发送给 Jev。

Jev RAG 是开源的吗?

应用代码采用 MIT 许可证,仓库公开了实现、测试、Benchmark、费用与限制。项目是独立社区项目,与 TypeSafe AI、OpenRouter 或 MiniMax 没有隶属或官方背书关系。

开始验证

用你自己的文件和问题测试。

先跑 BM25 基线,再判断问题出在召回、重排还是生成。不要只凭演示问题决定技术路线。