SQLite-Vec
SQLite-Vec 是 Llama Stack 的内联向量数据库提供商。它允许您直接在 SQLite 数据库中存储和查询向量。这意味着您不受限于将向量存储在内存中或单独的服务中。
功能
轻量且易于使用
与 Llama Stacks 完全集成
使用基于磁盘的存储进行持久化,允许存储更大的向量
与 Faiss 的比较
选择 Faiss 还是 sqlite-vec 应根据您应用的需要来决定,因为它们有不同的优势。
选择正确的提供商
场景 |
推荐工具 |
原因 |
---|---|---|
在线分析处理 (OLAP) |
Faiss |
快速的内存搜索 |
在线事务处理 (OLTP) |
sqlite-vec |
频繁写入和读取 |
频繁写入 |
sqlite-vec |
高效的基于磁盘的存储和增量索引 |
大型数据集 |
sqlite-vec |
基于磁盘的存储,用于存储更大的向量 |
可以放入内存的数据集,频繁读取 |
Faiss |
针对速度、索引和 GPU 加速进行了优化 |
实证示例
考虑下面的直方图,其中使用 client.tool_runtime.rag_tool.insert()
将 10,000 个随机生成的字符串分批(每批 100 个)插入到 Faiss 和 sqlite-vec 中。

您会注意到,sqlite-vec
的平均写入时间为 788ms,而 Faiss 为 47,640ms。虽然这个数字令人震惊,但如果您查看其分布,可以看到它相当均匀地分布在 [1500, 100000] 区间内。
按照文档插入顺序查看每次单独写入时,您会看到 Faiss 在每次写入后重新索引向量导致写入速度的增加。

相比之下,Faiss 的读取时间平均比 sqlite-vec 快 10%。两种分布的众数进一步突显了它们之间的差异,其中 Faiss 很可能产生更快的读取性能。

用法
要在 Llama Stack 项目中使用 sqlite-vec,请按照以下步骤操作
安装必要的依赖项。
配置您的 Llama Stack 项目以使用 SQLite-Vec。
开始存储和查询向量。
安装
您可以使用 pip 安装 SQLite-Vec
pip install sqlite-vec
文档
有关 sqlite-vec 的更多详细信息,请参阅其 GitHub 仓库。