[Dify × Bedrock Knowledge Base] プラグインを使ってシンプルに連携
こんにちは。スターフェスティバルの山﨑(@koonagi)です。
皆さんは業務でDifyを活用していますか?
Difyは、ローコードでLLMアプリケーションを手軽に構築できるオープンソースのツールです。弊社では生成AIの業務活用の一貫として、今月から営業・オペレーションチームを中心にDifyの導入と効果検証をを始めています。
弊社では業務データの多くを AWS 上で管理しているため、「AWS Bedrock Knowledge Base」と Dify を連携させることで、効率的に RAGを構築・活用できると考え、検証を進めています。
Dify のプラグインを活用することで、この連携をスムーズに実現できたため、本ブログではその方法についてご紹介します。
Difyのプラグインとは
プラグインは、Difyの機能を拡張するサードパーティ製のモジュールです。標準では提供されていない機能も、プラグインを活用することでノーコードで利用できます。例えば、本記事で紹介するAWS Bedrockのほか、SlackのWebHookなど、よく使われる機能を簡単に導入できるプラグインも提供されています。
Dify × Bedrock Knowledge Base の連携方法
1. バックエンド API サービスを構築する
公式ドキュメントのリファレンスでは、Flask を使用して API サービスを作成し、その API 経由で Bedrock Knowledge Base からデータを取得(Retrieve)する方法が紹介されています。
Lambda などでも代替可能ですが、リソースを追加する手間を考えると、メンテナンス面で少し煩雑になるかもしれません。
2. 【本記事の内容】 Dify プラグインを使う
Dify には Bedrock Retrieve というプラグインが用意されており、Dify 内から AWS SDK を使用して Bedrock Knowledge Base にアクセスし、Retrieve 結果を取得できます。
追加のリソースを作成する必要がないため、DifyのGUI上で簡単に実装可能です。
Bedrock Retrieve プラグイン 設定方法
※ Bedrock Knowledge Base はすでに作成済みであることを前提とします。
1. AWS プラグインをインストールする
スクリーンショットではすでに AWS がインストールされていますが、画面上部のツール検索で「AWS」を探し、インストールすると AWS 関連のプラグインが追加されます。
2. 「Bedrock Retrieve」を選択する
AWS プラグインをインストールすると、ワークフローのツールに AWS の項目が追加され、その中に 「Bedrock Retrieve」 があります。これを選択します。
3. 必要なパラメータを入力する
v0.02 での必須項目は以下のとおりです。
- Query string: 検索クエリ(Knowledge Base に問い合わせる内容)
- Result type: 出力形式(CSV / JSON)
- Bedrock Knowledge Base ID: ナレッジベースの ID
その他の入力パラメータについては、ツールチップだけではわからない部分も結構あるので、ソースコードを直接確認するのが早いかもしれません。
4. LLMにRetrieve結果を連携する
Retrieve結果を LLM のインプットとして使用する場合は、コンテキストに 「Bedrock Retrieve」 の出力を指定すればOKです!
Bedrock Knowledge Baseの内容をコンテキストとして理解して上で回答してくれるようになります。
出力結果は非表示にしていますが、国税庁のサイト から法人情報を Knowledge Base にインプットした際の出力例です。
設定は以上です!
Lambda を使わず、プラグインだけで連携できるのでとても楽ですね〜〜〜! 🎉
注意点など
プラグイン機能はまだ始まったばかりのため、不具合や脆弱性が含まれている可能性があります。
利用するプラグインのコードは公開されているので、事前に確認しておくと安心です。
Bedrock Retrieve は、ほぼ First Commit レベルの状態なので、OSS へのコントリビュートのチャンスです!
私自身も、どんどん改善提案をしていこうと思っています!
最後に
生成 AI によって、事業や開発のあり方が大きく変わっていることを実感する今日このごろです。
Dify を活用すれば、エンジニアのリソースが限られている状況でも、生成 AI のアプリを素早く開発でき、事業に貢献できると考えています。
もちろん、ローコードツールならではの管理の難しさもありますが、バランスを取りながら活用を進めていきたいです。
例えば、まず Dify で仮説を立て、効果検証を行い、十分な成果が確認できたら長期運用を見据えて本格的な開発を進めるというアプローチも有効だと考えています。
ちなみに、エンジニアチームでは Devin や Cline を活用した開発の検証も始めています。
その内容については、別途アウトプットしていく予定なので、お楽しみに!!
Discussion