各foundation modelには最大コンテキスト長があり、これは入力で許可されるトークンの最大数とプロンプトに対して生成される出力の合計です。 foundation modelを使用してタスクを完了するときにこの制限に頻繁に遭遇する場合は、次のいずれかの回避策を試してください。
最大コンテキスト長は、foundation modelに応じて 4,096 トークンから 131,072 トークンまで変化します。 コンテキストの長さの制限は、特に検索強化型生成、要約、または会話タスクにfoundation modelを使用する場合に問題になる可能性があります。
次の手法は、モデルのコンテキスト ウィンドウ制限を超えずにタスクを完了するために必要なコンテキストをfoundation modelに提供するのに役立ちます。
RAGインプットで送信するトークンの数を減らす
検索拡張生成 (RAG) は、foundation modelを外部ソースからの知識で拡張してテキストを生成する手法です。 検索ステップでは、ユーザーのクエリから、外部ソースからの関連文書が特定される。 生成ステップでは、それらのドキュメントの一部がfoundation modelプロンプトに含められ、取得されたドキュメントに基づいた応答が生成されます。
基礎情報が多すぎるプロンプトを送信すると、入力がfoundation modelのコンテキスト ウィンドウの制限を超える可能性があります。 この制限を回避するために、以下のテクニックを試してみてください。
RAGの詳細については、検索補強世代(RAG)を参照。
関連性によってコンテンツを分類する
コンテンツを分類するのに適したfoundation modelを使用して、ドキュメントがプロンプトに含まれる前に、そのドキュメントが質問に効果的に回答できるかどうかをまず判断します。
例えば、For each question and sample document, check whether the document contains the information that is required to answer the question. If the sample document appears to contain information that is useful for answering the question, respond 'Yes'. Otherwise, respond 'No'.
のようなプロンプトを使うことができる
Max tokens パラメータを1に設定すると、モデルはYesかNoの答えを返しやすくなります。
この分類法を用いて、検索によって取得された無関係な文書や文章を見つけ出し、削除する。 次に、関連するコンテンツを再結合して、foundation modelプロンプトの質問に送信します。
長い文書を要約する
長いドキュメントの場合は、foundation modelを使用してドキュメントのセクションを要約します。 その後、ドキュメント全体をfoundation modelに渡す代わりに、それらの要約の要約を送信できます。
例えば、1つの長い会議の記録から有用な要約を作成するには、記録を多くの小さな塊に分割し、それぞれを別々に要約することができる。 あるいは、さまざまなスピーカーが寄稿したセグメントを検索して抽出することもできる。 次に、foundation modelに送信するプロンプトのコンテキストとして、要約を連結することができます。
コンテンツからテキスト埋め込みを生成する
テキスト埋め込みとは、単語や文などの情報の単位を、実数値のベクトルとして数値表現したものである。
RAGのユースケースでテキスト埋め込みを活用するには、以下のステップを完了する:
テキスト分割ツールを使って、コンテンツを意味のあるセグメントに分割する。
たとえば、再帰的な文字分割器を使用して、ドキュメントをfoundation modelによって設定された構文と文字数の制限要件を満たすセグメントに分割できます。 LangChain:文字ごとに再帰的に分割を参照してください。
埋め込みモデルを使用して、文書チャンクを文書セグメントの意味を捉えるベクトルに変換する。
ドキュメントセグメントを表すベクトルをベクトルデータベースに保存します。
実行時に、キーワードまたは検索クエリを使用してベクター ストアを検索し、foundation modelにフィードする最も関連性の高いドキュメント セグメントを取得します。
テキストを埋め込みに変換すると、モデルが事実に基づいた回答を返すのに役立つ基礎情報が削除されることなく、foundation modelプロンプトのサイズが縮小されます。
IBM 埋め込みモデルをテキスト変換に使用する方法の詳細については、Using vectorized text with retrieval-augmented generation tasks を参照してください。
複雑なタスクの分割と克服
異なるタイプの入力が予想され、異なる方法で処理する必要がある複雑なユースケースの場合は、マルチプロンプト・アプローチを適用する。
1つの入力タイプで最適な効果が得られるように、それぞれ複数の的を絞ったプロンプトを作成する。
例えば、顧客からの質問を次のタイプに分類することができます:サポート問題、販売に関する問い合わせ、製品詳細に関する問い合わせ。
foundation modelを使用して、受信入力を定義済みの入力タイプの 1 つとして分類します。
入力タイプに基づいて、適切なターゲットプロンプトに入力をルーティングする。
例えば、製品詳細の問い合わせでは、ウェブサイトやその他のマーケティングコンテンツを検索し、プロンプトに概要を含めることができます。 サポートに関する問題については、トラブルシューティングのナレッジベースを検索し、回避策をプロンプトに含めることができます。 また、販売に関する問い合わせには、顧客と販売者を結びつけるかもしれない。
ダイアログのコンテキストを要約する
会話タスクの場合、入力ごとにチャット履歴を保持して再送信するのではなく、foundation modelを使用して以前のダイアログ交換のコンテキストを要約します。 要約を使用すると、会話の以降のターンでfoundation modelに送信されるトークンの数が削減されます。
モデルをプロンプトチューニングすることで、プロンプトトークン数を減らす
foundation modelを調整することで、プロンプトに含める複雑な指示や例で使用される可能性のあるトークンを解放します。
foundation modelを調整するときは、送信する入力の種類に応じて、出力で何を返すかをモデルに示します。 チューニングされたモデルにゼロショットのプロンプトを送信しても、期待通りの出力を得ることができる。
モデルのチューニングは、分類、要約、抽出タスクに有効である。 foundation modelの出力に事実情報を含める必要がある場合、チューニングは最適なソリューションではありません。
詳細については、 foundation modelのチューニング」を参照してください。
詳細情報
保護者の話題: プロンプトのヒント