RAG workshop 行前通知:基本需求

  1. 當天帶自己的電腦。當天建議自備手機網路
  2. 選項1: 用電腦在 docker 運行開發環境
  3. 選項2: 用電腦遠端連線講師提供的 VM,在遠端VM 中運行 docker 開發環境
  4. 會使用 docker
  5. 會使用 python 與 jupyter notebook
選項1: 使用自己的電腦 💻

在 workshop 開始前,在自己的電腦上

  1. 安裝 docker
  2. git clone 教材
  3. 啟動 docker 開發環境,下載 docker images
  4. 安裝所需的 Python 套件
  5. 開啟瀏覽器,連線到http://localhost:8888
  6. 登入token=workshop1234!
git clone https://github.com/chechiachang/rag-workshop.git
cd rag-workshop
docker compose up -d
docker exec -it notebook pip install pandas openai qdrant_client tqdm tenacity wget tenacity unstructured markdown ragas sacrebleu langchain_qdrant langchain-openai langchain_openai langchain_community tiktoken ipywidgets
選項2: 使用遠端 VM
  1. 有自己的電腦,當天建議自備手機網路,連線到遠端 VM
  2. 提前註冊 tunnel 工具(沒有業配)
  3. Ngrok 登入 Login -> 左手邊 Identity & Access -> Authtokens -> Add Tunnel authtoken -> 記在安全的地方
  4. 也可以使用 Pinggy,但免費有限時

建議

  1. 優先使用個人電腦。會盡量提供免費 VM 名額,但依參與人數不保證現場有
  2. 在家先試跑一遍,把 docker image 跟 pip 套件都下載好,現場要載很久
  3. 試完後記得關掉 ngrok,以免用完每月的免費額度
  4. 事先看完內容覺得太簡單可以不用來,但歡迎會後找我聊天XD

投影片與教材與完整程式碼放在網站上

以下是 RAG Workshop 當天內容

可以先看,也可以當天再看

RAG Workshop

關於我

RAG Workshop 流程

  1. 10min - 環境設定:確定參與者都有設定好開發環境
  2. 10min - 為什麼需要 RAG(Retrieval-Augmented Generation)
  3. 10min - Notebook 2 Embedding 與向量數據庫
  4. 10min - Notebook 3 Embedding Search
  5. 10min - Notebook 4 DIY
  6. 10min - Notebook 5 Evaluation
  7. 10min - Notebook 6 k8s RAG QA
  8. 20min - DIY + Q&A
選項1: 使用自己的電腦
  1. 有在家先試跑一遍,應該可以在本地存取 Notebook http://localhost:8888
  2. workshop.chechia.net 取得 OpenAI Key
  3. 可以試著跑 notebook 2-5
  4. 忘記怎麼啟動,可以回到投影片最開始
notebook token: workshop1234!
AZURE_OPENAI_API_KEY=""
AZURE_OPENAI_ENDPOINT=""
選項2: 使用遠端 VM
  1. workshop.chechia.net 領取一台 VM 並簽名
  2. googel sheet 左邊 url,開啟 bastion 連線
  3. Protocol: SSH,port 22,authentication type: password
  4. 帳號密碼在workshop.chechia.net

選項2: 使用 ngrok 連線到 jupyter notebook
  1. 進入 VM 後,修改下面 ngrok authtoken。指令一行一行貼上(右鍵)到 bastion 中執行
  2. 透過 https://4d11-52-230-24-207.ngrok-free.app/ 就可以使用 notebook (每個人不一樣)
cd rag-workshop
NGROK_AUTHTOKEN=<改成你的token>
sed -i "s/your-token/$NGROK_AUTHTOKEN/" docker-compose.yaml
docker compose up -d
docker logs ngrok

t=2025-06-02T06:17:41+0000 lvl=info msg="started tunnel" obj=tunnels name=command_line addr=http://notebook:8888 url=https://4d11-52-230-24-207.ngrok-free.app

以上是 Workshop 環境設定

  1. 後面上課都透過這個網址操作
  2. 還沒有看到 jupyter notebook 的人,請舉手

RAG Workshop 流程

  1. 環境設定:確定參與者都有設定好開發環境
  2. 為什麼需要 RAG(Retrieval-Augmented Generation)
  3. Embedding 與向量數據庫
  4. Embedding Search
  5. DIY
  6. Evaluation
  7. 實際應用: 以 k8s official docs 為例
  8. DIY + Q&A

什麼是 RAG

RAG(Retrieval-Augmented Generation 檢索增強生成)結合檢索系統與生成式模型(如 GPT)的自然語言處理架構,在生成答案時引用外部知識,使模型回答更準確且具事實根據
  1. Retrieval(檢索): 從一個外部知識庫(如文件、向量資料庫等)中找到與問題相關的資訊。通常會用語意向量(embeddings)做相似度搜尋。
  2. Generation(生成): 把檢索到的內容與使用者問題一起丟給 LLM(如 GPT、Claude 等)去生成答案。生成的內容會更具事實根據,並能引用具體資料。

