
LLMSの最も強力なアプリケーションの1つは、特定のソース情報に基づいて正確な回答を提供できる洗練された質問(Q&A)チャットボットの作成です。このプロジェクトは、取引の仮想アシスタント、IIライブラリ、オープンソースC ++有限要素ライブラリの開発に焦点を当てています。データセットは、公式取引で利用可能な90のチュートリアル手順から調達されています。IIドキュメントはこちらからアクセスできます。大規模な言語モデル(LLM)エンジンは、埋め込みおよびチャットサービス用の高品質のLLMモデルを提供することで知られているCohereによって提供されます。ベクトルデータベースの場合、ベクターの検索と取得におけるオープンソースの性質、速度、効率のため、Chromaを選択しました。 Langchainフレームワークは、ユーザーの入力、クエリの処理、およびベクトルデータベースからの関連情報の取得間の相互作用を効率的に管理し、モデルのさまざまなコンポーネント間のシームレスな統合を確保します。
データベースを準備するプロセスは次のとおりです。まず、チュートリアルページは、LangchainドキュメントオブジェクトとしてWebサイトから取得されます。 (テスト時に)アクセス速度を向上させるために、これらのドキュメントオブジェクトはローカルディスク上のJSONファイルとして保存されます。次に、ドキュメントは適切なサイズのチャンクに分割されます(チャンクあたり約400トークンで、40トークンの重複があります)。合計で、データセットは230万トークンで構成されています。最後に、これらの分割ドキュメントはベクトルデータベースに埋め込まれています。
このモデルは、4つのチェーンと3つのプロンプトテンプレートを使用して構築されています。
チェーンを再定式化する:このチェーンは、ユーザーの質問と会話の履歴を受け取り、以前の対話に基づいて質問を再定式化します。たとえば、最初の質問が「fe_nothingとは何ですか?」の場合の場合2番目の質問は「どこで使用できますか?」です。2番目の質問を「どこで使用できますか?」に2番目の質問を変更します。このステップは、基本的に会話にメモリを追加し、コンテキストの継続性を確保します。
Multi-Question Chain :このチェーンは、再定式化された質問を受け取り、5つの同様の質問を生成し、複数の視点を提供します。単純なLambda関数を使用して質問のPythonリストを出力し、最終ステップとしてremove_empty_string関数を使用して空の行が削除されます。
検索チェーン:このチェーンは、前のチェーンから5つの質問を受け取り、ベクトルデータベースを照会します。ベクトルデータベースは、同様のベクトルを検索し、関連するドキュメントを取得します。同じドキュメントが異なる質問に対して複数回検索される可能性があるため、最後のステップとしてget_unique_union関数を使用して一意のドキュメントセットが作成されます。
RAGチェーン:このチェーンは、質問、会話の履歴、および以前のチェーンから取得したドキュメントをコンテキストとして使用して、最終的な答えを生成します。
アプリケーションのフロントエンドは、GradioのChatInterfaceを使用して構築されており、出力をリアルタイムでストリーミングするように設計されています。アプリケーションは抱きしめるフェイススペースに展開され、ここからアクセスできます。