ML.GENERATE_TEXT_EMBEDDING 関数

このドキュメントでは、BigQuery テーブルに保存されているテキストを埋め込む ML.GENERATE_TEXT_EMBEDDING 関数について説明します。テキスト エンベディングとは、テキストの高次ベクトル表現です。2 つのテキストが意味的に類似している場合、それぞれのエンベディングはエンベディング ベクトル空間内で互いに近接しています。テキスト エンベディングを使用すると、次のタスクを行うことができます。

  • セマンティック検索: 意味的類似性によってランク付けされたテキストを検索します。
  • 推奨: 指定したテキストに類似したテキスト属性を持つアイテムを返します。
  • 分類: 指定されたテキストと類似するテキスト属性を持つアイテムのクラスを返します。
  • クラスタリング: 指定したテキストと類似したテキスト属性を持つアイテムをクラスタ化します。
  • 外れ値検出: テキスト属性が指定されたテキストとの関連性が最も低いアイテムを返します。

この関数は、Vertex AI textembedding-gecko* テキスト エンベディング基盤モデルの 1 つを表す BigQuery ML リモートモデルにリクエストを送信します。LLM から出力された後、LLM のレスポンスを返します。

構文

ML.GENERATE_TEXT_EMBEDDING(
  MODEL `project_id.dataset.model_name`,
  { TABLE table_name | (query_statement) },
  STRUCT([flatten_json_output AS flatten_json_output])
)

引数

ML.GENERATE_TEXT_EMBEDDING は次の引数を取ります。

  • project_id: プロジェクト ID。

  • dataset: モデルを含む BigQuery データセット。

  • model_name: textembedding-gecko* Vertex AI LLM のいずれかを使用するリモートモデルの名前。 このタイプのリモートモデルの作成方法については、ENDPOINT をご覧ください。

  • table_name: 埋め込む STRING 列を含む BigQuery テーブルの名前。content という名前の列のテキストがモデルに送信されます。テーブルに content 列がない場合は、この引数に SELECT ステートメントを使用して、既存のテーブル列のエイリアスを指定します。content 列が存在しない場合は、エラーが発生します。

  • query_statement: 結果に content という名前の STRING 列が含まれるクエリ。サポートされる query_statement 句の SQL 構文については、GoogleSQL クエリ構文をご覧ください。

  • flatten_json_output: 関数から返された JSON のコンテンツを別の列に解析するかどうかを決定する BOOL 値。デフォルトは TRUE です。

出力

ML.GENERATE_TEXT_EMBEDDING は、入力テーブルと次の列を返します。

  • ml_embed_text_result: テキスト エンベディングと関連する統計情報を含む JSON 値。この列は、flatten_json_outputFALSE の場合に返されます。
  • text_embedding: 768 次元のテキスト エンベディングを含む ARRAY<FLOAT> 値。この列は、flatten_json_outputTRUE の場合に返されます。
  • statistics: コンテンツ内のトークン数を含む token_count フィールドと、コンテンツが切り捨てられたかどうかを示す truncated フィールドを含む JSON 値。この列は、flatten_json_outputTRUE の場合に返されます。
  • ml_embed_text_status: 対応する行の API レスポンス ステータスを含む STRING 値。オペレーションが成功した場合、この値は空になります。

ロケーション

ML.GENERATE_TEXT_EMBEDDING は、関数が参照するリモートモデルと同じリージョンで実行する必要があります。リモートモデルは、次のロケーションtextembedding-gecko* モデルに基づいてのみ作成できます。

  • us
  • us-central1

割り当て

Cloud AI サービスの関数の割り当てと上限をご覧ください。

次の例は、1 つのサンプル テキストのエンベディングを生成する方法を示しています。

SELECT *
FROM
  ML.GENERATE_TEXT_EMBEDDING(
    MODEL `bqml_tutorial.embedding_model`,
    (SELECT "Example text to embed" AS content),
    STRUCT(TRUE AS flatten_json_output)
);

次のステップ