このトピックでは、AI_EMBED を使用してテキストのベクター表現を生成する方法について説明します。
制限事項
-
この機能には、Ververica Runtime (VVR) 11.4 以降が必要です。
-
AI_EMBED演算子のスループットは、Alibaba Cloud Model Studio のレート制限に従います。モデルのレート制限に達すると、Flink ジョブはAI_EMBED演算子をボトルネックとしてバックプレッシャーがかかります。場合によっては、タイムアウトエラーが発生し、ジョブが再起動されることがあります。
構文
AI_EMBED(
MODEL => MODEL <MODEL NAME>,
INPUT => <INPUT COLUMN NAME>
)
入力
|
パラメーター |
データ型 |
説明 |
|
MODEL <MODEL NAME> |
MODEL |
登録済みモデルの名前。 注:モデルの出力型は |
|
<INPUT COLUMN NAME> |
STRING |
モデルが分析対象とするソーステキスト。 |
|
<DIMENSION VALUE> |
INTEGER |
省略可能。出力ベクターのディメンション。デフォルトは 1024 です。モデルが 1024 ディメンションをサポートしていない場合は、サポートされている値を指定してください。AI_EMBED 内の DIMENSION 値は、CREATE MODEL 文で設定された値より優先されます。 AI_EMBED 関数は常に DIMENSION パラメーターを渡します。モデルがこのパラメーターをサポートしていない場合は、代わりに ML_PREDICT を使用してください。 |
結果
|
パラメーター |
データ型 |
説明 |
|
embedding |
ARRAY<FLOAT> |
生成されたベクター。そのディメンションは DIMENSION パラメーターによって決定されます。パラメーターが省略された場合のデフォルトは 1024 です。 |
例
テストデータ
|
id |
content |
|
1 |
Flink |
テスト文
次の SQL の例では、text-embedding-v3 モデルと AI_EMBED を使用してベクターを生成します。
CREATE TEMPORARY MODEL embedding_model
INPUT (`input` STRING)
OUTPUT (`embedding` ARRAY<FLOAT>)
WITH (
'provider' = 'openai-compat',
'task' = 'embeddings',
'model' = 'text-embedding-v3',
'dimension' = '1024'
);
CREATE TEMPORARY VIEW infos(id, content)
AS VALUES (1, 'Flink');
-- 位置引数を使用して AI_EMBED を呼び出し
SELECT id, embedding
FROM infos,
LATERAL TABLE(
AI_EMBED(
MODEL embedding_model,
content
));
-- 名前付き引数を使用して AI_EMBED を呼び出し
SELECT id, embedding
FROM infos,
LATERAL TABLE(
AI_EMBED(
MODEL => MODEL embedding_model,
INPUT => content
));
出力
|
id |
embedding |
|
1 |
[-0.13219477, 0.054332353, -0.033010617, -0.0039787884, ...] |