🌟

ベクトルDBの備忘録

2024/01/26に公開

1/22にDatastaxさんのLangChainのハンズオンに参加してきました。
自分のMacbookを持って行って、LangChainを動かしましたが、AstraDBにアクセスしながらOpenAIのAPIを使って動かす感じです。
興味ある方は2月にも同じセッションがあるようなので、申し込まれると良いと思います。
Connpassで発表されるとのこと。

で、今回は興味を持ったのがベクトルDBについてです。
セミナーではAstraDBを使っていましたが、世の中にどんなものがあるのかを少し調べてみました。
今回のブログはその備忘です(個人メモ的な色合いもあるので、ざっくばらんに書いていきます)。

とりあえず、ChatGPTに聞いてみて、比較表を作ってもらいました。

データベース 開発者 特化領域 オープンソース スケーラビリティ
FAISS Facebook 高次元ベクトル検索 はい 高い
Elasticsearch Elastic 全文検索と分析 はい 高い
Annoy Spotify 近似最近傍検索 はい 中程度
NMSLIB Independent 非メトリック空間での検索 はい 中程度
HNSW Independent 近似最近傍検索 はい 中程度
Milvus Zilliz AIアプリケーション向け検索と分析 はい 高い
ScaNN Google Research 近似最近傍検索 はい 高い
Vespa Yahoo リアルタイム検索と分析 はい 高い
Pinecone Pinecone ベクトル検索 いいえ 高い
Jina Jina AI ニューラルネットワークによる検索 はい 中程度
Weaviate SeMI Technologies リアルタイム検索と自動分類 はい 中程度

OSSかどうかや開発元がどこかについての情報はプロンプトで指示して改変してもらっています。
ちなみに、セミナーで聞いていたAstraDBは出てこなかったです。
ChatGPT君にはあまり認識されてないんですかね。。。

で、ここからはもう少し自分で深堀してみます。

これらの中で一番利用しやすいのはElasticsearchでしょうね。AWS、GCP、Azureでマネージドサービス化されています。
とりあえずデータをベクトル化するのであれば第一候補になるんだろうなと。
他にマネージドサービス化されてそうなのは、Vespa、Pinecone、Weaviateあたりでした。
Vespaは調べてみるとYahoo! Japan Tech Blogに記事がありました。米Yahoo!ではなく、日本のものだったんですね。
https://techblog.yahoo.co.jp/oss/vespa_oss/
PineconeやWeaviateも基本的にはクラウド化されていて、APIアクセスしして使うイメージのようです。
使い勝手はすごくいいですね。イメージとしてはセミナーで使っていたAstraDBと同じような感じなんだと思います。

で、候補はざっとこんな感じなんでしょうけど、実際に使うとなると結構大変です。
まずはマネージドサービスを利用する場合ですが、この場合配置データによって考慮点がかなり変わってくるんですよね。
大事な情報を載せる場合は、最低でもSOCレポートに対応していないとダメですし。
リンク先はAWSのものです。
https://docs.aws.amazon.com/ja_jp/audit-manager/latest/userguide/SOC2.html

また、SOC対応しているから即OKかというと、エンタープライズ向けの場合はそんなことはなくて、
そこがスタート地点です。自社のセキュリティ基準もあるので、それをクリアしてはじめて使えます。
なので、本当はプラットフォームをほいほい乗り換えたいんですが、そう考えると乗り換えは結構大変ですし、
現実的な選択肢になるのはElasticsearchくらいかなと思ったりもしています。
OSSを自分のIaaSで構築してしまうのもありですが、それはそれで手間もかかるので、
一番うれしいのはクラウド業者がマネージド化してくれることですね。楽できるので。

ちなみに、DBごとの特徴は理解しきれていないです。ChatGPT君の回答だと、近似最近傍検索というワードが目立ちますが、
実際に何が違うのかはわかっていないので、今後少し見てみたいとは思います。Wikipediaでちょっと見るだけでも
いろいろな解法がありそうなので、上の表の製品はそれぞれ違うんだろうなぁと思っていますので、今後また調べていきたいと思います。

Discussion