SQLite 向量搜索扩展 sqlite-vec
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/sqlite-vec-vector-search-extension-sqlite 到我的 AI 助手。
技能介绍
为什么需要它
当你已经在用 SQLite 存数据,却想给应用加上「按语义找相似内容」的能力时,传统做法是再引入一套向量数据库:Milvus、Qdrant、pgvector 之类的方案要么需要单独部署服务,要么要求你把数据从现有库里搬出去。多一套系统就意味着多一份运维、一份数据同步逻辑,以及嵌入式、边缘设备上难以承受的体积。对很多中小型应用来说,这个代价远大于问题本身。
它是怎么工作的
sqlite-vec 把向量搜索做成了一个 SQLite 可加载扩展(loadable extension),用纯 C 编写、零依赖。核心思路是:不引入新存储,而是把向量能力塞进你已经在用的 SQLite 里——有数据的地方直接做相似度检索。
关键能力包括:
- 三种向量类型:
float用于精度敏感的场景,int8做量化压缩、显著降低存储占用,binary适合汉明距离类场景。 - 随 SQLite 到处运行:Linux、macOS、Windows、浏览器里的 WASM 环境,甚至树莓派都能跑,同一套 SQL 代码无需改动。
- 生态打通:通过 Python(
pip)、Node.js(npm)、Datasette、sqlite-utils等常见工具链加载,不改变你现有的开发习惯。
典型流程是:建一张存向量的虚拟表 → 写入 embedding → 用相似度查询按 KNN 取回结果,全部在 SQL 语句内完成。
适用边界
它不是替代品,而是补位。单机、中小规模的向量检索(比如给现有产品加个语义搜索框)正是它的舒适区;但当数据量达到需要分布式分片、专用索引结构来换取毫秒级响应时,你仍然需要专业向量数据库。另外它嵌入 SQLite 进程,能扛多大并发取决于 SQLite 本身。先确认规模,再决定是否上它。
使用场景
- 已有 SQLite 数据库的应用想加「按语义找相似内容」功能,不愿再部署一套向量数据库服务
- 在树莓派等资源有限的边缘设备上做本地向量检索,进程内跑 SQLite 扩展比拉起独立服务更实际
- 用 Datasette 或 sqlite-utils 浏览数据时,想直接对向量列做相似度查询来做原型验证
- 前端项目想在浏览器 WASM 环境里完成向量检索,避免为这一步单独搭后端接口
适合人员
- 独立开发者:后端已用 SQLite,想给内容加相似推荐但拒绝为此维护新服务
- 嵌入式工程师:在树莓派上做设备端检索,关注内存占用和零依赖带来的部署简单性
- 数据工程师:习惯用 Datasette 和 sqlite-utils 做数据探查,想把向量查询也纳入同一工具链
- 全栈/前端开发者:计划在浏览器 WASM 里直接跑向量搜索,减少服务端接口和基础设施依赖