🤖

意味の分からん書類はAIに読ませろ!(Dify + RAG)

2024/09/15に公開

世の中の書類読むの辛い問題

僕は世の中の書類というものを読むのが非常に苦手です、読んでいても内容が頭に入ってこないです

例として、今回は新宿のやっている経営力 強化支援事業補助金というPDFファイルを見てみましょう(PDFをダウンロードしておいてください)

image.png

この書類が悪いと言うわけではなく、必要な情報を過不足なく載せたらこういった内容になるんだろうな、といのも分かります

ですが頭から読んで内容を理解しようとするのも非常にバカバカしく思ったりもするわけです

こういった難解な書類を読むときのお供にAIを使いましょう、というのが今回のやりたいことです

下記のように要約してもらって大筋を理解すると書類を読むのも多少楽になります

image.png

書類でRAGを構築する

前回Difyの環境構築、OpenAIのAPIキーの設定、最小構成でオレオレAIを起動させるところまでやりました。(見てない人は見てね)

今回はもう一歩踏み込んでRAGの構築をメインに解説します

Difyにログインしたらナレッジという機能を使います

「ナレッジを作成」して以下の画面を出してください

image.png

「テキストファイルからインポート」で経営力 強化支援事業補助金というPDFファイルをアップロードして、「次へ」を押してください

そうすると下記の意味のわからない画面が出ますが脳死で「保存して処理」を押してください(ここは後から弄れる)

image.png

最終的には下記のような感じで登録したPDFがナレッジに登録できます

そしたらスタジオであたらしいボットを作成します

チャットボット、Chatflowで名前は適当に入れて作成してください

image.png

目指すべきフローは下記の感じです

image.png

「開始」と「LLM」の線の間の+ボタンを押して「知識取得」を追加してください

image.png

そうすると目指したフローになります。

次は中身の設定です、いじるのは「知識取得」と「LLM」です

「知識取得」の「ナレッジ」のところのプラスボタンを押して、参照する知識を選択します。

このとき先ほどナレッジで登録したPDFファイルが選べます

image.png

次はLLMの設定です

コンテキストの変数を設定を押したら下記のような選択肢が出てくるので、知識取得のresultを選択してください

image.png

そうすると「コンテキスト機能を有効にするには、PROMPTにコンテキスト変数を記入してください。」と怒られます

image.png

なのでSYSTEMのところで/(スラッシュ)を入力してください

そうすると下記のような選択肢がでるので、コンテキストを選びます

image.png

最終的に下記画像のようになったら設定は完了です

image.png

ボットを公開し、実行してみましょう

image.png

適当に「この資料の内容を要約して分かりやすく教えて」とか聞いてみると、先ほど登録したナレッジの内容に基づいてAIが返答を生成します

image.png

AIの返答の質が低くねぇか問題

先ほど質問してみたら思ったよりAIの返答の質が低いなと思いませんでしたか?(ちゃんと要約できていない)

RAGの構築とAIの返答の品質を上げたい場合、以下のことをやると効果的です

  • ナレッジの検索設定を変更する

  • LLMのモデルを変える

  • プロンプトで適切な指示を出しておく

ナレッジの検索設定を変更する

検索設定を変更する前にcohereというサービスに課金してください

私はcohereの回し者ではないですが、cohereの提供しているサービスは品質が高くRAGをもっと使いこなそうと思ったら、今のところcohereのモデルがベストプラクティスだと感じているためです

少し難しいですがcohereのrerankモデルがRAGの構築に非常に有用なのです

あんまりお金はかからないので安心してください

cohereに登録しクレカの登録までいったら

https://dashboard.cohere.com/api-keys

でAPIキーを入手します(この時Trial Keyではなく新しいProduction keyを作ってください

Difyに戻って、「設定」→「モデルプロバイダー」→「cohere」→「セットアップ」で先ほど入手したAPIキーを貼り付けましょう

image.png

これでcohereの設定が完了しました

次に先ほど設定したナレッジの画面に行き、ナレッジの設定で、以下のように設定します

変わったのは「埋め込みモデル」と「検索設定」です、この部分をcohereの提供しているモデルにします

image.png

その後、スタジオから先ほど作ったボットの知識取得の検索設定も少しいじります

RERANK設定を選びRerankモデルを同様にcohereにしましょう

image.png

そしてボットを更新してアプリを再実行してみましょう

「この資料の内容を要約して分かりやすく教えて」と聞いた場合にまた違った結果が返ってきたのがわかると思います(多少わかりやすくなった)

image.png

LLMのモデルを変える

前回ChatGPTのAPIキーを入手したと思いますがChat GPTにもいくつかモデルがあり、性能が高いのがgpt-4, gpt-4oなどです

LLMの設定でモデルを変更し、違う結果が返ってくるのをみてもらえればいいと思います

image.png

ChatGPT以外だとAnthropicのClaudeがおすすめです

というよりChatGPTよりもいい結果を出してくれます

私はよくClaude3 haikuを使います(一番使い勝手がいいと思っています)

image.png

AnthropicのClaudeもOpenAIと同じように、アカウントを作成、支払い方法の設定、APIキーの発行をし、Dify上のモデルプロバイダーでAPIキーを設定することで使用できます

プロンプトで適切な指示を出しておく

LLMの設定でSystem プロンプトに適切な指示を出しておくと回答の結果が良くなります

所謂プロンプトエンジニアリングというやつです

あなたは優秀な融資担当職員です。
質問に対し、誰もがわかるように事実に基づいて回答するのが、あなたの仕事です。
回答は日本語で回答してください

image.png

結果

結果が良くなったのか?というのは自分の判断になりますが、なんとなく品質は高くなったように感じます

image.png

image.png

もちろんAIに聞いて100%回答が合っているという保証もないので、資料を見つつAIに補助してもらいながら読むのがいいと思います

最後に

株式会社ホコサキではDifyのコントリビューターの経験もある代表が、現場で実際に使えるDifyの構築をお手伝いできます。

ご興味ありましたらぜひご相談くださいませ

Discussion