検索
連載

ベクトルデータベース(Vector Database)/ベクトルストア(Vector Store)とは?AI・機械学習の用語辞典

ベクトルデータベースとは、テキストなどのデータを数値ベクトル(埋め込み)として保存するデータベースを指す。「ベクトルストア」とも呼ばれる。ベクトル検索により、意味的に類似する情報を探せるのが特徴で、チャットAIのRAG構築に役立つ。本稿ではベクトル検索の機能を持つ代表的な製品の概要もそれぞれ簡単に紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「AI・機械学習の用語辞典」のインデックス

連載目次

用語解説

 生成系AI/自然言語処理におけるベクトルデータベースVector DatabaseベクターデータベースベクトルDB)とは、主に単語や文章(テキスト)、画像、音声などの複雑なデータを、AI/機械学習/言語モデルが処理しやすい数値ベクトル表現として保存するデータベースのことである。この数値ベクトル表現は「埋め込み表現(Embeddings)」とも呼ばれ、例えば[0.47, −0.12, 0.26, 0.89, −0.71, ...]のように実数値が並べられた配列のことだ。

 ベクトルデータベースの特徴は、各ベクトル間の類似度(主にコサイン類似度k近傍法《k-NN》アルゴリズムなど)を計算することで、意味的に関連する情報を見つけ出すベクトル検索(Vector Search)ができることである。この機能により、「あなたにお薦めの商品」を提案するレコメンデーション用の検索データベースとしてだけでなく、ChatGPTやGeminiに代表されるチャットAIに独自の情報源を付与するRAG(検索拡張生成)用の検索データストア(ナレッジベース)としても役立つ。

図1 「ベクトルデータベース/ベクトルストア」のカオスマップ(業界地図)
図1 「ベクトルデータベース/ベクトルストア」のカオスマップ(業界地図)
このカオスマップでは、筆者の考える「注目度」の順に、各製品/サービス/ライブラリを中心点(ホットスポット)から外側に向けて放射状に配置している。例えば、中心点から右斜め上に目を向けると、「Pinecone」「Milvus」「Weaviate」といった順に製品が配置されている。これと同じように、中心点から左斜め上、左斜め下、右斜め下へと目を移すことで、各方向に配置された製品群を発見できる。このように中心点から各方向へ探索することで、関連性や技術的な親和性に基づいて製品を発見できるのが、このカオスマップの特長(利点)だ。この図は、上から下に向けて順に見ていくことは想定していないので、注意してほしい。
2024/02/29修正:「Amazon Bedrockのナレッジベース」を記載していましたが、内部でOpenSearchなどを使用する仕様であるため図と説明から削除しました。お詫びして訂正させていただきます。)

 なお、ここまで「データベース」と表記してきたが、データを格納し、管理するシステム形式の製品ではなく、単に開発者用のライブラリ形式の製品も存在する(例えばMetaの「Faiss:Facebook AI Similarity Search」など)。そのため、ベクトル検索の機能を持つ製品全般を総称してベクトルストアVector Storeベクターストア)と表現する場合も多い(例えばライブラリLangChainの「Vector stores」など)。また、ライブラリ形式のものはベクトルインデックスVector Index)と呼ばれることもある(例えばPineconeのサイトでは「ベクトルインデックスとベクトルデータベースの違い」という見出しで、Faissとの違いを説明している。詳細は英語になるがリンク先を参照してほしい)。

 図1のカオスマップ内にある各製品/サービス/ライブラリは、次のセクションとカテゴリ分け、(筆者の主観とネット調査、チャットAIでの検証による)注目度順に基づいて配置した。

  • セクション「新興のベクトルストア、ベクトルデータベース」
    • カテゴリー「独立型の新興サービス」
      • Pinecone
      • Milvus
      • Weaviate
      • Qdrant
    • カテゴリー「オープンソースのベクトル検索ライブラリ」
      • Faiss
      • Chroma
      • LanceDB
      • Annoy
  • セクション「エンタープライズ検索サービス+ベクトル検索の機能」
    • カテゴリー「検索サービス(クラウドと自己管理に対応)」
      • Elasticsearch
    • カテゴリー「クラウドプラットフォーム(検索サービス)」
      • Azure AI Search(旧称:Cognitive Search)
      • Vertex AI Search(旧称:Gen App BuilderのEnterprise Search)
      • Amazon OpenSearch
  • セクション「データベース/データストア+ベクトル検索の機能」
    • カテゴリー「RDB(テーブル型のデータベース)」
      • pgvector(PostgreSQL拡張)
      • MySQL HeatWave(クラウドサービス)
      • SQLite-VSS(SQLite拡張)
    • カテゴリー「NoSQLデータベース」
      • Redis
      • MongoDB Atlas(クラウドサービス)
    • カテゴリー「その他のクラウドデータベース」
      • BigQuery
      • Azure Cosmos DB

 ここに取り上げたのはほんの一部であり、とても把握し切れないほど多数のベクトルデータベースが存在する(参考:「LangChainがサポートするベクトルストア」)。なお、こちらのリンク先「Vector DB Comparison」には、多数のベクトルデータベースの機能比較表があるので、興味がある方は参照してほしい。

 また、既存の各種データベースやデータストレージなどに対してもベクトル検索の機能を付加していく世の中の流れがあり、今後、データベースでのベクトル検索は標準機能となっていく可能性が高い(と筆者は考えている)。よって今後は、「汎用(はんよう)的に使える既存の検索サービス/データベースを使うか」、それとも「専門的に特化した新興のベクトルデータベースを使うか」という選択を、まずは検討する時代になっていくだろう(と筆者は予想している)。通常のRDB(リレーショナルデータベース)にベクトル検索の機能を追加したものよりも、専門のベクトルデータベースの方が「ベクトル検索のみに全ての設計が特化している分、検索が高速になる」といったメリットがある可能性が高いので、そのあたりが選択基準となると考えられる。ちなみに「専用のベクトルデータベースは必要ない」と主張する人もいる。

