ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VexDB-Lite 构建与发布指南:从源码编译到 manylinux 打包、DuckDB Community 一键 INSTALL

VexDB-Lite 构建与发布指南:从源码编译到 manylinux 打包、DuckDB Community 一键 INSTALL VexDB-Lite 构建与发布指南从源码编译到 manylinux 打包、DuckDB Community 一键 INSTALL【免费下载链接】VexDB-LiteA cross-platform vector database, which can be integrated into existing databases as a plugin.项目地址: https://gitcode.com/gh_mirrors/ve/VexDB-LiteVexDB-Lite 是一款跨平台的开源向量数据库可作为插件集成到 PostgreSQL、DuckDB 和 SQLite 中提供自研图索引GRAPH_INDEX、SIMD 距离计算与 PQ/RaBitQ 量化压缩。本文带你完整走完 VexDB-Lite 源码编译、manylinux 跨架构打包发布以及 DuckDB Community 一键INSTALL的三种获取方式新手也能照着做出可用的向量检索扩展。1️⃣ 认识 VexDB-Lite 向量数据库VexDB-Lite 的三个后端共享同一套核心自研高性能图索引算法、运行时 SIMD 距离分发SSE/AVX2/AVX-512/NEON、PQ 与 RaBitQ 量化内核。它把向量检索能力藏进你现有的数据库里——你无需部署独立服务一条CREATE INDEX ... USING GRAPH_INDEX就能让ORDER BY distance(...) LIMIT k自动走 ANN 索引。在 LLM / RAG / Agent 应用中向量检索是标配能力文档、图片、代码先转向量再由向量数据库召回语义相近的内容供大模型使用。VexDB-Lite 正是承担这一层召回的基础设施。上图展示了典型的 LLM 处理链路向量数据库如 VexDB-Lite通常就位于 input → prompt 之前的语义召回环节。2️⃣ 环境准备一次克隆三端复用开始编译前确认本机具备依赖版本要求CMake≥ 3.14编译器GCC 9 或 Clang 10C17Git任意较新版本Python 3用于打包校验脚本发版时需要克隆仓库git clone https://gitcode.com/gh_mirrors/ve/VexDB-Lite.git cd VexDB-Lite仓库结构速览详见 README.md目录说明common/共享核心图索引、SIMD 距离分发、PQ/RaBitQ 量化vexdb_duckdb/DuckDB 扩展源码vexdb_pg/PostgreSQL 插件源码vexdb_sqlite/SQLite 虚拟表扩展community/DuckDB Community 分发配置scripts/构建、发布、打包脚本tests/spec/YAML 驱动的规格测试3️⃣ DuckDB 扩展源码编译build_duck.sh 一键完成DuckDB 的 C 扩展必须编译在 DuckDB 源码树内不能独立cmake因此项目提供了 build_duck.sh 自动化整个流程克隆 DuckDB v1.5.2、写入扩展注册配置、cmake 配置与编译、追加扩展元数据 footer。推荐两步走bash build_duck.sh setup # 首次克隆 DuckDB 源码 cmake 配置 bash build_duck.sh build # 增量编译扩展产物位于build/duck/v1.5.2/build/extension/vexdb_lite/vexdb_lite.duckdb_extension在 DuckDB 中加载并验证LOAD /path/to/vexdb_lite.duckdb_extension; SELECT vexdb_version();CREATE TABLE items (id INTEGER, vec FLOAT[128]); CREATE INDEX idx ON items USING GRAPH_INDEX (vec) WITH (metric l2, m 16, ef_construction 64);版本锁定小贴士C 扩展没有稳定 ABI产物只能配对应版本的 DuckDB 使用。需要为其他版本编译时用环境变量切换每个版本拥有独立的构建树DUCKDB_VERSIONv1.5.0 bash build_duck.sh setup build另外bash build_duck.sh strip会 strip 产物并重新封回元数据 footer裸 strip 会截掉 footer导致 LOAD 时报 metadata at the end of the file is invalid对外发布前建议执行。4️⃣ PostgreSQL 插件编译指向 pg_config 即可PostgreSQL 版支持 PG 16 ~ 19。用 CMake 独立构建树编译 vexdb_pgmkdir -p build-pg-release cd build-pg-release export PG_CONFIG/path/to/your/pg_config cmake -DCMAKE_BUILD_TYPERelease ../vexdb_pg make -j$(nproc) make install安装后在postgresql.conf中加上最小配置并重启shared_preload_libraries vexdb_lite然后在任意数据库执行CREATE EXTENSION vexdb_lite;即可使用floatvector(N)类型、-//~距离算子和vexdb_graph索引方法。完整语法示例见 README.md。5️⃣ SQLite 版本独立 CMake 构建SQLite 适配层走独立的 CMake 构建build_sqlite.sh自动探测 Boost 头文件路径并拉取 SQLite amalgamationbash build_sqlite.sh build # 配置 编译 冒烟测试 bash build_sqlite.sh test # 完整功能/并行/spec 测试它还提供iosXCFramework、androidNDK 静态库、wasm浏览器版等交叉构建目标方便把向量检索能力嵌入移动端与前端。6️⃣ manylinux 打包一次命令x86 ARM 双架构发布本地编译的产物往往绑定构建机 glibc客户机容易报 libc 版本不支持。VexDB-Lite 的发布流程用 scripts/release.sh 解决在manylinux_2_28 容器中远程交叉编译保证产物 GLIBCXX 符号上限不超过 3.4.22实现跨发行版可移植。发布三步骤bash scripts/release.sh build # 远程 manylinux 容器构建 拉回 dist/默认全目标、双架构 bash scripts/release.sh package # 打 tarball 生成 SHA256SUMS bash scripts/release.sh upload v0.0.1 # 上传到 Release关键机制值得了解DuckDB 侧默认MANYLINUX1在quay.io/pypa/manylinux_2_28_{x86_64,aarch64}容器内编译并 strip 重封 footer支持DUCKDB_VERSIONSv1.5.0 v1.5.2多版本矩阵每个 DuckDB 版本各编一份。PostgreSQL 侧在自建的 manylinux 派生镜像scripts/docker/Dockerfile.pg-manylinux中编译镜像内预装 PG 16~19 的pg_config并用 ccache 加速重编译产物做 split-debug.so.so.debug后打包。质量关卡每次构建后自动跑 ELF/入口符号/footer 校验、GLIBCXX 上限检查package 阶段还会扫描 tarball 防止 macOS AppleDouble._*文件污染。上图是项目 iOS 示例examples/ios/用于图像向量检索演示的素材可帮助理解向量库服务的具体形态。7️⃣ DuckDB Community 一键 INSTALLpip 版 DuckDB 直接用对不想折腾编译的用户vexdb_lite已接入 DuckDB Community Extensions 体系。相关配置隔离在 community/ 目录文件作用Makefile仓库根 5 行薄入口Community CI 从根执行makecommunity/CMakeLists.txt扩展构建定义直接引用../vexdb_duckdb与../common源码零搬动community/description.yml提交到 community-extensions 的元数据版本、维护者、平台排除vcpkg.json声明唯一依赖boost-preprocessorheader-only构建、签名、托管、随新 DuckDB 版本重建全部由官方 CI 完成用户侧只需两行INSTALL vexdb_lite FROM community; LOAD vexdb_lite; CREATE TABLE items (id INTEGER, vec FLOAT[3]); CREATE INDEX idx ON items USING GRAPH_INDEX (vec) WITH (metric l2); SELECT id FROM items ORDER BY l2_distance(vec, [1.0, 2.0, 3.0]::FLOAT[3]) LIMIT 10;如需为新版本发布 Community 包流程是更新 description.yml 中的version与repo.ref指向最新 tag → push 发布 tag → 向 community-extensions 仓库提交 PR。详见 community/README.md。8️⃣ 运行测试YAML Spec 驱动验证编译完成后建议跑一遍规格测试测试由 tests/spec/ 下的 YAML 用例驱动通过 Docker 运行bash tests/spec/_lib/docker/run_duckdb.sh test # DuckDB 全量 spec 测试 bash tests/spec/_lib/docker/run_pg.sh test # PostgreSQL spec 测试总结三条路径各取所需路径适用场景关键入口DuckDB CommunityINSTALL快速体验、pip 版 DuckDB 用户community/build_duck.sh源码编译定制开发、特定 DuckDB 版本build_duck.shrelease.shmanylinux 发布生产级双架构可移植二进制scripts/release.sh无论哪条路径产物背后都是同一套共享内核common/图索引、SIMD 距离分发与 PQ/RaBitQ 量化。按本文顺序走一遍你就能从零构建、验证并分发自己的 VexDB-Lite 向量数据库扩展。【免费下载链接】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),仅供参考
返回列表