第03章:制造业——设备手册×质检标准×工艺知识库

第03章:制造业——设备手册×质检标准×工艺知识库

制造业的知识不在人的脑子里——在3000本设备手册、2000份工艺文档和无数次口口相传的"经验"里。RAG的使命是把这些经验变成随时可查的大脑。


制造业RAG的3个核心场景

场景1:设备手册检索
"CJ-200注塑机的最大射出压力是多少?"
"这台机器出现E-047报警怎么处理?"

场景2:工艺知识库
"ABS材料在85度模温下的收缩率通常是多少?"
"产品边缘毛刺的常见原因和解决方法?"

场景3:质检标准查询
"汽车外饰件的表面粗糙度Ra值标准是多少?"
"这批产品的检验规程在哪?"

挑战1:文档类型极其复杂

真实的制造业文档库

/shared/documents/
├── 设备手册/
│   ├── CJ-200_操作手册.pdf          # 标准PDF
│   ├── 液压系统维修手册.pdf          # 扫描件(纯图片)
│   ├── PLC程序说明.doc              # Word 2003格式
│   ├── 电气原理图.dwg               # AutoCAD文件
│   └── 日立注塑机_日文原版.pdf       # 日文
├── 工艺文档/
│   ├── 注塑工艺卡/
│   │   ├── ABS-PC_工艺参数.xlsx     # Excel表格
│   │   └── PA66+GF_参数记录.csv     # CSV数据
│   ├── 工艺变更通知/
│   │   ├── ECN-2024-0891.pdf
│   │   └── ECN-2025-0156.pdf
│   └── 老师傅经验/
│       ├── 张工_注塑调机笔记.jpg     # 手写笔记拍照
│       └── 会议纪要_20250312.docx
├── 质检标准/
│   ├── GB_T_XXXXX-2023.pdf          # 国标
│   ├── 客户检验标准_丰田.pdf         # 客户标准
│   └── 内部检验规程_v15.docx
└── 安全文档/
    ├── MSDS_化学品清单.pdf
    └── 安全操作规程.pdf

FDE的文档预处理流程

class ManufacturingDocProcessor:
    """制造业文档预处理Pipeline"""
    
    async def process_directory(self, root_dir: str):
        for filepath in self.walk(root_dir):
            doc_type = self.classify_document(filepath)
            
            if doc_type == "scanned_pdf":
                # 扫描件 → OCR
                text = await self.ocr_process(filepath)
            elif doc_type == "excel":
                # Excel → 转换为结构化文本
                text = await self.excel_to_structured_text(filepath)
            elif doc_type == "cad":
                # CAD文件 → 提取文字注释
                text = await self.extract_cad_annotations(filepath)
            elif doc_type == "image":
                # 手写笔记照片 → Vision LLM识别
                text = await self.vision_ocr(filepath)
            else:
                # 标准文档 → 直接解析
                text = await self.parse_document(filepath)
            
            # 添加元数据
            metadata = {
                "source": filepath,
                "doc_type": doc_type,
                "department": self.extract_department(filepath),
                "equipment": self.extract_equipment_ref(text),
                "version": self.extract_version(text),
                "date": self.extract_date(text)
            }
            
            # 选择分块策略
            chunks = self.chunk_by_type(text, doc_type)
            
            # 入库
            await self.ingest(chunks, metadata)
    
    def excel_to_structured_text(self, filepath: str):
        """
        将Excel工艺参数表转为可检索的文本。
        
        原始Excel:
        | 产品型号 | 料温(℃) | 模温(℃) | 射出压力(bar) | 保压(bar) |
        |---------|---------|---------|-------------|----------|
        | A-001   | 230     | 60      | 1200        | 800      |
        | A-002   | 245     | 70      | 1400        | 900      |
        
        转换后的文本:
        "产品A-001的注塑工艺参数:料温230℃,模温60℃,
         射出压力1200bar,保压800bar。"
        "产品A-002的注塑工艺参数:料温245℃,模温70℃,
         射出压力1400bar,保压900bar。"
        """
        pass

挑战2:技术参数的精确查询

制造业用户的查询很多是精确参数查询。纯向量搜索在这里表现很差。

混合搜索配置

class ManufacturingSearch:
    """制造业混合搜索配置"""
    
    def search(self, query: str) -> list:
        # 1. 判断查询类型
        query_type = self.classify_query(query)
        
        if query_type == "parameter":
            # 参数查询:"CJ-200最大射出压力"
            # → 优先BM25(精确匹配型号和参数名)
            weights = {"vector": 0.3, "bm25": 0.5, "sql": 0.2}
        elif query_type == "troubleshoot":
            # 故障排查:"E-047报警怎么处理"
            # → 优先向量搜索(语义理解故障描述)
            weights = {"vector": 0.6, "bm25": 0.3, "sql": 0.1}
        elif query_type == "process":
            # 工艺查询:"ABS注塑收缩率"
            # → 向量和BM25均衡
            weights = {"vector": 0.4, "bm25": 0.4, "sql": 0.2}
        else:
            weights = {"vector": 0.5, "bm25": 0.3, "sql": 0.2}
        
        # 2. 多路搜索
        results = self.hybrid_search(query, weights)
        
        # 3. Rerank(对参数查询特别重要)
        if query_type == "parameter":
            results = self.rerank_with_metadata(results, query)
        
        return results

