0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Dify】マルチモーダルRAGを使って画像情報を聞いてみた

0
Posted at

1. はじめに

2025年12月にDify(v1.11.0以降)でマルチモーダルRAGのナレッジベース作成が可能になりました。
遅れながら試しにマルチモーダルRAGへ画像情報を登録して、チャットボットからRAGの画像情報を回答できるか試してみたいと思います。

やることはシンプル。

  1. サンプル画像が含まれたデータセットでナレッジベースを作成
  2. ナレッジベースから回答するAIチャットボットを作成
  3. AIチャットボットにナレッジベースの画像情報についてアレコレ質問

今回は私がお世話になっているサイゼリヤの間違い探しの画像をデータセットとして使ってみます。

実行環境

  • Dify セルフホスト版(バージョン 0.1.13)
  • docker compose
  • AWS Bedrock
    • モデル:anthropic.claude-sonnet-4-6
    • 埋め込みモデル:amazon.nova-2-multimodal-embeddings-v1:0

2. やってみる

まず、サイゼリヤのサイトから間違い探しの画像を7枚取得してデータセットを作ります。
※データセットは画像とタイトルとセットで貼っただけです。

2.1 ナレッジベース作成

Difyのナレッジページから、「ナレッジベースを作成」を押下
image.png

今回はデータセットをPDFにしたので、テキストファイルからを選択して、次へを押下
(チャンクの分割がうまくいかなかったので、試すときはWordファイルにしました。PDFもWordもナレッジベースの作成方法は同じです。)
image.png

チャンク設定はデフォルトで、
インデックス方法は高品質を選択して、埋め込みモデルを選択する。
image.png

埋め込みモデル選択時の注意点
選択する埋め込みモデルは”マルチモーダル機能”のVISIONに対応したモデルを選択する必要があります。
image.png

検索セットは、Bedrockにマルチモーダルに対応した再ランキングモデルがなかったため、ウェイト設定をデフォルトで利用しています。

「保存して処理」ボタンを押下すると、ナレッジベースが作成される!
はずでしたが、ステータスがエラーになってしまいました。
image.png


エラー対応

ここからはステータスのエラーの解消パートなので、
エラーが出なかった人は、スキップして下さい。
image.png

image.png

インデックスの作成に失敗した理由を確認してみると、以下のメッセージが表示されました。
Could not connect to Weaviate:Connection to Weaviate failed. Details: .
翻訳すると、どうやらWeaviateへの接続設定が悪さしているようです。
Weaviate に接続できませんでした: Weaviate への接続に失敗しました。詳細: .

どうやら原因は、「Weaviate のデータディレクトリを ホスト側ディレクトリへの bind mount で割り当てていたことが原因」のようです。

調べたところ、Difyのコミュニティサイトに私と同じエラーが出ていたので参考にさせていただきました。

対処方法としては、docker-compose.yamlの設定を修正します。

修正箇所

docker-compose.yaml
  weaviate:
    image: semitechnologies/weaviate:1.27.0
    profiles:
      - weaviate
    restart: always
    volumes:
-     - ./volumes/weaviate:/var/lib/weaviate
+     - weaviate_data:/var/lib/weaviate

# ファイル末尾
volumes:
+  weaviate_data:

設定を保存したら、コンテナの再起動を実施して下さい。
docker compose down && docker compose up -d

Difyの画面に戻って、インデックスの再作成をしたら、利用可能状態になりました。
image.png

2.2 チャットボット作成

では作成したナレッジベースをサクッとチャットボットに組み込んでいきましょう。

Difyのスタジオから「最初から作成」を押下
image.png

VISIONに対応したモデルを選択する
image.png

チャットボットを選択して、「作成する」ボタンを押下
image.png

サイゼリヤの間違い探しをするようにプロンプトを記入
image.png

コンテキストから「追加」ボタンを押下して、ナレッジベースを追加
image.png

image.png

以下のようにコンテキストに追加されていればOKです。
image.png

ビジョンを有効化する。
image.png

以上で、チャットボットの作成は完了です。

2.3 AIチャットボットにナレッジベースの画像情報を聞く

2.3.1 間違い探しを解いてもらう

画像からタイトルの取得はできてますね。
肝心の間違い探しについては、「子どもの服の色が異なる」と「タイルの模様が異なる」はおそらく合ってます。左下の作業員「表情が異なる」とかそれっぽい違いを答えてますが、残り8個は間違ってます。
image.png

2.3.2 タイトルから対象の画像を出力してもらう

タイトルを入力したら、ちゃんとナレッジベースから画像が出力されました!

チャット中に画像を出力させるにはマークダウンの画像埋め込み形式(![代替テキスト](画像のURL))で出力させる必要があります。うまくいかない場合はプロンプトを見直してみて下さい。
image.png

感想

DifyのマルチモーダルRAGをサクッと作って試してみました。
今までデータソースの画像情報について聞くことができなかったことを考えると待望の機能と言えます。

間違い探しの画像のように細かいところを聞くとなると埋め込みモデルの精度とかが影響しそうなので、埋め込みモデルの違いによる精度の違いを比較しても面白そうだと思いました。

あと今回はマルチモーダルに対応したリランキングモデルがBedrockになかったので、
検索設定をウェイトにしましたが、今後リランキングモデルを設定して精度向上に取り組むのも良さそうです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?