注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Palantir 提供のモデルを使用してセマンティック検索ワークフローを作成する

Palantir 提供の言語モデルを使用するには、まず ユーザーのエンロールメントで AIP を有効にする 必要があります。また、AIP 開発者の機能 を使用するための権限も必要です。カスタムモデルを使用していますか?その場合は、カスタムモデルを使用してセマンティック検索ワークフローを作成する をご覧ください。

このページでは、Palantir 提供の埋め込みモデル を使用して概念的なエンドツーエンドのセマンティック検索ワークフローを構築するプロセスを説明します。

手順

始めるには、まず、埋め込みを生成し、それらを vector タイプ のオブジェクトタイプに格納する必要があります。その後、Workshop でセマンティック検索ワークフローを設定したり、AIP Interactive Workshop ウィジェット のソリューションを構築したり、Workshop および AIP Logic で使用するカスタムセマンティック検索関数を作成することができます。

前提条件:

オプション:

埋め込みを生成し、オブジェクトタイプを作成する

データセットのテキストをベクトルとして埋め込むために Pipeline Builder を使用します。Text to Embeddings は、文字列を Palantir 提供のモデルのいずれかを使用してベクトルに変換します - 今回のケースでは text-embedding-ada-002 埋め込みモデルを使用します。

Text to Embedding

これらの埋め込みは、ベクトルプロパティとしてオントロジーに追加することができます。

Pipeline Builder 出力オブジェクトプロパティのベクトルプロパティ設定

Palantir 提供のモデルを使用して埋め込みを生成する際に、より細かな制御を行いたい場合は、Python Transforms 内の言語モデル を参照してください。

Workshop 内で KNN オブジェクトセットを使用してシンプルなセマンティック検索ワークフローを作成する (コードなし)

Workshop 内で KNN オブジェクトセット を設定することは、セマンティック検索ワークフローを構築する簡単なコードなしの方法です。

  1. オブジェクトセット 変数 を作成し、埋め込みプロパティを含むオブジェクトタイプを選択します。
  2. フィルターの + On a property オプションを選択し、メニューのプロパティ一覧から埋め込みプロパティを選択します。
  3. 選択すると、K-最近傍設定が表示されます。この設定が表示されない場合は、選択したプロパティが埋め込みプロパティであることを確認してください。

Workshop KNN 設定

このパネルでは、以下を設定できます。

  • K-値: セマンティック検索で返すオブジェクトの数を 1-100 の範囲で設定します。
  • クエリ: セマンティック検索を実行する際に使用する文字列変数。
  1. 次に、文字列セレクタ ウィジェットを作成し、その出力変数を上記の KNN クエリオプションに追加します。
  2. 最後に、オブジェクトテーブル ウィジェットを追加し、その入力変数を新しく作成した KNN オブジェクトセット に設定します。

Workshop KNN セマンティック検索

よりカスタマイズされたセマンティック検索ロジックについては、関数に関するセクション を参照してください。

AIP Interactive ウィジェットを使用する (コードなし)

AIP Interactive Widget は、オブジェクト全体でセマンティック検索を始めるのに役立つツールであり、コードは必要ありません。より制御力を持ってセマンティック検索を組み込む方法については、機能性をより制御してセマンティック検索を組み込む を参照してください。

まず、AIP Interactive WidgetWorkshop モジュールに追加します。

AIP Interactive ウィジェットの初期ビュー

スタートポイントとして、次のようなプロンプトを追加することを検討してみてください。「ユーザーの仕事は、顧客請求書のセマンティック検索ツールを使用してユーザーの質問に答えることです。」以下の画像のように「Add tools」オプションを使用して オントロジーセマンティック検索 ツールを追加します。

AIP Interactive ウィジェットのセマンティック検索ツール設定

この初期設定により、Interactive ウィジェットにオブジェクトのセマンティック検索を依頼することができます。その他の設定オプションについては、AIP Interactive ウィジェット内のツール の追加ドキュメンテーションを参照してください。

Workshop または AIP Logic で使用する関数を作成する

typescript リポジトリを作成して、オブジェクトタイプをクエリする関数を作成できます。全体的な目標は、ユーザーの入力を取得し、以前に使用した 同じ Palantir 提供のモデルを使用してベクトルを生成し、その後、オブジェクトタイプ全体で KNN 検索 を行うことです。Palantir 提供のモデルをどのようにインポートするかについての詳細情報は、関数内の言語モデル を参照してください。

置換

以下のコードスニペットでは、ObjectApiName のすべてのインスタンスをユニークな ObjectType に置き換えてください。識別子は場合によっては objectApiName という形で最初の文字が小文字になることがあります。

functions-typescript/src/index.ts

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 // 必要なライブラリをインポートします import { Function, Integer } from "@foundry/functions-api"; import { Objects, ObjectApiName } from "@foundry/ontology-api"; import { TextEmbeddingAda_002 } from "@foundry/models-api/language-models" // MyFunctionsクラスを定義します export class MyFunctions { // findRelevantObjects関数を定義します。この関数はクエリとkValueを引数として受け取り、最も関連性の高いオブジェクトを返します。 @Function() public async findRelevantObjects( query: string, // 検索クエリ kValue: Integer, // 返すオブジェクトの数 ): Promise<ObjectApiName[]> { // クエリが空の場合、空の配列を返します if (query.length < 1) { return [] } // 入力クエリからembeddingを生成します const embedding = await TextEmbeddingAda_002.createEmbeddings({inputs: [query]}).then(r => r.embeddings[0]); // embeddingに最も近いオブジェクトを検索し、そのリストを返します return Objects.search() .objectApiName() .nearestNeighbors(obj => obj.embeddings.near(embedding, {kValue: kValue})) .orderByRelevance() .take(kValue); } }

この段階で、自然言語を使ってオブジェクトをクエリするセマンティック検索を実行できる関数ができました。Foundry 内のどこでも関数を使用できるように、関数を公開することを忘れずに行ってください。

Workshop でセマンティック検索関数を使用する

  1. まず、Workshop アプリケーションを作成することから始めます。
  2. テキスト入力ウィジェットを追加し、公開された KNN ドキュメントフェッチ関数の入力として使用します。
  3. 入力関数から生成されたオブジェクトセットと、以下に示すように選択された入力を持つオブジェクトリストウィジェットを追加します:
オブジェクトセットを生成する KNN 関数
  1. kValue を返される結果の数に設定し、指定された制限に従ってください。

AIP Logic でセマンティック検索関数を使用する

公開された関数を AIP Logic 内のツールとして追加します。以下のようなプロンプトで言語モデルにツールを使用するよう指示します:

fetchRelevantObjects ツールを kValue が 5 の状態で使用して、最も関連性の高いオブジェクトを見つけてください。ツールを使用する際には、クエリの周りに引用符を忘れずに追加してください。