Difyの機能や操作手順まとめ
1. ナレッジベースとは?📚
Difyのナレッジベースとは、「よくある質問(FAQ)、マニュアル、専門記事、体験談」などの情報を一か所に整理して保管し、AIがそれらを参照できるようにするための仕組みです。つまり、RAG(Retrieval-Augmented Generation)の概念に基づいた機能です。RAGの詳細については別の記事で解説しておりますので、そちらをご参照ください。
本記事では、Difyのナレッジベースの具体的な使い方について説明します。操作方法に焦点を当てていますが、技術的な詳細を理解したい方向けに、各項目で参考リンクを掲載していますので、必要に応じてご覧ください。
2. ナレッジベースの作成・文書アップロード💾
作成手順:
1. 新規作成:トップメニューから「ナレッジベース」→「新規作成」
2.ファイルアップロード:
- ローカルファイル(TXT、Markdown、DOCX、HTML、JSON、PDFなど)
- オンラインデータソース(ウェブサイト、Notionなど)
※Difyのファイルサイズ、アップロード可能数はサブスクリプションプランに依存
新規データを作成する場合、Markdown形式が結局おすすめ
理由...
- シンプルで記述しやすい
純粋なテキストに見出しやリスト、強調などが簡単に書けるため、情報の整理が容易- 編集・保守が楽
テキストエディタで手軽に編集でき、必要に応じてHTMLやPDFに変換も可能- 構造化しやすい
各項目を階層化できるので、悩みごとや解決策を明確に区別でき、AIが情報を抽出しやすい構造
詳しくはこちら
3. コンテンツの分割と前処理✂️:
とりあえず「親子分割モードのデフォルト設定」を選択👍
ナレッジベースにアップロードした文書は、コンテンツ分割により小さなブロック(チャンク)に分割されます。チャンクに分ける理由は、大きな文章を小さな塊にすることで、「どこにどんな情報があるか」がわかりやすくなるため
例えば赤ずきんをチャンクに分けると...
- チャンク1:はじまり:赤ずきん、おばあさんに会いに森へ
- チャンク2:狼の罠:オオカミが先回りし、赤ずきんとおばあさんを飲み込む
- チャンク3:狩人救出:狩人が助け、オオカミ退治
こうやって分けておけば、どの部分に何が書いてあるかがすぐに分かりますね。
分割モードとは 📝
1. 汎用分割モード(シンプルに分けるって意味)
- 特徴:文章を区切り(改行や句読点など)に基づいて、そのまま短いチャンクに分割
- 例:
「今日は雨が降っています。傘を持って行きましょう。」
→ 「今日は雨が降っています。」と「傘を持って行きましょう。」の2つに分割- 利点:ルールがシンプルなため、準備は簡単、どんな文章も大体使える。
2. 親子分割モード(階層的な分けるって感じ)
- 特徴:大きなチャンク(親)と、その中に含まれる小さなチャンク(子)を組み合わせて分割
- 例えば...:
- 親チャンク:「赤ずきん」
- 子チャンク1:はじまり:赤ずきん、おばあさんに会いに森へ。
- 子チャンク2:狼の罠:オオカミが先回りし、赤ずきんとおばあさんを飲み込む
- 子チャンク3:狩人救出:狩人が助け、オオカミ退治
- 利点:大きな流れ(親チャンク)と詳細な内容(子チャンク)の両方を持ってるから、AIが文脈を理解しやすい。
まとめ 📌
- 分割モードでは、長い文章をどうやって分けるかのルールを決められる
- 基本は親子分割モードでいいけど、AIの課金抑えたいなら汎用分割モードでシンプルに実装しよう!
4. インデックス設定と検索方法🔎:
とりあえず「高品質モード」を選択しておけばOK
解説
RAGでは、AIが知識を検索しやすくするために 「インデックス」 を作成する。これは、テキストを「意味の近さ」で検索できるようにする仕組み。
- 例えば「DifyでRAGを設定するメリットは?」と質問したら...
こんな手順でシステムは動く!!
- 質問をベクトル化(Embedding):
まずは、質問文を「数値データ(ベクトル)」に変換- ベクトル検索:
質問のベクトルと、事前に設定したナレッジベースのベクトル(先ほどのチャンクで設定している)を照らし合わせて検索。- 関連情報をLLMに渡し、回答を生成:
検索で見つけた情報をもとに、ChatGPTなどのLLMが回答を作成。このような変換ができるように、Difyの「高品質モード」は、アップロードされたデータを、あらかじめ前処理(ベクトル化)しておいて、精度向上、検索結果の評価、できるようにしているらしい。
詳細はこちら
5. 埋め込みモデルの設定:
🌟 用途に合わせて選択!
正確さを最優先なら → text-embedding-3-large
速度とコストを重視なら → text-embedding-3-small
バランスを取りたいなら → text-embedding-ada-002
埋め込みモデル(Embedding Model)とは、先ほど説明した文章や単語を数値のかたまり(ベクトル)に変換するためのAIモデルです。よく使われるのが以下の3つで、お好きなのを選んでくださいということ。
下記は一応その特徴らしい(by ChatGPT)📌 1. text-embedding-3-large(高性能・大規模モデル)
- 特徴:
- 高い精度でテキストの意味を理解できます。
- 大規模な学習をしており、長い文章や複雑な内容にも強いです。
- おすすめの用途:
- 知識検索やFAQシステムなど、正確な検索結果が求められる場合
- 大規模なナレッジベースを扱う場合
- ポイント:高性能ですが、計算コストが高くなる場合があります💡
📌 2. text-embedding-3-small(軽量・高速モデル)
- 特徴:
- 処理が軽く、動作が速いモデルです。
- 意味理解は「large」より少し劣りますが、十分に実用的です。
- おすすめの用途:
- リアルタイムのチャットボットや、高速な検索が求められる場合
- モバイルアプリや小規模なシステム
- ポイント:速度重視で、軽量かつコストを抑えたい場合に適しています🚀
📌 3. text-embedding-ada-002(定番モデル・コストパフォーマンス重視)
- 特徴:
- OpenAIが提供する定番の埋め込みモデルです。
- 高いコストパフォーマンスで、精度と速度のバランスが良いです。
- おすすめの用途:
- コストを抑えながらも高品質な結果を求める場合
- 多言語対応が必要なナレッジベース
- ポイント:価格と性能のバランスが取れており、多くのプロジェクトで選ばれています💰
とりあえず、text-embedding-ada-002で設定しました
6. 検索結果とRAGの実現🔄:
「ハイブリッド検索」を選択!
検索とは。。。
ベクトル化したユーザーからの質問に、近い値をベクトル化したナレッジベースから探すこと
再ランキング(Rerank)とは。。。
選ばれたナレッジベースのデータを再評価して、最も適切な情報を選択すること
どの検索方法を使うかで、回答の正確さやスピードが大きく変わるのでここは結構大事
ここでは、代表的な3つの検索設定を解説!
📌 1. ベクトル検索(Vector Search) 🧠
- 特徴:文章の「意味」に基づいて検索します。
- AIが文章をベクトル(数値)に変換して、意味が近いものを探します。
- キーワードが完全に一致しなくても、「意味が似ている文章」を見つけられます。
- 例:
質問:「安眠のコツは?」
→ 「夜はスマホを控えましょう」「就寝前にハーブティーがおすすめ」など意味の近い回答を返します。- おすすめの用途:FAQ検索、悩み相談、ドキュメント検索など
- ポイント:意味を理解するので、誤字や言い回しが違っても適切な結果を出せます✨
📌 2. 全文検索(Full-Text Search) 📝
- 特徴:文章の「言葉(キーワード)」を基に検索します。
- 文書全体をインデックス化して、入力されたキーワードが含まれている部分を探します。
- 検索エンジンのように、直接的なキーワード一致を得意とします。
- 例:
質問:「睡眠不足」
→ 「睡眠不足を改善する方法」「睡眠不足の原因とは?」など、キーワードが含まれる文章を返します。- おすすめの用途:FAQのキーワード検索やマニュアル内検索など
- ポイント:キーワードがはっきりしている場合に高速で正確な検索が可能です🚀
📌 3. ハイブリッド検索(Hybrid Search) 🧩
- 特徴:ベクトル検索と全文検索を組み合わせた方法です。
- まず全文検索で「キーワードが含まれる文章」を探し、
- 次にベクトル検索で「意味が近い文章」を再ランキングします。
- 例:
質問:「快眠するには?」
→ 「睡眠の質を高める方法」「就寝前のルーティン」など、意味も関連性も高い回答を返します。- おすすめの用途:FAQ、ヘルプセンター、ナレッジベースなど、多様な質問が想定される場合
- ポイント:正確さと広がりのバランスが良く、最もおすすめの検索設定です✨
📊 検索設定の選び方
- シンプルな検索が欲しい場合 → 「全文検索」がおすすめです💨
- 意味を理解した検索が欲しい場合 → 「ベクトル検索」がおすすめです💡
- 正確さと意味のバランスを重視したい場合 → 「ハイブリッド検索」がおすすめです🌟
まとめ🎉
- Difyは、最新情報をリアルタイムに扱うナレッジベースプラットフォームです。
- コンテンツの分割とインデックス設定により、LLMがより正確な回答を出せる環境を構築します。
- 高品質な検索とAPI連携により、業務の効率化や柔軟なカスタマイズが実現可能です。
これらの機能を活用して、RAGを組み込んだ高精度なAIアプリケーションを、たった数分で構築できる点がDifyの大きな魅力です!🚀
実際に構築したRAGでアプリを作ってみる解説記事は下記を参照ください。