ベクトルデータベースとは
ベクトルデータベースとは?
ベクトルデータベースは、意味的な類似性検索を可能にするために、高次元のベクトル埋め込みを保存、管理、検索する特殊なデータベースです。
機械学習モデルによって生成されたこれらの埋め込みは、テキスト、画像、音声などの非構造化データ内の意味的な関係を捉え、概念的に関連する項目をベクトル空間内で近い位置に配置することで、システムが関連性に基づいて結果をランク付けできるようにします。ベクトルデータベースは、高速な検索のために密な埋め込みと疎な埋め込みの両方をインデックス化して保存し、一般的に、大規模言語モデル(LLM)が信頼できるデータに基づいて応答を導き、ハルシネーションのリスクを軽減するためにクエリを実行できる外部知識ベースとして機能します。
ベクトル埋め込み
ベクトル埋め込みとは何で、どのように作成されますか?
ベクトル埋め込みは、単語、フレーズ、または文書全体などのデータを表す浮動小数点値の数値配列です。これらは、デジタルメディアを高次元空間内のポイントに変換する大規模言語モデルなどの機械学習モデルによって生成されます。このプロセスでは、元のデータの根本的な意味と関係性を捉えます。たとえば、「公園で遊ぶゴールデンレトリバー」の画像は、「外で遊ぶ幸せそうな犬」というテキストの埋め込みに数値的に近い埋め込みに変換できます。重要な点として、あるプロバイダーのモデルによって作成された埋め込みは、別のプロバイダーによって理解されないということがあります。たとえば、OpenAIモデルからの埋め込みは、別のプロバイダーからの埋め込みと互換性がありません。
密なベクトル(埋め込み)とは何ですか?
密ベクトルは、ほぼすべての要素がゼロ以外の値である高次元の数値埋め込みです。密ベクトルの重要な特徴は、特定のモデルによって生成されるすべてのベクトルが同じ固定次元数を持たなければならないことであり、これは類似性を測定するための前提条件です。たとえば、Azure OpenAIモデルの埋め込みには1,536次元があります。通常はトランスフォーマーモデルによって生成され、ニュアンスの豊かな意味を捉えるため、セマンティック類似性検索に最適です。たとえば、「cat」という単語の密ベクトルは、[0.135, -0.629, 0.327, 0.366, ...]のように表示されます。
疎なベクトル(埋め込み)とは何ですか?
ベクトル検索とは?
ベクトル検索は、類似データを高次元の数値ベクトル(埋め込みとも呼ばれます)として表現し、検索する手法です。機械学習モデルはテキスト、画像、音声など、あらゆる種類のデジタルメディアの埋め込みを生成できるため、この方法は非常に汎用性があります。基本的な概念は、ベクトル間の幾何学的距離が意味上の類似性を示すベクトル空間にデータを変換することです。ベクトル検索は、特定の類似性指標に基づいて、与えられたクエリベクトルに最も類似するベクトルを検索するクエリ操作です。例えば、「イヌ科」を検索すると、「犬」という単語を含む文書に意味的にマッチする可能性があります。従来のキーワード検索は、その根本的な意味ではなく、文字通りの用語にマッチしていました。
類似性の測定
ベクトルの類似性と距離はどのように測定されますか?
ベクトル検索では、類似性は高次元空間における2つのベクトル間の距離または角度を計算することで定量化されます。ベクトルが近いほど、意味的に類似していると見なされます。この近接度を測定するために使用される一般的な指標には、コサイン類似度、ユークリッド距離、ドット積、ハミング距離、マンハッタン距離などがあります。
- L2距離(ユークリッド距離)は最も一般的な尺度であり、2つのベクトル点の間の直線距離、いわゆる「最短距離(as the crow flies)」を表します。
- L1距離(マンハッタン距離)は、ベクトルの各成分の差の絶対値を合計することで距離を測定し、都市の碁盤の目を移動するようなイメージを表します。
- リンフ距離(チェビシェフ距離)は、任意の1次元に沿った最大の差です。
- コサイン類似性は、2つのベクトル間の角度のコサインを測定し、大きさに関係なく、それらが同様の方向を指しているかどうかを判断します。スコア1は同一のベクトルを意味し、-1はそれらが反対であることを意味します。これは、OpenAIモデルなどの正規化された埋め込みスペースによく選択されます。
- ドット積の類似性は、ベクトルの角度と大きさの両方を考慮します。これは正規化ベクトルのコサイン類似度と同等ですが、多くの場合、計算効率が向上します。
- ハミング距離は、2つのベクトルで異なる次元の数を計算します。
- 最大内積(MaxSim)は、1つのデータ(ドキュメントなど)が複数のベクトル(各単語のベクトルなど)で表される場合に使用される類似性メトリックです。各ドキュメントのベクトルを比較し、最も類似したベクトルを見つけて結果を集計することで類似性を計算します。
効率的な検索アルゴリズム
k近傍(kNN)検索とは何ですか?
k近傍(kNN)検索は、ベクトル類似性検索の背後にあるコア演算です。与えられたクエリベクトルに対して、選択された距離測定に従ってデータベース内のそれと最も近いk個のベクトルを見つけます。"k"は、返したい結果の数です。たとえば、最もよく似ている10枚の商品画像や、RAGクエリで最も関連性の高い5つのドキュメントチャンクなどです。正確なkNN検索は、インデックス内のすべてのベクトルに対してクエリを比較することで、真の最も近いマッチを見つけることを保証します。これは正確ですが、拡張性が低くなります。このため、本番環境システムは通常、近似法に頼ります。
厳密なkNN検索と近似最近傍検索(ANN)検索の違いは何ですか?
厳密なKNNは、クエリベクトルをデータセット内のすべてのベクトルと比較して、真に最も近いものが返されることを保証します。精度は高いものの計算コストが高く、レイテンシーはインデックスのサイズに比例して線形に増加します。近似最近傍(ANN)検索は、すべてのベクトルをスキャンするのではなく、有望なベクトルのサブセットに検索を絞ることで、精度のわずかな低下と引き換えに大きな速度の向上を実現します。実際には、ANNの再現率は十分に高いため、ほとんどの本番環境のベクトル検索システムはデフォルトでANNを使用しており、小さなデータセットや完全な再現率が必要な場合にのみ厳密なkNNを予約しています。
HNSWやANNなどのアルゴリズムはどのようにして効率的なベクトル検索を可能にしますか?
大規模で高次元のデータセットで類似したベクトルを検索することは、大きな課題です。クエリベクトルを他のすべてのベクトルと比較する総当たりアプローチは、データセットが大きくなるにつれて計算上実行不可能になります。この問題は、近似最近傍(ANN)アルゴリズムを使用することで解決されます。これらの技術は、徹底的な比較を行わずに、クエリに最も近いベクトルを迅速に見つけます。一般的なANNアルゴリズムは階層的ナビゲーシブルスモールワールド(HNSW)であり、ベクトルを類似性に基づいて接続された層状のグラフ構造に整理し、高速な探索を可能にします。これは、計算量が多い一方でより正確なFLAT(総当たり)検索よりも、効率的で一定以上正確です。これらの構造は、検索範囲を大幅に縮小することで、絶対精度がわずかに(通常は許容できる程度)低下する代わりに、大幅な速度向上を実現します。
ベクトル検索システムにおける多段階検索とは何ですか?
多段階検索またはフレームワーク(簡単に「検索パイプライン」とも呼ばれます)は、クエリを処理するための一連のステップを定義する管理されたワークフローです。これには通常、クエリ分析、1つ以上のインデックスからの初期取得(たとえば、ハイブリッドアプローチで語彙検索とベクトル検索を組み合わせる)、結果のフィルタリング、結果をユーザーに返す前の最終的なリランキング段階などのステップが含まれます。
検索パイプラインを構築するためにリトリーバーフレームワークを使用する利点は何ですか?
主な利点はモジュール性と柔軟性です。開発者は、システム全体をゼロから構築することなく、異なる検索やランキング戦略(ハイブリッド検索など)を簡単に組み合わせ、特定のニーズに合わせた複雑な多段検索パイプラインを構築できます。
セマンティックリランキングとは何ですか?
セマンティックリランキングは、検索結果の関連性を向上させる第2段階のプロセスです。最初の高速検索段階で幅広い候補文書が取り出された後、計算負荷は高いもののより正確なモデルを使用して、この小規模なセットを並び替えて、より正確な最終ランキングを生成します。
「取得とリランク」の多段階プロセスはどのように機能しますか?
「取得とリランク」パイプラインは、次の2つの段階に分かれています。
- 取得:効率的で拡張性のある検索方法(ANNベクトル検索やレキシカルBM25検索など)を使用して、インデックス全体から候補文書の初期セットを取得します。
- リランク:この小規模な候補セットは、クエリと各ドキュメントとのセマンティックな関係をより詳細に分析し、最終的な関連性を高めるように並べ替える、クロスエンコーダーなどのより強力なモデルに渡されます。
リランキングにおけるバイエンコーダーとクロスエンコーダーのアーキテクチャの違いは何ですか?
- バイエンコーダーは、クエリとドキュメントに別々の埋め込みを個別に生成します。文書の埋め込みは事前に計算して索引付けできるため、このアーキテクチャは非常に高速で、初期取得段階で使用されます。
- クロスエンコーダーは、クエリとドキュメントを1つの入力として処理します。これにより、より深いコンテキストの相互作用を捉えることができ、精度は非常に高くなりますが、速度はかなり遅くなります。計算コストが高いため、少数の候補結果のリランキング段階にのみ適しています。
ベクトルデータベースのストレージと最適化
ベクトルは通常、ベクトルデータベースにどのように格納され、どのようなストレージ上の課題が生じますか?
ベクトルは通常、32ビットの浮動小数点数(float32)の配列として格納されます。主な課題は、ストレージフットプリントが膨大であることです。1つの384次元ベクトルは約1.5KBを消費します。したがって、1億件の文書のインデックスは、ベクトルフィールドを1つ追加するだけでサイズが7倍に拡大する可能性があります。HNSWのようなベクトル検索アルゴリズムでは、パフォーマンス向上のためにインデックスをRAMにロードする必要があるため、メモリコストと拡張性に関連する重大な課題が生じます。
ベクトル量子化とは何ですか?
ベクトル量子化は、パラメータをより少ないビットで表現することにより、モデルのメモリと計算要件を削減するロッシー圧縮技術です。これは、数十億のパラメータを持つ可能性があるLLMに特に有用です。高精度のfloat32数値をint8やint4などの低精度の整数に変換することで、量子化はモデルサイズを大幅に削減し、精度への影響を最小限に抑えつつ推論を高速化できます。
スカラー量子化(SQ)とは何ですか?
スカラー量子化は、連続したfloat32値の範囲を、より低精度の整数値(例:int8)の離散的なセットにマッピングすることで、ベクトルを圧縮します。これにより、関連性にとって重要なベクトルのマグニチュード情報を大幅に保持しながら、ストレージサイズを最大4倍削減できます。
バイナリ量子化(BQ)とは何ですか?
バイナリ量子化は、float32ベクトルの各コンポーネントをバイナリ表現(例:1ビット)に変換する、より積極的な圧縮手法です。これにより、最大32倍の圧縮が可能になり、メモリを最大限に節約でき、整数ベースの演算を使用して計算を高速化できますが、多くの場合、精度がいくらか低下します。
ベクトル検索の利点は何ですか?
ベクトルデータベースは、非構造化データやAIアプリケーションを扱う際に、従来のデータベースに比べていくつかの利点があります。
キーワードマッチングを超えた意味検索:ベクトルデータベースは、単語の完全一致ではなく、意味に基づいて検索結果を取得します。「学生向けの手頃な価格のノートPC」というクエリは、「大学向けの低価格ノートブック」という説明の製品を表面化させることがあります。これは、基礎となる埋め込みが、文字通りのテキストの重複ではなく、概念的な類似性を捉えているためです。
大規模な高速類似検索:ベクトルインデキシングとHNSWのような近似最近傍アルゴリズムを組み合わせることで、ベクトルデータベースは何十億ものベクトルからミリ秒単位で関連する結果を返し、リアルタイムのAIアプリケーションを実現します。
非構造化データのサポート:テキスト、画像、音声、動画、その他の非構造化フォーマットはすべてベクトル埋め込みとして表現され、単一の統一システムを通じて検索することができ、データ型ごとに個別のパイプラインを必要としません。
大規模言語モデルのためのグラウンディング:ベクトルデータベースは、Retrieval-Augmented Generation(RAG)アーキテクチャの検索レイヤーとして機能し、信頼できるソースからの関連する最新のコンテキストをLLMに供給し、ハルシネーションを減らします。
ハイブリッド検索機能:現代のベクトルデータベースは、密ベクトル検索、疎ベクトル検索、従来のキーワード検索(BM25)を単一のクエリで組み合わせており、どの方法を単独で使用するよりも正確な結果を提供します。
拡張性とパフォーマンス:目的に応じて構築されたインデックス構造、量子化、分散アーキテクチャにより、ベクトルデータベースはレイテンシーを大幅に低下させることなく、増大するデータセットや大量のクエリを処理できます。
運用の複雑さを軽減:統合されたベクトルデータベースにより、ストレージ、埋め込み管理、検索のために別々のシステムをつなぎ合わせる必要がなくなり、AIを活用したアプリケーションのアーキテクチャが簡素化されます。
統合されたベクトルデータベースと検索プラットフォームの利点は何ですか?
ベクトルストレージと検索を従来のデータベース機能(例:語彙検索やフィルタリング)と組み合わせた統合プラットフォームには、大きなメリットがあります。別々のシステム間でデータを同期する必要がなくなるため、アーキテクチャが簡素化されます。最も重要なのは、語彙検索、ベクトル検索、メタデータフィルタリングを1つの統合クエリで検索でき、より関連性の高い結果が得られ、開発者の体験がシンプルになることです。
ベクトルデータベースにおけるメタデータフィルタリングとは何ですか?
メタデータフィルタリングとは、日付、カテゴリ、著者、価格、言語、ユーザー権限などの各ベクトルに添付された構造化された属性に基づいて、ベクトル検索結果を絞り込むプロセスです。ベクトル検索は意味的類似性によって結果を取得しますが、メタデータフィルターは結果が満たさなければならない厳格な制約を適用します。そのため、「軽量ランニングシューズ」のクエリを、在庫あり、100ポンド未満の価格、ユーザーの地域で利用可能なアイテムに制限することなどができます。
ベクトル類似度とメタデータフィルタリングを組み合わせることは、本番環境のアプリケーションでは不可欠です。たとえばRAGシステムでは、対応を、現在のユーザーに閲覧権限のある文書に対するもの、または過去6か月以内に公開された記事に対するものに限定する必要がある場合があります。メタデータフィルタリングがなければ、意味的には関連していても文脈に合わない結果が頻繁に表面化します。
一般的なアプローチは2つあります。プレフィルタリングは、類似性検索の前にメタデータの制約を適用し、事前に候補を減らします。これにより、要求された結果の数が保証されますが、選択性の高いフィルターでは遅くなる可能性があります。ポストフィルタリングでは、まず類似性検索を実行し、一致しない結果を破棄します。この方法は高速ですが、フィルタが厳格すぎる場合は、要求された結果よりも少ない結果しか返されない可能性があります。現代のベクトルデータベースは通常、両方の戦略を組み合わせ、フィルターの選択性に基づいて動的に選択し、再現率、遅延、および精度のバランスをとります。
ベクトル検索は語彙検索とどのように異なりますか?
- 語彙検索(例:BM25)はキーワードマッチングに基づいています。クエリに含まれる用語と完全に一致するドキュメントを検索します。精度は高いものの、文脈や同義語は考慮されません。
- ベクトル検索はセマンティックな意味に基づいています。キーワードを共有していなくても、クエリと概念的に類似するドキュメントを検索します。ユーザーの意図を理解することに優れていますが、語彙検索よりも精度が低くなる可能性があります。
ベクトルデータベースの一般的なユースケースとは?開発者はベクトル検索で何を構築できますか?
開発者はベクトルデータベースを利用して、データの意味を理解することに依存する高度なアプリケーションを構築できます。一般的なユースケースには次のようなものがあります。
- セマンティック検索:eコマースやドキュメント発見システムなど、キーワードを超えてユーザーの意図を理解する検索体験を提供します
- Retrieval-Augmented Generation(RAG):LLMやチャットボットに外部の最新知識へのアクセスを提供することで、より正確で事実に基づいた回答を生成します
- レコメンデーションエンジン:ユーザーの興味や過去の行動に概念的に類似した商品、記事、またはメディアを推薦します
- 画像とマルチモーダル検索:視覚的に類似した画像を見つけたり、さまざまなデータタイプ(例:テキストを使って画像を検索)を検索します
Elasticのベクトルデータベース機能
Elasticsearchは、世界で最も広く導入されている検索エンジンの基盤上に構築されたベクトルデータベースで、ベクトル検索、語彙検索、メタデータフィルタリングを単一のプラットフォームに統合しています。専用のベクトルストアを別個の検索システムと併用する代わりに、チームは1つのエンジンを使用して、本番規模でセマンティック検索、ハイブリッド検索、検索拡張生成を実現できます。
主な機能は以下のとおりです。
- ネイティブの密ベクトルおよび疎ベクトルサポート:同一インデックス内で、密ベクトル埋め込みと疎ベクトル埋め込み(ElasticのELSERモデルで生成されるものを含む)をインデックス化し、格納し、クエリを実行できます。
- すぐに使えるハイブリッド検索:リトリーバーフレームワークを使用して、BM25語彙検索、密ベクトルkNN、および疎ベクトル検索を単一のクエリに組み合わせ、結果を統合するために相互ランク融合(RRF)を使用します。
- 組み込みの推論:semantic_textフィールドタイプと推論APIは、チャンキング、埋め込み生成、クエリ時のベクトル化を自動的に処理するため、埋め込みパイプラインを別途管理する必要がありません。
- メモリ効率の高いストレージ:密ベクトルでは、Better Binary Quantization(BBQ)がデフォルトで有効になっています。再現率を維持しながらメモリフットプリントを最大32倍削減し、大規模にインフラストラクチャコストを削減します。
- フィルタリングベクトル検索:メタデータフィルター、地理空間の制約、ドキュメントレベルのセキュリティ、およびベクトル類似性を単一のクエリで適用します。クエリプランナーは選択性に基づいてプレフィルタリングまたはポストフィルタリングを選択します。
- 本番グレードの運用:シャーディング、レプリケーション、RBAC、スナップショット、モニタリングなど、大規模な導入において長年の実績のあるElasticsearchの分散アーキテクチャを継承しています。
- セマンティックリランキング:Elastic Rerankモデルは、初回検索に加えて第2段階の関連性を向上させ、インデックスの再作成を必要とせずに結果の品質を向上させます。
Elasticsearch Labsドキュメントで、Elasticsearchのベクトル検索を始めましょう。
導入の柔軟性:オンプレミスおよびエアギャップ環境のベクトルデータベース
ベクトルデータベースがどこで実行されるかは、そのパフォーマンスと同じくらい重要になってきています。ほとんどのベクトルデータベースはマネージドクラウドサービスとして利用可能ですが、ますます多くの組織で、オンプレミスまたは完全なエアギャップ環境内の自社インフラにデプロイする必要性が生じています。
オンプレミスの導入とは、ベクトルデータベースを組織が管理するハードウェア上で稼働させることを意味し、通常は自社のデータセンターまたはプライベートクラウド内で実行します。データが組織のネットワーク境界を離れることはなく、運用チームはインストール、スケーリング、アップグレード、セキュリティを直接管理します。エアギャップ環境での導入はさらに一歩進み、環境は公共のインターネットとはまったく接続しません。ソフトウェアの更新、モデルの重み、および埋め込みパイプラインは、管理されたオフラインプロセスを通じて導入される必要があり、テレメトリやデータを送信することはできません。
これはベクトルデータベースにおいて、他の多くのインフラストラクチャーよりも重要な要素です。RAGパイプラインでは、ベクトルデータベースが言語モデルの対応の基盤となる知識ベースを保持しており、これは多くの場合、組織が所有する最も機密性の高いコンテンツ(内部研究、顧客記録、法的文書、ソースコード、機密情報、または独自の運用データなど)を含みます。埋め込み自体もソースコンテンツに関する情報を漏らす可能性があるため、ストレージ層は脅威モデルの重要な部分であり、後付けで考えるべきものではありません。
いくつかの業界では、パブリッククラウド専用のベクトルデータベースを事実上除外する厳格な要件があります。
- 連邦、防衛、情報機関は、多くの場合、外部接続が許可されず、ソフトウェアがデプロイ前に特定の認定基準を満たす必要がある機密またはエアギャップされたネットワークで運用します。
- 医療機関は、保護対象保健情報を取り扱う際、患者データの保存・処理場所に関する厳格な規制を遵守する必要があります。多くの医療機関は、診療記録の埋め込みをサードパーティのサービスに送信するのではなく、AIワークロードを病院や保険者のインフラ内で処理することを好みます。
- 金融サービス企業は、データレジデンシーの規則、規制当局による監査要件、および顧客データや取引データを特定の管轄区域内、あるいは自社が管理する環境内に保管することを義務付ける社内方針など、様々な制約に直面しています。
- GDPRのような規制や類似の地域的フレームワークの下で運営されている組織を含め、データレジデンシーやソブリン要件がある企業は、ベクトルデータベースを特定の国や地域に固定したり、完全に自社のインフラストラクチャー内で実行したりする機能が必要です。
導入スペクトル全体(マネージドクラウド、セルフマネージドクラウド、オンプレミス、エアギャップド)をサポートするベクトルデータベースを選択することで、組織は大きく異なるセキュリティとコンプライアンスプロファイルを持ったワークロード全体で、単一の技術に基づいた標準化を実現できます。これにより、機密データと非機密データに対して別々のスタックを実行する必要がなくなります。