ベクトル検索の機能を持つ製品の概要紹介

 次に、各製品/サービス/ライブラリの内容について、それぞれ簡単に紹介しておく。なお、詳細については、各リンク先にある公式ドキュメントなどを参照してほしい。

Pinecone

 Pineconeは、クラウドで提供されているベクトルデータベースだ。「ベクトルデータベース」といえば、筆者はまずこれを思い浮かべるほど有名。クローズドソースで有償のみ。高機能ではあるが、その分、高額(料金計算ツール)という声もある。

 Pineconeでは、ベクトル検索(=密ベクトルでの検索)、つまり「セマンティック検索」に対応するだけでなく、基本的な「キーワード検索」(疎ベクトルでの検索)の検索結果も組み合わせるハイブリッド検索が可能だ(参考記事)。前掲の「Vector DB Comparison」を見ると分かるが、大半のベクトルデータベースがハイブリッド検索をサポートしている。

Milvus

 Milvusは、オープンソースのベクトルデータベースである。こちら「GitHub:milvus-io/milvus」にソースコードがある。執筆時点(2024年2月26日時点)で、WeaviateよりもソースコードリポジトリのGitHubでのスター数が多いので、より注目されていると考えられる。コミュニティ活動に積極的だ。オープンソースなので無料でも使えるが、有償のクラウド版も使える(料金ページ)。

Weaviate

 Weaviateも、オープンソースのベクトルデータベースである。こちら「GitHub:weaviate/weaviate」にソースコードがある。オープンソースなので無料でも使えるが、有償のクラウド版も使える(料金計算ツール)。

Qdrant

 Qdrantも、オープンソースのベクトルデータベースだ。こちら「GitHub:qdrant/qdrant」にソースコードがある。コンテナ型仮想環境のDocker経由で簡単に使用できる。オープンソースなので無料でも使えるが、有償のクラウド版も使える(料金計算ツール)。

