ベクトル検索の概要
ベクトル検索は、ドキュメント、画像、音声、動画などの多様なデータ型に対して、セマンティック類似検索を行うための強力なソリューションを提供します。これにより、開発者は MySQL の知識を活用して、生成 AI の機能で強化されたスケーラブルなアプリケーションを構築でき、高度な検索機能の統合を簡素化できます。
概念
ベクトル検索は、データの意味を重視して関連性の高い結果を返す検索手法です。
従来の全文検索は、正確なキーワード一致や単語頻度に依存しますが、ベクトル検索はさまざまなデータ型(テキスト、画像、音声など)を高次元ベクトルに変換し、それらのベクトル間の類似度に基づいて検索します。この検索手法は、データの意味やコンテキスト情報を捉えるため、ユーザーの意図をより正確に理解できます。
検索語がデータベース内の内容と完全に一致しない場合でも、ベクトル検索はデータの意味を分析することで、ユーザーの意図に沿った結果を返すことができます。
たとえば、a swimming animal を全文検索すると、これらの正確なキーワードを含む結果しか返されません。一方、ベクトル検索では、結果に正確なキーワードが含まれていなくても、魚やアヒルなど、ほかの泳ぐ動物に関する結果を返すことができます。
ベクトル埋め込み
ベクトル埋め込み(単に埋め込みとも呼ばれます)は、現実世界のオブジェクトを高次元空間で表現する数値の列です。これは、ドキュメント、画像、音声、動画などの非構造化データの意味とコンテキストを捉えます。
ベクトル埋め込みは機械学習において不可欠であり、セマンティック類似検索の基盤となります。
TiDB は、ベクトル埋め込みの保存と取得を最適化するために設計された ベクトルデータ型 と ベクトル検索インデックス を導入しています。これにより、AI アプリケーションでの活用が強化されます。これらのデータ型を使用して、TiDB にベクトル埋め込みを保存し、ベクトル検索クエリを実行して最も関連性の高いデータを見つけることができます。
埋め込みモデル
埋め込みモデルは、データを ベクトル埋め込み に変換するアルゴリズムです。
適切な埋め込みモデルを選択することは、セマンティック検索結果の精度と関連性を確保するうえで重要です。非構造化テキストデータについては、Massive Text Embedding Benchmark (MTEB) Leaderboard で高性能なテキスト埋め込みモデルを確認できます。
特定のデータ型に対するベクトル埋め込みの生成方法については、埋め込みモデルの統合チュートリアルまたは例を参照してください。
ベクトル検索の仕組み
生データをベクトル埋め込みに変換して TiDB に保存した後、アプリケーションはベクトル検索クエリを実行して、ユーザーのクエリに対して意味的または文脈的に最も関連するデータを見つけることができます。
TiDBベクトル検索は、距離関数 を使用して、指定されたベクトルとデータベースに保存されているベクトルとの距離を計算し、上位 k 個の最近傍(KNN)ベクトルを特定します。クエリ内で指定されたベクトルに最も近いベクトルが、意味的に最も類似したデータを表します。
ベクトル検索機能を統合したリレーショナルデータベースとして、TiDB ではデータとそれに対応するベクトル表現(ベクトル埋め込み)を 1 つのデータベースにまとめて保存できます。データは次のいずれかの方法で保存できます。
- 同じテーブルの異なるカラムに、データとそれに対応するベクトル表現を保存する。
- 異なるテーブルに、データとそれに対応するベクトル表現を保存する。この場合、データ取得時に
JOINクエリを使用してテーブルを結合する必要があります。
ユースケース
Retrieval-Augmented Generation (RAG)
Retrieval-Augmented Generation (RAG) は、大規模言語モデル(LLM)の出力を最適化するために設計されたアーキテクチャです。ベクトル検索を使用することで、RAG アプリケーションはベクトル埋め込みをデータベースに保存し、LLM が応答を生成する際に追加コンテキストとして関連ドキュメントを取得できます。これにより、回答の品質と関連性が向上します。
セマンティック検索
セマンティック検索は、単純にキーワードを一致させるのではなく、クエリの意味に基づいて結果を返す検索技術です。埋め込みを使用して、異なる言語やさまざまな種類のデータ(テキスト、画像、音声など)にまたがる意味を解釈します。その後、ベクトル検索アルゴリズムがこれらの埋め込みを使用して、ユーザーのクエリを満たす最も関連性の高いデータを見つけます。
レコメンデーションエンジン
レコメンデーションエンジンは、ユーザーに関連性が高く、パーソナライズされたコンテンツ、製品、またはサービスを能動的に提案するシステムです。これは、ユーザーの行動や好みを表す埋め込みを作成することで実現されます。これらの埋め込みにより、システムは他のユーザーが操作した、または関心を示した類似アイテムを特定できます。その結果、レコメンデーションがユーザーにとって関連性が高く、魅力的なものになる可能性が高まります。
関連情報
TiDBベクトル検索を使い始めるには、次のドキュメントを参照してください。

