サーバーレスと相性のよいベクトルデータベースを意のままに
FlechasDBはサーバーレスと相性のよいベクトルデータベース1です。
特徴
- データベースファイルをAmazon S3バケットに保存・読込
- Amazon Linux 22で動く
今後の機能向上にもご期待ください!
Amazon Linux 2はこの記事を書いている時点でAWS Lambdaインスタンスの標準オペレーティングシステムです。
始め方
コアライブラリのflechasdb
とAmazon S3拡張のflechasdb-s3
はそれぞれ以下のGitHubレポジトリで入手できます。
Amazon Linux 2用のカスタムLambdaランタイムに組み込むことで、flechasdb
とflechasdb-s3
をAWS Lambdaで利用できます。
flechasdb
もflechasdb-s3
もRustで記述されていますので、cargo-lambda
を使うと便利でしょう。
flechasdb
とflechasdb-s3
を使うLambda関数をAWS Cloud Development Kit (CDK)でデプロイする例が、以下のGitHubレポジトリにあります。
- https://github.com/codemonger-io/mumble/tree/main/cdk
- https://github.com/codemonger-io/mumble-embedding/tree/main/cdk
FlechasDBの実例
Mumbleは検索機能を実現するのにFlechasDBを使っています。 投稿(ゴニョゴニョ)に対して計算したOpenAIのエンべディングからFlechasDBのデータベースを構築し、Amazon S3バケットにデータベースファイルを格納しています。 KikuoのMumbleプロフィールで試すことができます。
背景
PineconeやMilvusなど、世の中にはもっと優れたプロダクトやサービスがあります。
Faiss
はベクトルサーチではデファクトのライブラリでflechasdb
よりよほど高速で信頼性も高いでしょう。
正直、この「車輪の再発明」は私(Kikuo)の興味本位で行ったものです。
しかし、小規模なプロジェクトにとってFlechasDBは最安のソリューションのひとつではないかと思いますので、 ベクトルデータベースのフィージビリティスタディにFlechasDBを検討してみてはいかがでしょうか?
Product Quantizers for k-NN Tutorial Part 2 - https://mccormickml.com/2017/10/22/product-quantizer-tutorial-part-2/
Taking Advantage of Auto-Vectorization in Rust - https://www.nickwilcox.com/blog/autovec/