はじめに
Difyの機能としてfirecrawlというクローラーと接続してナレッジを構築できるようなのでやってみた。クローリングが出来ればデータ収集が楽ちんになりそうなので期待。
firecrawlとは
所謂クローラー。指定したURLからWebサイトをクロールして、LLMが扱いやすいようなクリーンなmarkdown形式、または構造化データに変換してくれる。SaaS版とOSS版がある。今回は両方使ってみた。
構築手順
Dify
前回の記事で作ったものを使用。省略。
SaaS版 firecrawlを使う方法
下記のページにサインアップする
API KeysページからKeyを発行する
Difyのナレッジを作成する際に「ウェブサイトから同期」を選択して発行したアプリキーを入力する。
Base URLには何も入れなくてOK
これで準備完了。
SaaS版は最大500回までクローリング出来る
firecrawlをセルフホストする方法
ここを参考にセットアップした。
OSS版のfirecrawlリポジトリ
リポジトリからクローン
git clone https://github.com/mendableai/firecrawl.git
ディレクトリに移動して、.env
ファイルをコピー
cd firecrawl
cp ./apps/api/.env.example ./.env
.env
ファイルを編集。編集した環境半数は以下の2つ
-
TEST_API_KEY
: 任意のAPIキーを設定-
fc-XXXXXX
という形式であれば問題ない
-
-
USE_DB_AUTHENTICATION
:false
に設定- データベース認証の有無だが、supabaseをセットアップして使用する必要があるみたいなので今回は不要
.env
ファイルの編集が終わったらコンテナを起動
docker compose up -d
以下のコマンドで動作確認が出来る。Hello, world!
と返ってきたらOK。
curl -X GET http://localhost:3002/test
firecrawlが起動出来たらローカルで起動しているDifyと接続する。
SaaS版と同様にナレッジの「ウェブサイトから同期」を選択して、firecrawlのセットアップをする。
そして先ほど.env
に書き込んだAPIキーを入力。
Base URLにはhttp://host.docker.internal:3002
を入力。
http://host.docker.internal
を指定すると、ホストマシン上で動作しているサービスにアクセスすることが出来る。Docker desktopの機能らしい。
ナレッジの構築
firecrawlが接続出来たら実際にクローリングしてナレッジを構築してみる。
今回はhttps://www.firecrawl.dev/
をクローリングして、サポートbotに使えそうなナレッジを作る。
OPTIONSで、サブページのクロールや、最大クロールページ数制限、クロールするページの階層の深さなどが設定できる。SaaS版を使用している場合は特にページ数制限をしておいた方が良いが、今回はOSS版で回しているので好き放題クロールしてもらう。
後はいつも通り、チャンキングやembeddingの設定をして終わり。
おわりに
思ったより簡単に出来た。とても嬉しい。
これをDifyと合わせてAzure上で動かしたりしたいが、まだ完全にセルフホストが出来る訳ではないような文章がfirecrawlのREADMEに書いてあったので、出来なさそう。今後に期待。