新闻中心

如何将人工智能(AI)应用于工业生产设备

最近常常有见到众企业使用DeepSeek服务于其用户的新闻,我们公司也有些客户来咨询是否可以基于我们的产品创建AI工业场景的应用模型。因我一向对此深感兴趣,所以在几年前ChatGPT刚问世的时候就有涉足,当然与业内资深人士无法相比,但几年来也陆续使用体验过的AI品牌有Copilot、Grok,以及DeepSeek。
当我在撰写这篇文章前,有先提问过上述这几款AI,并在总结综合后得出以下二种最适合中小型制造企业的实施方法:


1、上下文注入与提示工程
这个方法实现的原理是通过精心设计的提示(prompt)将产品专业知识直接嵌入到人工智能API接口的输入中,从而引导其生成符合需求的回答。
具体示例如下(使用Grok API,包含提示模板、API调用逻辑和Web前端):
运行如下图:

通过以上示例我们有了解到该方法是直接将产品说明书及常见问题解决方法(提示模板)和用户所提的问题直接通过Grok API发送给AI服务器,然后Grok会将提示模板中的产品知识作为上下文,结合用户提问,生成符合知识内容的回答。
因此,可以认为:
- 人工智能的 API 会通过接收用户提问来推断其真实含义。
- 同时通过提示模板中的产品知识和问答指令生成准确、相关的回答。
- 知识模板不仅是“回答的依据”,还起到引导和约束的作用。
上述方法的优点在于实施简单,缺点是包括的知识模板受限于API接口的最大文本长度,比如DeepSeek允许每次调用(提问和回答)不超过32K的文本。
所以对于大多数企业而言,将产品的专业知识存储于企业内的本地数据库是一种天然的选择。为此人工智能提供商还提供了另一种方法。

