ClickHouse 用 clickhousectl 與 Agent 追蹤 SLA 並自動擴縮
ClickHouse Blog · 2026-06-05
ClickHouse 發表技術文章,說明如何使用 clickhousectl CLI 工具結合 AI Agent 建立可觀測性導向的 SLA 管理流程。核心機制是透過 log_comment 設定為查詢打標籤,再用 clickhousectl 在 system.query_log 上計算百分位延遲,最終觸發自動擴縮操作。
查詢標籤與 SLA 測量
每個需要追蹤的工作負載在查詢時附加 log_comment:
SELECT event_type, count(), avg(value)
FROM events
WHERE event_type = 'purchase'
AND event_time > now() - INTERVAL 1 DAY
SETTINGS log_comment = 'frontend-dashboard';這讓後續的 SLA 計算可以精確隔離目標工作負載,而非計算所有查詢的聚合延遲。透過 clickhousectl 對 clusterAllReplicas(default, system.query_log) 執行跨副本查詢,可以計算指定標籤的 p99 延遲:
clickhousectl cloud service query --id "$SERVICE_ID" --query "
SELECT toUInt64(quantile(0.99)(query_duration_ms)) AS p99_ms
FROM clusterAllReplicas(default, system.query_log)
WHERE event_time > now() - INTERVAL 5 MINUTE
AND type = 'QueryFinish'
AND log_comment = 'frontend-dashboard'"擴縮操作
當 SLA 違約發生時,診斷步驟首先區分兩種根因:查詢量與 p99 同步上升(並發競爭),或查詢量不變但 p99 上升(資源競爭)。對應的擴縮操作透過一條指令執行:
clickhousectl cloud service scale "$SERVICE_ID" \
--min-replica-memory-gb 8 \
--max-replica-memory-gb 16 \
--num-replicas 3水平擴縮(增加副本數)適合並發查詢量過高的場景;垂直擴縮(增加每副本記憶體)適合單一查詢記憶體需求超過配置的場景。
Agent 自動化
透過 clickhousectl skills --agent claude 安裝 Agent 技能包後,Agent 可以接收 SLA 違約事件、執行 clickhousectl 診斷查詢、並套用「恰好一個擴縮操作」作為回應,所有操作記錄在 ClickHouse Cloud 活動日誌中供審計。這個設計將自動化範圍限制在可逆且可觀測的操作上,避免 Agent 進行過激的擴縮。
原始來源:ClickHouse Blog
FAISS 十億向量相似度搜尋的內部機制
Frema Consulting · 2026-06-06
Facebook AI Similarity Search(FAISS)是目前最廣泛使用的近似最近鄰(ANN)搜尋函式庫,Meta 在 RAG、推薦系統和圖像搜尋場景中以 FAISS 處理十億規模向量。Frema Consulting 發表深度技術分析,解構 FAISS 在 SIFT1B(10 億個 128 維向量)基準上達到 17.7 µs/query 的核心機制。
核心演算法:IVF 與 Product Quantization
FAISS 用兩個互補的技術解決暴力搜尋的 O(nD) 瓶頸:
- IVF(Inverted File Index):K-means 聚類將向量空間劃分為 Voronoi 細胞,查詢時只需探索最近的 w 個細胞(w≪n),跳過大部分資料庫
- Product Quantization(PQ):將 512 位元的 SIFT 向量拆分為 m=8 個子向量,每個子向量獨立學習 k*=256 個中心點的碼本,最終每個向量壓縮為 8 位元碼,達到 64× 壓縮比而保持距離估算精度
生產環境的主力索引 IVFPQ 結合兩者:建立索引時計算每個向量與最近粗粒度中心點的殘差(residual),再對殘差進行 PQ 壓縮存入倒排列表。查詢時建立 m×k* 的查找表(LUT),掃描倒排列表時每個候選只需 8 次表查詢加 7 次加法,完全避免浮點乘法。
GPU 加速:四個關鍵最佳化
在單張 Titan X GPU 上,FAISS 在 SIFT1B 上達到每查詢 17.7 µs,比 CPU(1M-vector GIST 基準,8.8 ms)快約兩個數量級:
- 合併記憶體存取(Coalesced memory):轉置資料佈局,使 32 個 GPU thread 在一次 DRAM burst 中讀取連續位元組
- 共享記憶體 LUT(Shared-memory LUT):快取查找表至 L1 共享記憶體,查詢成本從 ~400 週期降至 ~25 週期
- Warp scan:32 個 thread 平行處理向量掃描
- WarpSelect:無鎖 top-K 跨 thread group 並行維護
影響範圍
FAISS 支援從精確(Flat index)到近似(IVF、HNSW)的索引類型,IndexFlatL2 作為精確基準、IVFPQ 作為生產主力是大多數部署的標準選擇。隨著 RAG 架構成為 LLM 應用的標準元件,FAISS 在向量資料庫層的地位更加核心,理解其量化機制有助於在精確度與記憶體容量之間做出合理的工程取捨。