皆さんは「ベクトルデータベース」(別名:ベクターDB、ドキュメントDB) というものをご存知でしょうか。
データベースと聞くとMySQLやPostgreSQLをはじめとするRDB (リレーショナル・データベース) 、すなわち表形式で管理する従来のデータベースを思い浮かべる方が多いかと思いますが、それとは別の新しい形式のデータベースです。
ここ1〜2年、”AIに適したデータベース”との呼び声でじわじわ話題になっています。
今回はそんなベクトルDBを比較しながら深掘っていきます。
◼︎そもそもベクトルデータベースとは?
「従来のRDBが表形式だとしたら、ベクトルDBはどういった形式なのか?」
そういった疑問が必ず出てくると思いますので、まずはそれを紐解きます。
以下のサイトが参考になりますので、軽く抜粋いたします。
(参照)
https://qiita.com/ksonoda/items/ba6d7b913fc744db3d79
単語をベクトルとして考え、「意味空間」の中にプロットするイメージだそうです。
座標の表し方は一般的なベクトル同様、
2次元であれば (a, b)、3次元であれば(a, b, c)
となりますが、ベクトルDBは次元が100まで及ぶこともザラにあります。
どうしても人間は4次元以降の空間を把握できずイメージはつきませんので、変数が100個あるくらいに考えておくのが良いかと思います。
意味の近い単語同士が近くにあり、検索を被るようなイメージですので、LLM (大規模言語モデル) との相性が非常に良いと言われていますね。
これが、最近になって急激に注目され始めた理由とも言えます。
近似度は、「大きさ」と「向き」の類似度によって割り出されるようです。
※「大きさ」の類似度…各データのドット間の距離差
※「向き」の類似度…原点からの角度差
◼︎ベクトルDBの比較を考える
そんなベクトルDBにも様々プラットフォームがあり、各々に特徴があります。どんなベクトルDBがあるのか分からない、また選び方も分からないという方がいると思いますので、そんな方のお役に立てますと幸いです。
(今回参照した記事)
https://www.aireview-nlp.com/vectordb/
上記の表作成者である、Vectorview社の共同創設者エミール・フレーベリ氏の解説を和訳し、以下に共有いたしますので、ご参考にしていただけますと幸いです。
ちなみにこのVectorview社、AIの評価 (安全性、パフォーマンス) や、ビジネスへのAI導入をサポートしている会社らしいのですが、HPのドメインが「.ai」となっていてこだわりが凄いです。
https://www.vectorview.ai/
余談はさておき..。
・オープンソースおよびクラウドホスティング:
オープンソースソリューションを選好するなら、Weviate、Milvus、およびChromaが有力候補です。
Pineconeはオープンソースではありませんが、開発者の使いやすさと強力な完全ホスティングソリューションで際立っています。
・パフォーマンス:
秒あたりのクエリ数(QPS)に関しては、Milvusがトップで、WeviateとQdrantがそれに続きます。
しかし、レイテンシー(遅延)に関しては、PineconeとMilvusがどちらも2ms未満の優れた結果を提供しています。Pineconeに複数のポッドを追加すれば、さらに高いQPSを達成できます。
・コミュニティの強さ:
Milvusは最大のコミュニティを誇り、次いでWeviateとElasticsearchが続きます。
強いコミュニティは、より良いサポート、改善、およびバグ修正に繋がることが多いです。
・スケーラビリティ、先進機能、およびセキュリティ:
多くの企業アプリケーションにとって重要な役割ベースのアクセス制御(RBAC)は、Pinecone、Milvus、およびElasticsearchに搭載されています。
スケーリング面では、動的セグメント配置を提供するMilvusとChromaが進化し続けるデータセットに適しています。
幅広いインデックスタイプを必要とする場合、Milvusの11種類のインデックスタイプのサポートは他に類を見ません。ハイブリッド検索は全体的によくサポートされていますが、Elasticsearchはディスクインデックスサポートにおいて劣ります。
・価格:
スタートアップや予算に制約のあるプロジェクトには、Qdrantの50,000ベクトルで推定9ドルという価格は魅力的です。
一方、高いパフォーマンスを必要とする大規模プロジェクトには、PineconeとMilvusが競争力のある価格帯を提供しています。
まとめ
いかがでしたでしょうか。
ベクトルDBのイメージが沸かないという方や、各種ベクトルDBの特徴・選び方が知りたいという方のお役に立てたなら幸いです。
比較に関しては、理想のDBがあるわけでもなく、ニーズや状況に応じて上記を参考にする形となろうかと思います。
また、最近話題に上がり始めている、SQL構文を扱えるベクターDBのハイブリッドDBにも注目しています。
上記はRDBに慣れている方でも入りやすいかと思いますので、機会があれば詳しく調べ、記事にしたいと思っております。
ここ1〜2年、急速なスピードで進化と変化を繰り返す生成AI、これが今後どうなっていくのか非常にワクワクいたします。
お読みいただきありがとうございました。