# Markdown到知识库格式转换器 这个Python脚本可以将markdown格式的文档转换为适用于RAG知识库的JSON格式,包含content、metadata、source、type等字段。 ## 功能特性 - **自动解析Markdown结构**:按章节分割文档内容 - **智能类型识别**:根据标题关键词自动确定文档类型 - **内容清理**:去除图片引用、特殊字符等 - **元数据生成**:包含来源、类型、章节等信息 - **批量处理**:支持单文件或整个目录的转换 ## 支持的文档类型 脚本会根据标题关键词自动识别以下文档类型: - `login_guide` - 登录相关指南 - `purchase_management` - 采购管理 - `inbound_management` - 入库管理 - `outbound_management` - 出库管理 - `inventory_management` - 库存管理 - `process_management` - 工艺管理 - `production_management` - 生产管理 - `basic_settings` - 基础设置 - `system_management` - 系统管理 - `personal_center` - 个人中心 - `assembly_management` - 装配管理 - `operation_guide` - 操作指南(默认类型) ## 使用方法 ### 基本用法 ```python from md_to_knowledge_converter import MarkdownToKnowledgeConverter # 创建转换器实例 converter = MarkdownToKnowledgeConverter() # 转换单个文件 documents = converter.convert_file( input_file="assets/docs/mom.md", output_file="knowledge_base/mom_knowledge.json" ) ``` ### 命令行使用 ```bash python scripts/md_to_knowledge_converter.py ``` ### 转换整个目录 ```python converter.convert_directory( input_dir="assets/docs", output_dir="knowledge_base" ) ``` ## 输出格式 转换后的JSON文件包含文档数组,每个文档的格式如下: ```json { "content": "标题: 登录系统\n\n用户通过登录\"MOM制造运营管理系统\"进行业务操作...", "metadata": { "source": "登录系统", "type": "login_guide", "section": "登录", "level": 3, "file_path": "assets/docs/mom.md" } } ``` ### 字段说明 - `content`: 清理后的文档内容,包含标题和正文 - `metadata.source`: 文档来源(从文档标题提取) - `metadata.type`: 文档类型(自动识别) - `metadata.section`: 章节标题 - `metadata.level`: 标题级别(1-3级) - `metadata.file_path`: 原始文件路径 ## 转换结果统计 从MES操作手册转换后的统计: ``` 转换统计: 总文档数: 144 个知识库条目 各类型文档数量: operation_guide: 98 login_guide: 14 purchase_management: 8 inbound_management: 12 outbound_management: 6 process_management: 4 production_management: 2 ``` ## 注意事项 1. **文件编码**:确保markdown文件使用UTF-8编码 2. **图片处理**:脚本会自动过滤掉图片引用 3. **标题层级**:支持1-3级标题的识别和分割 4. **内容清理**:会自动去除多余空行和特殊字符 ## 依赖要求 - Python 3.6+ - 标准库:json, re, os, pathlib ## 错误处理 脚本包含完善的错误处理机制: - 文件不存在时会显示错误信息 - 转换过程中的异常会被捕获并显示详细错误信息 - 会自动创建输出目录 ## 与RAG服务集成 转换后的JSON文档可以直接集成到RAG服务中: ```python # 加载转换后的文档 with open('knowledge_base/mom_knowledge.json', 'r', encoding='utf-8') as f: documents = json.load(f) # 添加到RAG服务 await rag_service.add_documents(documents, 'system_guide') ``` ## 自定义配置 可以通过修改`_determine_type`方法来自定义文档类型识别规则: ```python def _determine_type(self, title: str) -> str: # 添加新的类型映射 type_mapping = { "新关键词": "new_type", # ... } ``` ## 示例输出 转换后的文档示例: ```json { "content": "标题: 用户登录地址\n\n打开Chrome或者Edge浏览器,输入网址:http://10.111.156.155:8808/进入MOM制造运营管理系统,输入已配置好的用户名和密码登录系统。", "metadata": { "source": "登录系统", "type": "login_guide", "section": "用户登录地址", "level": 3, "file_path": "assets/docs/mom.md" } } ```