從零打造屬於自己的 RAG-based LLM Line Bot 系列(一):介紹與規格
起心動念
在這個系列文章中(預計會有五篇),我會分享如何從頭開始開發一個 RAG-based 的 Line Bot,包含
目錄
起心動念
最近成為父親後,除了日常的照顧,隨著孩子的成長,我遇到了各種問題,例如腸絞痛影響餵奶、副食品準備和處理嗆到或噎到的情況,以及每個階段要注意的發展指標等。
雖然這些問題似乎在網上都可以找到答案,但也帶來了一些困擾,因為有些資訊合理但缺乏實際驗證,而某些問題沒有絕對正確的答案,只有適不適合。資訊過多也使得每次查詢都需要花時間整理。
於是我想到一個念頭:「為何不自己開發一個專精於育兒領域的聊天機器人呢?」這個機器人可以快速搜尋並整理結果,同時限制參考的資料只來自我信任的來源。
有了 ChatGPT,這個念頭變得不再那麼困難。只需準備好資料來源,使用檢索增強生成(RAG)減少模型的幻覺,再搭配 Line 介面,我有機會實現這個目標。
用一句話簡短描述目標的話,大概是
開發一個 Line Bot,根據使用者的問題,在預先選取的資訊來源下回答。
也出於個人興趣和需求,因為這類議題的熱度實在是高到無法忽視,找到一個自己需要且有興趣的主題,更容易持續推進下去。
成果展示
因為是使用 Line Bot 作為輸入方式,所以介面和一般 Line 帳號的對話沒有什麼不同。現在,我打算透過一個實例來清楚比較直接使用 ChatGPT 和 RAG-LLM Bot 的區別。
例如以下這個問題,
Q: 嬰兒該使用螃蟹車呢?
先來看看使用 ChatGPT 的回答。
ChatGPT 認為這是有爭議的題目,且提出優點和缺點。不過最後沒有並提供一個結論去建議是否該使用。
接著再來看有使用 RAG 的 LLM Bot 回覆的結果。
這份回答參考了幾位專注於嬰兒發展的醫師和專業人士在其 YouTube 頻道的影片中提供的解答。透過 Line Bot 返回的資源文件中,我發現了一部由 Sunny Huang — IBCLC 製作的影片,其中詳細討論了為何不建議使用螃蟹車的原因,並提供了相應的資料和實驗數據。由於我對這位專業人士的信任,這份回答因此更加具有說服力。再加上有來源文件的支持,這讓我對這個回答更有信心。
以下影片示範在 Line 上面互動的結果
規格文件
簡單統整這個專案的規格來幫助開發過程聚焦。(由 ChatGPT 主要產生)
概述
- 目的:定義並描述開發一個 Line Bot 育兒助手的需求、功能、性能和技術要求。
- 範圍:本文件適用於將 ChatGPT 應用於取用 Youtube 字幕,使用檢索增強生成(RAG)技術,整合 Line 作為互動介面。
功能需求
- 用戶介面:
- 提供 Line Bot 介面,以支援用戶的互動。
- 支援文字輸入,能夠理解自然語言。 - 能理解用戶查詢需求:
- 使用 Langchain 搜尋引擎,實現資訊的快速搜尋和統整。
- 使用 RAG 避免資訊的幻覺(Hallucination)。 - 資料源管理:
- 允許管理預先選取的資訊來源,確保資訊的可靠性和準確性。
技術堆疊(Tech Stack)
- 整合 ChatGPT 作為語言生成模型。
- 使用 Langchain 實現資訊檢索。
- 應用 RAG 技術提高檢索結果的品質。
測試和品質保證
就先不做測試了…
小結
這是系列文章的第一篇,主要介紹了這個專案的構想過程、成果展示,以及相關的開發文件和所採用的技術。
在下一篇文章中,我們將正式深入探討開發的構想和設定,包括系統架構和事前準備(如相關服務的帳號和 Token)。請點擊這裡閱讀下一篇文章。
對這個系列感興趣的讀者們,請繼續保持關注,我們下次見!