ベクトルデータベースとは何ですか?

ベクトルデータベースとは何ですか?

ベクトルデータベースは、高次元のベクトル埋め込みを格納、管理、検索するよう設計された特殊なデータベースです。その主な機能は、大規模言語モデル(LLM)が参照できる外部ナレッジベースとして機能し、ナレッジベースに保存されたデータによってモデルの応答を「グラウンディング」し、ハルシネーションのリスクを軽減することです。ベクトルデータベースのコア機能は、セマンティック類似性検索を実行することであり、キーワードの一致ではなく、概念的に類似したデータポイントを特定することです。機械学習モデルからの密ベクトル埋め込みと疎ベクトル埋め込みの両方にインデックスを付け、格納して、迅速な類似性検索と取得を可能にします。これらの埋め込みは、テキスト、画像、音声などの非構造化データ内のセマンティックな関係を捉えます。データベースによって作成されたベクトル空間では、関連するアイテムが互いに近くに配置されるため、システムは結果を関連度に基づいてランク付けできます。


ベクトル埋め込み

ベクトル埋め込みとは何で、どのように作成されますか?

ベクトル埋め込みは、単語、フレーズ、または文書全体などのデータを表す浮動小数点値の数値配列です。これらは、デジタルメディアを高次元空間内のポイントに変換する大規模言語モデルなどの機械学習モデルによって生成されます。このプロセスでは、元のデータの根本的な意味と関係性を捉えます。たとえば、「公園で遊ぶゴールデンレトリバー」の画像は、「外で遊ぶ幸せそうな犬」というテキストの埋め込みに数値的に近い埋め込みに変換できます。重要な点として、あるプロバイダーのモデルによって作成された埋め込みは、別のプロバイダーによって理解されないということがあります。例えば、OpenAIモデルからの埋め込みは、別のプロバイダーからの埋め込みと互換性がありません。

密なベクトル(埋め込み)とは何ですか?

高密度ベクトルは、ほぼすべての要素がゼロ以外の値である高次元の数値埋め込みです。高密度ベクトルの重要な特徴は、特定のモデルによって生成されるすべてのベクトルが同じ固定次元数を持たなければならないことであり、これは類似性を測定するための前提条件です。たとえば、Azure OpenAIモデルの埋め込みには1,536次元があります。通常はトランスフォーマーモデルによって生成され、ニュアンスの豊かな意味を捉えるため、セマンティック類似性検索に最適です。たとえば、「cat」という単語の密なベクトルは、[0.135, -0.629, 0.327, 0.366, ...]のように表示されます。

疎なベクトル(埋め込み)とは何ですか?

スパースベクトルは、要素の大部分がゼロである高次元の数値埋め込みであり、ストレージと計算効率の両方を最適化する構造です。デンスリトリバーとは異なり、スパースリトリバーは用語頻度-逆文書頻度(TF-IDF)やBM25などの従来の検索手法を使用して、キーワードに基づいてクエリを文書と検索します。たとえば、「ヘルシースナック」を検索すると、[「apple」(3.0)、「carrot」(2.5)、「vitamin」(1.2)] などの関連用語に展開して重みを割り当てるスパースベクトルが生成され、語彙内の他のすべての用語の重みがゼロになる場合があります。この構造は従来の倒置インデックスとの互換性が高く、効率的な検索を可能にします。

類似性の測定

ベクトルの類似性と距離はどのように測定されますか?

ベクトル検索では、類似性は高次元空間における2つのベクトル間の距離または角度を計算することで定量化されます。ベクトルが近いほど、意味的に類似していると見なされます。この近接度を測定するために使用される一般的な指標には、コサイン類似度、ユークリッド距離、ドット積、ハミング距離、マンハッタン距離などがあります。

  • L2距離(ユークリッド距離)は最も一般的な尺度であり、2つのベクトル点の間の直線距離、いわゆる「最短距離(as the crow flies)」を表します。
  • L1距離(マンハッタン距離)は、ベクトルの各成分の差の絶対値を合計することで距離を測定し、まるで都市の碁盤の目を移動するようなイメージを表します。
  • リンフ距離(チェビシェフ距離)は、任意の1次元に沿った最大の差です。
  • コサイン類似性は、2つのベクトル間の角度のコサインを測定し、大きさに関係なく、それらが同様の方向を指しているかどうかを判断します。スコア1は同一のベクトルを意味し、-1はそれらが反対であることを意味します。これは、OpenAIモデルなどの正規化された埋め込みスペースによく選択されます。
  • ドット積の類似性は、ベクトルの角度と大きさの両方を考慮します。これは正規化ベクトルのコサイン類似度と同等ですが、多くの場合、計算効率が向上します。
  • ハミング距離は、2つのベクトルが異なる次元の数を計算します。
  • 最大内積(MaxSim)は、1つのデータ(ドキュメントなど)が複数のベクトル(各単語のベクトルなど)で表される場合に使用される類似性メトリックです。各ドキュメントのベクトルを比較し、最も類似したベクトルを見つけて結果を集計することで類似性を計算します。

