☰
向量数据库选型指南:VexDB-Lite 如何用一个内核同时加速 PostgreSQL、DuckDB 和 SQLite
2026/10/7 8:25:23 网站建设 项目流程

向量数据库选型指南:VexDB-Lite 如何用一个内核同时加速 PostgreSQL、DuckDB 和 SQLite

【免费下载链接】VexDB-LiteA cross-platform vector database, which can be integrated into existing databases as a plugin.项目地址: https://gitcode.com/gh_mirrors/ve/VexDB-Lite

VexDB-Lite是一款跨平台向量数据库检索引擎,以插件形式嵌入 PostgreSQL、DuckDB 和 SQLite:三个后端共享同一套自研图索引算法、SIMD 距离计算内核和 PQ/RaBitQ 量化压缩模块。对于需要在业务库、分析库和端侧设备上统一做向量检索的团队,它给出了"一次内核、三端复用"的选型答案。


一核多库:VexDB-Lite 的整体架构

大多数向量数据库选型难题在于:业务数据在 PostgreSQL、分析数据在 DuckDB、App 本地在 SQLite,三套系统往往意味着三套向量索引实现、三份维护成本。VexDB-Lite 的思路反过来——把核心算法收敛到一个共享内核,适配层只做"胶水"。

共享内核位于 common/ 目录,包含四个关键组件:

组件路径作用
自研图索引算法common/include/graph_index/层级图结构、邻居选择、增量更新
SIMD 距离计算common/distance/SSE4.1 / AVX2 / AVX-512 / NEON 运行时分发
PQ 产品量化common/quantizer/K-means 训练、编码、ADC 距离
RaBitQ 量化common/rabitq/量化码图遍历,L2 / 余弦 / 内积均支持

三个适配层则非常薄:

  • PostgreSQL(vexdb_pg/):注册vexdb_graph索引访问方法、floatvector(N)向量类型、WAL 持久化;
  • DuckDB(vexdb_duckdb/):提供GRAPH_INDEX索引类型,优化器自动改写为VEXDB_INDEX_SCAN;
  • SQLite(vexdb_sqlite/):以虚拟表 + Shadow Table 承载GRAPH_INDEX,面向端侧与嵌入式场景。

这意味着三个引擎的召回行为、量化语义、距离语义天然一致——SQLite 侧甚至做过跨引擎 800 组向量对照测试,用 float64 真值仲裁,确保三端结果对齐(见 vexdb_sqlite/README.md)。

选型建议:什么时候选哪个引擎?

同一个内核之下,三个适配层各有明确定位,选型可以按"数据放在哪"直接决定:

维度PostgreSQL 插件DuckDB 扩展SQLite 扩展
向量类型floatvector(N)原生FLOAT[N]虚拟表GRAPH_INDEX
距离算子<->、<~>、<=><->、<~>、<=>MATCH+ 距离函数
典型场景在线业务库、事务写入离线分析、湖仓查询移动端、IoT、嵌入式
特色能力并行构建、共享内存向量缓冲带 WHERE 过滤的 ANN 查询PQ/RaBitQ + 低内存压缩
支持版本PostgreSQL 16 ~ 19DuckDB v1.5.2SQLite ≥ 3.38

一句话总结:PostgreSQL 选"事务在线",DuckDB 选"分析过滤",SQLite 选"端侧轻量"。详细能力矩阵见 README.md,版本与架构支持见 documentation/compatibility.md。

性能实测:SIFT-1M 上比 pgvector 快多少?

在 SIFT-1M(128 维)基准测试中(m=16、ef_construction=128,Intel Core Ultra 7 平台),VexDB-Lite 对主流内置方案的提升非常直观:

系统QPS(ef=50,单线程)QPS(ef=100,单线程)
pgvector507.9313.4
vexdb_lite(PostgreSQL)994.7618.5
duckdb-vss496.1405.2
vexdb_lite(DuckDB)717.5547.2

同等 Recall@10 下,PostgreSQL 侧约快1.9 倍,DuckDB 侧约快1.45 倍。性能来自两个内核能力:

  1. 运行时 SIMD 分发——同一份代码在 x86 上自动选择 AVX2/AVX-512,在 ARM 上选择 NEON,无需针对 CPU 重新编译;
  2. PQ / RaBitQ 量化——索引中只存量化码而非原始向量,memory_mode='compact'时内存占用大幅下降,适合向量规模远超内存的场景。

完整基准数据见 README.md 第 7 节,功能参数文档见 documentation/features.md。

上手体验:以 PostgreSQL 为例

以最常见的在线场景为例,核心操作只有四步:装扩展 → 建表 → 建图索引 → 查最近邻。

CREATE EXTENSION vexdb_lite; CREATE TABLE items (id BIGSERIAL PRIMARY KEY, vec floatvector(128)); CREATE INDEX idx_items_vec ON items USING vexdb_graph (vec floatvector_l2_ops) WITH (m = 16, ef_construction = 64, parallel_workers = 4); SET vexdb.ef_search = 100; SELECT id, vec <-> '[0.15, 0.25, 0.35]' AS dist FROM items ORDER BY vec <-> '[0.15, 0.25, 0.35]' LIMIT 10;

建索引时还可追加quantizer = 'pq'或'rabitq'开启量化压缩;DuckDB 与 SQLite 的写法大同小异,分别参考 documentation/features.md 中的 DuckDB 与 SQLite 小节。

在 AI 应用侧,向量检索是 Agent 记忆、RAG 检索、以图搜图的基础设施——项目自带的 iOS 演示 examples/ios/VexDBLiteDemo/ 就用 SQLite 适配层在真机上实现了图片向量检索,可以直接参考其用法。

兼容性速查:跨平台覆盖矩阵

  • CPU 架构:x86_64(SSE4.1/AVX2/AVX-512)与 AArch64(NEON,ARMv8.2+),运行时自动选择最优 SIMD 实现;
  • 操作系统:Linux x86_64 / aarch64 均有预编译产物(manylinux_2_28),macOS arm64 支持源码构建,移动端 iOS 有完整 Demo;
  • 数据库版本:PostgreSQL 16 ~ 19、DuckDB v1.5.2、SQLite ≥ 3.38。

⚠️ 小提示:DuckDB 扩展与运行时版本严格绑定,加载前建议先执行SELECT version()确认是 v1.5.2。

总结

VexDB-Lite 的选型价值在于降低向量数据库的多引擎维护成本:图索引、距离计算、量化压缩全部收敛在common/一个内核里,PostgreSQL 管事务、DuckDB 管分析、SQLite 管端侧,而召回质量与性能表现三端一致。如果你的团队同时维护多套数据库,这或许是向量数据库选型中"一份投入、三处受益"的务实方案。

更多资料:

  • 项目总览与基准测试:README.md
  • 功能与参数文档:documentation/features.md
  • 版本兼容矩阵:documentation/compatibility.md
  • SQLite 端侧适配细节:vexdb_sqlite/README.md
  • 三端共享测试规范:tests/spec/

【免费下载链接】VexDB-LiteA cross-platform vector database, which can be integrated into existing databases as a plugin.项目地址: https://gitcode.com/gh_mirrors/ve/VexDB-Lite

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询