Closed3
SQLiteでベクトル検索が可能な「sqlite-vec」を試す
SQLiteのベクトル検索拡張は、以前は「sqlite-vss」というものがあったが、同じ作者の方が新たに「sqlite-vec」を作成されており、現在はこちらに力を入れているらしい。
ざっくりまとめるとこんな感じ?
- sqlite-vssに[多くの問題がある。
- これらの問題のほとんどはsqlite-vssがFaissに依存していることから来ており修正が困難。
- sqlite-vecはこれらの依存関係をなくした上で、純粋なCで書き直されている。これにより:
- Linux、MacOS、Windows、WebAssembly、スマホ、Raspberry Piなど、どこでも実行できるようになった。
- メモリ使用量や埋め込み量子化など、より細かく制御できるようになった。
制限としてはこのあたりかな?
- まだpre-v1であり、今後破壊的変更が行われる可能性がある
- 現時点ではフルスキャンベクトル検索しかサポートしていない。
GitHubレポジトリ
sqlite-vec
非常に小さく、どこでも動作する「十分に速い」ベクトル検索 SQLite 拡張!sqlite-vss の後継
- 浮動小数点数、int8、バイナリベクトルを vec0 仮想テーブルに格納し、問い合わせる。
- 純粋なC言語で書かれており、依存関係がなく、SQLiteが動作する場所であればどこでも動作する(Linux/MacOS/Windows、WASMを使ったブラウザ、Raspberry Pisなど)。
- rowid IN (...) サブクエリでベクトルをプレフィルターする。
公式ドキュメント
sqlite-vec
どこでも動くベクトル検索 SQLite 拡張!
- どこでも動く
- ラップトップ、サーバ、モバイルデバイス、WASM 搭載ブラウザ、Raspberry Pis などで動作する!
- 多くの言語のバインディング
- Python、Ruby、Node.js/Deno/Bun、Go、Rustなど!
- 純粋なSQL
- 余分な設定やサーバーは必要ない - CREATE、INSERT、SELECT文のみ
現状で使うならば、sqlite-vssのほうが情報も多くて良さそう。ただしその場合、今後のメンテはなさそう。sqlite-vecの開発に期待。
このスクラップは25日前にクローズされました