Skip to main content

文档处理流水线

文档从上传到可检索,经过四个核心阶段:解析分块向量化索引写入。每个阶段可配置、可覆盖。

四阶段概览

阶段 1:解析(Parsing)

将原始文件(PDF/DOCX/MD/HTML 等)解析为结构化文本。

配置项说明默认值
parser_backend解析后端自动选择
支持的后端unstructured, mineru, markitdown, simple

解析后端通过 ParserFactory 分发,normalize_parser_backend() 标准化名称。解析结果存入 DocumentParsedContent 表。

治理预处理

解析后、分块前可执行治理(Governance)预处理:

功能配置字段说明
去 TOCgovernance_remove_toc_lines移除目录行
去噪音行governance_remove_noise_lines移除页眉页脚等
行合并governance_unwrap_lines合并被换行截断的段落
PII 脱敏governance_pii_anonymize替换/遮蔽个人信息
Secrets 脱敏governance_secrets_redact脱敏 API Key/Token
关键词提取governance_extract_keywords自动提取文档关键词
语言检测governance_detect_language检测主语言
段落去重governance_drop_duplicate_paragraphs移除重复段落

阶段 2:分块(Chunking)

将解析文本切分为适合检索的 chunk。

配置项说明
chunk_strategy分块策略(separator/semantic/fixed 等)
chunk_sizechunk 目标大小(token 数)
chunk_overlapchunk 间重叠 token 数

分块通过 chunker_factory() 创建,默认使用 SeparatorChunker

阶段 3:向量化(Embedding)

为每个 chunk 生成向量表示。

配置项说明
embedding model系统配置,默认 BAAI/bge-m3
支持 15+ 模型7 个 provider

阶段 4:索引写入(Vector Write)

将向量和元数据写入 Milvus 集合。

写入内容说明
向量chunk embedding
元数据tenant_id, dataset_id, document_id, chunk_index 等
vector_id写入后回填到 document_chunks.vector_id

pipeline_hash 版本机制

MimirQ 通过 pipeline_hash 实现文档版本化:

  • 每次处理生成一个基于 pipeline 配置的 hash
  • 同一文档可有多个版本(不同 pipeline 配置)
  • POST /{document_id}/versions/{hash}/activate 激活指定版本
  • build_doc_pipeline_key()get_active_pipeline_hash() 计算和获取 hash
配置合并

文档 pipeline 配置通过 merge_pipeline_options() 合并三级配置:文档级 > 数据集级 > 全局默认。resolve_pipeline_effective() 返回最终生效配置。

配置参数汇总

级别设置方式说明
全局app/core/config.py系统默认值
数据集dataset_metadata.pipeline数据集级覆盖
文档doc_metadata.pipeline文档级覆盖
上传时upload 表单字段单次上传覆盖

相关链接