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

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

オプション 

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

  • [埋め込みモデル:] では埋め込みベクトルを生成するモデルの名前を指定します。モデル名をテキスト式として指定します。サポートされているモデルについては、FileMaker 動作環境を参照してください。

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

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

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

  • [エラー時に続行] は一部のレコードでエラーが発生した後も対象レコードの処理を続行します。このオプションを選択すると、エラーが発生したレコードは空のままになるので発見して対処しやすくなります。選択されていない場合、エラーが発生するとスクリプトステップが停止します。

  • [概要を表示] は埋め込みベクトルの挿入が完了するとダイアログボックスを表示します。このダイアログボックスには更新、スキップ、またはエラーが発生したレコードの数が表示されます。

  • [引数:] では JSON オブジェクトのテキスト式を指定します。次を含む事ができます:

    • モデルに送信されるリクエストのサイズ、数、および頻度の制限を指定する FileMaker 固有の引数。これらを使用してデータ量、使用されるモデル、モデルプロバイダのトークンの制限、およびモデルが実行されるマシンの技術仕様 (コア、RAM など) に応じてスクリプトを最適化できます。

    • モデルプロバイダに直接渡されるモデルプロバイダ固有の引数。使用しているモデルでサポートされている引数および値については、モデルプロバイダのマニュアルを参照してください。AI アカウントが [モデルプロバイダ:] オプションに [カスタム] を指定している場合、これらの引数はサポートされません。

    詳細については説明を参照してください。

互換性 

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

起点バージョン 

21.0

説明 

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

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

イメージおよびテキストの埋め込みベクトルの場合、Claris AI Model Server でサポートされているモデルを使用できます。FileMaker Server ヘルプの AI サービスの構成を参照してください。

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

引数キー

説明

デフォルト値

値の範囲

OpenAI のみ

MaxRecPerCall

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

20

1 から 500

MaxRetryPerWorker

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

5

1 から 100

MaxWaitPerRetry

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

60,000

20 から 3,600,000

はい

TruncateTokenLimit

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

8,185

0 から 100,000

はい

TruncateEnabled

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

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

1

0 または 1

はい

RetryOnError

レコードのグループでエラーが発生した場合、「1」(真) はグループ内のレコードを個別に再試行し、エラーが発生しなかったレコードではデータを挿入して、エラーが発生したレコードはスキップします。「0」(偽) はエラーが発生したレコードのグループ全体をスキップしてデータを生成しません。

* AI アカウントで指定されたすべてのモデルプロバイダはデフォルトで無効になっています。カスタムモデルのみ (RetryOnError) がデフォルトで有効になっています。

メモ  この引数を有効にすると [エラー時に続行] オプションが上書きされます。

0*

0 または 1

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

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

コピー
{
    "MaxRecPerCall" : 40,
    "MaxRetryPerWorker" : 10
}

上の表の引数は複数のレコードの処理を管理する FileMaker 固有の引数です。これらの引数は処理されて JSON オブジェクトに含まれる他の引数を直接モデルプロバイダに渡す前に取り除かれます。

メモ 

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

例 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://myserver.example.com/llm/v1/" ; SSL 証明書の検証 ; API キー: グローバル::API キー]
        
レイアウト切り替え [「会議詳細」 (会議) ; アニメーション: なし]
全レコードを表示

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