Difyで処理によってナレッジ(dataset)を切り替えたいけど、分岐が大量になってしまう・・・を無理やり解決するツールを作った話

Jul 7, 2024, 9:07 AM
かなりニッチなニーズだと思いますが、Dify のワークフローの中で、例えば、ログインしているユーザー別にナレッジの内容を変えたい!というようなニーズがあった場合、現在のDifyでは、ユーザーの数だけ分岐を作る必要があり、現実的ではありません。
そのうち、標準機能で、引数でナレッジを切り替えられるようになる予感はしますが、その間の付け焼き刃として無理やり切り替えることができるツールを作ったので公開します。

解決する問題


現状、Knowledge Retrieval は、ワークフローを作るときに固定で指定する必要があります。

問題を解決するために作ったツール (Search-Knowledge-By-Id)


ナレッジを指定して検索できるようになります。
DATASET_ID とは、作ったナレッジをブラウザで開いたときにアドレスバーに表示される
https://dify.microai.jp/datasets/{{dataset_id}}/documents
の {{dataset_id}} の部分です。

Search-Knowledge-By-Id の使ったチャットボット例



引数の説明

最初に書いたように 無理やり です。
Difyの管理用機能を使用するため、管理者のアカウント情報が必要です。
  • DIFY_APIS_USER_NAME : 管理者のログインID
  • DIFY_APIS_USER_PASSWORD : 管理者のパスワード
  • DIFY_HOST : ご自身のDifyのURL 例: https://dify.xxxx.xx
  • DATASET_ID : ナレッジのIDです。ブラウザでナレッジを開いたときアドレスバーに表示されています。例: ec61be38-51c2-4040-a064-7c31ec151ddd
  • SEARCH_QUERY : 検索する内容(ユーザーのチャットの内容そのまま)
  • TOP_K : 検索結果を何件返すか?の数値

ツールのダウンロード

search-knowledge-by-id.yml (7.66 kB) 
インポートしてお使いください。
ご利用は、自己責任でお願いいたします🙇‍♂
URLを指定するとページからタイトル、本文等の情報を取得するシンプルな本文抽出WEBアプリをgithubで公開しました
ベクトルデータベース Weaviate を試す。Docker で起動〜簡単なテストまで