Skip to main content

RAG Pipeline 前処理 — 能力境界の説明

本ドキュメントは、RAG Pipeline 前処理システムの能力範囲既知の制限、およびリスク閾値を参考用として定義します。


1. ファイルタイプ対応マトリクス

1.1 直接対応しているファイルタイプ

ファイルタイプ拡張子解析ステップ備考
PDF.pdfPDF_CONTENT_EXTRACTION / TEXTIN / AZURE_DI / ALI_OCR / LLM_CONTENT_EXTRACTION基本解析はテキスト型 PDF のみに適用され、スキャン文書は OCR ステップが必要
Word 文書.docxDOCX_CONTENT_EXTRACTIONpypandoc により Markdown へ変換し、段落/表/埋め込み画像をサポート
旧版 Word.doc先に FILE_CONVERT_WITH_SPIRE または FILE_CONVERT_WITH_LIBREOFFICE で変換が必要直接解析不可、必ず .docx または .pdf に変換する必要あり
Markdown.mdMD_CONTENT_EXTRACTIONネイティブ対応
プレーンテキスト.txtTXT_CONTENT_EXTRACTIONネイティブ対応
Excel.xlsx .xlsTABULAR_CONTENT_EXTRACTION行数・列数の制限あり、§2 を参照
CSV / TSV.csv .tsvTABULAR_CONTENT_EXTRACTION
PowerPoint.pptx .ppt先に FILE_CONVERT_WITH_SPIRE または FILE_CONVERT_WITH_LIBREOFFICE で変換が必要直接内容抽出は不可、先に PDF へ変換する必要あり
画像.png .jpg .jpeg .gif .webp .svgIMAGE_CONTENT_EXTRACTIONVision LLM(例: GPT-4o)を使用して画像内容を記述、上限 300 語
動画.mp4 .avi .mkv .movVIDEO_CONTENT_EXTRACTION音声トラックを抽出 → テキストへ文字起こし
音声.mp3 .wav .flac .aacAUDIO_CONTENT_EXTRACTION60 秒ごとの断片に分割して順次文字起こし

1.2 非対応 / 明示的に禁止されているファイルタイプ

