対象レコードに埋め込みを挿入

対象レコードのすべてのレコードで、ソースフィールドからデータを埋め込みモデルに送信して返されたベクトル表現をターゲットフィールドに挿入します。

オプション 

  • [アカウント名:] では、このスクリプトステップで使用する AI アカウントのテキスト式を指定します。現在のファイルで、[AI アカウント設定] スクリプトステップを使用してアカウントを設定し、このスクリプトステップが実行される前にこの名前を割り当てることができます。

  • [埋め込みモデル:] では、埋め込みベクトルを生成するモデルの名前を指定します。モデル名はモデルプロバイダから提供されるテキスト式で指定します。

  • [ソースフィールド] は、スクリプトステップがモデルに送信して埋め込みベクトルに変換する値を含むテキストフィールドまたはオブジェクトフィールドです。フィールドが空の場合、モデルには何も送信されずターゲットフィールドは変更されません。

  • [ターゲットフィールド] では、返された埋め込みベクトルを挿入するフィールドを指定します。テキストフィールドを指定すると、返されたデータはテキストとして格納されます。オブジェクトフィールドを指定すると、返されたデータはバイナリデータとして格納されテキストとして格納されたときよりも小さくなるため、埋め込みベクトル処理のパフォーマンスが向上します。

  • [ターゲット内容を置換] は、ターゲットフィールドの内容 (ある場合) を置き換えます。このオプションがオフの場合、フィールドが空の場合にのみ埋め込みデータがターゲットフィールドに追加されます。それ以外の場合はフィールドは変更されません。[ソースフィールド] の内容が頻繁に変更される場合はこのオプションをオンにしておくと便利です。

  • [引数:] では、JSON オブジェクトのテキスト式でモデルに送信されるリクエストのサイズ、数、および頻度の制限を指定します。これらを使用してデータ量、使用されるモデル、モデルプロバイダのトークンの制限、およびモデルが実行されるマシンの技術仕様 (コア、RAM など) に応じてスクリプトを最適化できます。詳細については説明を参照してください。

互換性 

製品 サポート
FileMaker Pro はい
FileMaker Go はい
FileMaker WebDirect はい
FileMaker Server はい
FileMaker Cloud はい
FileMaker Data API はい
カスタム Web 公開 はい

起点バージョン 

21.0

説明 

このスクリプトステップは現在の対象レコードのすべてのレコードで [ソースフィールド] の値を指定されたモデルに送信して埋め込みベクトルに変換して [ターゲットフィールド] に格納します。

埋め込みベクトルの使用例として [セマンティック検索を実行] スクリプトステップがあります。このスクリプトステップまたは [埋め込みを挿入] スクリプトステップから生成されたベクトルデータをクエリーできます。

イメージおよびテキストの埋め込みベクトルの場合、FileMaker Pro で別途提供、または FileMaker Server にインストールされるオープンソースモデルサーバーでサポートされているモデルを使用できます。Claris エンジニアリングブログを参照してください。

[引数:] オプションでは、必要に応じて JSON オブジェクトで次のキーおよび値を使用してスクリプトステップの動作を調整できます。キーが指定されていない場合や [引数:] オプションが使用されていない場合はデフォルト値が使用されます。

引数キー

説明

データタイプ1

デフォルト値

値の範囲

OpenAI のみ

MaxRecPerCall

各 API 呼び出しで処理するレコードの最大数

JSONNumber

20

1 から 500

MaxRetryPerWorker

API 呼び出しに失敗した場合の最大再試行回数

JSONNumber

5

1 から 100

MaxWaitPerRetry

OpenAI API 呼び出し間の最大待機時間 (ミリ秒単位)。この値は OpenAI が 1 分間に受信するリクエストが多すぎる場合にのみ使用されます。その場合、このスクリプトステップは OpenAI API 呼び出し間に MaxWaitPerRetry ミリ秒まで待機します。待機時間がこの最大時間を超えると、スクリプトステップは停止してエラーを返します。

JSONNumber

60,000

20 から 3,600,000

はい

TruncateTokenLimit

TruncateEnabled がオンのときに [ソースフィールド] の入力から削除するトークンの数です。

JSONNumber

8,185

0 から 100,000

はい

TruncateEnabled

「1」(真) は OpenAI に送信する前に [ソースフィールド] からの入力を TruncateTokenLimit まで削除します。

メモ  入力が削除された場合、[セマンティック検索を実行] の結果の精度が低下することがあります。

JSONNumber

1

