在使用市面上的AI模型提問題的時候,有沒有遇過AI一本正經的回答問題,但答案可能已經過時或錯誤的情況呢?更不用說是詢問公司內部的領域知識問題了。
這是因為AI模型是使用公開的資料預先訓練好的,所以不會有公司內部的領域知識或即時的資料,那想讓AI模型擁有公司專屬的知識,就可以使用RAG技術來解決。
這篇文章就來和大家介紹RAG是什麼,並且以客服的場景為例,手把手帶大家利用n8n做一個簡單的RAG AI客服系統,讓AI Agent先查詢我們自己建立的RAG向量資料庫,並透過LINE通知客服人員確認,再自動回覆客戶,實現客服自動化,提升回答的品質。
一、RAG是什麼?
RAG(Retrieval-Augmented Generation),中文是「檢索增強生成」,簡單來說,就是一種人工智慧的技術,讓大語言模型(LLM)在回答問題之前,先到外部的專屬知識庫或文件查詢資料,再把找到的結果組合出答案回覆給用戶。
二、為什麼需要RAG技術呢?
大語言模型(LLM)是用市面上公開的通用資料預先訓練好的,所以可能會有過時的資訊,也不會有公司內部的專屬知識庫內容。利用RAG技術,讓大語言模型(LLM)能夠參考專屬的知識庫來回答,降低AI幻覺的問題,提升答案的準確性,除此之外,也能透過持續更新資料庫,保持資料的即時性。
三、RAG AI客服系統的運作方式
那想要建置 RAG AI客服系統,讓 AI Agent參考公司內部的文檔資料來回答客戶問題,執行流程可以分為7個步驟:
- 偵測新郵件
- AI Agent分析郵件內容
- AI Agent查找向量資料庫
- 如果AI Agent找不到適合的資料,就標記為需人工處理
- 如果 AI Agent找得到資料,則依據查詢結果產生回覆的郵件
- 發送LINE訊息通知客服人員確認回信的內容
- 客服人員確認沒問題,系統就自動回覆郵件
其中,向量資料庫的部分,本文使用Pinecone來建置,它是一個專門為AI打造的向量資料庫,寫入資料後自動建立索引,讓AI Agent可以立即查詢使用。
四、用n8n打造RAG AI客服系統的解決方案
接下來,在n8n中要如何串接Pinecone向量資料庫,打造 RAG AI客服系統呢?
在收到新郵件時,觸發Gmail Trigger開始流程,篩選所需要的郵件欄位之後,將郵件內容透過HTTP傳送到 Pinecone API,讓 Pinecone Assistant AI Agent根據郵件內容來查找向量資料庫。如果有找到適合的資料,就回傳給 n8n,接著,利用AI Agent產製回覆的郵件,並且透過LINE訊息傳給客服人員進行確認。沒問題就自動回覆郵件給客戶,否則標記該郵件為需人工處理。
而如果 Pinecone Assistant AI Agent查不到資料,就標記該郵件為需人工處理,同時回覆郵件通知客戶。
五、用n8n打造RAG AI客服系統的實作步驟
1. 建立Pinecone Assistant
註冊Pinecone帳號之後,在左側欄的地方,選擇「Assistant」,並且點擊「Create an assistant」按鈕來進行建立的動作。
命名Pinecone Assistant的名稱,如下範例:
接著,在右側欄選擇資料夾的圖示來上傳文檔資料,「Chat model」欄位可以依照自己的喜好選擇AI模型,如下圖:
選擇檔案之後,如果檔案內容是純文字的話,選擇「Text-based context only」,有圖表、圖片、表格的話,就選擇「Enable multimodal context」,然後點擊「Import」按鈕,Pinecone Assistant就會自動幫我們把文檔資料切片、建立索引,寫入向量資料庫。
到這邊,就完成Pinecone向量資料庫的建立。接下來,就回到n8n來建立自動化流程。
2. 設定 Gmail Trigger:偵測新客服郵件
當有新的郵件時觸發流程,其中,關閉「 Simplify」 設定,才有辦法取得完整的郵件內容資料。
3. 設定 Edit Fields(Set):篩選客服郵件欄位
篩選所需要的郵件欄位,這邊以「主旨」、「寄件人電子郵件」、「寄件人」、「郵件內容」為例。
4. 設定HTTP Request:查詢Pinecone向量資料庫
把郵件內容透過HTTP傳送到Pinecone Assistant API,設定如下:
Body JSON資料如下:
{{ JSON.stringify({ messages: [ { role: "user", content: "你是一位專業客服。請根據知識庫回答以下客戶信件。限制:如果信件內容『不屬於客服問題』或『知識庫中完全找不到答案』,請絕對不要自行編造答案,並且『只能』單獨回覆我:HUMAN_REQUIRED,不要有任何其他文字。客戶來信如下:\n\n" + $json.text } ], stream: false }) }}
5. 設定 IF:判斷 Pinecone 查詢結果是否需人工處理
判斷Pinecone Assistant API回傳的「content」欄位值是否為 「HUMAN_REQUIRED(需人工處理)」,如果是的話,執行人工處理流程,否則就執行自動化回信流程。
6. 自動回覆流程:AI Agent產製郵件、人工確認後發信
如果Pinecone Assistant有查詢到適合的資料,就執行以下的自動化流程:
▍設定 AI Agent(Email Agent):產製回覆郵件
把「客戶的來信內容」、「Pinecone Assistant回傳的查詢結果」,傳給 AI Agent 來產生回覆的郵件,設定如下:
回傳的資料格式如下:
▍設定 HTTP Request:發送LINE訊息
發送 HTTP Request 請求到 LINE API,把 AI Agent(Email Agent) 產生的郵件內容,以 Flex Message 格式傳送到 LINE,設定如下:
其中,JSON的內容範例如下:
{ "to": "你的LINE USER ID", "messages": [ { "type": "flex", "altText": "📬 新客服信件待審核", "contents": { "type": "bubble", "header": { "type": "box", "layout": "vertical", "backgroundColor": "#2C7BE5", "contents": [ { "type": "text", "text": "📬 客服回信待審核", "weight": "bold", "size": "lg", "color": "#ffffff" } ] }, "body": { "type": "box", "layout": "vertical", "spacing": "md", "contents": [ { "type": "text", "text": "寄件人", "size": "xs", "color": "#888888" }, { "type": "text", "text": "{{ JSON.stringify($('編輯欄位').item.json.from).slice(1, -1) }}", "weight": "bold", "wrap": true }, { "type": "separator" }, { "type": "text", "text": "回信預覽", "size": "xs", "color": "#888888" }, { "type": "text", "text": "{{ JSON.stringify($('Email Agent').item.json.output.reply_body).slice(1, -1) }}", "wrap": true, "size": "sm" } ] }, "footer": { "type": "box", "layout": "vertical", "spacing": "sm", "contents": [ { "type": "button", "style": "primary", "color": "#28a745", "action": { "type": "uri", "label": "✅ 核准發送", "uri": "{{ $execution.resumeUrl }}&action=approve" } }, { "type": "button", "style": "secondary", "action": { "type": "uri", "label": "❌ 取消", "uri": "{{ $execution.resumeUrl }}&action=reject" } } ] } } } ] }
客服人員會收到像這樣的訊息:
▍設定 Wait:等待客服人員確認
等待客服人員確認郵件內容,設定如下:
▍設定 IF:判斷是否核准發送
判斷客服人員的檢核結果,如果「action」參數值為 approve(核准發送),就自動回覆郵件給客戶,否則就標記該郵件「需人工處理」。設定如下:
▍核准發送:設定Gmail(Reply to a message)同意回覆郵件
如果客服人員點擊「核准發送」,就透過 Gmail 回覆客戶郵件。
▍取消:設定 Gmail(Add label to message)標記需人工處理
反之,客服人員點擊「取消」,就標記該郵件為「需人工處理」。
7. 人工處理流程:標記郵件、回覆客戶
當Pinecone Assistant沒辦法從向量資料庫中找到資料,就執行以下的人工處理流程:
▍設定 Gmail(Add label to message):標記需人工處理
標記該郵件為「需人工處理」,設定如下:
▍設定 Gmail(Reply to a message):回覆客戶郵件
寄送 Gmail 郵件通知客戶需專人處理,設定如下:
四、成果總結
這篇文章藉由實作 RAG AI 客服系統,利用 n8n串接Pinecone向量資料庫,帶你入門瞭解 RAG 是什麼,把手邊的非结構化文檔資料,轉成 AI Agent 能夠查詢的資料,並且把生成的回覆郵件內容,透過 LINE 訊息發送給人員進行確認,沒問題就能夠自動回信。
如果你也想要讓 AI Agent 能夠查詢你的文檔資料,或是公司內部的領域知識庫,可以參考這篇文章導入 RAG 技術,讓 AI 模型的回答更精準。
💡 在導入流程自動化時遇到了什麼問題?還是有什麼應用想嘗試、想看的文章主題?歡迎填寫許願表單,你的回饋會直接影響下一篇教學的方向。填寫許願表單 →
🔗 如果這篇文章對你有幫助,歡迎把它分享給也在研究自動化的朋友。能幫到更多人少走一點彎路,是我寫這些內容最大的動力。





留言
張貼留言