VOOZH about

URL: https://qiita.com/ndil_ando/items/1b8ae283f769c18281d2

⇱ Difyで作成したRAGにて複数LLMで生成した回答結果を比較してみる #rag - Qiita


👁 Image
5

Go to list of users who liked

5

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 1 year has passed since last update.

@ndil_andoin👁 Image
NTTデータ先端技術

Difyで作成したRAGにて複数LLMで生成した回答結果を比較してみる

5
Last updated at Posted at 2024-09-21

はじめに

RAGなどLLMを活用したアプリケーションを作成する際には、どのモデルを利用するのが良いか比較するケースがあると考えられる
Difyでは比較的簡単に複数のモデルの回答を比較できそうなので、その実装方法を検討した
今回はRAG構築する中で複数のモデルの回答を得られるアプリを実装した

チャット実行時にモデルを選択するタイプ

モデル選択式ワークフローの作成

スタジオ -> テンプレートから作成をクリックする
👁 image.png

Knowledge Retrieval + Chatbotこのテンプレートを使用するをクリックする
👁 image.png

名前説明を入力の上作成をクリック
👁 image.png

最終的に作成したワークフローは以下となる
👁 image.png

ポイントは以下

  • Startに使用するモデルを選択するパラメータを追加
  • LLMブロックを複数作成してそれぞれ使用するモデルを設定
  • IF/ELSEブロックにて選択したモデルを選択するパラメータに応じたLLMブロックを紐づける
  • 複数のLLMブロックが出力した結果を変数集約器でまとめる
  • ANSWERブロックで回答結果が分かりやすいように編集

モデル選択パラメータの追加

Startを選択して入力フィールド右の+をクリックする
👁 image.png

フィールドタイプ選択を選んだうえで、変数名,ラベル名では任意の値を設定し、オプションを追加ボタンを押して選択可能なモデル名のリストを追加して保存ボタンをクリックする
👁 image.png

複数LLMの追加

テンプレートとして追加されているLLMの名前を任意に修正し、モデルで使用したいモデルを選択する
コンテキストKNOWLEDGE RETRIEVAL_resultを選択する
SYSTEMにはプロンプトを入力しておく
👁 image.png

LLMブロックの右上の...をクリックし、コピーを選択すると同じ設定のLLMブロックがコピーされる
スタジオパネル内で右クリックしここに貼り付けを選択するとコピーされたLLMブロックが貼り付けられる
👁 image.png

👁 image.png

貼り付けたLLMブロックを選択したうえで、モデルを他に使用したいモデルへ変更して複数のLLMブロックを作成できる

IF/ELSEロジックの追加

ブロックを追加ボタンからIF/ELSEを追加する
👁 image.png

Startにて追加したselectmodelパラメータに応じて使用するLLMブロックを紐づける
Dify v0.6.14からIF/ELSEブロックにELIFが追加されたので複数モデルを選択できる
👁 image.png

👁 image.png

変数集約器の追加

ブロックを追加ボタンから変数集約器を追加する
👁 image.png

LLM変数集約器を紐づける
👁 image.png

変数集約器ブロックの変数を代入するの右側の+をクリックして、各LLMからの出力を追加する
👁 image.png

Answerの編集

変数集約器Answerを紐づける
👁 image.png

Answerブロックを選択して回答フィールドを編集する
どのモデルからの回答かをわかりやすくするために``START_selectmodel からの回答という文章を追加する
回答自体は`変数集約器_output`が出力されるようにする
👁 image.png

全ての編集が完了したら公開する -> 更新 ボタンをクリックする

アプリケーションの実行

プレビューからテスト実行が行える
👁 image.png

selectmodelフィールドで利用したいモデルを選択する
回答結果のところのワークフロー処理を展開するとどのモデルが選択されたかが確認できる
👁 image.png

ワークフロー上でもどのモデルが選択されたかを確認できる
👁 image.png

複数モデルの回答を列挙するタイプ

複数モデル回答式ワークフローの作成

上記で作成したアプリを複製して作成する
上記で作成したアプリの右下隅の...ボタン -> 複製をクリックする

名前を修正したうえで複製ボタンをクリックする
👁 image.png

最終的に作成したワークフローは以下となる
👁 image.png

ポイントは以下

  • Startに追加した使用するモデルを選択するパラメータは不要のため削除
  • LLMブロックとANSWERブロックを直結して、数珠つなぎにしていく
  • ANSWERブロックで回答結果が分かりやすいように編集

複数LLMの追加

テンプレートとして追加されているLLMの名前を任意に修正し、モデルで使用したいモデルを選択する
コンテキストKNOWLEDGE RETRIEVAL_resultを選択する
SYSTEMにはプロンプトを入力しておく
👁 image.png

LLMブロックの右上の...をクリックし、コピーを選択すると同じ設定のLLMブロックがコピーされる
スタジオパネル内で右クリックしここに貼り付けを選択するとコピーされたLLMブロックが貼り付けられる
👁 image.png

👁 image.png

貼り付けたLLMブロックを選択したうえで、モデルを他に使用したいモデルへ変更して複数のLLMブロックを作成できる

Answerの編集

LLMAnswerを紐づける
👁 image.png

Answerブロックを選択して回答フィールドを編集する
どのモデルからの回答かをわかりやすくするためにgpt-3.5-turbo からの回答という文章を追加する
回答自体はLLM_textが出力されるようにする
👁 image.png

複数LLM-ANSWERを数珠つなぎにする

同様にLLMANSWERの紐づけを作成し、複数のLLM-ANSWERを数珠つなぎにしていく
👁 image.png

全ての編集が完了したら公開する -> 更新 ボタンをクリックする

アプリケーションの実行

プレビューからテスト実行が行える
👁 image.png

モデルによって回答内容が異なることが確認できる
👁 image.png

おわりに

生成AIアプリ開発においてはどのモデルを利用するのが良いか比較するケースがあり得る
Difyであれば今回紹介した方法で比較的容易にモデル間の比較ができると考えている

参考ページ

5

Go to list of users who liked

5
0

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5

Go to list of users who liked

5