House with a turret beside the River Thames
© Copyright Rose and Trev Clough and licensed for reuse under this Creative Commons Licence.
前回は、Difyを用いてRerank型のRAGアプリを構築し、試してみました。
思ったより簡単に完成したので、後は、「Difyについてーその3」で定義した24個のDifyに関する情報を「Knowledge Retrieval」ノードに再ランキングモデルとして登録すれば、Difyに関して、Dify.AIのサイト情報すべてをカバーして、かつ、質問したのと同じ言語で回答してくれるチャットボットアプリ「Difyのことなら何でも聞いてください」の完成だ!と思ったのですが、現実はそう甘くありませんでした。
とりあえず、何が起きたのか、ご覧いただきましょう。
まずは、「Difyについてーその5」と同じく、Difyの「探索(Difyによるアプリの探索)」で表示されたテンプレートの内、「Knowledge Retrieval + Chatbot」のテンプレートを使って、作成されたワークフローの「Knowledge Retrieval」ノードに、Fify.AIのドキュメントから作成した24のDifyに関するナレッジを登録しました。
次に、LLMノードの設定で、「モデル」を「gpt-4o-024-05-13」に、「コンテキスト」に「Knowledge Retrieval」ノードからの出力である「result」を設定します。
なお、「Difyについてーその4」で、Temperatureを間違って1にしていましたが、上図中、PARAMETERSの横にあった「Load Parameters」をクリックすると、生成AIの環境パラメタの設定をまとめて行ってくれるメニュー(クリエイティブ/バランス/正確)が表示され、「正確」を選ぶと、Temperatureの数値は0.2となりました。
で、Difyの「デバッグとプレビュー」機能を使い、最後に「Knowledge Retrieval」ノードに登録したナレッジの「24-Open-Source License」を正しく参照できるかどうか確認のため「Difyのオープンソースライセンスについて教えてください。」と入力したところ:
回答がありません。
LLMノードを調べてみると、「入力」として、”Open-Source License・・・“の情報が正しく「Knowledge Retrieval」ノードから渡されているにもかかわらず、「出力」を見ると、出力変数textに ”“ が返されています。
何が原因かよくわからないので、LLMノードで使う生成AIをGoogle Gemini 1.5Proに入れ替えてみました。
そして、同様に「デバックとプレビュー」で実行してみると:
なんと、今度は、生成AIから、Difyのオープンソースライセンスに関する情報が返されました。
「Knowledge Retrieval」ノードからは同じデータが渡されているのに、「gpt-4o-024-05-13」は何が気にくわなかったのか???よくわかりません。
とにかく、Difyの情報に特化したRAGアプリとしては一応完成したので、このブログをご覧いただいている読者の方にも体験してもらいたくなりました。
Difyでは、デバッグが終わったものは、「デバッグとプレビュー」のボタンの横にある「公開する」をクリックすると、下図の通り「公開済み」となります。
そして、その下の「アプリを実行」をクリックすると、公開されたURLに飛びます。
「Start Chat」をクリックすることで、Difyに関して質問すれば、それなりの回答が返ってきます。
このアプリの使用例はここをご覧ください。
これで完成したので、皆さんにも使ってみてもらおうと思ったのですが、1つ問題がありました。
今回、チャットボットアプリ「Difyのことなら何でも聞いてください」の構築にあたって、Windows11ローカルPC上で稼働するDifyを使っていたので、上図中のDifyが「公開」したURLに注目すると、「localhost/chat/XQKU8156kvf2dHxc」となっていて、これでは、自分のPCからしかアクセスできません。
そこで、ローカルPC上のDifyでなく、Dify.AIのクラウド上のDifyで、同じチャットボットアプリ「Difyのことなら何でも聞いてください」を再定義しました。
1)「Difyによるアプリの探索」で「Knowledge Retrieval + Chatbot」を指定
2)1)で出来上がったワークフローのうち、「Knowledge Retrieval」ノードに24個のDifyドキュメント情報を登録し、マルチパスリトリーバルに設定
3)「LLM」ノードのモデルを「Google Gemini1.5Pro」とし、コンテキストに「Knowledge Retrieval」ノードの出力のresultを指定。
4)「デバッグとプレビュー」で24番目の情報を正しく引っ張ってこられるか確認のため「Difyのオープンソースライセンスについて教えてください」を入力
同じ手順も3度目なので、慣れたものです。
ところが。。。
ローカルPC上のDifyで実行した時と違って、あっさりした回答しか返ってきません。
「knowledge Retrieval」ノードからLLMノードに「24-Open-Source License」の情報が渡されていず、「1-Welcome to Dify!」の情報が渡されています。
他にも、他の23個の情報の特徴的なキーワードを質問内容に入れて、回答内容と比較したところ、どうやら「1-Welcome to Dify!」から「7-Prompting Expert Mode」までの情報はRAG情報として登録されているのですが、「8-Workflow」以降の情報は、ナレッジ登録作業時にエラー表示はなかったのですが、ナレッジとして正しく取り込まれていなかったようです。
そこで、気づいたのですが、ローカルPC上にDifyを構築した際、動画「話題のDifyを使う上での注意点と設定方法について解説してみた」の説明に従って、「アップロードできるファイルのサイズをデフォルトの15MBから50MBに変更していました。
Difyのクラウドを使う場合、アップロードの上限が15MBのままなので、Difyのドキュメントの情報の「アップロード(=ナレッジの登録)」時、15MBを超過した部分は無視されたようです。
仕方なく、24個のDify情報を取捨選択して15MB以内になるようにしました。
※テキストファイルをナレッジとしてDifyにアップする際「1つあたりの最大サイズは15MBです」と表示されるのですが、現象からすると、合計で15MBになっている雰囲気です。
そして、最後の登録情報である料金プランを「デバックとプレビュー」で確認したところ、正しく登録情報がLLMに渡されていることが確認できました。
そこで、ローカルPCのDify同様、このRAGアプリの「公開」を行いました。
公開されたURL(https://udify.app/chat/gsWIihXbFWBkoCZ2)での使用例は以下の通りです。
これで、一応、再ランクモデルを利用したDifyに関するRAGアプリのチャットボット出来上がりました。
ご興味をお持ちいただいた方は、この「Difyのことなら残でも聞いてください」チャットボットを試してみていただければ幸いです。
本日は以上です。
終わり
【2024年6月19日更新】
本日、Difyを立ち上げ、ドキュメントのページを見ると、なんと!英語と中語語の他に日本語が選べるようになっていました。
ちょっと、日本の漢字ではないところもありますが。。。
せっかく、RAGアプリにしたのに、と思いましたが、例えば特定の話題をピンポイントで聞きたいときは、日本語にドキュメントがなったとはいえ、上記の画面左側のメニューをたどらなくても、対話型で聞き出せるので便利ではないかと思います。
【2024年6月20日更新】
RAGチャットボット「Difyのことなら何でも聞いてください」の回答の精度を上げようとして、登録したナレッジの内容に手を加えていたら、Knowledge Retrieval(知識獲得ノード)が入力の質問に対してResultを返さなくなってしまいました。申し訳ありませんが、現在、「Difyのことなら何でも聞いてください」は動作しておりません。
⇒原因は判明しました。Cohereのrerank-multilingual-v3.0モデルで再ランク付けを行う際、以下のエラーとなっていました。
[cohere] Rate Limit Error, status_code: 429, body: {‘message’: “You are using a Trial key, which is limited to 1000 API calls / month. You can continue to use the Trial key for free or upgrade to a Production key with higher rate limits at ‘https://dashboard.cohere.com/api-keys’.
CohereのAPIキーはTrial keyなので、今月(6月)いっぱいは、再ランク付けは使えないようです。
【2024年6月24日更新】
再ランク付けを行なわない、「N-to-1 リトリーバル」モードのアプリ「Difyのことなら何でも聞いてください2―経済的RAG検索版」を代わりに作成しました。RAG情報登録時も、有料のインデックス作成モデルではなく、Difyの無料のベクトルエンジンを用いたものになっていますが、それなりに、Difyに関する質問に答えてくれます。
※ 質問内容を日本語から英語、フランス語、イタリア語にすると,、それぞれの言語で回答してくれましたが、どういう訳か?ドイツ語、韓国語、中国語での質問には答えてくれませんでした。
Pingback: Difyについてーその7(FiDもどきのRAGアプリ構築を目指したのですが。。。) – インターテックリサーチ株式会社