生成式 AI 的崛起,讓我們開始思考一個過去只能存在知識達人腦海裡的場景:
「今天是夜班,資深班長請假了,現場遇到一台設備報異常。工程師在 Line 群組問:『這個 WE27 的溫控異常,有解法嗎?』幾秒鐘後,一個 AI 回答:『請依照 SOP 第 4.2 節的方式降溫重啟,並確認 PLC 的 #Node34 是否回傳成功。』」
這樣的畫面,我們真的做到了。
這篇,我想分享我實際在工廠導入 RAG 系統(Retrieval-Augmented Generation)的整個流程,從資料取得、向量化、chunk 的設計,到不同 RAG 架構的選擇與推薦。
許多人問我:「ChatGPT 這麼聰明,為什麼它回答不了我們工廠的問題?」
我說:「因為 ChatGPT 不知道你們工廠有幾台機器,型號是什麼,誰在用,規格是什麼,也從沒看過你們的 SOP、品保流程與 BOM 表。」
RAG 的本質是:讓語言模型可以「引用」你自己的資料來回答問題,而這一切的第一步,就是:你要有資料。
我們使用 PDFMiner、PyMuPDF、Tesseract OCR、Selenium 自動化與 pandas 清洗資料,將所有內容統一為可嵌入格式。
資料有了,下一步是「向量化」,將文字轉成可供語言模型理解的 embedding 向量。
模型名稱 | 優點 | 缺點 |
---|---|---|
text-embedding-ada-002 |
穩定、效果好 | 有 token 限制,需聯網且付費 |
all-mpnet-base-v2 |
本地部署穩定、免費 | 中文效果中等 |
multilingual-e5-small |
中文效果佳、可多語言 | 需正確設計 prompt pairing |
我們最終選擇 E5-small
+ FAISS 向量庫,因為適合中文環境、可離線部署且維護成本低。
Chunk 是將大段文字切割成小段的動作,以便建立可精準檢索的向量。
技巧 | 說明 |
---|---|
每段 200~400 字 | 控制大小,保留上下文 |
以標題或章節切分 | 使用 # 、節點編號等結構為依據 |
加上來源資訊 | 頁數、章節,有助回溯與信任 |
分群 index | SOP 一個群組,QA 一個群組 |
使用滑動視窗 | 重疊文字增強語意連貫性 |
最佳策略:用標題為切分的邊界 + 每段重疊 100 字
元件 | 工具推薦 |
---|---|
向量資料庫 | FAISS / Weaviate |
Embedding | E5-small / all-mpnet-base-v2 |
Chunk 工具 | LangChain TextSplitter / 自訂滑動分段器 |
回答引擎 | GPT-4 / LLaMA-3 / Claude 3 |
前端介面 | Streamlit / Flask + Vue |
RAG 系統不是「讓 AI 什麼都知道」,而是「讓 AI 認識你自己的工廠」。
📌 敬請期待:
Day 5|從現場提問中打造企業級AI知識系統的關鍵觀察:從提問者角度出發