見出し画像

DifyとNotionを連携させてみよう!


DifyのナレッジとしてNotionを利用

DifyはNotionと連携し、Notionに登録されているデータをナレッジとして利用する素敵な機能が搭載されています。
筆者自身、Notionに気になった記事をクリップするだけでなく自身の学習記録やサブスクの管理など多方面で使用しているためNotionを利用する方はDifyとの連携でよりNotionのデータを効果的に利用できると思います。

DifyとNotionを連携しよう!(24/04/27時点)

実行環境

Windows11 WSL2 ubuntu
Dify 0.6.5(Docker)

DifyとNotionを連携するために、まずはNotionのインテグレーションからキーを取得します。
internal integration と public integration がありますが今回はinternal integration で進めていきます。
以下のサイトの手順に従ってキーを取得し、あとで使うのでメモに残してください。

対象のワークスペースとインテグレーション(キー)の名前を入れてsend
キーを取得

環境変数へキーを登録しよう!

公式によると、「.envファイルのNOTION_INTEGRATION_TYPENOTION_INTERNAL_SECRETに値を設定するとOK!」のように書いてありますが、こちらのやり方で試しましたが筆者では実現することが出来ませんでした。
https://docs.dify.ai/features/datasets/sync-from-notion

Difyからつなげようとしてもエラーとなってしまう

調査したところ、Dockerの場合は.envではなくdocker-compose.yamlNOTION_INTEGRATION_TYPENOTION_INTERNAL_SECRETを設定する必要がありました。
https://docs.dify.ai/getting-started/install-self-hosted/environments#notion-integration-configuration

以下のようにdocker-compose.yamlNOTION_INTEGRATION_TYPENOTION_INTERNAL_SECRETを設定し保存します。
{hogehoge}には先ほどNotionで取得したキーを設定してください。

NOTION_INTEGRATION_TYPE: internal
NOTION_INTERNAL_SECRET: {hogehoge}
enviromentの適当なところに追記

設定したら以下のコマンドを実行して再起動しましょう。作業中であれば必ず保存してから実行してください。

docker compose down
docker compose up -d

再起動後、設定画面のデータソースを確認してください。
正常に接続されていれば以下のように「Connected」と表示されます。
接続できていない場合はキーが誤っていないか、環境変数名が誤っていないかを確認してみましょう。(私は環境変数名が間違ってたことがありました)

データを登録してみよう!

Notionに接続まではできましたがこのままではページの情報は取れません。
次はNotion側で接続の設定を行います。
(筆者はここがわからなくて詰まりました)

接続できてSyncも何度も押したけど変わらない画面

Notionのページへの接続を許可する

Notionに操作を移し、参照したいページの「…」から「接続先」を選択するとインテグレーションを作成した際に登録した名前が表示されますので選択してください。

接続できると「接続先」にインテグレーションが追加されます

Difyからデータを取得する

Difyに操作を戻して、「ナレッジ」→「知識の追加」→「Notionから同期」を選択します。
接続が上手くできていると、対象のページから参照できるページの一覧が表示されます。

取得できてるっぽいけどタイトルが…

データとして登録する対象を選択(チェックして)して「次へ」と選択しあとは任意のRAGの設定をしておしまいです。

こんな感じで登録されたら完了です!

Notionをデータソースとして利用してみよう!

ではNotionをナレッジとして回答する簡単なチャットボットにテンプレート使って作成します。
テンプレートは今回は「Knowledge Retreival + Chatbot」を使用します。
テンプレートの使い方はこちらの記事を参考にしてください。

「Knowledge Retrieval」で先ほどの登録したNotionデータを設定します。
Modelなどはお好みで調整し、れっつら実行!

今回は「Notion web clipper」でNotionに保存した経済産業省のGENIACに関する記事について聞いてみます。

Notion上に登録されているデータ

「GENIACを立ち上げた理由は?」と質問したところ、登録したデータに基づいて回答をしてくれました。
(もうちょっとRAGの設定をちゃんとすれば良かった)

データを引用して回答してくれています

いかがでしたでしょうか?若干手間がかかりますがこのような手順でNotonと連携することが出来ます。しかし、現状の課題としては以下があると思います。

課題

  • Notionからのデータ取り込みが自動的(スケジュール実行など)にできないため、Notion上で新しいデータが登録された際はDify側で手動でのデータの再登録やRAGの再設定をしないといけない。

  • docker-compose.yamlに環境変数を設定することになるので、Difyのアップデートに伴って更新が発生した際、Notionの設定が消えてしまう可能性がある

上記のように課題はありますが、逆に言えば伸びしろでありますので今後のアップデートに期待です。
Notionでデータを蓄積されている方は是非とも試してみてください!