ベクトル検索の概要
ベクター検索は、ドキュメント、画像、音声、動画など、多様なデータタイプを対象とするセマンティック類似性検索のための強力なソリューションを提供します。開発者はMySQLの専門知識を活用し、生成型AI機能を備えたスケーラブルなアプリケーションを構築することで、高度な検索機能の統合を簡素化できます。
注記:
ベクター検索機能はベータ版です。予告なく変更される可能性があります。バグを見つけた場合は、GitHubで問題報告を行ってください。
注記:
ベクトル検索機能は、TiDB Self-Managed、 TiDB Cloudスターター TiDB Cloudエッセンシャル利用できますTiDB Cloud専用 Self-Managed およびTiDB Cloud Dedicated の場合、TiDB バージョンは v8.4.0 以降である必要があります(v8.5.0 以降を推奨)。
概念
ベクター検索は、データの意味を優先して関連性の高い結果を提供する検索方法です。
キーワードの完全一致と単語の出現頻度に依存する従来の全文検索とは異なり、ベクトル検索は、様々なデータタイプ(テキスト、画像、音声など)を高次元ベクトルに変換し、それらのベクトル間の類似性に基づいてクエリを実行します。この検索手法は、データの意味と文脈情報を捉えることで、ユーザーの検索意図をより正確に理解することを可能にします。
検索用語がデータベースの内容と完全に一致しない場合でも、ベクター検索ではデータのセマンティクスを分析することで、ユーザーの意図に一致する結果を提供できます。
例えば、「泳ぐ動物」という全文検索では、そのキーワードに完全一致する結果のみが返されます。一方、ベクター検索では、魚やアヒルなど、他の泳ぐ動物の検索結果が、完全一致するキーワードを含まない場合でも返されます。
ベクトル埋め込み
ベクトル埋め込み(埋め込みとも呼ばれる)は、現実世界のオブジェクトを高次元空間で表現する数値列です。文書、画像、音声、動画などの非構造化データの意味と文脈を捉えます。
ベクトル埋め込みは機械学習に不可欠であり、意味的類似性検索の基盤として機能します。
TiDBは、ベクトル埋め込みのstorageと取得を最適化し、AIアプリケーションにおけるベクトル埋め込みの活用を強化するために設計されたベクトルデータ型とベクター検索インデックス導入しました。ベクトル埋め込みをTiDBに保存し、ベクトル検索クエリを実行して、これらのデータ型を使用して最も関連性の高いデータを見つけることができます。
埋め込みモデル
埋め込みモデルは、データをベクトル埋め込みに変換するアルゴリズムです。
セマンティック検索結果の精度と関連性を確保するには、適切な埋め込みモデルを選択することが重要です。非構造化テキストデータの場合、 大規模テキスト埋め込みベンチマーク(MTEB)リーダーボードでトップクラスのパフォーマンスを誇るテキスト埋め込みモデルを見つけることができます。
特定のデータ タイプのベクトル埋め込みを生成する方法については、統合チュートリアルまたは埋め込みモデルの例を参照してください。
ベクトル検索の仕組み
生データをベクトル埋め込みに変換して TiDB に保存した後、アプリケーションはベクトル検索クエリを実行して、ユーザーのクエリに最も意味的または文脈的に関連するデータを見つけることができます。
TiDBベクトル検索は、与えられたベクトルとデータベースに格納されているベクトル間の距離を距離関数用いて計算し、上位k近傍(KNN)ベクトルを識別します。クエリ内で与えられたベクトルに最も近いベクトルは、意味的に最も類似したデータを表します。
ベクトル検索機能を統合したリレーショナルデータベースであるTiDBでは、データとそれに対応するベクトル表現(つまりベクトル埋め込み)を1つのデータベースにまとめて保存できます。storage方法は以下から選択できます。
- データとそれに対応するベクトル表現を同じテーブルの異なる列に格納します。
- データとそれに対応するベクトル表現を別々のテーブルに保存します。これにより、データを取得する際に、
JOIN
のクエリでテーブルを結合できます。
ユースケース
検索拡張生成(RAG)
検索拡張生成(RAG)は、大規模言語モデル(LLM)の出力を最適化するために設計されたアーキテクチャです。ベクトル検索を用いることで、RAGアプリケーションはベクトル埋め込みをデータベースに保存し、LLMが応答を生成する際に関連文書を追加のコンテキストとして取得することができます。これにより、回答の品質と関連性が向上します。
セマンティック検索
セマンティック検索は、キーワードの単純な一致ではなく、クエリの意味に基づいて結果を返す検索技術です。埋め込みを用いて、異なる言語や様々な種類のデータ(テキスト、画像、音声など)の意味を解釈します。そして、ベクトル検索アルゴリズムがこれらの埋め込みを用いて、ユーザーのクエリを満たす最も関連性の高いデータを見つけます。
推奨エンジン
レコメンデーションエンジンとは、ユーザーにとって関連性が高くパーソナライズされたコンテンツ、商品、またはサービスをプロアクティブに提案するシステムです。これは、ユーザーの行動や好みを表す埋め込み情報を作成することで実現されます。これらの埋め込み情報は、他のユーザーが操作したり興味を示したりした類似アイテムをシステムが特定するのに役立ちます。これにより、レコメンデーションがユーザーにとって関連性が高く魅力的なものになる可能性が高まります。
参照
TiDB Vector Search を使い始めるには、次のドキュメントを参照してください。