注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Palantir 提供の言語モデルを使用するには、まず ユーザーのエンロールメントで AIP を有効にする 必要があります。また、AIP 開発者の機能 を使用するための権限も必要です。カスタムモデルを使用していますか?その場合は、カスタムモデルを使用してセマンティック検索ワークフローを作成する をご覧ください。
このページでは、Palantir 提供の埋め込みモデル を使用して概念的なエンドツーエンドのセマンティック検索ワークフローを構築するプロセスを説明します。
始めるには、まず、埋め込みを生成し、それらを vector
タイプ のオブジェクトタイプに格納する必要があります。その後、Workshop でセマンティック検索ワークフローを設定したり、AIP Interactive Workshop ウィジェット のソリューションを構築したり、Workshop および AIP Logic で使用するカスタムセマンティック検索関数を作成することができます。
前提条件:
オプション:
データセットのテキストをベクトルとして埋め込むために Pipeline Builder を使用します。Text to Embeddings 式 は、文字列を Palantir 提供のモデルのいずれかを使用してベクトルに変換します - 今回のケースでは text-embedding-ada-002
埋め込みモデルを使用します。
これらの埋め込みは、ベクトルプロパティとしてオントロジーに追加することができます。
Palantir 提供のモデルを使用して埋め込みを生成する際に、より細かな制御を行いたい場合は、Python Transforms 内の言語モデル を参照してください。
Workshop 内で KNN オブジェクトセット を設定することは、セマンティック検索ワークフローを構築する簡単なコードなしの方法です。
+ On a property
オプションを選択し、メニューのプロパティ一覧から埋め込みプロパティを選択します。このパネルでは、以下を設定できます。
よりカスタマイズされたセマンティック検索ロジックについては、関数に関するセクション を参照してください。
AIP Interactive Widget は、オブジェクト全体でセマンティック検索を始めるのに役立つツールであり、コードは必要ありません。より制御力を持ってセマンティック検索を組み込む方法については、機能性をより制御してセマンティック検索を組み込む を参照してください。
まず、AIP Interactive Widget を Workshop モジュールに追加します。
スタートポイントとして、次のようなプロンプトを追加することを検討してみてください。「ユーザーの仕事は、顧客請求書のセマンティック検索ツールを使用してユーザーの質問に答えることです。」以下の画像のように「Add tools」オプションを使用して オントロジーセマンティック検索 ツールを追加します。
この初期設定により、Interactive ウィジェットにオブジェクトのセマンティック検索を依頼することができます。その他の設定オプションについては、AIP Interactive ウィジェット内のツール の追加ドキュメンテーションを参照してください。
typescript リポジトリを作成して、オブジェクトタイプをクエリする関数を作成できます。全体的な目標は、ユーザーの入力を取得し、以前に使用した 同じ Palantir 提供のモデルを使用してベクトルを生成し、その後、オブジェクトタイプ全体で KNN 検索 を行うことです。Palantir 提供のモデルをどのようにインポートするかについての詳細情報は、関数内の言語モデル を参照してください。
以下のコードスニペットでは、ObjectApiName
のすべてのインスタンスをユニークな ObjectType に置き換えてください。識別子は場合によっては objectApiName
という形で最初の文字が小文字になることがあります。
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 内のどこでも関数を使用できるように、関数を公開することを忘れずに行ってください。
kValue
を返される結果の数に設定し、指定された制限に従ってください。公開された関数を AIP Logic 内のツールとして追加します。以下のようなプロンプトで言語モデルにツールを使用するよう指示します:
fetchRelevantObjects ツールを kValue が 5 の状態で使用して、最も関連性の高いオブジェクトを見つけてください。ツールを使用する際には、クエリの周りに引用符を忘れずに追加してください。