Vectorless 是一个用 Rust 开发的文档智能引擎,核心是“推理优先”。它完全抛弃了向量数据库、嵌入和相似度搜索,而是把文档转成层级化的语义树,然后让大模型在这棵树里“导航”——通过深度理解上下文来找到最相关的内容,而不是靠向量计算。
思路
结构化文档(技术报告、法律合同、研究论文)本身就自带语义层级 —— 标题、章节、段落之间的关系天然构成了一棵树。保留这棵树,让 LLM 沿着树结构做推理导航,而不是把文档拍平后算向量距离。
工作流程
文档 → 解析为层级语义树 → 存储 → LLM 推理导航树结构 → 返回最相关内容
- Parse:将 Markdown / PDF 解析为层级语义树,保留章节结构和语义关系
- Index:存储树结构及元数据、关键词、摘要;支持增量索引
- Query:LLM 在树上做推理导航,定位最相关节点,无需 Embedding 和向量搜索
代码示例
Python
import asyncio
from vectorless import Engine, IndexContext
async def main():
engine = Engine(workspace="./data", api_key="sk-...", model="gpt-4o")
result = await engine.index(IndexContext.from_file("./report.pdf"))
doc_id = result.doc_id
answer = await engine.query(doc_id, "What is the total revenue?")
print(answer.single().content)
asyncio.run(main())
Rust
use vectorless::{EngineBuilder, IndexContext, QueryContext};
let engine = EngineBuilder::new()
.with_workspace("./data")
.with_key("sk-...")
.with_model("gpt-4o")
.build()
.await?;
let result = engine.index(IndexContext::from_path("./report.pdf")).await?;
let doc_id = result.doc_id().unwrap();
let result = engine.query(
QueryContext::new("总营收是多少?").with_doc_id(doc_id)
).await?;
println!("{}", result.content);
技术特点
- 纯 Rust 实现:内存安全,高性能,低资源占用
- 零向量依赖:无需向量数据库、无需 Embedding 模型、无需相似度计算
- LLM 推理导航:在文档语义树上做逐层推理决策,而非黑盒数值匹配
- 混合检索:BM25 预过滤 + LLM 精排,兼顾效率与准确性
- 全程可解释:完整检索链路可追溯,每次决策都可审计
- Python + Rust 双语言支持:Rust 核心引擎,PyO3 提供原生 Python 绑定
适用场景
- 技术文档 / API 文档的智能问答
- 法律合同、合规报告的精准检索
- 研究论文的多跳推理查询
- 需要检索过程可解释、可审计的场景
开源
GitHub: https://github.com/vectorlessflow/vectorless, 如果感兴趣欢迎⭐repo。
Ext Link: https://github.com/vectorlessflow/vectorless
1
共 2 条评论, 1 页
评论区
写评论对, 不过我最初看到的是这个小哥的repo: https://github.com/vixhal-baraiya/pageindex-rag, 后来发现他其实也是参考的PageIndex.
--
👇
seth-hg: 跟paperindex差不多? https://github.com/VectifyAI/PageIndex
跟paperindex差不多? https://github.com/VectifyAI/PageIndex