ベクトルデータベースとは何ですか?
ベクトルデータベースとは何ですか?
ベクトルデータベースは、高次元のベクトル埋め込みを格納、管理、検索するよう設計された特殊なデータベースです。その主な機能は、大規模言語モデル(LLM)が参照できる外部ナレッジベースとして機能し、ナレッジベースに保存されたデータによってモデルの応答を「グラウンディング」し、ハルシネーションのリスクを軽減することです。ベクトルデータベースのコア機能は、セマンティック類似性検索を実行することであり、キーワードの一致ではなく、概念的に類似したデータポイントを特定することです。機械学習モデルからの密ベクトル埋め込みと疎ベクトル埋め込みの両方にインデックスを付け、格納して、迅速な類似性検索と取得を可能にします。これらの埋め込みは、テキスト、画像、音声などの非構造化データ内のセマンティックな関係を捉えます。データベースによって作成されたベクトル空間では、関連するアイテムが互いに近くに配置されるため、システムは結果を関連度に基づいてランク付けできます。
ベクトル埋め込み
ベクトル埋め込みとは何で、どのように作成されますか?
ベクトル埋め込みは、単語、フレーズ、または文書全体などのデータを表す浮動小数点値の数値配列です。これらは、デジタルメディアを高次元空間内のポイントに変換する大規模言語モデルなどの機械学習モデルによって生成されます。このプロセスでは、元のデータの根本的な意味と関係性を捉えます。たとえば、「公園で遊ぶゴールデンレトリバー」の画像は、「外で遊ぶ幸せそうな犬」というテキストの埋め込みに数値的に近い埋め込みに変換できます。重要な点として、あるプロバイダーのモデルによって作成された埋め込みは、別のプロバイダーによって理解されないということがあります。例えば、OpenAIモデルからの埋め込みは、別のプロバイダーからの埋め込みと互換性がありません。
密なベクトル(埋め込み)とは何ですか?
高密度ベクトルは、ほぼすべての要素がゼロ以外の値である高次元の数値埋め込みです。高密度ベクトルの重要な特徴は、特定のモデルによって生成されるすべてのベクトルが同じ固定次元数を持たなければならないことであり、これは類似性を測定するための前提条件です。たとえば、Azure OpenAIモデルの埋め込みには1,536次元があります。通常はトランスフォーマーモデルによって生成され、ニュアンスの豊かな意味を捉えるため、セマンティック類似性検索に最適です。たとえば、「cat」という単語の密なベクトルは、[0.135, -0.629, 0.327, 0.366, ...]のように表示されます。
疎なベクトル(埋め込み)とは何ですか?
ベクトル検索とは?
ベクトル検索は、類似データを高次元の数値ベクトル(埋め込みとも呼ばれます)として表現し、検索する手法です。機械学習モデルはテキスト、画像、音声など、あらゆる種類のデジタルメディアの埋め込みを生成できるため、この方法は非常に汎用性があります。基本的な概念は、ベクトル間の幾何学的距離が意味上の類似性を示すベクトル空間にデータを変換することです。ベクトル検索は、特定の類似性指標に基づいて、与えられたクエリベクトルに最も類似するベクトルを検索するクエリ操作です。例えば、「canine」を検索すると、「dog」という単語を含む文書に意味的にマッチする可能性があります。従来のキーワード検索は、その根本的な意味ではなく、文字通りの用語にマッチしていました。
類似性の測定
ベクトルの類似性と距離はどのように測定されますか?
ベクトル検索では、類似性は高次元空間における2つのベクトル間の距離または角度を計算することで定量化されます。ベクトルが近いほど、意味的に類似していると見なされます。この近接度を測定するために使用される一般的な指標には、コサイン類似度、ユークリッド距離、ドット積、ハミング距離、マンハッタン距離などがあります。
- L2距離(ユークリッド距離)は最も一般的な尺度であり、2つのベクトル点の間の直線距離、いわゆる「最短距離(as the crow flies)」を表します。
- L1距離(マンハッタン距離)は、ベクトルの各成分の差の絶対値を合計することで距離を測定し、まるで都市の碁盤の目を移動するようなイメージを表します。
- リンフ距離(チェビシェフ距離)は、任意の1次元に沿った最大の差です。
- コサイン類似性は、2つのベクトル間の角度のコサインを測定し、大きさに関係なく、それらが同様の方向を指しているかどうかを判断します。スコア1は同一のベクトルを意味し、-1はそれらが反対であることを意味します。これは、OpenAIモデルなどの正規化された埋め込みスペースによく選択されます。
- ドット積の類似性は、ベクトルの角度と大きさの両方を考慮します。これは正規化ベクトルのコサイン類似度と同等ですが、多くの場合、計算効率が向上します。
- ハミング距離は、2つのベクトルが異なる次元の数を計算します。
- 最大内積(MaxSim)は、1つのデータ(ドキュメントなど)が複数のベクトル(各単語のベクトルなど)で表される場合に使用される類似性メトリックです。各ドキュメントのベクトルを比較し、最も類似したベクトルを見つけて結果を集計することで類似性を計算します。
効率的な検索アルゴリズム
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倍の圧縮が可能になり、メモリを最大限に節約でき、整数ベースの演算を使用して計算を高速化できますが、多くの場合、精度がいくらか低下します。
統合されたベクトルストレージ(データベース)と検索プラットフォームの利点は何ですか?
ベクターストレージと検索を従来のデータベース機能(例:字句検索やフィルタリング)と組み合わせた統合プラットフォームには、大きなメリットがあります。別々のシステム間でデータを同期する必要がなくなるため、アーキテクチャが簡素化されます。最も重要なのは、語彙検索、ベクトル検索、メタデータフィルタリングを1つの統合クエリで検索でき、より関連性の高い結果が得られ、開発者の体験がシンプルになることです。
ベクトル検索は語彙検索とどのように異なりますか?
- 語彙検索(例:BM25)はキーワードマッチングに基づいています。クエリに含まれる用語と完全に一致するドキュメントを検索します。精度は高いものの、文脈や同義語は考慮されません。
- ベクトル検索はセマンティックな意味に基づいています。キーワードを共有していなくても、クエリと概念的に類似するドキュメントを検索します。ユーザーの意図を理解するのに優れていますが、語彙検索よりも精度が低くなる可能性があります。
ベクトルデータベースの一般的なユースケースとは?開発者はベクトル検索で何を構築できますか?
開発者はベクトルデータベースを利用して、データの意味を理解することに依存する高度なアプリケーションを構築します。一般的なユースケースには次のようなものがあります。
- セマンティック検索:eコマースやドキュメント発見システムなど、キーワードを超えてユーザーの意図を理解する検索体験を提供します
- RAG (Retrieval-Augmented Generation): LLMやチャットボットに外部の最新の知識へのアクセスを提供し、より正確で事実に基づいた回答を生成します
- レコメンデーションエンジン:ユーザーの興味や過去の行動に概念的に類似した商品、記事、またはメディアを推薦します。
- 画像とマルチモーダル検索:視覚的に類似した画像を見つけたり、さまざまなデータタイプ(例:テキストを使って画像を検索)を検索します。