今日のRAGソリューションをより深く理解するために、詳細はこちらのRAG Cookbookを参照してください

青い吹き出し、質問マークなど、さまざまな図形やシンボルを持つフローチャート。
概要

回答生成は、対象となる企業データ・ソースまたはテキスト・コーパスから取得した情報を使用して、ユーザーのクエリーに対する応答を作成するRAGソリューションのコンポーネントです。

検討事項

モデル・パラメーター

オープンソースLLMの名前に続く数字は、モデルのパラメーターを示します。例えば、Granite 3.0 8B Instructは、8Bのパラメーターを備えたモデルです。パラメーターは、モデルがインプットデータを操作および理解してアウトプットを生成する方法をオーケストレーションする指揮者と考えることができます。これらは重みやバイアスとして現れ、生成されたアウトプットにおける特定のインプット機能の重要性に影響を与える可能性があります。

パラメーター数が増えると、通常、モデルの複雑さと適応性が向上することになります(ただし、異なるアーキテクチャー間では厳密には真実ではありませんが、Transformerアーキテクチャー内では一般的に当てはまります)。より多くのパラメーター数を持つ大規模言語モデルは、データからより複雑なパターンを識別できるため、より豊富で正確なアウトプットへの道が開かれます。しかし、人生の多くのことと同様に、トレードオフがあります。パラメーターの急増は、計算需要の増加、より多くのメモリー必要性、差し迫ったオーバーフィッティングのリスクを意味します。

モデル・タイプ:インストラクション、コードインストラクション、チャット

チャット・モードは会話型コンテキスト向けに設計されており、指示モードは特定の分野の自然言語処理タスク向けに設計されています。

チャット・モードでファイン・チューニングを行うと、LLMは、ユーザーにとって関連性が高く、自然で一貫性のある応答を生成する上で役立ちます。命令モードでファイン・チューニングすると、LLMがさまざまな種類の指示に従い、タスクに正確で適切なアウトプットを生成する上でより良い仕事をすることができます。

モデル設定

LLMは、応答の生成方法を「構成」するためのいくつかの設定を提供します。

  • 「温度」設定は、モデルの応答にどの程度変動するかを決定します。簡単に言うと、モードの温度が低いほど、モデルの応答は決定的/一貫します。RAGソリューションには、非常に低い温度値(理想的には0)が推奨されます。
  • 「max_tokens / max_new_tokens」は、モデルが応答で使用するトークンの数(単語はほぼ1.5トークンに相当)を制限します。ソリューション開発者は、完全な回答と、ユースケースに対する過剰な情報とのバランスをとる値を見つけるために実験する必要がありますが、Q&A RAGソリューションでは一般的に100が適切な制限です。
  • サンプリング戦略は、モデルが応答内で次のトークンをどのように選択するかを決定します。RAGソリューションでは、貪欲なサンプリング戦略を使用する必要があります。これは、プロンプトに対する一貫した応答を保証します。

プロンプト・エンジニアリング

まず、生成のパフォーマンスを向上させるためのプロンプト・ルールについて検討しましょう。

ルール1:シンプルに始める

非常に長いプロンプトを書くことから始めて、その後にテストを行ってください。

例えば、次のような長いプロンプトを使用しないでください。

-    あなたがS&P 1000の大手エレクトロニクス企業の財務部門で働いているとします。主要なトピック、傾向、感情を特定するために、四半期ごとの株主会議の記録を要約する必要があります。

箇条書きの数値リスト形式で回答してください。

各項目が完全かつ完全な文であることを確認してください。
ハルシネーションを起こさない。トランスクリプトに含まれる情報のみで回答してください。

要約は次のとおりです。

しかし、まずはここから始めましょう:

- 以下の会議記録に含まれる主要なトピックを要約します。

ルール2:差分のみ

モデル・パラメーターに大きな変更を加えないでください。

ほとんどの場合:

  • 温度と繰り返しペナルティーの小さな変化は、顕著な影響を及ぼします。
  • 大きな変更は、小さな変更によって成功した可能性が隠れていることがよくあります。

最良のエンジニアリングの原則を適用します。

  • 一度に変更するパラメーターは1つだけです。各変更を個別に検証してください。
  • 意図した効果を持たない変更を元に戻します。前の値に戻します。
  • デフォルトからの変更には、適切な説明が必要です。

ルール3:クロス検証

プロンプトを壊すようにしてください。プロンプトを一度テストして、成功したと主張しないでください。プロンプトに対して多数のテストを実行します。

  • 顧客より先にプロンプトを壊すようにしてください。

