セマンティック検索を実行

指定されたフィールドでセマンティック検索を実行して検索テキストと使用するモデル、または埋め込みベクトルで指定されたレコードセットを絞り込みます。

オプション 

  • [クエリー:] では、クエリーが [自然言語] (テキスト) または [ベクトルデータ] を埋め込むかを指定します。

  • [レコードセット:] では、[すべてのレコード] または [現在の対象レコード] を検索するかどうかを選択します。

  • [ターゲットフィールド] では、検索するテキストまたはオブジェクトフィールドを指定します。フィールドの内容は埋め込みベクトルである必要があります。テキストフィールドの場合は JSON 配列、オブジェクトフィールドの場合はバイナリデータとして指定します。

  • [返される数] は、対象レコードとして返す意味的に類似したレコードの数を指定する数式です。 指定されていない場合、デフォルトのレコード数は最大 10 です。

  • [コサイン類似度条件] では、データのコサイン類似度を [コサイン類似度の値] と比較する方法を指定します。指定されていない場合、対象レコードはコサイン類似度条件によって制限されません。

  • [コサイン類似度の値] では、 [コサイン類似度条件] とともに使用してデータが意味的に類似しているか非類似かを判断するしきい値を指定します。この数式には -1 (非類似) と 1 (類似) までの値を指定する必要があります。

[クエリー:] が [自然言語] の場合にのみ使用できるオプション:

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

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

  • [テキスト:] では、検索するテキストのテキスト式を指定します。このテキストはモデルに送信され [ターゲットフィールド] の埋め込みベクトルと類似性を比較します。

[クエリー:] が [ベクトルデータ] の場合にのみ使用できるオプション:

  • 検索するテキストを表す埋め込みベクトル。これはオブジェクトフィールドへの参照など、オブジェクトデータを返す式です。結果はこのベクトルデータが表すテキストと意味的に類似します。

互換性 

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

起点バージョン 

21.0

説明 

このスクリプトステップは [検索実行] スクリプトステップのように文字どおりのキーワードの一致を検索するのではなく、[ターゲットフィールド] の内容がクエリーと意味的に類似するレコードを検索します。

このスクリプトステップには [クエリー:] オプションによって決定される 2 つの操作モードがあります:

  • [自然言語] に設定した場合は、クエリーを [テキスト:] オプションに自然言語テキストとして指定します。このスクリプトステップはそのクエリーテキストを埋め込みベクトルの変換に指定されたモデルに送信します。これがこのモードで AI アカウント名および埋め込みモデルが必要とされる理由です。

  • [ベクトルデータ] に設定した場合は、埋め込みベクトルをクエリーのオブジェクトデータとして指定します。特定のクエリーを頻繁に使用する場合は、モデルからその都度取得するよりも、これらのクエリーの埋め込みベクトルを一度取得して格納する方が効率的な場合があります。

このスクリプトステップは現在のテーブル内のすべてのレコードまたは現在の対象レコード内のレコードのみ ([レコードセット] オプションで設定) のいずれかで、[ターゲットフィールド] のデータとクエリーの意味的類似性 (または非類似性) を比較します。結果はコサイン類似度条件を満たす [返される数] 以下のレコード数に絞り込まれる対象レコードです。結果の対象レコードは降順のコサイン類似度でソートされるため最も関連性の高いレコードが最初になります。

例 1 

AI アカウントを設定して「会議詳細」レイアウトに移動してから、すべてのレコードの「会議::メモ_埋め込み」オブジェクトフィールドで [テキスト:] (自然言語) のセマンティック検索を実行します。このフィールドには「会議::メモ」フィールドの内容の埋め込みベクトルが含まれています (対象レコードに埋め込みを挿入例 1 を参照)。より有用な結果を得るために、返される数を 10 に制限して、[テキスト:] と「会議::メモ_埋め込み」フィールドの内容のコサイン類似度を 0.4 よりも大きい値に設定します。結果の対象レコードは関連性の高い順にソートされます。

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

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

セマンティック検索を実行 [クエリー: 自然言語 ; アカウント名: "my-account" ; 埋め込みモデル: "text-embedding-3-small" ; テキスト: "採用, 業務内容, 研修プラン" ; レコードセット: すべてのレコード ; ターゲットフィールド: 会議::メモ_埋め込み ; 返される数: 10 ; コサイン類似度条件: 次の値より大きい ; コサイン類似度の値: .4]

例 2 

AI アカウントを設定して「会議詳細」レイアウトに移動してから、検索するテキストをユーザに尋ねます。GetEmbedding 関数がテキストをモデルに送信して、[フィールド設定] スクリプトステップが埋め込みベクトルをグローバルオブジェクトフィールドの「会議::入力」に格納します。「会議::メモ_埋め込み」オブジェクトフィールドに「会議::メモ」フィールドの内容の埋め込みベクトルが含まれていると仮定すると (対象レコードに埋め込みを挿入例 1 を参照)、[セマンティック検索を実行] はすべてのレコードで「会議::入力」と「会議::メモ_埋め込み」のベクトルデータを比較して返される数と類似度条件を満たす対象レコードを返します。

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

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

カスタムダイアログを表示 ["次に関するメモが含まれる会議を検索:" ; $Input]
フィールド設定 [会議::入力 ; GetEmbedding ("my-account" ; "text-embedding-3-small" ; $Input) ]

セマンティック検索を実行 [クエリー: ベクトルデータ ; 会議::入力 ; レコードセット: すべてのレコード ; ターゲットフィールド: 会議::メモ_埋め込み ; 返される数: 10 ; コサイン類似度条件: 次の値より大きい ; コサイン類似度の値: .4]