Files
AIRegulation-DocAnalysis/docs/rfc/backend-api-parsing-embedding-migration-requirements.md
ash66 c22b03dc07 feat: Migrate document parsing to Aliyun and update embedding configurations
- Updated LocalDocumentParser to include raw_layouts and artifact_prefix from settings.
- Added new documents with failure reasons and metadata to documents.json for better error tracking.
- Created a new documentation file detailing the Aliyun ingest implementation process.
- Updated RFC to reflect changes in the parsing backend and embedding dimensions.
- Modified tests to accommodate the new embedding dimension of 1024 and updated parser and chunk builder assertions.
- Verified migration configurations to ensure correct settings for embedding model and backend.
2026-05-18 22:30:28 +08:00

171 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BGE-M3 下线与阿里云/API 解析迁移需求说明
## 1. 当前状态
当前后端文档上传与处理主链路已经存在,且真实入口与核心依赖如下:
- 现有真实上传入口是 `backend/app/api/routes/documents.py``/api/v1/documents/upload`
- 当前主链路依赖 `backend/app/services/document_processor.py`
- 当前解析链路是本地 PDF/DOCX/MinerU
- 当前嵌入链路依赖 `backend/app/services/embedding/bge_m3_embedder.py`
- 当前检索链路依赖 `backend/app/services/storage/milvus_client.py``backend/app/services/rag/retriever.py`
本文件用于冻结本轮迁移需求、影响面和约束条件,作为后续 backend architecture 梳理、实施拆解和验收对齐的输入基线。
## 2. 背景与动机
当前系统的文档处理能力建立在本地解析与本地向量模型基础之上,但该路径已经不再满足后续演进要求。为支持统一的解析质量、降低本地模型依赖、并为后续后端架构调整预留空间,本期需要先冻结迁移需求。
本期背景和动机明确如下:
- 不再使用本地 `models--BAAI--bge-m3`
- 解析和 embedding 主链路准备切换到 API 方式
- 后续还会整体调整 backend 架构,因此本文件只冻结需求,不提前固化最终模块设计
## 3. 目标需求
本期目标是完成文档解析、分块、向量化和检索底座的迁移需求定义,明确后续架构和实施阶段必须满足的结果边界。
已确认的目标需求如下:
- 文档解析统一改为阿里云文档智能能力
- 当前阿里云接入基础已经迁移到 `backend/app/infrastructure/parser/aliyun_layout_normalizer.py`
- 解析结果以 `structure_nodes``semantic_blocks``vector_chunks` 三层结构为基础
- 分块以阿里云 `vector_chunks` 为准,不再走当前本地 `RegulationChunker`
- embedding 改为 OpenAI 兼容 API 调用,模型使用 `text-embedding-v3`
- 检索能力本期降级为 `dense-only`
- Milvus 继续保留,但 schema 需要围绕 `1536` 维 dense 向量重建
以上内容属于本期已经确认的迁移方向,不再作为待讨论事项。
## 4. 范围
本期需求范围覆盖以下内容:
- 上传处理链路
- 阿里云解析适配
- embedding API 适配
- Milvus 入库与检索
- RAG/Agent 检索依赖的元数据适配
- 配置、依赖、README 和部署说明同步清理
本期范围的核心目标是让现有上传后处理主链路可以在新的 API 化解析和 embedding 方式下继续工作,并保持主要外部接口不变。
## 5. 非目标
以下事项不属于本期需求目标,不应在本文件内被提前设计或默认纳入实施:
- 本文件不定义最终 backend 分层、目录结构和 service boundary
- 本文件不引入异步任务系统
- 本文件不把 PostgreSQL 三层结构表接入主链路
- 本文件不处理前端大规模交互改版
如果后续实施阶段需要触及上述内容,应另行在架构方案或单独 RFC 中说明,而不是在本需求说明中默认展开。
## 6. 影响面清单
本期迁移将影响现有后端多个子系统。以下清单用于冻结影响面,方便后续做架构设计、任务拆分和回归验证。
### 6.1 入口与流程
受影响的入口与主流程文件包括:
- `backend/app/api/routes/documents.py`
- `backend/app/services/document_processor.py`
该部分需要承接上传接口保持不变的前提下,对解析、分块、向量化和入库主流程进行迁移。
### 6.2 解析能力
受影响的解析能力范围包括:
- 当前本地 parser 目录
- `backend/app/infrastructure/parser`
迁移后阿里云文档智能能力将成为主解析来源,本地 PDF/DOCX/MinerU 解析链路需要重新界定保留、下线或回退策略,但具体模块组织方式不在本文件内定义。
### 6.3 向量能力
受影响的向量能力范围包括:
- `backend/app/services/embedding/bge_m3_embedder.py`
- embedding 配置
- embedding 相关依赖包
该部分需要移除对本地 BGE-M3 模型的运行时依赖,并改为 OpenAI 兼容 API 方式调用 `text-embedding-v3`
### 6.4 存储检索
受影响的存储与检索能力包括:
- `backend/app/services/storage/milvus_client.py`
- `backend/app/services/rag/retriever.py`
- `backend/app/api/routes/knowledge.py`
- `backend/app/services/agent/qa_agent.py`
该部分需要围绕 `1536` 维 dense 向量重建 Milvus schema并确保知识检索与 Agent 检索链路继续可用。
### 6.5 配置与状态
受影响的配置与状态相关文件包括:
- `backend/app/config/settings.py`
- `backend/app/core/config.py`
- `backend/app/api/routes/status.py`
- `backend/app/services/mock_data.py`
该部分需要清理与旧本地模型和旧处理链路耦合的配置项、状态展示和 mock 数据假设。
### 6.6 文档与部署
受影响的文档与部署项包括:
- `README.md`
- `QUICK_DEPLOY.md`
- `.env.example`
- `requirements` 相关文件
- `pyproject.toml`
该部分需要同步反映新的 API 化解析与 embedding 依赖,去除或更新本地模型准备、运行说明和环境配置描述。
## 7. 风险与约束
以下风险和约束在本期已经明确,需要在后续架构和实施阶段优先处理:
- 旧 Milvus collection 与新 `1536` 维 schema 不兼容,需要新 collection 和重建索引
- 阿里云凭据必须继续只通过环境变量或凭据链注入,不能回到脚本内硬编码
- RAG 下游当前对 `clause_number` 有依赖,迁移后需要优先适配 `section_title` 和 Aliyun chunk metadata
- 如果阿里云返回字段与当前样例不同,需要在架构阶段补充 adapter 层
上述条目属于实施约束和迁移风险,不代表当前已经确定最终解决方案,只代表这些问题必须被显式处理。
## 8. 待架构阶段决策
以下事项属于后续 backend architecture 阶段需要单独拍板的决策项,不属于本文件已确认的需求结论:
- 阿里云能力封装为内部模块还是独立 adapter package
- 同步阻塞上传还是改为异步 job
- `DocumentProcessor` 是否拆为 ingest orchestrator
- 检索元数据模型是否统一重命名
- status/config 是否改为真实运行态而不是 mock
后续如输出架构方案,应围绕这些待决策项给出明确取舍和原因,但不应回退本文件已经确认的迁移目标。
## 9. 验收基线
本期需求的验收基线固定如下:
- 上传接口外部契约保持不变
- PDF/DOC/DOCX 上传后能完成解析、向量化、入库
- 新索引可支持 `/knowledge/retrieval``/agent/ask`
- 系统中不再依赖本地 `bge-m3` 模型文件
- 所有敏感凭据从代码移出
以上验收基线用于后续架构方案评审和实施完成后的回归核对。
## 10. 说明
本文件是需求说明,不是最终技术设计文档。文中只冻结目标、范围、影响面、风险和约束,不定义最终 backend 分层、类图、目录结构、模块边界或详细实现步骤。
后续待新的 backend architecture 整理完成后,应基于本文件再补充对应的架构方案文档,或直接拆解为实施计划。