RAG 処理を実行

RAG アカウントで指定された AI モデルサーバー上の RAG スペースにプロンプトを送信、またはデータを追加および取り除きます。

オプション 

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

  • [スペース ID:] では指定した RAG アカウントで操作する RAG スペースの固有の ID を指定するテキスト式を指定します。

  • [処理:] では RAG スペース上で実行する処理のタイプを指定します。このオプションはスクリプトステップ内の他のオプションの使用を制御します。次から選択します:

    • [データを追加] は RAG スペースにドキュメント (テキストデータまたは PDF ファイル) を追加します。

    • [プロンプトを送信] はプロンプトを送信して RAG スペースを照会し AI が生成した応答を取得します。

    • [データを取り除く] は RAG スペースからドキュメントを取り除きます。

[処理:] が [データを追加] の場合にのみ使用できるオプション:

  • [RAG データ] では RAG スペースに追加するドキュメントを指定します:

    • [テキストから] はテキスト式で直接テキストを追加します。

    • [ファイルから] はパス付きの PDF ファイルを追加し、同期転送します。

    • [ファイルから (Async)] はパス付きの PDF ファイルを追加し、非同期転送します (ファイルの容量が大きい場合に最適です)。

    • [オブジェクトフィールドから] はオブジェクトフィールドから PDF ファイルを追加し、同期転送します。

    • [オブジェクトフィールドから (Async)] はオブジェクトフィールドから PDF ファイルを追加し、非同期転送します (ファイルの容量が大きい場合に最適です)。

  • [入力ファイル] では PDF ファイルの 1 つまたは複数のパスの一覧を指定します。スクリプトステップは一覧を検索して最初に見つけた PDF ファイルを追加します。パスには image パス接頭語のいずれかを使用する必要があります。ファイルパスの作成を参照してください。

  • [オブジェクトフィールド] では追加する PDF ファイルを保存するオブジェクトフィールドを指定します。

[処理:] が [プロンプトを送信] の場合にのみ使用できるオプション:

  • [プロンプトを送信] の値には、自然言語のユーザプロンプトまたは質問のテキスト式を指定します。

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

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

  • [ストリーム] では応答する方法を制御します:

    • オン: 応答は (単語ごとまたは一定のフレーズで) 段階的に取得および送信されます。これを指定すると FileMaker クライアントの応答性が向上したように感じます。

    • オフ: 応答全体を取得してから表示します。これを指定すると完全な応答を待っている間は FileMaker クライアントが応答していないように見える場合があります。

  • [プロンプトテンプレート名:] では [プロンプトテンプレートを構成] スクリプトステップを使用して構成されたカスタムプロンプトテンプレートの名前を指定します。このオプションを使用すると AI モデルから最適な応答を得るための追加のプロンプトを設計できます。

  • [応答のターゲット:] ではモデルからの応答を保存するフィールドまたは変数を指定します。

  • [引数:] ではモデルプロバイダがサポートする追加の引数のキーと値のペアで構成される JSON オブジェクトのテキスト式を指定します。例: {"temperature": 0.7, "seed": 42}。サポートされている引数のキー名とその有効な範囲については、モデルプロバイダのマニュアルを参照してください。

    context_prompt キーはメインのプロンプトの前にモデルに追加の命令やコンテキストを加える特別な引数です。例: {"context_prompt": "Treat 'today' as 2025/08/25"}.

[処理:] が [データを取り除く] の場合にのみ使用できるオプション:

  • [引数] では id キーを含む JSON オブジェクトのテキスト式を指定します。その値は指定した RAG スペースから取り除かれるドキュメントの ID の配列です。例、{"id" : [2, 3, 5, 7]}。RAG スペース内のすべてのドキュメントの ID を取得するには、GetRAGSpaceInfo 関数を使用します。例 3 を参照してください。

互換性 

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

起点バージョン 

22.0

説明 

このスクリプトステップでは FileMaker Server に付属の AI モデルサーバー上でドキュメント (テキストデータおよび PDF ファイル) の知識キャッシュを作成して管理できます。その後は検索拡張生成 (RAG) と呼ばれる技術でこのキャッシュを活用できます。この技術を使用して、スクリプトステップは知識キャッシュから取得した最も関連性の高い事実とともに AI モデルにプロンプトまたは質問を送信し、モデルからの応答の信頼性と正確性を向上させます。

[処理:] オプションでこのスクリプトステップが何をするかを決定します:

処理 機能

データを追加

