FAB里最头疼的事之一:设备报警了,但不知道怎么处理。
老员工经验丰富,但不可能24小时在线。新员工经验不足,查手册又太慢。
我想了个办法:用RAG(检索增强生成)搭一个故障诊断AI Agent。
把设备手册、维修记录、故障案例都扔进去,工程师用自然语言提问,AI给出诊断建议。
痛点:设备故障了怎么办?
我见过的新工程师求助场景:
1. 设备报警Code 2050,工程师不知道什么意思
2. 查设备手册,手册太厚,找半天找不到
3. 问老员工,老员工在忙,半天不回
4. 自己瞎处理,结果问题更大
有没有办法让AI帮忙?
普通的ChatGPT:手册太长,塞不进去。即使塞进去了,回答也是泛泛的,不够精准。
RAG知识库:把专业知识分段存储,检索时只召回最相关的内容,回答更准确。
[配图说明:RAG故障诊断系统架构图:知识库→检索→大模型→诊断建议]
系统设计
整个系统分3个模块:
1. 知识库构建:把设备手册拆分成段落,存入向量数据库
2. 检索模块:根据用户问题,召回最相关的知识片段
3. 生成模块:把检索结果+问题一起发给大模型,生成诊断报告
代码实现(可直接部署)
依赖安装:
pip install langchain langchain-community
pip install chromadb # 向量数据库
pip install openai # 或用其他大模型API
Step 1:知识库构建(离线)
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
# 加载设备手册PDF
loader = PyPDFLoader("etch_manual.pdf")
documents = loader.load()
# 拆分成小段落(每段500字)
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50
)
chunks = splitter.split_documents(documents)
print(f"拆分完成:{len(chunks)}个知识片段")
# 存入向量数据库
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=embeddings,
persist_directory="etch_kb_db"
)
vectorstore.persist()
print("知识库已构建并保存")
Step 2:检索+诊断(在线)
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
# 加载知识库
vectorstore = Chroma(
persist_directory="etch_kb_db",
embedding_function=OpenAIEmbeddings()
)
# 诊断Prompt模板
SYSTEM_PROMPT = """你是一个有10年经验的半导体刻蚀设备工程师。
请根据知识库中的信息,诊断设备故障。
要求:
1. 先分析可能的原因(3-5条)
2. 按可能性从高到低排序
3. 给出每条原因对应的排查步骤
4. 如果知识库中没有相关信息,直接说明,不要编造
回答格式:
【故障分析】
可能原因:
1. [原因] - [可能性说明]
2. ...
建议排查步骤:
1. [步骤]
2. ...
【注意事项】
...
"""
# 构建诊断Chain
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o", temperature=0.3),
retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
chain_type="stuff",
return_source_documents=True
)
# 诊断示例
question = "ETCH-03设备报警Code 2050,腔室温度异常升高,怎么处理?"
result = qa_chain({"query": question})
print(result["result"])
实际诊断输出示例:
【故障分析】
可能原因:
1. 温控器故障 - 可能性:65%
温控器传感器失效导致温度读数偏高,可能需要更换
2. 冷却系统堵塞 - 可能性:25%
冷却水流量不足导致热量无法散出
3. 工艺气体异常 - 可能性:8%
气体反应放热量增加
4. 热电偶接触不良 - 可能性:2%
偶发性接触电阻变化
建议排查步骤:
1. 检查设备面板上的温度读数,确认是否为传感器故障
→ 查看History Log中温度变化趋势
2. 检查冷却水系统(水压、流量、温度)
→ 冷却水进水温度应≤25°C
3. 检查温控器报警记录(Menu→Alarm→History)
4. 如果以上正常,联系设备工程师更换温控器
【注意事项】
⚠️ 温度超过450°C时,系统会自动停机保护
⚠️ 在排查过程中,不要擅自调整Recipe参数
⚠️ 如果伴随RF功率异常,可能需要同时检查匹配器
本地部署方案(免费)
上面的方案用的是OpenAI API(收费)。如果没有魔法上网,可以用国内模型替代:
# 使用国产模型(如智谱GLM、通义千问)
from langchain.chat_models import ChatZhipuAI
qa_chain = RetrievalQA.from_chain_type(
llm=ChatZhipuAI(model="glm-4", temperature=0.3),
retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
)
# 或者使用本地模型(推荐Ollama + Llama3)
from langchain.chat_models import ChatOllama
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOllama(model="llama3", base_url="http://localhost:11434"),
retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
)
# 完全免费,支持本地部署,数据不出厂!
[配图说明:故障诊断界面:左侧输入问题,右侧输出诊断结果和建议]
效果与局限
�� 实测效果:
- 常见报警诊断:准确率约85%,响应时间<5秒
- 复杂故障:只能提供排查方向,最终还是要靠人判断
- 知识库质量:直接决定诊断效果,手册越详细越好
⚠️ 局限性:
1. 不能替代人工:AI只能辅助排查,最终处理仍需工程师把关
2. 知识库更新:新增故障案例需要定期更新知识库
3. 实时数据:无法接入设备实时数据,只能基于文档回答
目前这套系统在团队内部使用,反馈不错。特别是新人,遇到报警不再慌,可以先问AI,再决定要不要叫老员工。
---
你们厂的设备故障怎么处理?有没有用AI辅助?评论区聊聊!
觉得有用点赞收藏!关注我,分享更多AI+半导体落地实践!