设备型号的同义词映射

# 同一台设备,不同人叫不同名字
EQUIPMENT_ALIASES = {
    "CJ-200": ["CJ200", "长江200", "长江注塑机200吨", "200T注塑机", "1号机"],
    "KraussMaffei_3200": ["KM3200", "德国3200吨", "大机", "3号机"],
    "海天MA2500": ["海天2500", "HT-2500", "MA2500", "5号机"],
}

# 查询预处理:将别名映射到标准名
def normalize_equipment_name(query: str) -> str:
    for standard_name, aliases in EQUIPMENT_ALIASES.items():
        for alias in aliases:
            if alias in query:
                return query.replace(alias, standard_name)
    return query

挑战3:老师傅的经验知识

制造业最宝贵的知识不在文档里——在老师傅的脑子里。FDE需要帮客户把这些知识沉淀下来。

经验知识采集流程

# 用结构化访谈模板采集老师傅经验
INTERVIEW_TEMPLATE = """
## 经验知识采集表

### 基本信息
- 采集日期:
- 师傅姓名:
- 工龄:
- 专长领域:

### 场景描述
1. **问题/场景**:遇到什么情况?
2. **判断依据**:你怎么判断出问题的?看什么指标?听什么声音?摸什么温度?
3. **解决方法**:你怎么处理的?步骤是什么?
4. **注意事项**:有什么容易犯的错?
5. **例外情况**:什么时候这个方法不管用?

### 示例
问题:注塑产品出现银纹
判断:看银纹方向——如果顺着流动方向,多半是料温太高或干燥不够
解决:
1. 先检查料温设置
2. 确认干燥机运行正常(温度80-90℃,时间≥4小时)
3. 如果以上都正常,降低射出速度试试
注意:PA66比ABS更容易出银纹,干燥要求更严格
"""

# 将采集到的经验转化为知识库条目
async def ingest_expert_knowledge(interview_data: dict):
    # 结构化存储
    await openclaw.add_profile("expert_knowledge", interview_data["id"], {
        "expert": interview_data["expert_name"],
        "domain": interview_data["domain"],
        "problem": interview_data["problem"],
        "diagnosis": interview_data["diagnosis"],
        "solution": interview_data["solution"],
        "caveats": interview_data["caveats"],
        "exceptions": interview_data["exceptions"]
    })
    
    # 同时作为文档索引(支持自然语言搜索)
    document = format_as_document(interview_data)
    await openclaw.ingest_text(
        text=document,
        collection="expert_knowledge",
        metadata={"expert": interview_data["expert_name"]}
    )

制造业RAG的Agent配置

manufacturing_rag_agent = Agent(
    name="Manufacturing Knowledge AI",
    system_prompt="""你是工厂的技术知识助手。

回答问题时的原则:
1. 优先引用官方技术手册和标准文件
2. 参数值必须精确——带单位、带来源
3. 如果知识库中没有找到答案,明确说"未找到相关信息"
4. 涉及安全的问题(电气、化学品、高温高压),必须提醒安全注意事项
5. 如果是老师傅的经验,标注"经验分享"以区别于官方标准

回答格式:
- 先给直接答案
- 然后给详细解释
- 最后标注信息来源
""",
    tools=[
        search_equipment_manuals,
        search_process_documents,
        search_quality_standards,
        search_expert_knowledge,
        query_process_parameters  # SQL查询工艺参数表
    ]
)

制造业RAG的评估指标

指标 目标值 测量方法
参数查询准确率 ≥95% 准备100个参数问题,人工验证
故障排查覆盖率 ≥80% 覆盖Top 50常见故障
工艺知识覆盖率 ≥70% 覆盖主要产品的工艺参数
响应时间 <3秒 P95延迟
来源引用准确率 ≥90% 引用的文档确实包含答案

本章核心结论

  1. 制造业文档复杂度极高——扫描件、Excel表格、CAD文件、手写笔记都需要预处理。
  2. 参数查询是制造业RAG的核心场景——必须用混合搜索(BM25权重加大)。
  3. 设备别名映射是必须做的——同一台机器在不同部门可能有5个叫法。
  4. 老师傅的经验是最宝贵的知识——用结构化访谈模板采集,转化为可检索的知识。
  5. 安全是红线——涉及安全的回答必须带安全提醒。

下一章:金融RAG——法规文档、合规审查和研报知识库的特殊处理方式。