RAGFlow の使い方:信頼性の高い RAG アプリケーションを構築するための実践ガイド
検索拡張生成(RAG)システムを構築しようとしたことがあるなら、おそらく、幻覚、不安定な検索、遅いパイプライン、煩雑なドキュメントの前処理といった、典型的な問題点に突き当たったことでしょう。RAGFlow は、ドキュメントの取り込み、チャンク化、ベクトル化、検索、生成をより細かく制御し、可観測性を高めることができる、エンドツーエンドのワークフローツールとして役立ちます。
このガイドでは、実践的かつ問題解決に焦点を当てたアプローチを取ります。クリーンなセットアップを紹介し、実際のドキュメントで RAGFlow を使用する方法を示し、実際に幻覚を減らし、回答の質を向上させるパターンを共有します。
RAGFlow とは何ですか?また、なぜ使用するのですか?
RAGFlow は、検索拡張生成パイプラインを構築するためのシステムです。一般的な RAG のセットアップでは、以下のことを行います。
- 取り込み(PDF、ウェブページ、スライド、コードなど)を取り込みます。
- コンテンツをチャンク化して、検索可能な単位にします。
- セマンティック検索のために、チャンクを埋め込みベクトルに変換します。
- 質問時に、上位 k 個の関連するチャンクを検索します。
- LLM を使用して、根拠に基づいた回答を生成します。
RAGFlow は、独自のデフォルト設定、ワークフローブロック、およびガードレールを追加することで、より迅速に反復処理を行い、より信頼性の高いアプリケーションをリリースできるようにします。特に、以下のような場合に役立ちます。
- 一貫性のあるチャンク化とメタデータ:優れた検索は、優れたチャンクから始まります。
- プラグ可能な埋め込みと LLM:OpenAI、ローカルモデル、またはエンタープライズエンドポイントを入れ替えます。
- 評価とガードレール:検索品質を測定し、幻覚を減らします。
- デプロイ可能なパイプライン:書き換えを減らして、ノートブックから本番環境に移行します。
クイックスタート:ゼロから動作する RAGFlow パイプラインへ
以下は、適用可能な最小限のエンドツーエンドワークフローです。環境が異なる場合でも、シーケンスとガードレールは移植可能です。
1) 環境を準備する
OPENAI_API_KEY(または別の LLM プロバイダー)
EMBEDDINGS_API_KEY(別のプロバイダーを使用する場合)
VECTOR_DB_URL(例:Pinecone、Weaviate、Qdrant、またはローカル)
- プロジェクトディレクトリを設定します。例:
ragflow-project/ と以下のフォルダー。
data/processed/ (クリーンなチャンク)
configs/ (パイプライン設定用の YAML/JSON)
2) クリーンなメタデータを含むドキュメントを取り込む
優れたメタデータ = 優れた検索。タイトル、著者、日付、およびソースを正規化します。
- 堅牢なパーサーを使用して、PDF およびスライドをテキストに変換します
- 構造を保持する:見出し、リスト、コードブロック、およびテーブル
- 各チャンクにメタデータを添付する:
source、section、page、timestamp、version
ヒント:doc_id と chunk_id を保持して、引用と再取り込みをサポートします。
3) コンテンツに合ったチャンク化戦略を選択する
チャンク化は、検索品質とレイテンシーに大きく影響します。
- 物語的なドキュメントの場合:セマンティックチャンク化(見出し/段落で分割)
- 技術的なドキュメントの場合:ハイブリッドチャンク化(セマンティック + 固定ウィンドウ)を使用します。
- コードの場合:小さなスライディングウィンドウで関数/クラスごとにチャンク化します
開始におすすめの設定:
chunk_size: 600〜1,000 トークン
chunk_overlap: 50〜100 トークン
max_depth: フラグメンテーションを避けるために、ネストされたセクションを 2〜3 レベルに制限します。
4) 埋め込みとベクトルストアを選択する
- 強力な汎用埋め込みモデル(例:text-embedding-3-large または最新のローカルモデル)から始めます。プライバシーが重要な場合は、セルフホスト型の埋め込みを検討してください。
テストするインデックス設定:
similarity_metric = cosine (または特定のモデルの場合はドット)
- 冗長性を減らすために、最大マージナル関連性(MMR)を有効にします。
5) 検索オーケストレーション
2 段階のリトリーバーを実装します:
- クロスエンコーダーリランカーまたは LLM ベースのスコアリング
source:"handbook" AND section:"benefits" AND version:"v2" のようなメタデータフィルターを追加して、信頼できるドキュメントに回答を制限します。
6) 構造化された根拠のある生成
プロンプトは、証拠が弱い場合に引用と拒否を強制する必要があります。
システムプロンプトの例:
あなたは注意深いアシスタントです。提供されたコンテキストによってサポートされている情報のみを使用して回答してください。
- [doc_id:chunk_id]としてソースをインラインで引用してください。
- コンテキストが不十分な場合は、「提供されたドキュメントに十分な情報がありません」と述べてください。
- 事実を捏造しないでください。
ユーザープロンプトテンプレート:
質問:{query}
コンテキスト:
{top_chunks}
指示:
- 最初に簡潔な回答を提供し、次に詳細を提供してください。
- 各事実の主張の後に引用を含めてください。
7) 幻覚を減らすためのガードレールを追加する
- 回答可能性チェック:生成の前に、小さなモデルに「検索されたチャンクに直接的な証拠はありますか?」と尋ねます。ない場合は、明確化の質問を返します。
- 引用または黙秘ポリシー:引用がない出力をブロックします。
- エンタープライズコンテンツ用の毒性/PII フィルター。
8) 評価と継続的な改善
eval/ セットを以下で作成します:
- 該当する場合は、予想されるソース (ドキュメント ID)
測定:
- 検索ヒット率(上位 k 個にゴールドソースが表示されますか?)
- 回答の忠実性(引用でサポートされたステートメント)
以下を繰り返します:
完全な RAGFlow パイプライン:構成例
以下は、ツールチェーンに適用できる概念的な構成です。必要に応じてプロバイダー名を置き換えてください。
project: product-handbook-rag
io:
input_path: data/raw/
output_index: product-handbook-index
parsing:
pdf:
strategy: auto
keep_layout: true
extract_tables: true
markdown:
preserve_headings: true
chunking:
method: semantic_hybrid
target_tokens: 800
overlap_tokens: 80
windowing: 2
metadata:
fields: [doc_id, title, section, page, version, source]
embeddings:
provider: openai
model: text-embedding-3-large
vectorstore:
type: qdrant
url: ${VECTOR_DB_URL}
similarity: cosine
retrieval:
hybrid: true
lexical_weight: 0.35
semantic_weight: 0.65
candidate_top_k: 40
rerank:
enabled: true
model: bge-reranker-large
final_top_k: 7
generation:
llm: gpt-4o
temperature: 0.2
cite_or_silence: true
guardrails:
answerability_check: true
pii_filter: true
toxicity_filter: moderate
monitoring:
log_traces: true
latency_budget_ms: 3500
cost_budget_per_100: 1.25
さまざまなコンテンツタイプに RAGFlow を使用する方法
製品マニュアルとハンドブック
- 明確なセクションの境界線を持つセマンティックチャンク化を推奨します
- 古くなった回答を防ぐために、バージョンと有効期限を添付します
- 厳格なフィルターを使用する:常に
version = latest を要求します
ナレッジベースと FAQ
- 正確な回答を得るには、より小さなチャンク(400〜600 トークン)を使用します
- 候補プールを増やし、リランキングを利用して正確なスニペットを見つけます
- レキシカル検索によるリコールを促進するために、正規の Q/A ペアを自動生成します
エンジニアリングドキュメントとコード
- 関数/モジュールごとにチャンク化し、メタデータにインポートグラフを含めます
- 親子検索を有効にする:関数 + その docstring コンテキストを返します
- 関連するシンボルを優先するために、コード対応のリランカーを使用します
法務およびコンプライアンス
- 不完全なコンテキストに対する拒否ロジックを追加します
- 規制当局が承認したソースのゴールデンセットを別のインデックスに保持します
実際に機能するプロンプトパターン
- 回答して引用:最初に短い回答、次に各主張の後にインラインで引用
- 検索の連鎖:最初にモデルに各チャンクを要約させ、次に合成させる
- クエリの書き換え:検索前に、同義語とドメイン用語でユーザーのクエリを拡張する
- 対照的なプロンプト:「コンテキストに基づいて、オプション A が B よりも優れている理由を説明してください。」これにより、証拠の使用が強制されます
クエリの書き換えステップの例:
オリジナル:「PTO の繰り越しポリシーは何ですか?」
書き換え:「有給休暇の繰り越しポリシー;休暇のロールオーバー;最大時間;ポリシーバージョン最新」
可観測性とフィードバックループ
- どのチャンクが使用されたか、そのスコア、および無視されたかをログに記録します
- 短い理由とともに賛成/反対をキャプチャします。それをリトリーバーの調整にフィードバックします
- モデルの変更をデプロイする前に、評価セットで毎週回帰テストを実行します
パフォーマンスチューニングのチートシート
- 回答が一般的な場合は:
candidate_top_k を増やし、より強力なリランカーを追加します
- 回答が詳細を欠いている場合:チャンクサイズを小さくします。レキシカルウェイトをわずかに高めます
- 引用が同じチャンクを繰り返す場合:MMR を有効にし、多様性を高めます
- レイテンシーが高い場合:埋め込みをキャッシュし、クエリの書き換えを事前計算し、より小さなリランカーを使用します
- コストが急上昇する場合:生成温度を下げ、プロンプトを短くし、最初のパスでより小さな LLM を試してください
セキュリティとガバナンスの要点
- 保存されたベクトルを暗号化し、メタデータの機密フィールドを編集します
- インデックスごとのアクセス制御を使用します。チームまたはデータの機密性でセグメント化します
- データリネージレコードを保持します:ドキュメントソース URL、チェックサム、および取り込みタイムスタンプ
ケーススタディのスナップショット:煩雑な PDF から信頼できる回答へ
サポートチームは 1,200 ページの PDF を取り込みました。最初の検索は一貫性がなく、エージェントはボットを信頼していませんでした。セマンティックハイブリッドチャンク化(800 トークン、80 オーバーラップ)に切り替え、クロスエンコーダーリランキングを有効にし、引用または黙秘を強制した後、上位 k のヒット率は 62% から 89% に上昇し、エージェントの採用は 2 倍になりました。重要なのは、より大きな LLM ではなく、よりクリーンなチャンクとより厳格な検索でした。
ツールヒント:AI サイドバーによる迅速な反復
注目すべき点:多くのドキュメントにわたってプロンプトと検索スニペットを試している場合、ブラウザーから PDF、ウェブページ、およびコードをチャットできる AI アシスタントは、反復を加速できます。ちなみに、Sider.AI(https://sider.ai/)は、ページからコンテキストを取得し、要約し、プロンプトを迅速に改良できる AI サイドバーを提供しています。RAG プロンプトをプロトタイプ化し、パイプラインを正式化する前にチャンク品質をテストするのに役立ちます。 RAGFlow のトラブルシューティング:クイックフィックス
- 回答可能性チェックを有効にする。温度を下げる。引用を要求する
- MMR をオンにする。リランカーを追加する。チャンクのオーバーラップを減らす
- バッチ埋め込み。クエリの書き換えをキャッシュする。ストリーミング生成を使用する
version = latest でフィルタリングする。古くなったドキュメントを非推奨にするか、墓石化する
次のステップ:本番環境で RAGFlow を信頼できるようにする
- 小さくて信頼できるコーパスから始めます。最初にチャンク化とフィルターを完璧にします
- LLM をアップグレードする前に、リランカーを追加します
- 100 問の評価セットを作成し、毎週ヒット率を追跡します
- ユーザーフィードバックを配線して、検索を継続的に調整します
主なポイント:
- RAG では、モデルサイズよりも検索品質が重要です
- チャンク化、メタデータ、およびリランキングがコアレバーです
- 引用または黙秘などのガードレールは、信頼性を劇的に高めます
これらのプラクティスにより、RAGFlow は、ヘルプボット、開発者コパイロット、または社内ナレッジアシスタントを強化する場合でも、根拠のある回答のための信頼できるバックボーンになります。
FAQ
Q1:RAGFlow とは何ですか?ドキュメント QA にどのように使用しますか?
RAGFlow は、検索拡張生成パイプラインを構築するためのフレームワークです。幻覚を減らし、精度を向上させるために、引用を含む回答を取り込み、チャンク化し、埋め込み、検索し、生成します。
Q2:RAGFlow でドキュメントをどのようにチャンク化する必要がありますか?
600〜1,000 トークンのチャンクと 50〜100 トークンのオーバーラップを持つセマンティックまたはハイブリッドチャンク化を使用します。コードの場合、関数またはクラスごとにチャンク化し、周囲のコンテキストを含めます。
Q3:どのベクトルデータベースが RAGFlow で最適に動作しますか?
ハイブリッド検索、メタデータフィルター、およびリランキングをサポートするストアを選択してください。Qdrant、Weaviate、Pinecone、またはローカルオプションはすべて一般的な選択肢です。
Q4:RAGFlow アプリで幻覚を防ぐにはどうすればよいですか?
引用または黙秘ポリシーを強制し、生成前に回答可能性チェックを追加し、検索されたコンテキストのみを使用することについてプロンプトを厳密に保ちます。
Q5:RAGFlow を評価するためにどのような指標を追跡する必要がありますか?
検索ヒット率、回答の忠実性、レイテンシー、および 100 クエリあたりのコストを監視し、小さくても代表的な評価セットを維持します。