paint-brush
一般的な検索拡張生成の課題に対処することで、関連する LLM 応答を実現する@datastax
745 測定値
745 測定値

一般的な検索拡張生成の課題に対処することで、関連する LLM 応答を実現する

DataStax4m2024/01/16
Read on Terminal Reader

長すぎる; 読むには

RAG の実装と LLM の相互作用で発生する可能性のある一般的な問題について見ていきます。
featured image - 一般的な検索拡張生成の課題に対処することで、関連する LLM 応答を実現する
DataStax HackerNoon profile picture
0-item
1-item


生成型 AI アプリケーションの開発検索拡張生成(RAG) およびベクター データベースは困難な場合があります。関連するコンテキストが確実に取得されるように、ベクター データベースに依存する RAG 実装のトラブルシューティングが必要になることがよくあります。これは、より正確な結果を提供するために、そのコンテキストが大規模な言語モデルへのプロンプトに組み込まれるため、非常に重要です。


このシリーズの前の記事では、埋め込みパイプラインについて説明しました。 ベクトルデータベース埋め込みを使用して、悪い結果につながる可能性のある 3 つの領域、つまり最適ではない埋め込みモデル、非効率的なチャンキング戦略、メタデータ フィルタリングの欠如を検討しました。

ここでは、LLM との実際の対話を見て、不正確なプロンプトと不十分な生成アプローチという、悪い結果につながる可能性のあるいくつかの一般的な問題を調べます。

迅速な改善

最良の埋め込みおよびチャンキング戦略であっても、品質へのニーズに代わることはできません。 迅速なエンジニアリング。これには、プロンプトをより明示的かつ具体的にし、意図した出力と一致させることが含まれます。 RAG プロセスを微調整するには、さまざまなプロンプトの形式、長さ、語彙の選択をテストする必要があります。

LLM の簡略化した見方


具体的には、RAG アプリケーションのプロンプトを作成するときに考慮すべきことがいくつかあります。これらには次のものが含まれます。


LLM にその役割を伝える: ChatGPT などの LLM エージェントと対話するとき、デフォルトでは役立つチャットボットのように動作します。ただし、LLM に特定の方法で動作するように指示することで、生成される応答の性質を変更できます。例としては、「あなたはどちらかの当事者が契約に違反していないかどうかを評価する弁護士です」や「あなたはインターネット サービス プロバイダーのカスタマー サービス エージェントです。あなたはインターネット サービス プロバイダーのカスタマー サービス エージェントです。あなたの仕事は、人々がインターネットの問題をトラブルシューティングできるよう手助けすることです。」など、あなたの特定の状況に適したものであれば何でも構いません。


提供されたコンテキストを使用するように LLM に明示的に指示します。コンテキストを提供していること、および生成された応答にそのコンテキストを反映させたいことを LLM に明確にします。これを行うには、「応答は次のコンテキストを考慮する必要があります」のような文を述べ、その後にコンテキストを続けます。使用例: LLM に契約書を評価する弁護士としての役割を依頼する前述のシナリオでは、プロンプトにいくつかの例を含めることができます。たとえば、支払い期限が 30 日以内であると記載されている契約書の例を提供できますが、購入者は契約署名後 40 日以内に支払いを送金しなかったため、契約に違反しました。救済する権利と契約違反を解決する考えられる方法の追加の例を提供することもできます。


出力形式を指定する:ユースケースで特定の出力が必要な場合は、生成された出力が従う必要がある形式を指定できます。この手法と上記のヒントを組み合わせて、LLM にどのように応答してほしいのか、また生成された応答で期待される情報の重要なポイントを明確にするための例を提供できます。


思考連鎖を使用する: 適切な応答を決定するために推論が必要なユースケースでは、LLM が生成された応答に到達するために実行する手順を説明するために、思考連鎖と呼ばれる手法の使用を検討できます。たとえば、法的な契約の場合、契約条件に違反したかどうかを判断するために人が従うであろう論理的な手順を LLM に指示することができます。たとえば、法的契約を扱う場合、まず支払い条件を指定する条項を探し、次に購入者が支払いを提出する必要があった時間を特定し、支払いを受け取ってから支払いまでの日数を計算するように LLM に指示できます。契約が署名された日。その後、支払いが合意された期限よりも長くかかった場合、買い手は契約に違反したことになります。


これらのテクニックを活用してプロンプト エンジニアリングを改善すると、RAG アプリケーションで生成できる結果の品質に大きな影響を与える可能性があります。ただし、許容可能な応答を達成するために、LLM との複数回の交換を伴う手法を使用する必要がある場合があります。

高度なパターン

フレア

将来を見据えたアクティブな取得、またはフレアは、より良い回答を生成するのに役立つキー フレーズに関する追加の質問を LLM に求めるプロンプト内のカスタム命令を使用して LLM を繰り返し呼び出す、マルチクエリ RAG 手法の例です。 LLM がギャップのないコンテキストを取得すると、最終応答で終了します。このプロセスでは、LLM と AI エージェント (図の AI チャットボット) の間にループを追加して、これらの反復を容易にします。

フレア


FLARE がどのように機能するかの例は、LangChain クックブックの FLARE の例で見ることができます。

RAG フュージョン

ユーザーのクエリに類似したクエリを生成し、元のクエリと生成された同様のクエリの両方に関連するコンテキストを取得することにより、正確な結果を生成するために最も有用なコンテキストを選択した可能性を高めることができます。 「RAG fusion」と呼ばれるこのプロセスは次のようになります。

RAG フュージョン

ここでの重要なステップは、逆順位関数を使用して ANN の結果をさらに絞り込み、応答の生成に使用する最も関連性の高いコンテキストを特定することです。

結論

RAG は簡単に始めることができるアプローチですが、多くの場合、開発者は理由が不明瞭で満足のいく結果が得られずにイライラしてしまいます。 RAG 対応の生成 AI アプリケーションにおける出力の関連性は、いくつかの要因の影響を受ける可能性があります。埋め込みモデルを慎重に選択し、チャンキング戦略を策定し、プロンプトを設計することで、ChatGPT などの LLM を利用したシステムで生成される応答の品質と精度を大幅に向上させることができます。これらのヒントが、目的のエクスペリエンスと価値を提供する、より便利な RAG アプリケーションの作成に役立つことを願っています。


DataStax Astra DB を試す、リアルタイム データに基づいて実稼働レベルの AI アプリケーションを構築するための唯一のベクトル データベースです


Chris Latimer 著、DataStax


ここにも登場します。