皆さんこんにちは。生成AI協会(GAIS)のエバンジェリスト森です。
生成AI、特にChatGPTに代表されるような大規模言語モデル(LLM:Large Language Model )って次々と新しいものが発表されて情報追いかけるのも大変です。私のように新しい情報をキャッチ検証して皆さんにお伝えするような仕事の場合は、大変ではあれ新しいものにワクワクしつつ仕事することができますが、実際、業務利用を進める方ではなかなか難しい問題だったりしますよね。
そんな中で最近注目されている「Dify」というツールご存じでしょうか?
画面操作で自分たち専用のチャットなどを作れてしまうもので、今までプログラムで行っていたような構築作業がだいぶ簡単にできてしまいます。
クラウド版のほか、独自の場所に構築できるDocker版なども提供されているため、会社で利用する際に情報漏洩が気になってしまう場合も対応できます。
軽く動作確認をクラウド版で行い、会社に導入してみる際には社内に構築ってこともできますよ。
このツールの良いところ、特に企業で利用しようとする場合に嬉しいポイントが多くあるのでご紹介して行きましょう。
LLMの選択
ChatGPTがやはり有名ですが、それ以外の性能も気になりますよね。なんなら導入の際に機能比較したいってこともあるでしょう。Difyは対応しているLLMは多くあり、大手の有名どころであればAPIキーを入れるだけで利用することができます。LLMの設定、切り替えに関しても画面上で選択を変えるだけ。ロジックの変更をする必要はまったくないので初期利用であれば多少の無料利用が出来るサービスもありますし、複数取得して比較も簡単です。
RAGの構築
企業利用する場合にやりたいことの筆頭に上がるのは、自社データを活用したチャットを立ち上げることではないでしょうか?多少調べている方であれば「RAG:Retrieval Augmented Generation(検索拡張生成)」という言葉がヒットするはずです。RAGはLLMに含まれていない情報をDB等で検索しプロンプトで加味してあげることで回答の精度を上げる手法です。普通にこのRAG環境を構築しようとすると、DBの準備やデータの変換、プログラムの構築など、開発が必要となります。専門知識が必要となりますので自社では手に負えずに開発会社に発注する場合もあるでしょう。どんどんコストが嵩みますよね。そんな中で新しいLLMが発表されたりすると、せっかく構築したものがあっという間に時代遅れということになりかねません。
Difyを使うとこれらの悩みがいろいろと解決します。
自社データを読み込む作業は対象のファイルをドラッグ&ドロップすることで可能です。本来であれば読み込む情報は細かく「チャンク」というサイズに分割する必要がありますが、この作業も自動で行ってもらうことが可能です。
RAGでは自社データを保存しておくデータベースとしてVectorStoreというものを使うことが一般的ですが、この構築もDifyの裏側に含まれるため不要です。
VectorStoreはデータをベクトル化して保存することで検索効率を上げています。このベクトル化するのもAIの技術であるEmbeddingという技術が必要となりますが、こちらも設定したAPIを選ぶだけです。APIを利用するので利用料がかかりますが、多少の精度が落ちることを許容すればDifyに内蔵のものを使うと利用料もかからずデータもAPI側に渡す必要なくなりますので漏洩を気にする場合も都合がよさそうです。
まさにRAGを構築するには至れり尽くせりの機能ですよね。
複数のナレッジ利用
自社のデータなどLLMに含まれないデータを「ナレッジ」と呼んだりしますが、このナレッジは複数用意することが可能です。複数ファイル読み込めるというのはもちろん可能ですが、複数のジャンルのナレッジを作ることが可能です。例えば社内の事務的な問い合わせ対応用に規定集を入れていくのも良いでしょうし、利用ツールのヘルプを入れるのも良いかもしれません。
それぞれのナレッジを利用したチャットを作ることももちろんですが、質問の内容に合わせて利用するナレッジを切り替えて使うなんてもロジックもDifyであれば組み上げることが簡単にできますよ。
社内への展開
出来上がった社内チャットをどのように展開するか?というのもDifyを使うと複数の方法が簡単に実現できます。
チャット自体を1つのWebページとして展開する事もできますし、既存の社内イントラなんかにチャットを埋め込んで使うことも表示されるタグを埋め込むことで実現できますよ。
RAGの保守
RAG環境をある程度使っていくと、その品質の改善をしたくなってくる場合があります。利用していないナレッジを消したり、チャンクの切り方を変えたり、工夫は可能ですがどれも手間のかかる作業です。Difyでは画面で実際に区切られたチャンクを見つつ、そのチャンクの検索ヒット回数を確認したり、検索を試したり、チャンク単位で消したりなんてことができます。利用する前でも、入力した文書の表紙や目次は捨ててしまって良さそうですし、利用頻度の低い、もしくはまったくないチャンクを消していくのも良さそうに思えます。またその情報を元にしてナレッジ元の文書の改善につなげることも考えられるかもしれませんね。
システム連携
ここまで社内でRAG環境を作成するという観点で見てきましたがDifyのメリットはそれだけではありません。外部の様々なツールとの連携が可能な点はその1つでしょう。
社内情報を元にしたナレッジに関連していないような情報をGoogleで検索したり、Wikipediaで検索したりなんてことも可能です。DALL-EやStable Diffusion のような画像生成も連携可能なので画像を作ってもらうのもできてしまいます。
技術者で権限もあればAPIを定義して社内システムと連携することも可能になるでしょう。あまり業務にクリティカルなシステムとの連携は誤操作の可能性がありますが、スケジュール作ってメールや社内SNSでお知らせくらいならチャットボットに日本語でお願いするだけでできるかもしれません。
まとめ
いろいろ紹介してきましたが、これらを画面操作だけでできてしまうdifyが、開発の現場に与えるインパクトの大きさをわかっていただけたら幸いです。
最終的にシステム開発会社にお願いするにしてもdifyを触ったことがあって知識があれば開発内容や金額感などの交渉も有利になりそうではないかと思います。
最後に、difyを自社用に構築したいとか、生成AIの基礎セミナーやってほしいなどのご相談があれば、私の所属するアステリアでも承っておりますのでご連絡ください。