可迁移的快照
变更提交到带校验和的 WAL。单独复制 .rvec 快照前,应暂停写入并先调用 checkpoint();否则必须同时保留相匹配的快照和 WAL。
Recern Vector 0.2.0 是面向 Rust、Python、Node.js 和 CLI 的嵌入式向量数据库,提供本地快照与 WAL、HNSW 搜索、int8 存储,以及查询执行过程说明。
pip install recern-vectorv0.2.0 发布说明(英文) Recern Workspace · 演示数据库

在 payment_patterns int8 集合上测量不同 ef 值下的召回率和延迟。
基准结果发布于 2026-10-07,早于 0.2.0;这些数据未测量 int8 或新过滤规划器的性能。
SIFT1M 上召回率为 0.95 时,相对于 faiss HNSW 的吞吐量
GloVe-100 上的同项对比
使用 14 核为一百万个向量构建索引的耗时
SIFT1M 上召回率为 0.983 时的查询延迟中位数
变更提交到带校验和的 WAL。单独复制 .rvec 快照前,应暂停写入并先调用 checkpoint();否则必须同时保留相匹配的快照和 WAL。
可通过 Rust、Python、原生 Node.js 绑定或 CLI 在应用内运行。支持平台的 Node.js 二进制文件附在发布版本中,尚未发布到 npm。
每次搜索都可报告搜索策略、访问过的节点、过滤选择率和耗时。统计信息展示图层、内存使用和搜索无法到达的记录,还可使用自己的数据测量召回率。
从 Python 和命令行访问同一个数据库。右侧输出来自一次在 20,000 条记录上使用元数据过滤器的真实运行。
import recern_vector as rv
db = rv.Database.open_or_create("docs.rvec")
docs = db.create_collection("docs", dim=384, metric="cosine")
docs.upsert_many(ids, embeddings, metadatas)
hits = docs.search(query, k=5, filter={"lang": "en"})
docs.explain(query, k=5) # strategy, visited nodes, time$ recern-vector query docs.rvec docs --like doc-42 -k 3 \
--filter '{"lang": "en", "year": {"$gte": 2020}}' \
--explain
# id distance metadata
1 doc-42 -0.00000 {"lang":"en","year":2024}
2 doc-18861 0.63155 {"lang":"en","year":2022}
3 doc-10899 0.63834 {"lang":"en","year":2024}
strategy hnsw
ef 64
selectivity ~19.9% of records match the filter
visited 7,244 nodes
distances 7,330 computed
time 529 µsPython 绑定直接接收 NumPy float32 数组,无需逐元素转换。批量插入使用全部核心构建索引。
图索引支持按集合配置 m、ef_construction 和 ef_search;需要基准真值时可使用精确扫描。
每个集合使用固定维度和距离度量。使用余弦度量的向量在存储时会归一化。
支持相等、$in、范围及嵌套的 $and、$or、$not。成本规划器采样评估过滤选择率,选择精确搜索或 HNSW,并调整搜索工作量。
批量插入使用全部核心构建索引。只要有一个向量无效,就不会写入任何数据。
按 ID 替换或删除记录,再通过压实重建集合,移除已删除的记录。
stats()、explain() 和 estimate_recall() 是 API 的组成部分,无需独立工具。
面向 CPython 3.11 及以上版本的 PyO3 wheel,附带类型提示。
init、create-collection、insert、query、inspect、recall、checkpoint 和 compact。
提供版本化文件、校验和与基准样本兼容性测试,同时仍可读取现有的格式 1 快照。
save() 将变更页提交到 WAL;checkpoint() 写出独立完整的快照。恢复时会忽略末尾因中断而不完整的记录。
按集合使用 int8 编码,每个向量有独立的缩放系数。可用自己的数据测量召回率,选择存储与精度之间的平衡。
提供 Node-API 8、TypeScript 类型定义,以及在工作线程运行的 searchAsync。GitHub 发布版本中包含 Linux x64、macOS arm64 和 Windows x64 构建。
在 Apple M3 Max 上从 Python 逐条执行查询,每项结果下方显示延迟中位数。完整报告还包含索引构建时间、磁盘占用、测试方法和限制。
| 引擎 | SIFT1M | GloVe-100 |
|---|---|---|
| Recern VectorHNSW | 9,0410.11 ms | 6351.60 ms |
| faissHNSWFlat | 6,9610.15 ms | 3562.83 ms |
| LanceDBIVF_HNSW_SQ | 7311.34 ms | 未达到 |
| LanceDBIVF_PQ, tuned | 2454.03 ms | 1675.93 ms |
| sqlite-vecexact scan | 1283.79 ms | 7140.43 ms |
数据库仍需完整装入内存。WAL 减少磁盘写入,但 save() 仍会编码并比较完整镜像。检查点需显式执行;并发写入会串行化,状态过期的写入方必须重新打开数据库。
Workspace 可检查 pgvector 列和索引、服务器支持的 Redis 搜索索引与向量集合,以及包含已提交 WAL 变更的 Recern Vector 快照。Recern Vector 集合支持召回率检查,包括 f32 和 int8 存储。
探索工作空间