跳到主要内容

RAG Pipeline 预处理 — 能力边界说明

本文档定义 RAG Pipeline 预处理系统的能力范围已知限制风险阈值,供参考。


1. 文件类型支持矩阵

1.1 直接支持的文件类型

文件类型扩展名解析步骤备注
PDF.pdfPDF_CONTENT_EXTRACTION / TEXTIN / AZURE_DI / ALI_OCR / LLM_CONTENT_EXTRACTION基础解析仅适用于文本型 PDF,扫描件需 OCR 步骤
Word 文档.docxDOCX_CONTENT_EXTRACTION通过 pypandoc 转 Markdown,支持段落/表格/嵌入图片
旧版 Word.doc需先经 FILE_CONVERT_WITH_SPIREFILE_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_SPIREFILE_CONVERT_WITH_LIBREOFFICE 转换无法直接内容提取,须先转 PDF
图片.png .jpg .jpeg .gif .webp .svgIMAGE_CONTENT_EXTRACTION使用 Vision LLM(如 GPT-4o)描述图像内容,上限 300 词
视频.mp4 .avi .mkv .movVIDEO_CONTENT_EXTRACTION提取音轨 → 转录文本
音频.mp3 .wav .flac .aacAUDIO_CONTENT_EXTRACTION切分为 60 秒片段后逐段转录

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 并行页转换每批 50 页(PDFConversionDefaultOptions.CHUNK_SIZE超大 PDF(500+ 页)在 pdf2image 转换时内存占用高,可能导致 OOM
表格行数单 Sheet ≤ 20,000 行超限直接报错拒绝解析
表格列数单 Sheet ≤ 200 列超限直接报错拒绝解析
表格图片单文件 ≤ 150 张图片(_MAX_IMAGES超限忽略多余图片
向量化批次每批 100 段(batch_size
分段图片密度单段 ≤ 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 OCR阿里云 OCR中文场景扫描件阿里云 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可能在句中截断;单段 ≤ 5~8 张图片
按页PAGEPDF 文档仅 PDF 有效;单页内容差异大时段落质量不均
按标题TITLEMarkdown 文档chunk_size=1024仅识别 # / ## / ### 标题;无标题时退化为整文档一段
表格TABULARExcel / CSV专用于表格类文件
LLM 智能LLM需语义连贯的场景速度慢、成本高;大文件不经济
细分REFINE对粗分结果二次优化需配合上游粗分步骤使用

通用限制

  • ��段时保护表格 / 代码块不被切断(RecursiveCharacterTextSplitter 回退分隔符)
  • 超长段(> 65% chunk_size)使用 spaCy 做句级细分
  • 单段图片过多(> 5 张)触发强制切分

5. 字段提取能力

步骤功能依赖限制
METADATA_EXTRACTION文档级元数据(标题/作者/日期等)LLMSchema 需预定义
SEGMENT_METADATA_EXTRACTION段落级元数据LLM每段一次 LLM 调用,大文件成本高
KEYWORDS_EXTRACTION关键词抽取LLM
SEGMENT_SUMMARY段落摘要LLM每段一次 LLM 调用
DOCUMENT_SUMMARY全文摘要LLM长文档需截断或分批聚合
TABLE_CAPTIONING表格描述生成LLM
TABLE_CAPTIONING_ADVANCED表级摘要 + 行级叙述分组LLM复杂表格效果取决于 LLM 理解力
IMAGE_CAPTIONING图像描述生成Vision LLM每张图一次 LLM 调用

6. 后处理(Postprocessing)能力

步骤功能配置限制
EMBEDDING文本向量化batch_size=100依赖 Embedding 模型;图片占位符自动剥离
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 OCR阿里云凭证中文 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 解析
12Markdown 无标题结构 + TITLE 分段整篇文档成为一个段落改用 FIXED_SIZE 分段
13PPT 动画/视频嵌入转 PDF 后丢失无解决方案
14DOCX 含宏/VBA/ActiveX忽略所有宏内容预期行为
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 / 网络)和外部服务状态而异。建议在生产环境使用前进行针对性压测。