SQLite向量搜索:最轻量的RAG方案
向量搜索真的需要服务器吗?sqlite-vec把向量加到最便携的数据库里。
💡 你将学到
向量搜索真的需要服务器吗?sqlite-vec把向量加到最便携的数据库里。
📜 目录
SQLite 向量搜索 2026:sqlite-vec 与史上最轻量 RAG 技术栈
SQLite 是地球上部署最广泛的数据库——每部手机、每个浏览器、每款桌面应用都内置了它。sqlite-vec(GitHub 7,900 星)以可加载扩展的形式为 SQLite 添加了向量搜索能力,让你能在单个文件中运行完整的 RAG 流水线。无需服务器、无需 Docker、无需云服务。
为什么用 SQLite 做向量
- 零基础设施——一个文件,无守护进程
- 桌面/移动应用完美适配——将 RAG 嵌入你的应用
- 省电——本地语义搜索无需网络调用
- 可支撑约 100 万向量——对个人或小团队使用绰绰有余
第一步:安装
pip install sqlite-vec
# 或作为 SQLite 扩展以任何语言加载
第二步:创建与插入
import sqlite3, sqlite_vec
conn = sqlite3.connect("search.db")
conn.enable_load_extension(True)
sqlite_vec.load(conn)
conn.execute("CREATE VIRTUAL TABLE vec_docs USING vec0(embedding float[768])")
# 使用任意模型生成的 embedding 插入
conn.execute(
"INSERT INTO vec_docs(rowid, embedding) VALUES (?, ?)",
(1, embedding_list)
)
第三步:搜索
rows = conn.execute(
"SELECT rowid, distance FROM vec_docs WHERE embedding MATCH ? ORDER BY distance LIMIT 5",
(query_embedding,)
).fetchall()
第四步:单文件完整 RAG
完整技术栈:文档存放在普通表中,embedding 存放在 vec0 虚拟表中,LLM 由本地 Ollama 提供服务。总计:一个 .db 文件 + 一个 Python 脚本。
何时使用它 vs 真正的向量数据库
| 场景 | 选择 |
|---|---|
| 桌面应用、移动应用、CLI 工具 | sqlite-vec |
| 单用户本地搜索 | sqlite-vec |
| 多用户 Web 应用、高并发 | Qdrant、Chroma、PGVector |
| 1000 万以上向量 | Milvus、Qdrant、Weaviate |
常见问题
sqlite-vec 和 sqlite-vss 有什么区别? sqlite-vss 是较旧且已停止维护的项目;sqlite-vec 是其现代继任者,性能和维护性都更好。
支持移动端吗? 支持——可在 iOS 和 Android 应用中加载;它用 C 语言编写,无服务器组件。
能处理多少向量? 社区基准测试显示可流畅运行至约 100 万向量;超过这个规模,基于服务器的向量数据库是更合适的选择。
相关文章
❓ 常见问题
sqlite-vec vs sqlite-vss?
sqlite-vss is the older, unmaintained project; sqlite-vec is its modern successor with better performance and maintenance.
Does it work on mobile?
Yes - loads in iOS and Android apps; it is written in C with no server component.
How many vectors can it handle?
Community benchmarks show smooth operation to ~1M vectors; beyond that, a server-based vector DB is a better fit.
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。
