搭建 n8n LineBot RAG
功能介紹
n8n 是一款開源的工作流自動化工具,旨在幫助用戶通過可視化的方式設計和執行自動化流程,實現跨應用和服務的數據整合與操作。是一個功能強大且靈活的工作流自動化平台,適合個人和企業用戶用於提升效率和簡化業務流程。無論是簡單的數據同步,還是複雜的跨平台自動化,n8n 都能提供可靠的解決方案。
知識資料準備
flowchart TD subgraph A[知識資料準備] A1[知識資料來源] A3[ETL資料處理] A5[移除雜訊、標準化內容] A7[分類、標籤、時間戳] A8[存入資料庫] A9[存入向量資料庫] A1 -->|擷取數據| A3 -->|資料清理| A5 -->|資料標示| A7 A7 -->|儲存結構化資料| A8 A7 -->|轉換向量嵌入| A9 end
RAG 查詢與生成
flowchart TD %% 開始 A[使用者查詢] %% 區塊框線:RAG 查詢與生成 subgraph RAG 查詢與生成 %% 左路徑:向量查詢 A -->|語意轉向量| B1[查詢向量庫] B1 -->|相似內容查詢| B2[返回最相似資料] %% 右路徑:結構化查詢 A -->|結構化資料查詢| C1[查詢資料庫] C1 --> C2[返回資料庫查詢結果] %% 整合結果與傳送給 LLM B2 --> D[整合查詢結果] C2 --> D D --> E[傳送給 LLM 生成答案] end %% 結尾:回答使用者 E -->|LLM 回應| F[回覆使用者]
簡單n8n 串接 LINE 教學
n8n 是一款強大的工作流自動化工具,能夠輕鬆串接 LINE 並實現多種自動化功能,例如發送通知、處理訊息或與其他應用整合。以下是串接 LINE 的詳細教學:
步驟 1:準備 LINE API 憑證
在串接 LINE 前,您需要取得 LINE 的 API 憑證。以下是準備步驟:
-
註冊 LINE Developers 帳戶:前往 LINE Developers 註冊帳戶。
-
建立 Channel: * 登入後,建立一個新的 Messaging API Channel。 * 記下 Channel ID、Channel Secret 和 Access Token,這些將用於 n8n 的認證設定。
-
設定 Webhook(可選):如果需要接收 LINE 的事件通知,需設定 Webhook URL,該 URL 可由 n8n 提供。
步驟 2:在 n8n 中新增 LINE 節點
N8N設定的畫面
步驟 3:在OpenAI建立好的客製化機器人
網址: https://platform.openai.com/playground/assistants
以下是了解我的書的內容的機器人,這個是Open AI的Agent功能,可以在這邊上傳檔案,讓這個機器人有RAG的資料庫可以回答專屬於自己的知識
步驟4:在n8n呼叫已經建立好的機器人
可以選擇下面這個節點來和已經建立好的機器人聊天
要注意的是,這個節點輸入的文字要是前一個節點的”chatInput”變數。所以要在前面新增一個Edit Fields的節點,來改變前一個節點的值的結構
選擇剛剛建立好的機器人
步驟5:回覆LINE訊息
因為原本n8n只有notify的元件,而這個元件即將要廢棄
因此我自己參考這邊的API格式來呼叫send line message
https://developers.line.biz/en/docs/messaging-api/sending-messages/#reply-messages
curl -v -X POST https://api.line.me/v2/bot/message/reply
-H ‘Content-Type: application/json’
-H ‘Authorization: Bearer {channel access token}’
-d ‘{
“replyToken”:“nHuyWiB7yP5Zw52FIkcQobQuGDXCTA”,
“messages”:[
{
“type”:“text”,
“text”:“Hello, user”
},
{
“type”:“text”,
“text”:“May I help you?”
}
]
}’
這邊因為要避免OPENAI回傳一些會打亂JSON格式的特殊字元,因此要用JSON.stringify(…)把回傳的字串包起來
{ “replyToken”:"{{ $(‘If’).item.json.body.events[0].replyToken }}", “messages”:[{“type”:“text”,“text”:{{ JSON.stringify($json.output) }}}] }