https://cookbook.openai.com/images/llamaindex_rag_overview.png

知識獲取效率在 DevOps 的難題

在快速變動、資訊分散的環境中,難以即時取得需要的知識。「有但找不到、看不懂、用不起來」

  1. 知識分散在多個系統、格式與工具中
  2. 知識多為「靜態文件」,難以互動問答,舉例,或是換句話說
  3. 隱性知識未被系統化儲存(例如:口頭傳承、slack 討論、會議紀錄等)
  4. 查詢流程與開發流程脫節

情境:新人工程師要如何到 k8s doc 查到想要的內容?

  1. 有問題去 google / stack overflow
  2. 需要搜尋引擎(k8s doc 有提供,但內部文件系統不一定有)
  3. 需要關鍵字(新人怎麼知道要查 Dynamic Persistent Volume Resizing)
  4. 協助理解(舉例,換句話說)
  5. 跨語言門檻

https://kubernetes.io/search/

情境:Senior 工程師要如何分享知識?

  1. 『我有寫一篇文件在某個地方,你找一下』
  2. 『我忘記去年為什麼這樣做了』
  3. 『我去 Slack 上找一下』
  4. 『你要不要先去問 ChatGPT?』

RAG 讓 DevOps 更智慧的即時反應

  1. 提升知識獲取效率: 內部文檔知識AI助手
  2. 知識留存與新人 Onboarding
  3. 加速故障排查: 根據錯誤訊息自動從 Runbook 中檢索處理方式
  4. 優化流程自動化與提升決策品質: 通訊軟體對話 bot,自動生成建議

DevOps AI Copilot 不應該像圖書館守門員等人來借書, 而應該像導航系統,在你開車時主動告訴你:前方有彎道。

RAG + Context-Aware Knowledge Copilot

RAG vs 其他工具

  • 需要工具提升知識獲取效率,如何選擇 RAG 或是其他 non-LLM 工具?例如 search engine / fulltext search engine / search algorithm
  • 特定任務的效能是否優於人類
  • 哪裡適合用 RAG,哪裡適合用 non-LLM 工具

有了大語言模型後

  1. 去 google -> 先問 chatgpt,初步問答理解問題,找到關鍵字
  2. 需要搜尋引擎 -> chatgpt 整合,直接上網搜尋
  3. 需要關鍵字 -> chatgpt 幫你找到關鍵字
  4. 協助理解 -> chatgpt 舉例,換句話說
  5. 跨語言門檻 -> chatgpt 翻譯
  • chatgpt 會用通順的語言,快速(數秒內)上網搜尋,回答問題
  • 過程中不厭其煩地問答,換句話說
  • 回答的格式高度客製化
LLM 不具備專業知識。缺乏內容根據時,容易產生幻覺(hallucination)

RAG Workshop 流程

  1. 環境設定:確定參與者都有設定好開發環境
  2. 為什麼需要 RAG(Retrieval-Augmented Generation)
    1. RAG 在「文件檢索與提示」上優於人類
    2. LLM 補強工程師的語言能力
  3. Embedding 與向量數據庫
  4. Embedding Search
  5. DIY
  6. Evaluation
  7. k8s RAG QA.ipynb

RAG Workshop 流程

  1. 確定參與者都有跑一套RAG起來
  2. Evaluation
  3. k8s RAG QA.ipynb

如何評估 RAG 系統的品質?

  1. 人人都會下 prompt,但是誰的 prompt 更好?或是沒差別?
  2. 如何選擇 vector store 的 chunking 策略?
  3. 哪個 retriever 更好?
  4. 要如何持續改善 RAG 系統?下個迭代的改善方向是什麼?
  5. 是否符合 production criteria?

評估:確保回答品質可靠性與可控性

  1. 保證正確性:檢索出的資訊是正確的,生成的答案忠實於原始 context
  2. 降低幻覺風險:即使有資料,LLM 仍可能亂編
  3. 測量系統品質
  4. 改善依據:幫助驗證Chunking 策略,Prompt 設計,Retriever 模型調整
  5. 自動化監控:品質追蹤、問題定位,建立類似 APM 的 QA 指標
  6. 對 Stakeholder 展示成效:可視化與量化指標,有助溝通與資源投入

RAG 應用: 以 k8s official docs 為例

總結

  1. 為什麼需要 RAG
  2. Embedding 與向量數據庫
  3. Embedding Search
  4. DIY
  5. Evaluation
  6. k8s RAG QA
由衷地感謝為 workshop 提供協助的夥伴!

Mia // Huai-Wen Chang

hunkue

MaiCoin: We are Hiring!!

DIY + Q&A + 建議

  1. 下次會改用 Colab