タイプ説明
.exeハードコードされたブラックリスト(_UNSUPPORTED_EXTENSIONS
.zip / .rar などの圧縮ファイル解凍ステップがなく、Pipeline では処理しない
.html / .xml専用の解析ステップなし
.json / .yaml専用の解析ステップなし
.eml / .msg メール非対応
.dwg / .dxf CAD ファイル非対応
.rtf専用ステップなし(LibreOffice による変換は試行可能だが保証なし)
暗号化 / パスワード保護ファイルすべての形式で暗号化ファイルは処理不可

2. ファイルサイズとリソース制限

2.1 事前チェック制限(file_limit_checker

アップロード時に軽量な事前チェックが実行され、制限超過ファイルはアップロード拒否または警告付きでマークされます:

次元デフォルト閾値設定可能説明
文字数15,000 文字FILE_LIMIT_CHECK_CONFIG 環境変数で設定PDF/DOCX/TXT/MD/CSV/XLSX などのテキスト系ファイルに適用
ページ数25 ページ✅ 同上PDF は物理ページ数、Excel は Sheet 数、PPT はスライド数で計算

⚠️ ナレッジベースのファイルソース一括インポートはこの事前チェック制限の対象外ですが、ファイルが大きすぎる場合は依然として OOM リスクがあります。

2.2 Pipeline 処理内のリソース閾値

リソース次元閾値 / 設定リスク
PDF 並列ページ変換1 バッチあたり 50 ページ(PDFConversionDefaultOptions.CHUNK_SIZE超大規模 PDF(500+ ページ)は pdf2image 変換時のメモリ使用量が高く、OOM を引き起こす可能性あり
表の行数1 Sheet ≤ 20,000 行超過時は直接エラーとなり解析拒否
表の列数1 Sheet ≤ 200 列超過時は直接エラーとなり解析拒否
表の画像1 ファイル ≤ 150 枚(_MAX_IMAGES超過分の画像は無視
ベクトル化バッチ1 バッチあたり 100 セグメント(batch_size
セグメント画像密度1 セグメント ≤ 5~8 枚の画像超過時は token オーバーフロー回避のため早期分割を実施
音声スライス60 秒 / セグメント長時間の音声/動画では大量の文字起こし API 呼び出しが発生
TextIn OCRAPI レベル設定で最大 1,000 ページクォータ枯渇時はエラー

2.3 OOM / リソース過負荷リスクのシナリオ

シナリオリスクレベル原因推奨
PDF > 200 ページ + pdf2image🔴 高pdf2image は 300 DPI で各ページをメモリ上の bitmap としてレンダリングし、200 ページ ≈ 数 GB のメモリ基本解析の代わりに OCR ステップ(TextIn/Azure DI)を使用
Excel 単一 Sheet > 10,000 行🟡 中全量をメモリに読み込み、大量の段落を生成ファイルを事前分割するか worker メモリを増やす
動画 > 2 時間🟡 中ffmpeg による音声抽出 + 120 回の 60s 文字起こしリクエスト動画長を制限するか事前に分割
単一ファイルに 100+ 枚の埋め込み画像🟡 中各画像ごとに Vision LLM 呼び出しが必要で、時間とコストが高い重要な画像のみ抽出
1,000+ ファイルの一括インポート🟡 中Celery worker キューが滞留し、gevent の並列上限は 100分割してインポートし、キュー深度を監視

3. ファイル解析能力のレベル分け

3.1 解析エンジン比較

エンジン解析方式適用シナリオ不適用シナリオ依存関係
Basic(pypdf / pdfplumber)テキストレイヤーを直接抽出ネイティブテキスト PDF(Word 出力、LaTeX 生成など)スキャン文書、画像 PDF、複雑なレイアウト外部依存なし
TextIn OCRクラウド OCR + レイアウト解析スキャン文書、伝票、混在レイアウト PDFTEXTIN_APP_ID / TEXTIN_APP_SECRET
Azure Document Intelligenceクラウド Layout/Read モデル表構造の保持、複数カラムレイアウトazure_ocr_endpoint / azure_ocr_key
Ali OCRAlibaba Cloud OCR中国語シナリオのスキャン文書Alibaba Cloud API 認証情報
LLM 解析(PDF LLM)ページスクリーンショット → Vision LLM 認識極めて複雑な版面、図文混在大容量ファイル(高コスト・低速)Vision LLM(GPT-4o など)
pypandocPandoc 形式変換DOCX → Markdown複雑なマクロ、ActiveX コントロールPandoc バイナリ
LibreOffice / Spire形式変換エンジン.doc.docx.ppt.pdfLibreOffice または Spire ランタイム

3.2 各ファイルタイプの解析能力詳細

PDF

特性BasicTextInAzure DILLM
プレーンテキスト抽出
スキャン文書 / 画像 PDF❌ 空を返す
表構造の保持❌ 書式喪失✅(Layout モード)
複数カラムレイアウト❌ テキストが乱れる
ハイパーリンク抽出✅(pdfplumber
埋め込み画像抽出✅(PNG に変換)
処理速度⚡ 高速🐢 中🐢 中🐌 低速
コスト無料💰 ページ課金💰 ページ課金💰💰 token 課金

DOCX

特性対応状況
段落テキスト
✅(Markdown 表へ変換)
埋め込み画像✅(独立ファイルとして抽出 + Markdown マーク)
目次 / ブックマーク⚠️ 一部対応(Pandoc 変換時に失われる可能性あり)
マクロ / VBA❌ 無視
変更履歴 / コメント❌ 消失
複雑なネスト表⚠️ Pandoc の挙動は不安定

表形式ファイル(Excel / CSV)

特性対応状況
複数 Sheet✅ Sheet ごとに処理
数式⚠️ 計算後の値のみを読み取る(data_only=True
グラフ / ピボットテーブル❌ 無視
埋め込み画像✅(上限 150 枚 / ファイル)
結合セル⚠️ データずれを引き起こす可能性あり
20,000 行超過❌ 解析拒否
200 列超過❌ 解析拒否

音声・動画

特性対応状況
音声文字起こし✅(60s ごとの分割文字起こし)
多言語認識文字起こしサービスのモデルに依存
話者分離
背景音楽 / ノイズ⚠️ 文字起こし品質に影響
動画画面内容の認識❌ 音声トラックのみ抽出
字幕 / CC 抽出

画像

特性対応状況
画像内容の記述✅ Vision LLM による記述(≤ 300 語)
OCR 文字認識⚠️ Vision LLM の能力に依存し、専門 OCR ではない
グラフ / フローチャート理解⚠️ 限定的(LLM の理解力に依存)
SVG ベクター画像⚠️ LLM がレンダリング可能かに依存

4. セグメンテーション(Segmentation)能力と制限

セグメンテーション方法適用シナリオパラメータ制限
固定文字数FIXED_SIZE汎用テキストchunk_size=1024文の途中で切断される可能性あり;1 セグメント ≤ 5~8 枚の画像
ページ単位PAGEPDF 文書PDF のみ有効;ページごとの差が大きい場合、段落品質が不均一
見出し単位TITLEMarkdown 文書chunk_size=1024# / ## / ### 見出しのみ認識;見出しがない場合は文書全体が 1 セグメントに退化
表形式TABULARExcel / CSV表形式ファイル専用
LLM インテリジェントLLM意味的一貫性が必要なシナリオ低速・高コスト;大容量ファイルには非経済的
細分化REFINE粗分割結果の二次最適化上流の粗分割ステップと組み合わせて使用する必要あり

共通制限

  • 分割時に表 / コードブロックが切断されないよう保護(RecursiveCharacterTextSplitter のフォールバック区切り文字)
  • 超長セグメント(> 65% chunk_size)は spaCy を用いて文単位で細分化
  • 1 セグメント内の画像が多すぎる場合(> 5 枚)は強制分割を実施

5. フィールド抽出能力

ステップ機能依存関係制限
METADATA_EXTRACTION文書レベルのメタデータ(タイトル/著者/日付など)LLMSchema は事前定義が必要
SEGMENT_METADATA_EXTRACTION段落レベルのメタデータLLM各段落ごとに 1 回の LLM 呼び出しが必要で、大容量ファイルでは高コスト
KEYWORDS_EXTRACTIONキーワード抽出LLM
SEGMENT_SUMMARY段落要約LLM各段落ごとに 1 回の LLM 呼び出し
DOCUMENT_SUMMARY全文要約LLM長文書では切り詰めまたは分割集約が必要
TABLE_CAPTIONING表の説明生成LLM
TABLE_CAPTIONING_ADVANCED表レベル要約 + 行レベル叙述のグループ化LLM複雑な表の効果は LLM の理解力に依存
IMAGE_CAPTIONING画像説明生成Vision LLM各画像ごとに 1 回の LLM 呼び出し

6. 後処理(Postprocessing)能力

ステップ機能設定制限
EMBEDDINGテキストのベクトル化batch_size=100Embedding モデルに依存;画像プレースホルダーは自動的に除去
TOKENIZER全文インデックス用トークン化spaCy 言語モデルPostgreSQL tsvector の長さ制限
EMBEDDING_STOREベクトルを VectorDB に書き込みバッチ書き込みで、VectorDB の性能に依存
TOKENIZER_STOREトークンを PostgreSQL に書き込み

7. 形式変換能力

入力形式出力形式変換エンジン制限
.doc.docx / .pdfLibreOffice / Spireサーバー側に対応ランタイムのインストールが必要
.ppt.pdfLibreOffice / Spireアニメーション/トランジション効果は失われる
.pptx.pdfLibreOffice / Spire同上

8. 外部サービス依存

サービス環境変数用途未設定時の影響
TextIn OCRTEXTIN_APP_ID / TEXTIN_APP_SECRET / TEXTIN_APP_ENDPOINTPDF/画像 OCR対応 OCR ステップが利用不可
Azure Document Intelligenceazure_ocr_endpoint / azure_ocr_keyPDF Layout 解析対応ステップが利用不可
Ali OCRAlibaba Cloud 認証情報中国語 OCR対応ステップが利用不可
Embedding モデルLLM Gateway 設定テキストのベクトル化EMBEDDING ステップが利用不可
Vision LLMLLM Gateway 設定画像説明 / LLM PDF 解析IMAGE/LLM ステップが利用不可
汎用 LLMLLM Gateway 設定要約/キーワード/メタデータ抽出フィールド抽出ステップが利用不可
LibreOfficeサーバー側バイナリ形式変換.doc/.ppt を処理不可
Pandocサーバー側バイナリDOCX → MarkdownDOCX 解析が利用不可
ffmpegサーバー側バイナリ動画音声トラック抽出動画処理が利用不可
spaCyPython パッケージ + 言語モデルトークン化/文分割TOKENIZER ステップおよび細分化機能が利用不可

9. 既知の境界ケース一覧

#シナリオ挙動推奨処理方法
1スキャン文書 PDF + Basic 解析抽出内容が空TextIn / Azure DI / LLM ステップへ切り替え
2複数カラム PDF + Basic 解析テキスト順序が乱れ、段落が交差Azure DI Layout モードを使用
3PDF 内の複雑な表 + Basic 解析表構造が失われ、データが散文化TextIn / Azure DI を使用
4暗号化 / パスワード保護 PDFpypdf が例外を送出前処理でパスワード保護を解除
5.doc(旧版 Word)の直接アップロードネイティブ解析器なしPipeline にファイル変換ステップを含めることを確認
6Excel が 20,000 行超過解析拒否、エラー送出複数ファイルに分割
7Excel の結合セルデータがずれる可能性ありアップロード前に結合を解除
8Excel の数式結果値のみを読み取り、数式自体は対象外想定どおりの挙動
9動画は音声トラックのみ抽出画面内容は認識不可画面情報が必要な場合はキーフレームを切り出して別途処理
10画像 OCR 精度Vision LLM は専門 OCR ではなく、精度に限界ありOCR 要件が高いシナリオでは TextIn を使用
11大容量ファイル + LLM 解析コストが非常に高い(ページ/token 課金)重要文書にのみ LLM 解析を使用
12見出し構造のない Markdown + TITLE 分割文書全体が 1 段落になるFIXED_SIZE 分割へ変更
13PPT アニメーション/動画埋め込みPDF 変換後に消失解決策なし
14マクロ/VBA/ActiveX を含む DOCXすべてのマクロ内容を無視想定どおりの挙動
15DOCX の変更履歴/コメント消失アップロード前にすべての変更を承認

10. 容量計画の推奨

ファイルタイプ推奨上限(単一ファイル)理由
PDF(Basic 解析)≤ 50 ページpdf2image のメモリ消費;50 ページ超で OOM リスクあり
PDF(OCR 解析)≤ 100 ページOCR サービス API 制限とコストの影響
DOCX≤ 20,000 文字Pandoc 変換時のメモリ
Excel≤ 20,000 行 × 200 列 / Sheetハード制限
CSV≤ 20 MB全量をメモリに読み込むため
音声≤ 60 分60 回の文字起こし API 呼び出し
動画≤ 30 分ffmpeg 抽出 + 文字起こし;長時間になるほど失敗確率が高い
画像≤ 10 MB / 枚Vision LLM 入力制限

本ドキュメントはコード分析に基づいて生成されており、実際の動作はデプロイ環境(メモリ / CPU / ネットワーク)および外部サービスの状態によって異なる場合があります。本番環境で使用する前に、対象に応じた負荷試験を実施することを推奨します。