Faiss

 Faiss(Facebook AI Similarity Search)は、2017年3月にMeta(当時の社名はFacebook)のFAIR(Fundamental AI Research)によって開発されたオープンソースのベクトル検索ライブラリで、大規模なベクトルデータセットの効率的な類似性検索をサポートする。高速な検索性能と効率的なメモリ使用が特徴。こちら「GitHub:facebookresearch/faiss」にソースコードがある。オープンソースなので無料で使える。特に研究開発の用途で広く利用されており、人気がある。

Chroma

 Chromaは、オープンソースのベクトル検索用データベースのライブラリで、「シンプルさと開発生産性」や「非常に高速」をモットーとして開発されている。こちら「GitHub:chroma-core/chroma」にソースコードがある。インメモリモードで使うPythonだけでなく、クライアントサーバモードのクライアントとしてJavaScriptもサポート。オープンソースなので無料で使える。クラウド版も近日公開予定とのこと(アンケートページ)。

LanceDB

 LanceDBは、、オープンソースのベクトル検索用データベースのライブラリで、「管理するサーバが不要」「ベクトル、メタデータ、マルチモーダルデータ(テキスト、画像、ビデオ、点群など)をサポート」といった特徴がある。こちら「GitHub:lancedb/lancedb」にソースコードがある。PythonとJavaScript/TypeScriptをサポート。オープンソースなので無料でも使えるが、有償のクラウド版も今後、使えるようになる(早期アクセスの申し込み)。

Annoy

 Annoy(Approximate Nearest Neighbors Oh Yeah)は、2014年6月にSpotifyによって開発されたオープンソースのベクトル検索ライブラリで、Spotifyでは音楽のレコメンデーション(推薦)にこれが使用されている。ANN(Approximate Nearest Neighbors:近似最近傍)と呼ばれるアルゴリズムに基づき(参考記事)、高速に検索するのが特徴(参考記事パート1パート2)。こちら「GitHub:spotify/annoy」にソースコードがある。オープンソースなので無料で使える。

Elasticsearch

 Elasticsearchは、無料かつオープンで、大規模な検索エンジンである。非常に有名であり、利用者も多い。2022年2月よりベクトル検索をサポートするようになった(Elasticsearchのベクトル検索に関する参考記事)。ElasticsearchはAWS/Microsoft Azure/Google Cloudといった各クラウドプラットフォームでも利用でき、既にElasticsearchを使っていて慣れている人には最適である。

Azure AI Search(旧称:Cognitive Search)

 Azure AI Searchは、クラウドプラットフォームのMicrosoft Azureが提供する検索サービスで、チャットAIなどの生成系AIアプリケーションを簡単に構築できるAzure OpenAI Service(AOAIと略される)というサービスと連携して、RAG用のナレッジベースとしても機能する。ChatGPTと同じGPT-4などの大規模言語モデル(LLM)もしくはマルチモーダルモデルが使えるAOAIの人気が高いため、そのAOAIでRAGを実現できるサービスとして有名である。

 Azure AI Searchは、2023年7月よりベクトル検索をサポートするようになった。また、2023年11月に開催された「Microsoft Ignite 2023」というイベントで、「Azure Cognitive Search」から「Azure AI Search」への改名(リブランド)が発表された。

Vertex AI Search(旧称:Gen App BuilderのEnterprise Search)

 Vertex AI Searchは、クラウドプラットフォームのGoogle Cloudが提供する検索サービスで、チャットAIを開発できるVertex AIというサービスと連携して、RAG用のナレッジベースとして機能する。2024年2月に発表されたGemini 1.5 Proなど、テキスト/画像/動画/コードなどをサポートするGoogleのマルチモーダルモデル「Gemini」を使いたい人に最適だ。Vertex AI Searchは、2023年3月に発表された新サービスで、2023年8月に「Gen App BuilderのEnterprise Search」から「Vertex AI Search」へ改名(リブランド)された。