0 または 1

はい

  1. JSONSetElement 関数を使用して JSON オブジェクトを作成する場合は、タイプ引数に指定された定数を使用します。

たとえば、この JSON オブジェクトは [引数:] オプションのすべてのキーを設定します:

コピー
{
    "MaxRecPerCall" : 40,
    "MaxRetryPerWorker" : 10,
    "MaxWaitPerRetry" : 300000,
    "TruncateTokenLimit" : 4000,
    "TruncateEnabled" : 1
}

メモ 

  • 共有されている FileMaker Pro ファイル内の埋め込みベクトルを自動で定期的に更新するには、FileMaker スクリプトをユーザの操作なしで実行するスケジュールをホスト上に設定します。FileMaker Server ヘルプまたは FileMaker Cloud ヘルプの「スクリプトスケジュールの作成または変更」を参照してください。

例 1

AI アカウントを設定して「会議詳細」レイアウトに移動してすべてのレコードを表示してから、「会議::メモ」フィールドのテキストの埋め込みベクトルを取得して「会議::メモ_埋め込み」オブジェクトフィールドにバイナリデータとして格納します。[ターゲット内容を置換] オプションがオンになっているため、すでにデータが含まれている場合でも「会議::メモ_埋め込み」は更新されます。

コピー
AI アカウント設定 [アカウント名: "my-account" ; モデルプロバイダ: OpenAI ; API キー: "sk-RZCtpWT..."]

レイアウト切り替え [「会議詳細」 (会議) ; アニメーション: なし]
全レコードを表示

対象レコードに埋め込みを挿入 [アカウント名: "my-account" ; 埋め込みモデル: "text-embedding-3-small" ; ソースフィールド: 会議::メモ ; ターゲットフィールド: 会議::メモ_埋め込み ; ターゲット内容を置換]

例 2 

AI アカウントを設定して「会議詳細」レイアウトに移動してから、「会議::タイトル」フィールドに「ステータス」が含まれるレコードを検索します。この対象レコードに対して、データが存在しない場合 ([ターゲット内容を置換] はオフ) は、「会議::メモ」フィールドのテキストの埋め込みベクトルを取得して「会議::メモ_埋め込み」オブジェクトフィールドにバイナリデータとして格納します。また [引数:] オプションを設定して呼び出しごとのレコード、再試行の回数、および再試行の間の時間を増やしてトークンの制限を下げます。

コピー
AI アカウント設定 [アカウント名: "my-account" ; モデルプロバイダ: OpenAI ; API キー: "sk-RZCtpWT..."]

レイアウト切り替え [「会議詳細」 (会議) ; アニメーション: なし]
検索モードに切り替え [一時停止: オフ]
フィールド設定 [会議::ステータス ; "完了"]
検索実行 [ ]

対象レコードに埋め込みを挿入 [アカウント名: "my-account" ; 埋め込みモデル: "text-embedding-3-small" ; ソースフィールド: 会議::メモ ; ターゲットフィールド: 会議::メモ_埋め込み ; 
引数: JSONSetElement ("" ;
    ["MaxRecPerCall" ; 40 ; JSONNumber] ; 
    ["MaxRetryPerWorker" ; 10 ; JSONNumber] ; 
    ["MaxWaitPerRetry" ; 300000 ; JSONNumber] ;
    ["TruncateTokenLimit" ; 4000 ; JSONNumber] ;
    ["TruncateEnabled" ; 1 ; JSONNumber]
)]

例 3

カスタムモデルプロバイダの AI アカウントを設定して、「会議詳細」レイアウトに移動し、すべてのレコードを表示してから、各レコードに対してイメージの埋め込みモデルを使用して「会議::イメージ」オブジェクトフィールド内のイメージの埋め込みベクトルを取得して「会議::イメージ_埋め込み」オブジェクトフィールドにバイナリデータとして格納します。

コピー
AI アカウント設定 [アカウント名: "my-account" ; モデルプロバイダ: カスタム ; エンドポイント: "https://my-server.example.com:8080/" ; SSL 証明書の検証 ; API キー: グローバル::API キー]
        
レイアウト切り替え [「会議詳細」 (会議) ; アニメーション: なし]
全レコードを表示

対象レコードに埋め込みを挿入 [アカウント名: "my-account" ; 埋め込みモデル: "clip-ViT-L-14" ; ソースフィールド: 会議::イメージ ; ターゲットフィールド: 会議::イメージ_埋め込み ; ターゲット内容を置換]