📣

TiDB Cloud Serverless が
Starter
に変わりました!このページは自動翻訳されたものです。
原文はこちらからご覧ください。

自動埋め込みの概要

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

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

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

可用性

現在、自動埋め込みは次の AWS リージョンのTiDB Cloud Starter クラスターでのみ利用できます。

  • Frankfurt (eu-central-1)
  • Oregon (us-west-2)
  • N. Virginia (us-east-1)

クイックスタートの例

ヒント:

Python の使用方法については、 PyTiDB ドキュメント参照してください。

以下の例は、コサイン距離を用いた自動埋め込みを使用してセマンティック検索を実行する方法を示しています。この例では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サポートされているモデルの例
ハグフェイス推論HuggingFaceの埋め込み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で自動埋め込みを使用する

PyTiDB ドキュメント参照。

参照

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