検索プロンプト
適切にスコープ設定され、適切に取り込まれたナレッジベースは、信頼性の高い検索に必要ですが、それだけでは十分ではありません。 プロダクションで検索が正しく機能するかどうかを決定する3つ目の要素は、Genieにその使用方法をどのように指示するかです。 不適切に記述された検索指示では、次の3つの特定の障害モードが発生します:
- 誤ったナレッジベースの検索
- 同じナレッジベースの複数回検索
- 質問に対して範囲が広すぎるナレッジベースからの関連性のないフラグメントの取得
このページでは、これらすべての障害モードを防ぐ方法について説明します。
障害モード
最も一般的な障害モードには、次のものがあります:
誤ったナレッジベースが検索される: Genieに複数のナレッジベースが接続されており、質問に対して誤ったナレッジベースを検索します。 休暇ポリシーについて質問した従業員によって、競合インテリジェンスナレッジベースの検索がトリガーされます。 競合ポジショニングについて質問した営業担当者によって、HRポリシーナレッジベースの検索がトリガーされます。 取得されたフラグメントは関連性がなく、回答が誤っているか、欠落しています。
ナレッジベースループ: Genieがナレッジベースを検索し、十分な回答を見つけられず、再度検索します。 検索するたびにコンテキストウィンドウの容量が消費され、レイテンシが増加します。 繰り返し検索しても、最初の検索より良い回答が生成されることはほとんどありませんが、検索によって会話エクスペリエンスが低下し、Genieアクションが無駄になります。
検索トークンの浪費: Genieが大規模で広範なナレッジベースを検索し、関連性が低い大きなフラグメントを複数取得します。 これらのフラグメントは、Genieが応答を作成する前にコンテキストウィンドウの大部分を消費し、会話履歴、スキル出力、および応答自体に使える容量が少なくなります。
各障害モードには、プロンプトで対処できる特定の修正方法があります。
ユースケースカテゴリごとにナレッジベースを名前で指定する
誤ったナレッジベースが検索されるのを防ぐ最も信頼性の高い方法は、各ユースケースカテゴリについて検索するナレッジベースをジョブ説明でGenieに正確に指示することです。 説明だけをもとに、関連するナレッジベースをGenieに推測させないでください。 明示的に指定します。
指示では、ナレッジベースの説明や名前の言い換えではなく、ナレッジベースの正確な名前を使用する必要があります。 正確な名前の一致により、Genieは正しいナレッジベースを識別します。
ナレッジベース検索
ポリシーに関する質問の場合:検索するのは
"HR Policies | HR Assistant"のみです。
他のナレッジベースは検索しないでください。
競合に関する質問の場合:検索するのは
"Highspot | Sales Competitive Intelligence"
のみです。他のナレッジベースは検索しないでください。
休暇申請の場合:
ナレッジベースは検索しないでください。
スキルのみを使用します。
その他すべてのユースケースカテゴリの場合:
上記のカテゴリ指示で明示的に
指示されていない限り、ナレッジベースは
検索しないでください。do not search any other knowledge base句は重要です。 この指示がない場合、Genieは使用すべきナレッジベースが不明なときに複数のナレッジベースを並行して検索し、検索ノイズを生成する可能性があります。
スキルに適したユースケースに対するdo not search any knowledge base指示により、Genieがスキルを使用すべき構造化データの質問に対して、ナレッジベースから回答しようとするのを防ぎます。
ループを防ぐための呼び出し制限を実装する
ナレッジベースループは、明示的な呼び出し制限指示によって防止されます。 最も信頼性の高い形式では、質問ごとに厳格な制限を指定します:
各ナレッジベースは、
ユーザーの質問ごとに1回だけ
呼び出します。最初の検索で
関連する回答が返されない場合は、
再検索しないでください。
代わりに、その情報がないことを
ユーザーに伝え、
[relevant team or resource]に直接
連絡するよう提案してください。この指示には2つの役割があります:
- 呼び出し制限を1回に設定する
- 制限に達したときの対応を指定する
指示の2番目の部分がない場合、Genieは呼び出し制限に従っても、ナレッジベースに回答がないときに役に立たない応答を生成する可能性があります。
App EventのBusiness Dataプロンプトでは、Genieが特定のイベントタイプを処理し、その処理の一部としてナレッジベースを検索する必要がある場合があります。この場合、呼び出し制限指示はプロンプトの上部付近にCritical Instructionとして記載する必要があります:
重要な指示:このプロセス全体で
ナレッジベースを呼び出せるのは1回だけです。
開始時にこれをkb_called =
falseとして追跡します。最初の呼び出し後に
kb_called = trueに設定します。
最初の呼び出しで何が返されても、
2回目のナレッジベース呼び出しは絶対に
行わないでください。明示的な状態追跡指示kb_called = false / trueは、単純なcall only once指示よりも呼び出し制限への遵守の信頼性を高めます。 これにより、LLMは適用する制約について具体的なメンタルモデルを持てます。
大規模なナレッジベースを分割し、関連性に基づいて参照する
ナレッジベースが大規模になると、最初からスコープが広すぎた場合でも、時間の経過とともにコンテンツが追加された場合でも、検索品質が低下します。 大規模なナレッジベースでは、関連性のあるフラグメントと競合する関連性のないフラグメントが増えます。
解決策は、大規模なナレッジベースをより小さく、より焦点を絞ったナレッジベースに分割し、質問の種類ごとに関連するナレッジベースのみを参照することです。
分割前:
休暇ポリシー、福利厚生情報、オンボーディング資料、パフォーマンス管理ガイドライン、および懲戒手順を含む、1つの大規模なHR | HR Assistantナレッジベース。 GenieはHRに関するあらゆる質問についてこのナレッジベースを検索し、これらの領域のいずれかからフラグメントを取得する可能性があります。
分割後:
HR Leave Policies | HR Assistant: 休暇ポリシー、資格、および発生ルールのみHR Benefits | HR Assistant: 福利厚生情報のみHR Onboarding | HR Assistant: オンボーディング資料のみ
ジョブ説明では、それぞれを具体的に参照します:
休暇ポリシーに関する質問の場合:検索するのは
"HR Leave Policies | HR Assistant"
福利厚生に関する質問の場合:検索するのは
"HR Benefits | HR Assistant"
オンボーディングに関する質問の場合:検索するのは
"HR Onboarding | HR Assistant"この分割による検索品質の向上は大きなものです。 休暇ポリシーに関する質問では、休暇ポリシーコンテンツのみを含むナレッジベースが検索されるようになります。 そのナレッジベース内のすべてのフラグメントは、休暇ポリシーの何らかの側面に関連しています。 セマンティック類似度スコアが高くなり、取得されるフラグメントの焦点がより絞られ、LLMがより正確な回答を生成します。
トークン利用状況の削減にも意味があります。 より関連性の高いコンテンツを持つ小規模なナレッジベースでは、検索ごとのフラグメントの数が少なく短くなり、会話履歴、スキル出力、および応答に使える容量が増えます。
ナレッジベースループ
ナレッジベースループは、多くの場合、Genieが十分な回答を見つけられず、異なる結果を期待して再度検索することから始まります。 ベクトル検索には、どのフラグメントが返されるかにランダム性の要素があるため、2回目の試行では異なるフラグメントが返されますが、最初のセットより有用になるわけではありません。
ループを防ぐには、ナレッジベースに回答がないときに何をすべきかをGenieに指示する必要があります:
ナレッジベースにユーザーの質問に
関連する情報が含まれていない場合:
- 再検索しない
- ユーザーに明確に伝える:"私のナレッジベースには
その情報がありません"
- ユーザーが回答を見つけられる場所を提案する:
"[topic]に関する質問については、
[team]に直接お問い合わせいただくか、[resource]を参照してください"
- 一般知識から回答を推測または推論しないdon't guess or infer from general knowledge指示は、ポリシーやコンプライアンスのユースケースでは特に重要です。 ナレッジベースで回答を見つけられないLLMは、トレーニングデータにフォールバックし、もっともらしいが誤った回答を提供する可能性があります。 HRポリシー、法的要件、およびコンプライアンス手順では、誤った回答は回答がないことよりも悪い結果になります。
検索指示とナレッジベース説明のバランスを取る
ジョブ説明の検索指示とナレッジベース説明は連携して機能します。 ナレッジベース説明は、明示的な指示なしに検索するナレッジベースを識別する必要があるときにGenieが読むものです。 ジョブ説明の検索指示は、どの質問タイプにどのナレッジベースを使用するかを明示したいときにGenieが読むものです。
- ナレッジベース説明: Genieがジョブ説明の検索指示で明示的にカバーされていない質問タイプに遭遇したときに、信頼性の高いフォールバックを提供します。
- ジョブ説明の検索指示: 決定論的なナレッジベース選択が必要なユースケースカテゴリでは、ナレッジベース説明からのGenieの推論を上書きします。
主要なユースケースカテゴリで正しいナレッジベース選択を行うために、ナレッジベース説明だけに依存しないでください。 検索が必要なすべてのユースケースカテゴリについて、ジョブ説明で各ナレッジベースを名前で明示的に参照します。 ナレッジベース説明は、ジョブ説明の指示でカバーされないケースを捕捉する二次的なシグナルとして使用します。
App Eventsとジョブ説明における検索指示
ジョブ説明内のナレッジベース検索指示は、すべての会話型インタラクションに適用されます。 App EventのBusiness Dataプロンプト内の検索指示は、その特定のイベントタイプにのみ適用されます。
Genieがナレッジベースを検索する必要があるApp Eventsでは、ジョブ説明に依存するのではなく、Business Event Dataプロンプトに検索指示を直接含める必要があります。 App Eventコンテキスト内のGenieは、直接の会話の場合と同じ忠実度でジョブ説明を確実に読むわけではありません。 Business Event Dataプロンプトは自己完結型である必要があります。
イベントタイプに必要なナレッジベース検索動作は、Business Event Dataプロンプト自体で指定する必要があります:
重要な指示:報告されたチケットに
既存の解決策があるかどうかを特定するために、
"Freshservice IT Genie"ナレッジベースを
正確に1回検索します。
ナレッジベース呼び出しは2回以上行わないでください。
解決策が見つからない場合は、
再検索せずにステップ4へ進みます。検索指示チェックリスト
ナレッジベースを使用するGenieをデプロイする前に、次の点を確認してください:
- Genieに接続されているすべてのナレッジベースが、ジョブ説明の検索指示で正確な名前で参照されている。
- ナレッジベースを検索すべきすべてのユースケースカテゴリに、検索するナレッジベースを指定する明示的な指示がある。
- ナレッジベースを検索すべきでないすべてのユースケースカテゴリに、その旨を示す明示的な指示がある。
- すべてのナレッジベースに対して、質問ごとに1回の呼び出し制限が指定されている。
- ナレッジベースに回答がない場合のフォールバック動作が指定されている。
- 検索品質の低下が確認された大規模なナレッジベースが、より小規模な機能別のナレッジベースに分割されている。
- ナレッジベース検索が必要なApp Eventプロンプトに、自己完結型の検索指示が含まれており、ジョブ説明に依存していない。
Last updated: