Some checks failed
Sync to Gitee / sync (push) Has been cancelled
Submit the formed RAG documentation set produced across Sprint-1/2/3 (WS-12 through WS-26) under docs/rag/. Includes: - README.md / INDEX.md: landing + total index (responsibility matrix, review verdicts, dual-link to source issues) - overview/: full-pipeline architecture (4 .mmd diagrams), 11-stage boundary contracts, doc map, source-code inventory - pipeline/: 5 deep-dives (Loader/Parser/Chunking, Embedding, VDB & retrieval, GraphRAG, Rerank/Prompt/LLM) - graphrag/, end-to-end/: v1.0 formal versions with full source retained as reference - evolution/: 11 architecture-refactor proposals, 6-direction roadmap, capability map - review/: S3-T1 / S3-T2 final reviews, S2-T7 final summary - _indexes/: glossary (81 terms), source->doc reverse index, chart index - _release/: v1.0-RC1 release manifest, versioning convention, ops & freshness plan - _meta/README.md: placeholder noting WS-12 governance assets gap Aggregate review score 92.6/100 (8/8 PASS, 31/31 source-code spot checks hit). The legacy docs/ ignore in .gitignore is narrowed to docs/* with an explicit allowlist for docs/rag/. Refs: WS-26 Co-authored-by: multica-agent <github@multica.ai>
18 KiB
18 KiB
DocMap — MemoryBear RAG 文档目录大纲
定位:Sprint-2 深度文档化的任务拆解输入。每行 = 一篇待写文档,标题格式与 [S1-T1] 统一模板兼容。 责任人草拟:基于当前 Sprint-1 分工建议,实际分配由项目经理确认。 目录结构:
docs/rag/<stage>/<topic>.md
文档目录总览
docs/rag/
├── _meta/ # [S1-T1] 模板与评分卡(由 @知识运营与治理专家 维护)
├── 01-loader/
│ ├── 01-web-crawler.md # Web 爬虫:URL 发现、内容提取、速率控制
│ ├── 02-feishu-integration.md # 飞书集成:API 调用、鉴权、文档导出
│ ├── 03-yuque-integration.md # 语雀集成:知识库同步、文档下载
│ └── 04-file-upload.md # 文件上传与预处理(本地文件系统、NFS 兼容)
├── 02-parser/
│ ├── 01-pdf-parser.md # PDF 解析:OCR + Layout + Table 流水线
│ ├── 02-docx-parser.md # DOCX 解析:段落提取、图片嵌入
│ ├── 03-html-md-parser.md # HTML / Markdown / TXT 解析
│ ├── 04-excel-parser.md # Excel 解析:行列转表格结构
│ └── 05-vision-pipeline.md # 视觉模块:OCR、布局识别、表格结构识别
├── 03-chunking/
│ ├── 01-chunking-strategies.md # 分块策略全景:naive_merge、层级分块、树分块
│ ├── 02-task-type-adapters.md # 文档类型适配器:book / paper / laws / qa / one
│ ├── 03-tokenizer.md # RagTokenizer:中文分词、英文处理、fine_grained
│ └── 04-multimodal-chunking.md # 多模态分块:图片 VLM 描述、音频转文本
├── 04-embedding/
│ ├── 01-embedding-model-arch.md # Embedding 模型架构:Base 接口 + 10+ Provider
│ ├── 02-provider-guide.md # Provider 接入指南:OpenAI / HuggingFace / 国产模型
│ └── 03-auto-questions.md # 自动问题生成:并发策略、LLM 缓存
├── 05-vdb/
│ ├── 01-elasticsearch-schema.md # ES 索引 Schema:字段定义、mapping、analyzer
│ ├── 02-hybrid-search.md # 混合检索:BM25 + Vector 加权融合
│ └── 03-storage-connections.md # 存储连接层:ES、Redis、DocStore
├── 06-graphrag/
│ ├── 01-graphrag-overview.md # GraphRAG 总览:Light vs General 对比
│ ├── 02-entity-relation-extraction.md # 实体关系抽取:Extractor 流程、Prompt 工程
│ ├── 03-graph-merge-and-rank.md # 图合并与 PageRank:子图合并、实体消歧
│ ├── 04-community-reports.md # 社区报告:Leiden 聚类、LLM 报告生成(General only)
│ └── 05-knowledge-graph-search.md # KG 检索:Query 分析、实体匹配、N-hop 扩展
├── 07-retrieval/
│ ├── 01-retrieval-api.md # 检索 API:knowledge_retrieval()、Dealer.search()
│ ├── 02-query-understanding.md # Query 理解:关键词提取、同义词扩展
│ └── 03-multi-kb-retrieval.md # 多知识库检索:结果合并、去重策略
├── 08-reranking/
│ ├── 01-rerank-architecture.md # 重排序架构:内置评分 vs 外部 Rerank 模型
│ └── 02-rerank-providers.md # Rerank Provider:Jina / DashScope / Xinference
├── 09-prompt/
│ ├── 01-prompt-system.md # Prompt 模板系统:template.py + generator.py
│ ├── 02-citation-prompts.md # 引用标注 Prompt:citation_prompt / citation_plus
│ └── 03-toc-prompts.md # 目录相关 Prompt:TOC 检测、提取、相关性
├── 10-llm/
│ ├── 01-llm-chat-model.md # Chat 模型架构:Base.chat() / chat_streamly()
│ ├── 02-llm-providers.md # Chat Provider 全景:OpenAI / Azure / 国产模型
│ └── 03-vision-model.md # 视觉模型:VLM 描述、图片理解
├── 11-e2e/
│ ├── 01-indexing-pipeline.md # 端到端入库流程:Celery 任务链、错误处理、进度追踪
│ ├── 02-query-pipeline.md # 端到端检索流程:Workflow Node → 检索 → 生成
│ └── 03-answer-postprocess.md # 回答后处理:引用插入、缓存、流式输出
└── 12-architecture-evolution/
├── 01-modularization-roadmap.md # 模块化拆分建议
├── 02-performance-optimization.md # 性能优化方向
└── 03-future-extensions.md # 未来扩展:多模态检索、混合搜索、对话记忆
文档详细定义
01-loader
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 01-01 | Web 爬虫 | 写:URL 规范化、robots.txt 检查、速率限制、HTTP 抓取、内容提取、去重策略。不写:搜索引擎索引、分布式爬虫、JS 渲染。 | crawler/web_crawler.py, crawler/http_fetcher.py, crawler/content_extractor.py, crawler/rate_limiter.py, crawler/robots_parser.py |
Python 工程师 | 需覆盖 CrawledDocument 数据结构 |
| 01-02 | 飞书集成 | 写:App 鉴权、文件夹遍历、文档导出(PDF/DOCX/Sheet)、异步轮询下载。不写:飞书审批流、机器人消息推送。 | integrations/feishu/client.py, integrations/feishu/retry.py, integrations/feishu/models.py |
Python 工程师 | 需说明 _export_file vs _download_file 区别 |
| 01-03 | 语雀集成 | 写:个人 Token 鉴权、知识库遍历、文档详情获取、多种格式下载(MD/HTML/Excel)。不写:语雀协作编辑、版本管理。 | integrations/yuque/client.py, integrations/yuque/retry.py, integrations/yuque/models.py |
Python 工程师 | lakesheet 解压逻辑需重点说明 |
| 01-04 | 文件上传 | 写:文件上传接口、NFS 同步等待、binary 读取策略、进度追踪。不写:CDN 分发、大文件分片上传。 | controllers/document_controller.py, utils/file_utils.py, tasks.py:213 |
Python 工程师 | 30s NFS 等待逻辑是 MemoryBear 特有 |
02-parser
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 02-01 | PDF 解析 | 写:PDF 渲染、OCR 文本检测、布局分类、表格结构识别、文本合并策略。不写:PDF 生成/编辑、数字签名验证。 | deepdoc/parser/pdf_parser.py, deepdoc/vision/ocr.py, deepdoc/vision/layout_recognizer.py, deepdoc/vision/table_structure_recognizer.py |
Python 工程师 | 核心中的核心,需重点投入 |
| 02-02 | DOCX 解析 | 写:段落提取、图片提取、超链接提取、OLE 嵌入文件。不写:DOCX 生成、样式渲染。 | deepdoc/parser/docx_parser.py, utils/file_utils.py:extract_embed_file |
Python 工程师 | 需与 app/naive.py 的 vision_figure_parser 联动说明 |
| 02-03 | HTML/MD/TXT 解析 | 写:HTML 标签清洗、Markdown 结构化解析、纯文本处理。不写:CSS 样式解析、JS 执行。 | deepdoc/parser/html_parser.py, deepdoc/parser/markdown_parser.py, deepdoc/parser/txt_parser.py |
Python 工程师 | 合并为一篇即可 |
| 02-04 | Excel 解析 | 写:行列读取、Sheet 遍历、表头检测、Markdown 表格转换。不写:公式计算、图表提取。 | deepdoc/parser/excel_parser.py |
Python 工程师 | 轻量 |
| 02-05 | 视觉流水线 | 写:OCR 模型(ONNXRuntime)、布局识别模型、表格结构模型、图像预处理。不写:模型训练、模型量化。 | deepdoc/vision/*.py |
Python 工程师 | 含模型加载、推理、后处理 |
03-chunking
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 03-01 | 分块策略全景 | 写:naive_merge、naive_merge_with_images、hierarchical_merge、tree_merge 的实现与选择策略。不写:通用 NLP 分词算法原理。 | nlp/__init__.py:562+, nlp/rag_tokenizer.py |
Python 工程师 | 需附决策树:何时用哪种策略 |
| 03-02 | 文档类型适配器 | 写:book/paper/manual/laws/qa/one/picture/audio 各自的分块逻辑、数据结构差异。不写:业务场景适配(如医疗/法律专有分块)。 | app/naive.py:508, app/book.py, app/paper.py, app/manual.py, app/laws.py, app/qa.py, app/one.py, app/picture.py, app/audio.py |
Python 工程师 | 核心章节,需逐一说明 |
| 03-03 | RagTokenizer | 写:中文分词(Huqie/datrie)、英文处理(nltk/Porter/WordNet)、fine_grained_tokenize、分词对检索的影响。不写:分词算法数学推导。 | nlp/rag_tokenizer.py |
Python 工程师 | 与 ES ik_max_word 的对比 |
| 03-04 | 多模态分块 | 写:图片 VLM 描述调用链、音频 sequence2txt 转录、视频处理(如有)。不写:VLM/ASR 模型内部原理。 | app/picture.py, app/audio.py, llm/cv_model.py, llm/sequence2txt_model.py, deepdoc/parser/figure_parser.py |
Python 工程师 | 需说明 vision_model 注入机制 |
04-embedding
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 04-01 | Embedding 模型架构 | 写:Base.encode() 接口、批次处理、Token 截断(8000/2048)、返回格式。不写:Embedding 模型原理(Word2Vec/BERT 等)。 | llm/embedding_model.py |
Python 工程师 | 重点讲接口契约 |
| 04-02 | Provider 接入指南 | 写:10+ Provider 的配置方式、API Key 管理、Base URL 设置、批次大小差异。不写:各厂商 API 的通用文档。 | llm/embedding_model.py 各子类 |
Python 工程师 | 表格形式列出即可 |
| 04-03 | 自动问题生成 | 写:并发生成策略(ThreadPoolExecutor)、LLM 缓存机制(redis)、问题注入到 chunk metadata。不写:问题生成质量评估。 | tasks.py:323+, prompts/generator.py:question_proposal() |
Python 工程师 | 与检索效果的关系 |
05-vdb
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 05-01 | ES 索引 Schema | 写:字段定义、mapping 类型、ik_max_word analyzer、dense_vector cosine 配置、动态维度。不写:ES 集群运维、分片策略。 | vdb/field.py, vdb/elasticsearch/elasticsearch_vector.py:653+ |
Python 工程师 | 需附完整 mapping 示例 |
| 05-02 | 混合检索 | 写:BM25 + Vector 加权融合(0.05:0.95)、FusionExpr、score 归一化、降级策略。不写:BM25 算法数学推导、近似最近邻算法。 | nlp/search.py:439, vdb/elasticsearch/elasticsearch_vector.py:374, utils/doc_store_conn.py:FusionExpr |
Python 工程师 | 核心章节,需讲清楚为什么权重是 0.05:0.95 |
| 05-03 | 存储连接层 | 写:ES 连接、Redis 缓存、DocStore 抽象。不写:连接池调优、网络安全配置。 | utils/es_conn.py, utils/redis_conn.py, utils/doc_store_conn.py |
Python 工程师 | 轻量 |
06-graphrag
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 06-01 | GraphRAG 总览 | 写:Light vs General 架构对比、适用场景、配置开关(use_graphrag/resolution/community)。不写:图数据库选型对比(已选 ES)。 | graphrag/light/, graphrag/general/, graphrag/search.py |
Python 工程师 | 必须包含对比表格 |
| 06-02 | 实体关系抽取 | 写:Extractor 基类、_process_single_content 流程、Gleaning Loop、Prompt 工程、LLM 输出解析。不写:信息抽取的通用 NLP 方法。 | graphrag/light/graph_extractor.py, graphrag/general/graph_extractor.py, graphrag/general/extractor.py |
Python 工程师 | 核心章节 |
| 06-03 | 图合并与 PageRank | 写:merge_subgraph 流程、nx.Graph 操作、PageRank 计算、实体消歧(EntityResolution)。不写:PageRank 数学推导。 | graphrag/general/index.py, graphrag/entity_resolution.py |
Python 工程师 | 需附图数据结构示例 |
| 06-04 | 社区报告 | 写:Leiden 层次聚类、社区报告 Prompt、报告数据结构、存储方式。不写:社区发现算法数学原理。 | graphrag/general/leiden.py, graphrag/general/community_reports_extractor.py, graphrag/general/community_report_prompt.py |
Python 工程师 | General only |
| 06-05 | KG 检索 | 写:KGSearch.retrieval() 流程、Query Rewrite、实体匹配、N-hop 扩展、社区报告检索。不写:图遍历算法通用理论。 | graphrag/search.py:130 |
Python 工程师 | 与标准检索的交互关系 |
07-retrieval
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 07-01 | 检索 API | 写:knowledge_retrieval() 接口、Dealer.search() 内部实现、MatchDenseExpr / MatchTextExpr / FusionExpr。不写:信息检索通用理论。 | nlp/search.py:36, nlp/search.py:349, utils/doc_store_conn.py |
Python 工程师 | 核心章节 |
| 07-02 | Query 理解 | 写:关键词提取、同义词扩展、查询改写、min_match 阈值调整。不写:NLP 句法分析。 | nlp/query.py, nlp/synonym.py, nlp/term_weight.py |
Python 工程师 | 轻量 |
| 07-03 | 多知识库检索 | 写:Folder 类型递归检索、跨 KB 结果去重、权限过滤。不写:权限系统的 RBAC 设计。 | workflow/nodes/knowledge/node.py:195, knowledge_repository.py |
Python 工程师 | 需说明 Folder 类型的特殊处理 |
08-reranking
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 08-01 | 重排序架构 | 写:内置重排(token+vector 相似度融合)vs 外部 Rerank 模型、调用时机、容错降级。不写:Learning-to-Rank 通用理论。 | nlp/search.py:606, models/rerank.py |
Python 工程师 | 需对比两种方式的适用场景 |
| 08-02 | Rerank Provider | 写:JinaRerank、DashScopeRerank 的 API 调用、参数映射。不写:各厂商 API 通用文档。 | models/rerank.py:57+ |
Python 工程师 | 轻量 |
09-prompt
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 09-01 | Prompt 模板系统 | 写:template.py 的 .md 文件加载机制、generator.py 的函数式 Prompt 组装、参数替换。不写:Prompt Engineering 通用方法论。 | prompts/template.py, prompts/generator.py |
Python 工程师 | 需列出全部模板清单 |
| 09-02 | 引用标注 Prompt | 写:citation_prompt / citation_plus 的输入输出、引用格式、上下文窗口管理。不写:学术论文引用规范。 | prompts/generator.py:citation_prompt() |
Python 工程师 | 与 insert_citations 联动 |
| 09-03 | 目录相关 Prompt | 写:TOC 检测、提取、层级分配、基于 TOC 的 chunk 相关性筛选。不写:目录生成算法。 | prompts/generator.py TOC 系列函数 |
Python 工程师 | 轻量 |
10-llm
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 10-01 | Chat 模型架构 | 写:Base.chat() / chat_streamly() / chat_with_tools() 接口、返回格式、流式输出。不写:Transformer 模型原理。 | llm/chat_model.py |
Python 工程师 | 重点讲接口契约 |
| 10-02 | Chat Provider 全景 | 写:各 Provider 配置、温度/TopP/MaxTokens 参数透传、错误处理。不写:各厂商 API 通用文档。 | llm/chat_model.py 各子类 |
Python 工程师 | 表格形式 |
| 10-03 | 视觉模型 | 写:CV 模型接口、VLM 描述调用、图片理解。不写:CNN/ViT 原理。 | llm/cv_model.py |
Python 工程师 | 轻量 |
11-e2e
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 11-01 | 端到端入库流程 | 写:Celery 任务链、parse_document 完整流程、进度追踪、错误处理、GraphRAG 异步触发。不写:Celery 分布式队列原理。 | tasks.py |
Python 工程师 | 核心章节,需附时序图 |
| 11-02 | 端到端检索流程 | 写:Workflow Knowledge Node 完整流程、检索模式选择、结果组装。不写:Workflow Engine 通用设计。 | workflow/nodes/knowledge/node.py |
Python 工程师 | 核心章节 |
| 11-03 | 回答后处理 | 写:引用插入、缓存策略、流式输出处理。不写:WebSocket 通用原理。 | nlp/search.py:489, utils/redis_conn.py |
Python 工程师 | 轻量 |
12-architecture-evolution
| 序号 | 标题 | 范围边界 | 关联源码模块 | 责任人草拟 | 备注 |
|---|---|---|---|---|---|
| 12-01 | 模块化拆分建议 | 写:当前耦合点识别、建议的接口抽象(如 ParserInterface、ChunkerInterface)、拆分优先级。不写:微服务拆分方案。 | 全局代码分析 | AI 知识库专家 | 架构建议,无代码 |
| 12-02 | 性能优化方向 | 写:Embedding 批处理优化、ES 查询优化、GraphRAG 并发优化、缓存命中率提升。不写:通用性能优化方法论。 | 全局代码分析 | AI 知识库专家 | 需量化当前瓶颈假设 |
| 12-03 | 未来扩展 | 写:多模态检索、混合搜索增强、对话记忆优化、知识图谱演进方向。不写:产品需求文档。 | 全局代码分析 | AI 知识库专家 | 架构建议,无代码 |
工作量估算
| 阶段 | 文档数 | 预估 Sprint-2 人天(每篇 0.5~1d) |
|---|---|---|
| 01-loader | 4 | 2d |
| 02-parser | 5 | 3d |
| 03-chunking | 4 | 2.5d |
| 04-embedding | 3 | 1.5d |
| 05-vdb | 3 | 2d |
| 06-graphrag | 5 | 3d |
| 07-retrieval | 3 | 2d |
| 08-reranking | 2 | 1d |
| 09-prompt | 3 | 1.5d |
| 10-llm | 3 | 1.5d |
| 11-e2e | 3 | 2d |
| 12-architecture-evolution | 3 | 1.5d |
| 合计 | 41 | ~23.5d |
注:Python 工程师承担约 30 篇(技术实现细节),AI 知识库专家承担约 8 篇(架构/优化/扩展方向)。具体分配由项目经理确认。