Amazon OpenSearch

 Amazon OpenSearchは、2021年1月にElasticsearchからフォーク(分岐)されたオープンソースの大規模な検索エンジンである。元々は「Amazon Elasticsearch」という名前のAWSのサービスだったが、2021年9月に「Amazon OpenSearch」に改名された。

 Amazon OpenSearchには、フルマネージドサービスの「Service」と、そのサーバレスオプションの「Serverless」の2種類がある。RAG用には、Serviceではk-NNプラグインなどが使え、Serverlessでは2023年7月に発表されたAmazon OpenSearch Serverless用ベクトルエンジン機能も利用できる。

 また、AWSには「Amazon Kendra」という検索サービスもあるが、「セマンティック検索」とは記載されているが「ベクトル検索」と明記された文書を見つけられなかったので、本稿ではリストアップしなかった。ただし、KendraをRAG用に活用することも可能だ。AWSのベクトルストアについては、こちらの公式ブログ記事を参照してほしい。

pgvector

 pgvectorは、(有名なRDBの一つである)PostgreSQLにベクトル検索機能を追加するオープンソースの拡張機能である。こちら「GitHub:pgvector/pgvector」にソースコードがあり、インストール方法や使い方も記載されている。オープンソースなので無料で使える。また、下記の各クラウドプラットフォームのPostgreSQLサービスにも、このpgvector拡張が採用されており、ベクトル検索が可能となっている。

MySQL HeatWave

 MySQL HeatWaveは、トランザクション、分析、機械学習を1つのMySQLデータベースに統合するクラウド型(OCI:Oracle Cloud Infrastructure上)のデータベースサービスである。2023年9月にベクトルストアとしての機能が追加されている。

SQLite-VSS

 SQLite-VSSは、軽量なデータベースシステムであるSQLiteに、前述のFaissに基づくベクトル検索機能を追加するオープンソースの拡張機能だ。こちら「GitHub:asg017/sqlite-vss」にソースコードがある。オープンソースなので無料で使える。

Redis

 Redisは、インメモリ型のKey-Value(キーと値)ストアで、いわゆるNoSQLデータベースである。メモリ上で高速に動作するので、高速な応答が求められるWebアプリケーションやゲームサーバの一部などで採用されており、人気がある。2023年8月にベクトルデータベースとしても活用できる機能が追加された(参考:ベクトルデータベースとしてのユースケースクイックスタートガイド)。

MongoDB Atlas

 MongoDB Atlasは、さまざまな構造のドキュメントを同一データベースに保存できるドキュメント指向データベース(NoSQLデータベースの一種)であるMongoDBのクラウド版だ。2023年6月にベクトル検索の機能が追加された(参考:MongoDB Atlasのベクトル検索についての公式ページ)。

BigQuery

 BigQueryは、大規模なデータセットを効率的にクエリしてリアルタイムに分析できる、Google Cloudのデータウェアハウス(DWH)サービスである。2024年2月にベクトル検索の機能が追加された。

Azure Cosmos DB

 Azure Cosmos DBは、例えば「Azure Cosmos DB for PostgreSQL」「Azure Cosmos DB for MongoDB 仮想コア」「Azure Cosmos DB for NoSQL」などのAPIが提供されるRDBとNoSQLのデータベースサービスだ。詳しくはこちらの公式ドキュメントを参照してほしいが、先ほどの3種類のAPIはいずれも何らかの手段(例えばPostgreSQLであれば前述のpgvector)でベクトル検索をサポートする。ただしNoSQL APIについては、執筆時点(2024年2月26日時点)では「ベクトル検索機能は開発中」と公式ドキュメントに記載されており、まだサポートされていないので注意してほしい。

お薦めの参考資料

 最後に、筆者が参考になると考える資料へのリンクを掲載しておく。

「AI・機械学習の用語辞典」のインデックス

AI・機械学習の用語辞典

更新履歴(2024年2月29日)

「Amazon Bedrockのナレッジベース」について記載していましたが、内部でOpenSearchなどを使用する仕様であるため図と説明から削除しました。お詫びして訂正させていただきます。

Copyright© Digital Advantage Corp. All Rights Reserved.

[an error occurred while processing this directive]
ページトップに戻る