指定した次のドキュメントから RAG データを追加します: テキスト (任意のテキスト式)、パスで指定した PDF ファイル、または現在のレコードか関連レコードのオブジェクトフィールドの PDF ファイル。プロセスは次の手順に従います:

  1. スクリプトステップがドキュメントを AI モデルサーバーに送信します。

    PDF ファイルを追加する場合、スクリプトステップは [RAG データ] オプションに応じて、ファイルを同期または非同期送信します。同期送信の場合、ファイル転送が完了するまでスクリプトは次のステップに進みません。非同期送信の場合、ファイル転送の進行中にスクリプトは次のステップに進み (ファイルの容量が大きい場合に最適です)、FileMaker クライアントがユーザの操作に対して応答を続けることができます。

  2. AI モデルサーバーがドキュメントに ID を割り当てます。PDF ファイルの場合、PDF ファイルからテキストのみを抽出します。テキストドキュメントの場合、テキストドキュメントをチャンクに分割します。次に、サーバー上の RAG 用に構成されたテキスト埋め込みモデルを使用してすべてのチャンクの埋め込みベクトルを取得します。

プロンプトを送信

ユーザプロンプトを AI モデルサーバーに送信して指定した RAG スペースから最も関連性の高いデータを取得し、次にプロンプトテンプレートおよび RAG の内容とともにユーザプロンプトを AI モデルに送信します。プロセスは次の手順に従います:

  1. スクリプトステップは [プロンプトを送信:] で指定したプロンプトと [スペース ID] を [RAG アカウント名:] で指定した AI モデルサーバーに送信します。

  2. AI モデルサーバーがプロンプトの埋め込みベクトルを取得し、指定した RAG スペースでプロンプトのセマンティック検索を実行してから、RAG の結果をスクリプトステップに返します。

    RAG の結果はテキストで RAG スペースから最も関連性の高いドキュメントチャンクの上位 N 個です (N は FileMaker Server Admin Console で設定できます)。

  3. スクリプトステップがプロンプト、プロンプトテンプレート、モデルのパラメータ、および RAG の結果を [AI アカウント名:] および [モデル:] で指定したモデルに送信します。

  4. モデルはスクリプトステップが [応答のターゲット] に保存する応答を返します。

データを取り除く

RAG スペースからドキュメントを取り除きます。[引数:] オプションで指定している場合、指定したドキュメントのみが取り除かれます。指定していない場合、RAG スペース内のすべてのドキュメントが取り除かれます。

メモ  RAG スペースからドキュメントを取り除くと元に戻すことはできません。再度追加する必要がある場合に備えて必ず元のドキュメントを他の場所に保管しておいてください。

メモ 

  • このスクリプトステップを使用する前に [RAG アカウント設定] スクリプトステップを使用して RAG アカウントを設定する必要があります。

  • [プロンプトを送信] 処理の場合、AI アカウントも [AI アカウント設定] スクリプトステップを使用して設定する必要があります。

  • 暗号化またはパスワードで保護された PDF ファイルは [データを追加] では処理できません。

  • RAG スペースは永続的であり、[データを取り除く] 処理を使用して明示的に取り除かれるまでドキュメントを保持します。

  • すでに RAG スペースにあるファイルと同じファイル名の PDF ファイルを追加した場合、既存の PDF ファイルが取り除かれて新しいドキュメント ID を持つ新しい PDF ファイルが追加されます。この動作は PDF ファイルをパスで追加する場合も、オブジェクトフィールドから追加する場合も同じです。

  • [プロンプトテンプレート名:] を指定した場合、このスクリプトステップは [プロンプトテンプレートを構成] スクリプトステップで設定したテンプレートを使用します。プロンプトテンプレートでは :question: ([プロンプトを送信:] の値で置換) および :context: ([引数:] の context_prompt 引数で置換) などの定数を使用できます。

  • AI の応答の品質はモデルおよび RAG スペースに追加されたドキュメントの関連性や品質により変化します。

  • FileMaker WebDirect では、このスクリプトステップが [データを追加] 処理を使用し [RAG データ] が [ファイルから] または [ファイルから (Async)] の場合、ユーザがアップロードする PDF ファイルを選択できるように [挿入] ダイアログボックスが開き、[入力ファイル] オプションは無視されます。

例 1 - RAG スペースへのテキスト追加

顧客のナレッジベースの RAG スペースにテキスト内容を追加します。

