📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

自動埋め込みの概要



自動埋め込み機能を使用すると、独自のベクターを用意することなく、プレーンテキストで直接ベクター検索を実行できます。この機能を使用すると、テキストデータを直接挿入し、テキストクエリを使用してセマンティック検索を実行できます。TiDBはバックグラウンドでテキストを自動的にベクターに変換します。

自動埋め込みを使用する場合の基本的なワークフローは次のとおりです。

  1. EMBED_TEXT()を使用して、テキスト列と生成されたベクター列を持つテーブルを定義します
  2. テキスト データを挿入します。ベクターは自動的に生成され、保存されます。
  3. テキストを使用したクエリ- 意味的に類似したコンテンツを見つけるにはVEC_EMBED_COSINE_DISTANCE()またはVEC_EMBED_L2_DISTANCE()を使用します。

注記:

自動埋め込みは、AWS でホストされているTiDB Cloud Starter クラスターでのみ利用できます。

クイックスタートの例

ヒント:

Python の使用方法については、 Pythonで自動埋め込みを使用する参照してください。

以下の例は、コサイン距離を用いた自動埋め込みを使用してセマンティック検索を実行する方法を示しています。この例ではAPIキーは必要ありません。

-- Create a table with auto-embedding -- The dimension of the vector column must match the dimension of the embedding model; -- Otherwise, TiDB returns an error when inserting data. CREATE TABLE documents ( id INT PRIMARY KEY AUTO_INCREMENT, content TEXT, content_vector VECTOR(1024) GENERATED ALWAYS AS ( EMBED_TEXT("tidbcloud_free/amazon/titan-embed-text-v2", content) ) STORED ); -- Insert text data (vectors are generated automatically) INSERT INTO documents (content) VALUES ("Electric vehicles reduce air pollution in cities."), ("Solar panels convert sunlight into renewable energy."), ("Plant-based diets lower carbon footprints significantly."), ("Deep learning algorithms improve medical diagnosis accuracy."), ("Blockchain technology enhances data security systems."); -- Search for semantically similar content using text query SELECT id, content FROM documents ORDER BY VEC_EMBED_COSINE_DISTANCE( content_vector, "Renewable energy solutions for environmental protection" ) LIMIT 3;

出力は次のようになります。

+----+--------------------------------------------------------------+ | id | content | +----+--------------------------------------------------------------+ | 2 | Solar panels convert sunlight into renewable energy. | | 1 | Electric vehicles reduce air pollution in cities. | | 4 | Deep learning algorithms improve medical diagnosis accuracy. | +----+--------------------------------------------------------------+

上記の例ではAmazon Titanモデルを使用しています。他のモデルについては利用可能なテキスト埋め込みモデル参照してください。

自動埋め込み + ベクトルインデックス

自動埋め込みはベクトルインデックスと互換性があり、クエリパフォーマンスを向上させます。生成されたベクター列にベクターインデックスを定義すると、自動的に使用されます。

-- Create a table with auto-embedding and a vector index CREATE TABLE documents ( id INT PRIMARY KEY AUTO_INCREMENT, content TEXT, content_vector VECTOR(1024) GENERATED ALWAYS AS ( EMBED_TEXT("tidbcloud_free/amazon/titan-embed-text-v2", content) ) STORED, VECTOR INDEX ((VEC_COSINE_DISTANCE(content_vector))) ); -- Insert text data (vectors are generated automatically) INSERT INTO documents (content) VALUES ("Electric vehicles reduce air pollution in cities."), ("Solar panels convert sunlight into renewable energy."), ("Plant-based diets lower carbon footprints significantly."), ("Deep learning algorithms improve medical diagnosis accuracy."), ("Blockchain technology enhances data security systems."); -- Search for semantically similar content with a text query on the vector index using the same VEC_EMBED_COSINE_DISTANCE() function SELECT id, content FROM documents ORDER BY VEC_EMBED_COSINE_DISTANCE( content_vector, "Renewable energy solutions for environmental protection" ) LIMIT 3;

注記:

  • ベクトルインデックスを定義するときは、 VEC_COSINE_DISTANCE()またはVEC_L2_DISTANCE()を使用します。
  • クエリを実行するときは、 VEC_EMBED_COSINE_DISTANCE()またはVEC_EMBED_L2_DISTANCE()を使用します。

利用可能なテキスト埋め込みモデル

TiDB Cloudは様々な埋め込みモデルをサポートしています。ニーズに最適なモデルをお選びください。

埋め込みモデルドキュメントTiDB Cloud 1がホストBYOK 2
アマゾンタイタンAmazon Titan 埋め込み
コヒアコヒーレ埋め込み
ジナ・アイJina AI 埋め込み
オープンAIOpenAI 埋め込み
ジェミニジェミニ埋め込み