二、使用RAG(检索增强生成)
其原理是先将企业的产品专业知识存储为嵌入向量(使用嵌入模型如Sentence-BERT),在查询时通过已创建并存储在企业内的向量数据库(如Postgresql)来检索相关知识,最后再将结果以第一种上下文方式调用人工智能提供商的API接口来生成准确的回答。
下面是一个完整的解决方案,使用PostgreSQL作为向量数据库,结合DeepSeek API实现检索增强生成(RAG)功能。
## 1. 系统架构
1. **文档存储**:PostgreSQL + pgvector 存储文档内容和向量
2. **检索系统**:基于向量相似度搜索相关文档
3. **生成系统**:DeepSeek API 结合检索结果生成回答
## 2. 数据库设置
PostgreSQL
-- 启用pgvector扩展
CREATE EXTENSION IF NOT EXISTS vector;
-- 创建文档表
CREATE TABLE enterprise_documents (
id BIGSERIAL PRIMARY KEY,
doc_title TEXT NOT NULL,
doc_content TEXT NOT NULL,
embedding VECTOR(1024), -- DeepSeek使用的向量维度
department TEXT,
doc_type TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建索引 (根据数据量选择ivfflat或hnsw)
CREATE INDEX ON enterprise_documents USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
-- 可选:创建全文中文搜索索引
CREATE INDEX ON enterprise_documents USING gin(to_tsvector('zh', doc_content));
## 3. 完整Python实现
### 环境准备
在CMD或PowerShell中安装需使用的python库
pip install psycopg2-binary pgvector python-dotenv requests numpy
### python代码实现
import os
import requests
import numpy as np
from typing import List, Dict, Optional
from dotenv import load_dotenv
import psycopg2
from psycopg2.extras import Json
from pgvector.psycopg2 import register_vector
# 加载环境变量
load_dotenv()
class DeepSeekPostgresRAG:
def __init__(self):
# 初始化数据库连接
self.db_conn = psycopg2.connect(
dbname=os.getenv("PG_DATABASE"),
user=os.getenv("PG_USER"),
password=os.getenv("PG_PASSWORD"),
host=os.getenv("PG_HOST"),
port=os.getenv("PG_PORT")
)
register_vector(self.db_conn)
self.cursor = self.db_conn.cursor()
# DeepSeek API配置
self.deepseek_api_key = os.getenv("DEEPSEEK_API_KEY")
self.deepseek_embedding_url = "https://api.deepseek.com/v1/embeddings"
self.deepseek_chat_url = "https://api.deepseek.com/v1/chat/completions"
def retrieve_relevant_documents(self, query: str, top_k: int = 3) -> List[Dict]:
"""检索相关文档"""
query_embedding = self.get_embedding(query)
self.cursor.execute(
"""
SELECT
id,
doc_title,
doc_content,
1 - (embedding <=> %s) as similarity
FROM enterprise_documents
ORDER BY embedding <=> %s
LIMIT %s
""",
(np.array(query_embedding), np.array(query_embedding), top_k)
)
results = self.cursor.fetchall()
return [
{
"id": row[0],
"title": row[1],
"content": row[2],
"similarity": float(row[3])
}
for row in results
]
def generate_with_rag(self, query: str) -> str:
"""使用RAG生成回答"""
# 1. 检索相关文档
relevant_docs = self.retrieve_relevant_documents(query)
# 2. 构建上下文
context = "\n\n".join(
[f"文档标题: {doc['title']}\n内容: {doc['content']}"
for doc in relevant_docs]
)
# 3. 调用DeepSeek API生成回答
headers = {
"Authorization": f"Bearer {self.deepseek_api_key}"
, "Content-Type": "application/json"
}
messages = [
{
"role": "system",
"content": "你是一个企业知识助手,根据提供的上下文回答问题。"
"如果上下文不包含答案,请如实回答你不知道。"
},
{
"role": "user",
"content": f"问题: {query}\n\n相关上下文:\n{context}"
}
]
response = requests.post(
self.deepseek_chat_url,
headers=headers,
json={
"model": "deepseek-chat",
"messages": messages,
"temperature": 0.3,
"max_tokens": 1024
}
)
response.raise_for_status()
return response.json()["choices"][0]["message"]["content"]
def close(self):
"""关闭连接"""
self.cursor.close()
self.db_conn.close()
# 使用示例
if __name__ == "__main__":
# 初始化RAG系统
rag_system = DeepSeekPostgresRAG()
try:
# 示例文档数据 (实际应用中可以从文件或数据库加载)
company_documents = [
{
"title": "员工考勤制度",
"content": "公司实行标准工时制,工作日为周一至周五。迟到30分钟以内扣减当日工资的1/10。",
"metadata": {"department": "HR", "doc_type": "policy"}
},
{
"title": "报销流程",
"content": "员工需在消费后15个工作日内提交报销申请,并附上原始发票电子版。审批流程不超过3个工作日。",
"metadata": {"department": "Finance", "doc_type": "process"}
},
{
"title": "IT安全政策",
"content": "禁止使用弱密码,密码必须包含大小写字母、数字和特殊字符,且长度不少于12位。",
"metadata": {"department": "IT", "doc_type": "security"}
}
]
# 插入文档 (实际应用中只需执行一次)
print("正在索引文档...")
for doc in company_documents:
rag_system.insert_document(
doc["title"],
doc["content"],
doc.get("metadata")
)
print("文档索引完成!")
# 交互式问答
while True:
query = input("\n请输入您的问题(输入q退出): ")
if query.lower() == 'q':
break
print("\n思考中...")
answer = rag_system.generate_with_rag(query)
print(f"\n回答: {answer}")
finally:
rag_system.close()
由此我们认识到,实施和布署于工业生产设备应用AI的前提是需要有完备的生产设备使用和维护知识,这也符合所谓数据是二十一世纪的石油的说法。
由于上述专业知识是企业打拼市场数十年来累积,可视为竞争成败的关键因素,所以数据的安全性是实施AI企业需要认真考虑的问题。
而要想让生产设备自动收集和更新生成的专业知识,进于自动基于用户的问题主动操作设备进行自主维护的关键,前提是让设备的HMI和生产线SCADA系统收集、存储和处理更多的横向和纵向的物联信息,可以定制化、快速高效地开发更多更强的操作和维护功能,这就是使用zenon工业软件的优势所在。

 

浏览其它成功案例