ベクトルDBの備忘録
1/22にDatastaxさんのLangChainのハンズオンに参加してきました。
自分のMacbookを持って行って、LangChainを動かしましたが、AstraDBにアクセスしながらOpenAIのAPIを使って動かす感じです。
興味ある方は2月にも同じセッションがあるようなので、申し込まれると良いと思います。
Connpassで発表されるとのこと。
で、今回は興味を持ったのがベクトルDBについてです。
セミナーではAstraDBを使っていましたが、世の中にどんなものがあるのかを少し調べてみました。
今回のブログはその備忘です(個人メモ的な色合いもあるので、ざっくばらんに書いていきます)。
とりあえず、ChatGPTに聞いてみて、比較表を作ってもらいました。
データベース | 開発者 | 特化領域 | オープンソース | スケーラビリティ |
---|---|---|---|---|
FAISS | 高次元ベクトル検索 | はい | 高い | |
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!ではなく、日本のものだったんですね。
PineconeやWeaviateも基本的にはクラウド化されていて、APIアクセスしして使うイメージのようです。
使い勝手はすごくいいですね。イメージとしてはセミナーで使っていたAstraDBと同じような感じなんだと思います。
で、候補はざっとこんな感じなんでしょうけど、実際に使うとなると結構大変です。
まずはマネージドサービスを利用する場合ですが、この場合配置データによって考慮点がかなり変わってくるんですよね。
大事な情報を載せる場合は、最低でもSOCレポートに対応していないとダメですし。
リンク先はAWSのものです。
また、SOC対応しているから即OKかというと、エンタープライズ向けの場合はそんなことはなくて、
そこがスタート地点です。自社のセキュリティ基準もあるので、それをクリアしてはじめて使えます。
なので、本当はプラットフォームをほいほい乗り換えたいんですが、そう考えると乗り換えは結構大変ですし、
現実的な選択肢になるのはElasticsearchくらいかなと思ったりもしています。
OSSを自分のIaaSで構築してしまうのもありですが、それはそれで手間もかかるので、
一番うれしいのはクラウド業者がマネージド化してくれることですね。楽できるので。
ちなみに、DBごとの特徴は理解しきれていないです。ChatGPT君の回答だと、近似最近傍検索というワードが目立ちますが、
実際に何が違うのかはわかっていないので、今後少し見てみたいとは思います。Wikipediaでちょっと見るだけでも
いろいろな解法がありそうなので、上の表の製品はそれぞれ違うんだろうなぁと思っていますので、今後また調べていきたいと思います。
Discussion