TiDB Cloudがサポートする次の推論サービスを通じて、オープンソースの埋め込みモデルを使用することもできます。

埋め込みモデルドキュメントTiDB Cloud 1がホストBYOK 2サポートされているモデルの例
抱きしめる顔の推論ハグフェイス埋め込みbge-m3 multilingual-e5-large
NVIDIA NIMNVIDIA NIM 埋め込みbge-m3 nv-embed-v1
1ホストモデルはTiDB Cloudによってホストされており、APIキーは必要ありません。現在、これらのホストモデルは無料でご利用いただけますが、すべてのユーザーが利用できるよう、一定の使用制限が適用される場合があります。2 BYOK(Bring Your Own Key)モデルでは、対応する埋め込みプロバイダーからご自身のAPIキーをご提供いただく必要があります。TiDB TiDB CloudはBYOKモデルの使用料を請求しません。これらのモデルの使用に伴うコストの管理と監視はお客様の責任となります。

自動埋め込みの仕組み

自動埋め込みは、 EMBED_TEXT()関数を使用して、選択した埋め込みモデルに基づいてテキストをベクトル埋め込みに変換します。生成されたベクトルはVECTOR列に保存され、 VEC_EMBED_COSINE_DISTANCE()またはVEC_EMBED_L2_DISTANCE()使用してプレーンテキストでクエリできます。

内部的には、 VEC_EMBED_COSINE_DISTANCE()VEC_EMBED_L2_DISTANCE() VEC_COSINE_DISTANCE()VEC_L2_DISTANCE()として実行され、テキスト クエリは自動的にベクトル埋め込みに変換されます。

主な関数

EMBED_TEXT()

テキストをベクトル埋め込みに変換します。

EMBED_TEXT("model_name", text_content[, additional_json_options])

テキスト データを挿入または更新するときに埋め込みを自動的に生成するには、この関数をGENERATED ALWAYS AS節で使用します。

VEC_EMBED_COSINE_DISTANCE()

ベクトル列に格納されたベクトルとテキスト クエリ間のコサイン類似度を計算します。

VEC_EMBED_COSINE_DISTANCE(vector_column, "query_text")

この関数をORDER BY節で使用すると、コサイン距離に基づいて結果をランク付けできます。3 VEC_COSINE_DISTANCE()同じ計算式を用いますが、クエリテキストの埋め込みを自動生成します。

VEC_EMBED_L2_DISTANCE()

保存されたベクトルとテキスト クエリ間の L2 (ユークリッド) 距離を計算します。

VEC_EMBED_L2_DISTANCE(vector_column, "query_text")

この関数をORDER BY節で使用すると、L2距離に基づいて結果をランク付けできます。3 VEC_L2_DISTANCE()同じ計算式を用いますが、クエリテキストの埋め込みは自動的に生成されます。

Pythonで自動埋め込みを使用する

TiDB は、さまざまな埋め込みプロバイダーやモデルと統合するための統一されたインターフェースを提供します。

  • プログラムによる使用: AI SDK のEmbeddingFunctionクラスを使用して、特定のプロバイダーまたはモデルの埋め込み関数を作成します。
  • SQL の使用: EMBED_TEXT関数を使用して、テキスト データから直接埋め込みを生成します。

さまざまな埋め込みプロバイダーおよびモデルを操作するには、 EmbeddingFunctionクラスを使用します。

from pytidb.embeddings import EmbeddingFunction embed_func = EmbeddingFunction( model_name="<provider_name>/<model_name>", )

パラメータ:

  • model_name (必須) : 使用する埋め込みモデルを{provider_name}/{model_name}形式で指定します。

  • dimensions (オプション) : 出力ベクトル埋め込みの次元数。指定されておらず、モデルにデフォルトの次元がない場合、初期化時にテスト文字列が埋め込まれ、実際の次元が自動的に決定されます。

  • api_key (オプション) : 埋め込みサービスにアクセスするためのAPIキー。明示的に設定されていない場合は、プロバイダーのデフォルトの環境変数からキーを取得します。

  • api_base (オプション) : 埋め込み API サービスのベース URL。

  • use_server (オプション) : TiDB Cloud のホスト型埋め込みサービスを使用するかどうか。TiDB TiDB Cloud Starter の場合、デフォルトはTrueです。

  • multimodal (オプション) : マルチモーダル埋め込みモデルを使用するかどうか。有効にすると、 use_serverは自動的にFalseに設定され、埋め込みサービスはクライアント側で呼び出されます。

参照

このページは役に立ちましたか?