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

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

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

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

手順

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

前提条件:

オプション:

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

Pipeline Builderを使用して、Text to Embeddingsでデータセット内のテキストをベクターとして埋め込みます。この式は文字列を取り、Palantir提供のモデルの1つを使用してベクターに変換します。ここではtext-embedding-ada-002埋め込みモデルを使用します。

Text to Embedding

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

Configuring a vector property in a Pipeline Builder output object property

Palantir提供のモデルを使用して埋め込みを生成する際にさらに制御を行いたい場合は、Pythonトランスフォーム内の言語モデルを参照してください。

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

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

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

Workshop KNN config

このパネル内で次の設定を行うことができます:

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

Workshop KNN semantic search

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

AIPエージェントを使用する(コード不要)

AIP Agent Studioで作成されたAIPエージェントは、コード不要でオブジェクトをセマンティック検索を開始するのに適しています。機能性に対する制御をさらに強化したセマンティック検索の統合について学びましょう。

AIPエージェントの作成ガイドに従い、AIPエージェントを作成し、オントロジーコンテキストまたはオントロジーセマンティック検索ツールを追加します。この初期設定により、AIPエージェントにオブジェクトをセマンティック検索するように依頼することができます。

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

typescriptリポジトリを作成し、オブジェクトタイプをクエリする関数を作成できます。全体の目標は、ユーザーの入力を取得し、前述のPalantir提供のモデルを使用してベクターを生成し、オブジェクトタイプに対してKNN検索を行うことです。Palantir提供のモデルのインポート方法については、Functions内の言語モデルを参照してください。

置換

以下のコードスニペットでは、ObjectApiNameのすべてのインスタンスをユーザーのユニークなObjectTypeに置き換えてください。識別子は時々小文字のobjectApiNameとして表示される場合があります。

関数のベクタープロパティを有効にする

続行する前に、Functionsコードリポジトリのfunctions.jsonファイルに"enableVectorProperties": trueエントリが存在することを確認してください。このエントリが存在しない場合は、functions.jsonに追加し、変更をコミットして続行します。さらなる支援が必要な場合は、Palantirの担当者に連絡してください。

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 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メソッドに@Functionデコレータを付与 @Function() public async findRelevantObjects( query: string, // クエリ文字列 kValue: Integer, // 取得するオブジェクトの数 ): Promise<ObjectApiName[]> { // ObjectApiNameの配列をPromiseで返す // クエリが空の場合は空の配列を返す if (query.length < 1) { return [] } // テキスト埋め込みを生成 const embedding = await TextEmbeddingAda_002.createEmbeddings({inputs: [query]}).then(r => r.embeddings[0]); // オブジェクトを検索し、埋め込みベクトルが近いものを取得 return Objects.search() .objectApiName() // オブジェクトのAPI名で検索 .nearestNeighbors(obj => obj.embeddings.near(embedding, {kValue: kValue})) // kValue個の近傍オブジェクトを取得 .orderByRelevance() // 関連度で並び替え .take(kValue); // kValue個のオブジェクトを取得 } }

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

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

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

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

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

fetchRelevantObjectsツールをkValueを5に設定して使用し、最も関連性の高いオブジェクトを見つけます。ツールを使用する際にはクエリを引用符で囲むことを忘れないでください。