AWS Bedrock Knowledge Baseに統合する方法
本文では、外部ナレッジベースAPIを利用して、DifyプラットフォームとAWS Bedrock Knowledge Baseを接続する方法を簡潔に紹介します。この接続により、Difyプラットフォーム内のAIアプリケーションは、AWS Bedrock Knowledge Baseに保存されているコンテンツを直接取得でき、新たな情報源を拡充することが可能となります。
準備
- AWS Bedrock Knowledge Base
- DifyのSaaSサービス / Dify コミュニティ版
- バックエンドAPI開発の基礎知識
1. AWS Bedrock Knowledge Baseの登録と作成
AWS Bedrockにアクセスし、ナレッジベースサービスを作成してください。
2. バックエンドAPIサービスの構築
Difyプラットフォームは、直接的にAWS Bedrock Knowledge Baseに接続することができません。開発チームは、Difyの外部ナレッジベース接続に関するAPI定義を参照し、バックエンドAPIサービスを手動で構築してAWS Bedrockと接続する必要があります。具体的なアーキテクチャの概要は以下の通りです:
以下の2つのコードファイルを参考にして、バックエンドサービスAPIを構築できます。
knowledge.py
knowledge_service.py
このプロセスでは、APIエンドポイントの構築と認証用のAPIキーの生成が行われます。
3. AWS Bedrock Knowledge BaseのIDの取得
AWS Bedrockの管理画面にログインし、作成したナレッジベースのIDを取得します。このパラメータは、Difyプラットフォームとの接続に使用されます。
4. 外部知識APIの関連付け
Difyプラットフォームの**“ナレッジベース”ページに移動し、右上の”外部ナレッジベースAPI”をクリックし、“外部ナレッジベースAPIを追加”**を選択します。
ページの指示に従い、以下の内容を順番に入力します:
- ナレッジベースの名称(カスタマイズ可能で、Difyプラットフォーム内の異なる外部知識APIを区別するために使用)
- APIエンドポイント(外部ナレッジベースへの接続アドレス、ステップ2でカスタマイズ可能)。例:
api-endpoint/retrieval
- API Key(外部ナレッジベースへの接続キー、ステップ2でカスタマイズ可能)
5. 外部ナレッジベースの接続
**“ナレッジベース”**ページに移動し、ナレッジベースのカードの下にある “外部ナレッジベースを接続” をクリックして、パラメータ設定ページに移動します。
以下のパラメータを入力してください:
-
ナレッジベースの名称と説明
-
外部知識API
ステップ4で関連付けた外部ナレッジベースAPIを選択
-
外部ナレッジベースID
ステップ3で取得したAWS Bedrock Knowledge BaseIDを入力
-
検索設定の調整
Top K: ユーザーが質問をした際に、関連性の高いコンテンツセグメントを取得するために外部知識APIにリクエストを送ります。このパラメータは、ユーザーの質問に類似したテキストセグメントを選ぶために使用されます。デフォルト値は3で、値が大きいほど関連性の高いテキストセグメントが取得されます。
スコア閾値: テキストセグメントの選択に使用される類似度の閾値です。設定されたスコアを超えるテキストセグメントのみが取得され、デフォルト値は0.5です。数値が高くなるほど、テキストと質問の類似度が高く、取得されるテキストの数は減少し、結果もより精度が高くなります。
設定が完了すると、外部ナレッジベースAPIとの接続が確立されます。
6. 外部ナレッジベースの接続と検索のテスト
外部ナレッジベースとの接続が確立された後、開発者は**“テスト取得”**で可能な質問のキーワードをシミュレートし、AWS Bedrock Knowledge Baseから取得したテキストセグメントをプレビューできます。
検索結果に満足できない場合は、検索設定を変更したり、AWS Bedrock Knowledge Baseの検索設定を調整したりすることができます。