テスト用データセットを構築し、サンプルを追加し続けます。POCのリリースごとに、プロンプトが引き続き機能することを確認するために再テストします。

ルール4:単一のプロンプトでは複雑な抽出は実行できない

心配はいりません。watsonx.aiを使用して複数のプロンプトが並行して処理されます

6つのプロンプトと3つのセクションで構成される財務報告書分析のフローチャート。

ルール5:プロンプトチェーン

タスクをより小さなサブタスクに分割します。

ワイン生産者であるカリフォルニア国への休暇を計画するプロセスを示すフローチャート。

ルール6:タスクのトリアージ(またはプロンプト・アーキテクチャー)

プロセスの各ステップを複数のプロンプトとそれぞれの特殊なモデルに分けます。

ユーザーのリクエストから企業データまで、マルチLLMアシスタントのプロセスを示すフローチャート。

ルール7:granite.13b.chat.v

チャット・モデルでは、指示モデルとは異なるプロンプト設計が必要です。

システム・プロンプトと汎用プロンプトを含む、モデル固有の指示形式の画面。
コンテキスト内学習の汎用プロンプトの画面。
RAGモデル固有のフォーマットを求めるプロンプト。

ルール8:モデルを楽しんで試す

真剣に言えば、私たちは仕事から遊びからも学びます。最新のLLMを試し、通常の業務以外のタスクで挑戦してください。

LLMが達成できそうなものを選択します。

  • 鳥について4文の詩を書いてください。
  • チャットの課題:OK、次は犬について
  • 「みどり」という名前の鳥に関する面白い話を5文以内で教えてください。
  • チャットの課題:鳥の名前をチャーリーに変更し、色青を追加して7文長くしてください。
  • 次の質問にわずか10語で答えてください。「なぜ空は青いのですか?」
  • チャットの課題:いいですね。本当だと思うのに、そうでない理由を教えてください。

マルチレベルのインタラクションを追加して、プロンプトを連鎖させて試します。

システム・プロンプトとユーザー・プロンプト

システム・プロンプトの編集は、ユーザー・プロンプトの編集と同様に重要です。システム・プロンプトは、回答の質、口調などに大きな違いをもたらす可能性があります。システム・プロンプトは対話のコンテキストを設定し、モデルの動作を導き、一貫性を確保します。一方、ユーザー・プロンプトは対話の具体的な内容を決定します。性能を向上させるためには、システム・プロンプトを編集できることが重要です。

システム・プロンプト

