iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
生成式 AI

一起來打造 PTT 文章智慧問答系統!系列 第 27

【Day 27】系統監控與日誌分析 - 追蹤系統的健康狀態

  • 分享至 

  • xImage
  •  

Hi大家好,
這是我參加 iT 邦幫忙鐵人賽的第 1 次挑戰,這次的主題聚焦在結合 Python 爬蟲、RAG(檢索增強生成)與 AI,打造一套 PTT 文章智慧問答系統。在過程中,我會依照每天進度上傳程式碼到 GitHub ,方便大家參考學習。也歡迎留言或來信討論,我的信箱是 gerryearth@gmail.com


昨天我們討論了 Prompt Engineering,透過設計更精準的提示詞來提升 LLM 的回答品質。
今天,我們要從另一個角度切入 —— 如何監控系統運作、記錄使用行為與追蹤錯誤,確保我們的 PTT 文章智慧問答系統在長期使用下能穩定運作。

對任何 AI + RAG 系統來說,「答案的好壞」只是其中一環,更重要的是:

  • 系統有沒有跑順?
  • 查詢有沒有被正確處理?
  • 成本是不是逐漸上升?
  • 使用者行為是否符合預期?

這些問題都需要透過 系統監控與日誌分析 來解答。


今日目標

  • 認識 RAG 系統中需要監控的核心指標
  • 瞭解日誌記錄(Logging)的常見策略
  • 建立一個基本的監控與分析流程

RAG 系統該監控什麼?

在我們的專案中,系統主要分成三個模組:

  1. 向量檢索(Pinecone)
  2. LLM 回答生成(Gemini, GPT)
  3. 應用服務(Django API)

因此,監控重點大致分為三類:

1. 系統效能

  • 查詢延遲時間:檢索文章 → 向量比對 → LLM 回答的總耗時。
  • 請求數量:每分鐘/每小時處理的 API request。
  • 資源使用量:CPU、記憶體、GPU(若有)、網路流量。

2. 成本相關

  • Embedding 請求數量:每篇文章切割後產生的向量數。
  • 向量資料庫查詢次數:每次檢索會增加成本。
  • LLM Token 消耗量:包含 Prompt Token 與 Completion Token。

3. 使用者行為

  • 熱門查詢問題:使用者最常問的主題。
  • 查詢成功率:是否有檢索結果、是否回答合理。
  • 錯誤率:API Timeout、無法連線、向量庫查詢失敗。

日誌記錄(Logging)策略

在 Django + RAG 架構中,我們可以針對不同模組建立日誌:

1. API 層日誌

  • 請求時間、使用者 IP、Query 內容
  • 回傳的狀態碼(200, 400, 500)

2. 向量檢索日誌

  • 輸入 Query → 檢索到的文章 ID
  • 檢索耗時、檢索 Top K 結果

3. LLM 回答日誌

  • 使用的 Prompt 模板
  • Token 使用量(input/output)
  • 回答長度、回覆是否成功

簡單範例(Django Logging)

import logging

logger = logging.getLogger("rag_system")

def query_rag(user_question):
    try:
        logger.info(f"收到查詢: {user_question}")
        
        # Step 1: 向量檢索
        docs = vector_search(user_question)
        logger.info(f"檢索結果數量: {len(docs)}")
        
        # Step 2: 呼叫 LLM
        answer = llm_generate(user_question, docs)
        logger.info(f"LLM 回答成功,字數: {len(answer)}")
        
        return answer
    
    except Exception as e:
        logger.error(f"查詢失敗: {str(e)}")
        return "抱歉,系統發生錯誤,請稍後再試。"

這樣,我們就能記錄下「誰問了什麼 → 系統怎麼處理 → 是否成功」。


監控工具建議

要進一步可視化與長期監控,可以搭配以下工具:

  • Prometheus + Grafana → 系統效能監控(CPU、RAM、API Latency)。
  • ElasticSearch + Kibana(ELK Stack) → 收集日誌並分析查詢趨勢。
  • Sentry → 即時錯誤追蹤,適合 Debug 用。

舉例:

  • Prometheus 收集「RAG API 平均延遲時間」
  • Grafana 繪製成 Dashboard → 方便觀察系統瓶頸
  • Sentry 監控「LLM API Timeout」或「Pinecone 連線錯誤」

結論

  • RAG 系統不只要「會回答」,更要 能監控、能追蹤、能優化
  • 監控重點分成三類:效能、成本、使用者行為。
  • 搭配 Logging + 監控工具(Prometheus/Grafana, ELK, Sentry),可以讓系統更穩定可靠。

明天【Day 28】系統效能壓測與瓶頸分析 - 找到成本與效能的平衡點,我們將進一步了解如何在使用者數量增加時,保持 RAG 系統的效能與穩定度。


上一篇
【Day 26】LLM 回答品質優化技巧 - Prompt Engineering 實戰
系列文
一起來打造 PTT 文章智慧問答系統!27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言