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 中。

Comparison of SQLite-Vec and Faiss write times

您会注意到,sqlite-vec 的平均写入时间为 788ms,而 Faiss 为 47,640ms。虽然这个数字令人震惊,但如果您查看其分布,可以看到它相当均匀地分布在 [1500, 100000] 区间内。

按照文档插入顺序查看每次单独写入时,您会看到 Faiss 在每次写入后重新索引向量导致写入速度的增加。

Comparison of SQLite-Vec and Faiss write times

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

Comparison of SQLite-Vec and Faiss read times

用法

要在 Llama Stack 项目中使用 sqlite-vec,请按照以下步骤操作

  1. 安装必要的依赖项。

  2. 配置您的 Llama Stack 项目以使用 SQLite-Vec。

  3. 开始存储和查询向量。

安装

您可以使用 pip 安装 SQLite-Vec

pip install sqlite-vec

文档

有关 sqlite-vec 的更多详细信息,请参阅其 GitHub 仓库