iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
生成式 AI

從 RAG 到 Agentic RAG:30 天打造本機智慧檢索系統系列 第 24

Day 24: 打造 RAG 系統監控基礎:Prometheus 、 Grafana以及LangSmith

  • 分享至 

  • xImage
  •  

前言

上一篇文章中我們討論了 RAG 至 Agentic RAG 系統中,延遲與準確度監控的重要性。
本篇我們將實際介紹兩個最常見的開源監控組合 —— PrometheusGrafana,以及針對LLM的LangSmith
它們能幫助我們收集、儲存與可視化 RAG 系統的效能指標。


🔥Prometheus:監控與時間序列資料庫

Prometheus 是一個開源的監控系統與時間序列資料庫(TSDB),由 SoundCloud 開發,現為 CNCF 畢業專案。專門用來:

  • 主動拉取(Pull-based scrape) 各服務暴露的指標(metrics)

    • 預設每 15 秒抓取一次(可調整)
    • 支援服務發現(Service Discovery)自動找到監控目標
  • 儲存 這些數據為時間序列資料(time series)

    • 高效的本地儲存引擎
    • 預設保留 15 天資料(可配置)
    • 支援遠端儲存整合(如 Thanos、Cortex)
  • 提供查詢語言(PromQL) 來分析與聚合資料

    • 支援即時查詢與範圍查詢
    • 內建豐富的聚合函數(sum, avg, rate, histogram_quantile 等)
  • 內建告警機制(Alertmanager)

    • 支援告警規則定義
    • 多種通知管道(Email、Slack、PagerDuty 等)

RAG 系統中的應用

在 RAG 系統中,我們可以讓 API 或 Agent 暴露 /metrics 端點(通常使用 Prometheus client library),
Prometheus 就會定期抓取其中的數據,如:

# 指標命名範例(遵循 Prometheus 命名規範)
embedding_generation_duration_seconds    # Histogram:向量生成時間分佈
vector_search_duration_seconds          # Histogram:向量檢索時間分佈
llm_generation_duration_seconds         # Histogram:LLM 生成時間分佈
rag_request_duration_seconds            # Histogram:端到端延遲
rag_requests_total                      # Counter:總請求數
rag_requests_failed_total               # Counter:失敗請求數
agent_tool_calls_total                  # Counter:tool 調用次數(按 tool_name 標籤)
agent_tool_success_total                # Counter:tool 成功次數
context_tokens_total                    # Counter:使用的 context tokens
generation_tokens_total                 # Counter:生成的 tokens
  • 補充:Prometheus 指標命名最佳實踐
<namespace>_<subsystem>_<name>_<unit>

範例:
rag_embedding_generation_duration_seconds
│   │         │            │         │
│   │         │            │         └─ 單位(必須)
│   │         │            └─────────── 描述
│   │         └──────────────────────── 子系統
│   └────────────────────────────────── 命名空間

指標類型說明:

  • Counter:只增不減的累計值(如請求總數)
  • Gauge:可增可減的瞬時值(如當前並發數)
  • Histogram:值的分佈統計(如延遲百分位數)
  • Summary:類似 Histogram,但在客戶端計算百分位數

🚨Grafana:可視化與警報儀表板

Grafana 是一個開源的可觀測性平台,專注於數據可視化與分析。主要特點:

  • 多數據源支援

    • Prometheus(最常見)
    • InfluxDB、Elasticsearch、MySQL、PostgreSQL 等
    • 可在同一儀表板整合多個數據源
  • 豐富的視覺化元件

    • 時間序列圖表(折線圖、面積圖)
    • 統計面板(數字、儀表盤、條形圖)
    • 表格、熱力圖、地圖等
  • 進階功能

    • 變數與模板化(動態切換服務、環境)
    • 告警規則與通知(v8+ 支援統一告警)
    • 註解(Annotations)標記重要事件
    • 儀表板版本控制與分享

RAG 系統中的應用

透過 Grafana,我們能輕鬆建立專業的監控儀表板,下面給幾個建議:

效能監控面板

  • 每秒查詢量(QPS)趨勢圖
rate(rag_requests_total[5m])
  • Embedding/Search/LLM/Total latency 對照圖(這邊示範P95)
histogram_quantile(0.95, rate(rag_request_duration_seconds_bucket[5m]))
  • 錯誤率趨勢
rate(rag_requests_failed_total[5m]) / rate(rag_requests_total[5m])

成本監控面板

  • Token 使用量趨勢(輸入/輸出分開)
  • 預估成本(基於 token 價格)
    告警範例
  • 延遲超過 3 秒時自動告警
  • 錯誤率超過 5% 時通知
  • QPS 異常波動時預警
  • Token 使用量超過預算時告警

🔗LangSmith:追蹤與監控 LLM 應用的核心平台

LangSmith 是由 LangChain 官方推出的 LLM 應用觀測與除錯平台
它專為開發者設計,能夠記錄並可視化整個大型語言模型(LLM)應用的執行流程。
在 RAG 或 Agentic 系統中,LangSmith 可用於:

  • 追蹤整個 RAG 流程的輸入與輸出(從 Retriever → LLM → Output)
  • 記錄每次呼叫的延遲、Token 使用量與錯誤資訊
  • 可視化 Chain、Tool 或 Agent 的執行路徑(Trace Graph)
  • 協助團隊除錯與效能分析,快速找出模型瓶頸與非預期結果

架構與運作模式

LangSmith 的主要組件包含:

  1. Client SDK:整合至應用端,用於將每次呼叫的追蹤資訊傳回後端。
  2. LangSmith Platform:提供 Web 介面與資料儲存,用於檢視執行記錄與統計。
  3. Trace Viewer:可視化顯示 Chain、Agent、Tool 的執行流程與耗時。

其運作方式如下:

[User Query] → [Retriever] → [LLM/Chain] → [Response]
↘ Trace Data → LangSmith Dashboard

開發者能在 Dashboard 中觀察:

  • 每次請求的 Latency / Token / Cost
  • Prompt 與 Response 的內容差異
  • 各節點(Retriever、LLM、Post-Processing)的執行順序與時間分佈

🎯 使用場景分工

用 LangSmith 來:

  • ✅ 除錯特定查詢為何失敗
  • ✅ 優化 prompt 設計
  • ✅ 評估檢索品質
  • ✅ 比較不同模型的輸出
  • ✅ 追蹤 Token 成本細節

用 Prometheus + Grafana 來:

  • ✅ 監控整體系統健康度
  • ✅ 設定效能告警
  • ✅ 追蹤長期趨勢
  • ✅ 容量規劃
  • ✅ 成本控制(總 Token 使用量)

📌小結

今天主要先認識一下有那些工具可以用來幫助我們監控系統,並整理這幾個套件如果要應用在Agentic RAG要怎麼做,以及各自的分工會是什麼。
筆者也還不熟悉這段,接下來會和大家一起實作研究。


上一篇
Day 23: 有了Agentic RAG就萬事OK嗎? 談談RAG系統的監控
系列文
從 RAG 到 Agentic RAG:30 天打造本機智慧檢索系統24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言