効率的な検索アルゴリズム

ベクトル検索システムにおけるマルチステージ検索とは何ですか?

多段階検索またはフレームワーク(簡単に「検索パイプライン」とも呼ばれます)は、クエリを処理するための一連のステップを定義する管理されたワークフローです。これには通常、クエリ分析、1 つ以上のインデックスからの初期取得(たとえば、ハイブリッドアプローチで字句検索とベクトル検索を組み合わせる)、結果のフィルタリング、結果をユーザーに返す前の最終的なリランキング段階などのステップが含まれます。


検索パイプラインを構築するためにリトリバーフレームワークを使用する利点は何ですか?

主な利点はモジュール性と柔軟性です。開発者は、システム全体をゼロから構築することなく、異なる検索やランキング戦略(ハイブリッド検索など)を簡単に組み合わせ、特定のニーズに合わせた複雑な多段検索パイプラインを構築できます。

セマンティックリランキングとは何ですか?

セマンティックリランクは、検索結果の関連性を向上させる第2段階のプロセスです。最初の高速検索段階で幅広い候補文書が取り出された後、計算負荷は高いがより正確なモデルを使用して、この小規模なセットを並び替えて、より正確な最終ランキングを生成します。

「取得とリランク」の多段階プロセスはどのように機能しますか?

「取得とリランク」パイプラインは、次の2つの段階に分かれています。

  1. 検索:効率的で拡張性のある検索方法(ANNベクトル検索やレキシカルBM25検索など)を使用して、インデックス全体から候補文書の初期セットを取得します。
  2. リランク:この小規模な候補セットは、クエリと各ドキュメントとのセマンティックな関係をより詳細に分析し、最終的な関連性を高めるように並べ替える、クロスエンコーダーなどのより強力なモデルに渡されます。

リランキングにおけるバイエンコーダーとクロスエンコーダーのアーキテクチャの違いは何ですか?

  • バイエンコーダーは、クエリとドキュメントに別々の埋め込みを個別に生成します。文書の埋め込みは事前に計算して索引付けできるため、このアーキテクチャは非常に高速で、初期検索段階で使用されます。
  • クロスエンコーダーは、クエリとドキュメントを 1 つの入力として処理します。これにより、より深いコンテキストの相互作用を捉えることができ、精度は非常に高くなりますが、速度はかなり遅くなります。計算コストが高いため、少数の候補結果の再ランク付け段階にのみ適しています。

ストレージと最適化

ベクトルは通常、ベクトルデータベースにどのように格納され、どのようなストレージ上の課題が生じますか?

ベクトルは通常、32ビットの浮動小数点数(float32)の配列として格納されます。主な課題は、ストレージフットプリントが膨大であることです。1つの384次元ベクトルは約1.5KBを消費します。したがって、1億件の文書のインデックスは、ベクトルフィールドを1つ追加するだけでサイズが7倍に拡大する可能性があります。HNSWのようなベクトル検索アルゴリズムでは、パフォーマンス向上のためにインデックスをRAMにロードする必要があるため、メモリコストと拡張性に関連する重大な課題が生じます。

ベクトル量子化とは何ですか?

ベクトル量子化は、パラメータをより少ないビットで表現することにより、モデルのメモリと計算要件を削減する損失のある圧縮技術です。これは、数十億のパラメータを持つ可能性があるLLMに特に有用です。高精度のfloat32数値をint8int4などの低精度の整数に変換することで、量子化はモデルサイズを大幅に削減し、精度への影響を最小限に抑えつつ推論を高速化できます。

スカラー量子化(SQ)とは何ですか?

スカラー量子化は、float32値の連続範囲を、より低精度の整数値(例:int8)の離散セットにマッピングすることで、ベクトルを圧縮します。これにより、関連性にとって重要なベクトルのマグニチュード情報を大幅に保持しながら、ストレージサイズを最大4倍削減できます。

バイナリ量子化(BQ)とは何ですか?

バイナリ量子化は、float32ベクトルの各コンポーネントをバイナリ表現(たとえば、1ビット)に変換する、より積極的な圧縮手法です。これにより、最大32倍の圧縮が可能になり、メモリを最大限に節約でき、整数ベースの演算を使用して計算を高速化できますが、多くの場合、精度がいくらか低下します。

統合されたベクトルストレージ(データベース)と検索プラットフォームの利点は何ですか?

ベクターストレージと検索を従来のデータベース機能(例:字句検索やフィルタリング)と組み合わせた統合プラットフォームには、大きなメリットがあります。別々のシステム間でデータを同期する必要がなくなるため、アーキテクチャが簡素化されます。最も重要なのは、語彙検索、ベクトル検索、メタデータフィルタリングを1つの統合クエリで検索でき、より関連性の高い結果が得られ、開発者の体験がシンプルになることです。