システム・プロンプトは、対話全体を通じてAIの動作をガイドする基礎となる指示を提供します。またモデルの役割、トーン、倫理的境界を確立します。区切り文字を使用すると、モデルが向上し、プロンプト・インジェクションを回避できます。区切り文字はプロンプト内のどこにユーザー・インプットを挿入するかを指定し、モデルがユーザー・インプットの開始位置と終了位置を識別できるようにします。区切り文字はプロンプト・インジェクションの回避にも役立ちます。区切り文字は次のようにしたときです:``**, **”””**, **< >**, ** `。

Graniteモデルのシステム・プロンプトの例を次に示します。

<|system|>\nYou are Granite Chat, an AI language model developed by IBM. You are a cautious assistant. You carefully follow instructions. You are helpful and harmless and you follow ethical guidelines and promote positive behavior. You always respond to greetings (for example, hi, hello, g\’day, morning, afternoon, evening, night, what\’s up, nice to meet you, sup, etc) with “Hello! I am Granite Chat, created by IBM. How can I help you today?”. Please do not say anything else and do not start a conversation. {instruction}\n{session_history}<|user|>\n{query}\n<|assistant|>\n

ユーザー・プロンプト

ユーザー・プロンプトは、モデルから目的の応答を得るためにユーザーが提供する特定の指示またはクエリーです。モデルがタスクを確実に理解できるように、明確かつ簡潔である必要があります。

IBMツール

Prompt Lab

Prompt Labは、基盤モデルを操作し、プロンプト・エンジニアリングを使用してプロンプトを構築できるIBMプラットフォームです。Prompt Labでは、ユーザーはチャット、自由形式、または構造型モードを使用してプロンプト・エディターで基盤モデルを操作できます。これらの複数のオプションにより、最適なモデル構成を作成して、質問応答、コンテンツ生成と要約、テキスト分類と抽出など、自然言語処理(NLP)タイプのさまざまなタスクをサポートできます。

Prompt Labの開始方法やその他すべての情報については、公式のPrompt Labサイトをご覧ください。

InstructLab

RAGソリューションの精度を向上させるための新たなストラテジーは、データ・コーパスに基づいて微調整された生成モデルを使用することです。これにより、いくつかの理由でエンドツーエンドの精度が向上します。生成段階の能力から得られる最も重要なものは、検索結果を改善し、さらには修正することができます。また、貴社のビジネス・コンテンツに合わせて調整できるため、より企業固有の関連性の高い回答を提供できます。

InstructLabの開始方法やその他の詳細については、公式InstructLabリポジトリーをご覧ください

Granite

Granite 3.0には、Granite 3.0 8B Instruct、2B Instruct、8B Base、2B Baseといったさまざまなモデルがあり、12の自然言語と116のプログラミング言語にわたる12兆以上のトークンで学習されています。これらのモデルは、教育機関向けおよび企業向けの両方のベンチマークにおいて、主要プロバイダーの同等規模のモデルと同等かそれ以上の性能を示し、言語理解、コード生成、文書要約などのタスクで高い性能を示しています。

Granite 3.0の差別化要因

透明性と安全性

透明性と安全性に対するIBMの取り組みは、Granite 3.0テクニカル・レポートにおけるトレーニング・データセット、フィルタリング、キュレーション・プロセスの詳細な開示に表れています。このモデルはパーミッシブApache 2.0ライセンスの下でリリースされており、エンタープライズ・クライアントや広範なAIコミュニティーに柔軟性と自律性を確保しています。さらに、Granite Guardian 3.0モデルは、包括的なリスクと損害の検知機能を提供し、市場の他の安全モデルよりも優れています。

効率と費用対効果

Granite 3.0モデルはコスト効率を高めるように設計されており、企業はわずかなコストで最先端のモデル性能を実現できます。オープンソースの共同アプローチであるInstructLabを使用すると、小規模モデルを特定のタスクに合わせてファイン・チューニングすることができ、大規模モデルと比較してコストを3~23倍削減できます。Granite 3.0 3B-A800Mや1B-A400MなどのMixture of Experts(MoE)アーキテクチャー・モデルは、性能のトレードオフを最小限に抑えながら高い推論効率を提供するため、低遅延のアプリケーションやCPUベースのデプロイメントに最適です。

マルチモーダル機能と今後の更新

2024年末までに、Granite 3.0モデルは、拡張された128Kコンテキスト・ウィンドウと、画像入力、テキスト出力タスクを含むマルチモーダル・ドキュメント理解機能をサポートする予定です。この拡張により、さまざまな企業のユースケースでそのユーティリティーがさらに高まります。

エコシステム統合

Granite 3.0モデルは、IBMのwatsonx.ai、Hugging Face、Google CloudのVertex AI、NVIDIA NIMマイクロサービス、Ollama、Replicateなどの複数のプラットフォームで利用でき、開発者に幅広い導入オプションを提供し、既存のワークフローとのシームレスな統合を確保します。要約すると、IBMのGranite 3.0モデルは、最先端のパフォーマンス、堅牢な安全性の機能、および広範なエコシステム・サポートを組み合わせた、エンタープライズAI向けの強力で透明性の高いコスト効率の高いソリューションを提供します。

Graniteの開始方法とその他のGraniteの詳細については、公式のGraniteサイトをご覧ください。

ヒントと推奨事項

プロンプティングの向上

LLMに送信されるプロンプトの内容と構造は、生成される応答の質と忠実度に大きな影響を与える可能性があります。

6つのプロンプト・タイプ

プロンプトは、大きく次の6つのタイプに分類できます。

キーワードのみ

キーワードのみのクエリーは自明です。これらは、問題のトピックに関連するキーワードで構成されたプロンプトです。例えば、次のようなプロンプトがあります。

高高度でのチョコレートケーキに最適な焼き時間はどれくらいですか。

以下のキーワードに短縮できます。

高高度のチョコレートケーキを作るためのベーキング時間

キーワードのみのプロンプトでは、通常、検索された拡張テキストに関連性が高く、より広範でトピックに焦点を当てた応答が生成されます。これは、オペレーター・アシスタント・チャットボットなど、幅広い情報に基づく応答を必要とするソリューションにとっては望ましい効果ですが、簡潔な対話形式の応答を必要とするソリューションに対しては、生成される情報が多すぎる可能性があります。

比較

比較プロンプトでは、LLMにプロンプト内の1つ以上のトピックまたは概念間の比較を描画するように要求します。例:

ルールとロール割り当ての違いは何ですか。

比較プロンプトは、生成モデルとサポートするコーパスにすべてのコンセプトに関する情報が含まれている場合に役立ちます。また、コンセプトを有用に比較する方法についての明らかな次元またはサポート資料も含まれています。これらがなければ、比較プロンプトは無意味または非効果的な応答を生成する可能性があります。

集合体

集約プロンプトは、モデルに2つ以上の概念またはクエリーを1つのプロンプトに集約するよう要求します。例:

権限および権限グループを作成するにはどうすればよいですか

集約型プロンプトは、質問に本質的に曖昧さがあるため、一般にLLMにとってはより困難なものです。

  • 処理時間を最小限に抑えるために、複数のコンセプトを並行して実行することですか?
  • それは、互いに強化し合う補完的な概念に関するものでしょうか?
  • 連続した一連のステップでアクションを実行する方法を説明することを目的としていますか?

この曖昧さを解決するには、一般的に、集約されたプロンプトを複数の単一のトピック・プロンプトに分割するか、望ましい応答を明示的に説明する追加のコンテキストを提供することをお勧めします。

曖昧さ

曖昧なプロンプトとは、複数の方法で解釈できるプロンプトです。例:

役割とは

このプロンプトでは、行動の文脈での役割についての応答と、その後の有名なアクターとその役割、ITセキュリティー・ソリューションの文脈での役割、または組織の文脈での役割についての議論を生成できます。曖昧なプロンプトは、ほとんどのソリューションにとって不適切な選択肢となるため、LLMを目的のトピックに集中させるために、追加の詳細とコンテキストを含めるように修正する必要があります。

逸脱

RAGソリューションのコンテキストでは、異常プロンプトとは、サポートドキュメントのコーパスに回答のないプロンプトです。これにより、LLMに組み込まれた知識に基づくハルシネーションや即興的な回答や、コーパスからの関連性の低い検索結果に基づく無関係な回答につながる可能性があります。

すべてのユースケース(会話型チャットボットなど)で逸脱した応答を防ぐことは不可能ですが、ソリューション開発者は、選択肢リストを通じてユーザー入力を制限することで、逸脱した応答を最小限に抑えることができます。「…についてお手伝いいたします」その後に続いて、事前定義された一連のトピックボタンが表示され、ユーザーの指示やモデルの応答において、説明的または指示的な言葉を使用して安全な応答にユーザーを「誘導」します。

間接的

間接プロンプトは、キーワードがコーパスに直接存在しないものの、その同義語を持つプロンプトです。間接プロンプトは、プロンプト・キーワードに含まれる同義語の数と、それらの同義語がどのように明確なクエリーにつながるかによって信頼性が左右されるため、ソリューション開発者にとって重要な要素です。

開発者は、ブラックリスト型クエリー・フィルタリング・メカニズムを実装して、キーワードに曖昧さをなくすための詳細を追加するか、「面倒な」キーワードを明確な同義語やフレーズに置き換えることをお勧めします。

良いプロンプティングの実践

「良い」プロンプトの作成は科学であると同時に技でもありますが、より良いプロンプト、つまりより良い結果につながる、受け入れられているプラクティスが数多くあります。

良いプロンプトは以下の通りです。

  • ターゲットドメインに関連し、目的のアウトプットの内容とトーンを明確かつ具体的にするのに十分な詳細とコンテキストを含めます。

  • 対象者に合わせて調整されています。企業の金融アナリスト向けの回答は、小売バンキングの顧客向けの回答とは口調、構造、内容が大きく異なります。優れたプロンプトには、指示が含まれています(「あなたは中堅レベルの金融アナリストです。レポートを生成してください…」)または回答にオーディエンス(「…金融用語の知識がない小売バンキングのお客様向けに書いた」)が明確に示されています。

  • 特定のユースケース向けに設計されています。優れたプロンプトは、特定のユースケースを念頭に置いて設計し、生成した応答がどこでどのように使用されるかについての詳細を含める必要があります(「…応答はツアー・オペレーター向けの旅行業界誌に掲載されます」)。これらは、生成される応答の口調、言語、スタイルに影響を与えます。

詳細はこちら

IBMから最新のテクノロジー・パターン、ソリューション・アーキテクチャー、およびアーキテクチャーに関する出版物を入手してください。

  1. IBM Architecture Centerに移動