コピー
RAG アカウント設定 [RAG アカウント名: "customer-support-rag-account" ; エンドポイント: "https://myserver.example.com/llm/v1/" ; API キー: "eyJh..." ; SSL 証明書の検証]

RAG 処理を実行 [RAG アカウント名: "customer-support-rag-account" ; スペース ID: "knowledge-base" ; 処理: データを追加 ; RAG データ: テキストから ; "返品と交換を処理するためのカスタマサポートのポリシーおよび手順..."]

例 2- RAG スペースを照会するプロンプトの送信

例 1 と同じ RAG スペースを照会するプロンプトを送信して応答をフィールドに保存します。

スクリプトは RAG アカウントと AI アカウントの両方を設定して FileMaker Server に付属の AI モデルサーバーを使用します。プロンプトを送信すると、スクリプトが応答生成のためのカスタムパラメータをモデルに送信して応答をフィールドにストリーミングします。

コピー
RAG アカウント設定 [RAG アカウント名: "customer-support-rag-account" ; エンドポイント: "https://myserver.example.com/llm/v1/" ; API キー: グローバル::RAG API キー ; SSL 証明書の検証]

AI アカウント設定 [アカウント名: "AI_Model_Server" ; モデルプロバイダ: カスタム ; エンドポイント: "https://myserver.example.com/llm/v1/" ; API キー: グローバル::テキスト生成 API キー ; SSL 証明書の検証]

RAG 処理を実行 [RAG アカウント名: "customer-support-rag" ; スペース ID: "knowledge-base" ; 処理: プロンプトを送信 ; "不良品の返品ポリシーは?"; AI アカウント名: "AI_Model_Server" ; モデル: グローバル::モデル名 ; ストリーム: オン ; 応答のターゲット: カスタマサポート::AI 応答 ; 引数: "{\"temperature\": 0.3, \"max_tokens\": 500}"]

「カスタマサポート::AI 応答」フィールドの結果は「不良品の返品ポリシーにより、14 日以内に商品を返品することができます。」などで始まります。

例 3 - RAG スペースから PDF ファイルを追加および取り除く

「Policies.pdf」という名前の PDF ファイルを RAG スペースに追加してから取り除きます。

AI モデルサーバーで使用する RAG アカウントを設定した後、スクリプトはファイルパスを指定して「Policies.pdf」ファイルを RAG スペースに追加します。

ファイルを取り除く前に、スクリプトはファイルを追加したときに割り当てられたドキュメント ID を見つける必要があります。まず、スクリプトは GetRAGSpaceInfo 関数を使用して RAG スペースに関する情報を取得します。次に $id 変数で、values 配列を取得してから While ループを使用して filename キーが「Policies.pdf」である要素を見つけ、その要素の id の値を返します。

$idArrayToRemove を必要な JSON に設定して $id を指定した後、スクリプトは [RAG 処理を実行] を呼び出して [引数:] オプションを $idArrayToRemove に設定することでデータを取り除きます。

コピー
RAG アカウント設定 [RAG アカウント名: "customer-support-rag-account" ; エンドポイント: "https://myserver.example.com/llm/v1/" ; API キー: グローバル::RAG API キー ; SSL 証明書の検証]

RAG 処理を実行 [RAG アカウント名: "customer-support-rag-account" ; スペース ID: "knowledge-base" ; 処理: データを追加 ; RAG データ: ファイルから ; "Policies.pdf"]

変数を設定 [$ragSpaceInfo ; 値: GetRAGSpaceInfo ("customer-support-rag-account" ; "knowledge-base")]

変数を設定 [$id ; 値: 
  Let ([
    json = $ragSpaceInfo ;
    values = JSONGetElement (json ; "values") ;
    arrayCount = ValueCount (JSONListKeys (values ; "")) ;
    
    search = While (
      [i = 0 ; result = ""] ; 
      
      i < arrayCount and IsEmpty (result) ; 
      
      [ 
        filename = JSONGetElement (values ; "[" & i & "].filename") ;
        result = Case (
          filename = "Policies.pdf" ; 
          JSONGetElement (values ; "[" & i & "].id") ; 
          ""
        ) ;
        i = i + 1
      ] ; 
      
      result
    )
  ] ;

  search
  )
]

変数を設定 [$idArrayToRemove ; 値: "{\"id\": [" & $id & "]}"]

RAG 処理を実行 [RAG アカウント名: "customer-support-rag-account" ; スペース ID: "knowledge-base" ; 処理: データを取り除く ; 引数: $idArrayToRemove]