作者:博睿數據數智能力中心 DRay
背 景
在信息爆炸的時代,我們穿梭於無數的應用與數據面板之間,常常像一個迷失在數字叢林裏的探險家。想象一下:假如你剛剛接觸功能強大的Bonree ONE運維平台,想找到"全局拓撲圖"的功能,但面對Bonree ONE平台的眾多具體功能頁面,你卻只能像在迷宮裏打轉——它到底藏在"觀測洞察"頁面還是"數字體驗"頁面裏?
再想象一下:在某個具體故障發生時,你想編寫一個PromQL語句來查詢某個服務的接口錯誤率或者某個主機的最近5min的CPU使用率變化,但着急忙慌中,你的大腦一片空白——那個查詢接口錯誤率的語法到底是什麼來着?rate()還是irate()?時間窗口該設置多長?
這些都是技術人員日常工作中的真實痛點。而小睿助理的要做到的,正是為了讓這些令人抓狂的時刻成為過去式。
小睿助理的功能
小睿助理是一款基於大語言模型(LLM)的智能助手系統,它不僅僅是一個簡單的問答機器人,而是一個真正"懂你"的技術夥伴。它能夠:
- 意圖識別。精準理解你想要做什麼;
- PQL生成。快速生成複雜的PromQL監控查詢語句;
- 智能導航。導航幫你找到所需要的Bonree ONE平台具體功能頁面;
- 環境感知。上下文感知到你當前在哪個頁面,該頁面有哪些功能;
- 智能問答。基於運維領域知識,可觀測領域知識,Bonree ONE平台的功能點,智能回答各種技術問題。
小睿助理內部原理
小睿助理結合了大語言模型(LLM)和檢索增強生成(RAG)技術,它先利用LLM對用户提問進行意圖識別,然後根據意圖分流至不同的功能模塊:PromQL 生成、環境感知、功能導航和智能問答。這些功能的底層原理都是將用户輸入及相關知識通過文本嵌入(將文本轉為向量)和向量數據庫檢索結合,在此基礎上由LLM生成最終回答,其流程就是目前主流的RAG技術流程。
小睿助理內部使用RAG技術主要分為兩個階段,如下圖所示:
1. 索引構建(離線處理)
此階段是為知識庫建立可快速檢索的索引,通常只需執行一次或定期更新。
- 文檔加載與解析。
輸入:來自各種來源的原始知識庫文檔(如 PDF、Word、HTML、Markdown、數據庫)等。
過程:使用文檔加載器讀取並解析文件,提取出純文本內容。
- 文本分割。
過程:將長文檔分割成更小的、有意義的文本塊。這是關鍵步驟,因為 LLM 有上下文窗口限制,且小塊文本更易於精準檢索。
- 文本向量化。
過程:使用嵌入模型將每個文本塊轉換為一個高維向量。這個向量在數學上代表了文本的語義信息,語義相近的文本其向量在空間中的距離也更近。
- 存儲至向量數據庫
過程:將文本塊、其對應的向量以及可能的元數據(如來源、標題等)一起存儲到向量數據庫中。
2. 查詢與生成(在線處理)
此階段在用户每次提問時實時發生。
- 查詢處理與向量化
過程:針對用户提出的問題,使用與索引階段相同的嵌入模型,將用户問題也轉換為一個向量。
- 向量數據庫檢索
過程:在向量數據庫中,通過計算餘弦相似度或歐氏距離等度量方法,尋找與查詢向量最相似的 Top-K 個文本塊。
- 結果評估與提示詞構建
評估:小睿會使用ReRanker模型來對檢索到的結果與用户問題進行相關性排序。如果相關,則進入下一步;如果完全不相關,系統會告知用户知識庫中沒有相關信息。
提示詞構建:將檢索到的相關文本作為“上下文”或“參考信息”,與用户的原始查詢一起,精心構建成一個最終的提示詞。
- LLM 生成回答
過程:將構建好的增強版提示詞輸入給大型語言模型。LLM 會基於其內部知識和對所提供上下文的理解,生成一個精準、可靠的答案。
意圖識別功能
用户提問後,系統首先要判斷"你想幹什麼"。這個判斷過程使用LLM進行分類,將用户問題提供給LLM,並在提示詞中預先設置為幾種不同意圖,由LLM理解用户問題,並對問題進行意圖分類,例如:
- "如何查詢Pod的內存使用率?" → PromQL生成
- "當前頁面是做什麼的?" → 環境感知
- "拓撲圖在哪裏?" → 智能導航
- "什麼是Prometheus?" → 智能問答
這就像醫院的導診台,先判斷你應該去哪個科室。
PQL生成功能
如果意圖識別結果表明用户需要查詢監控指標數據(PromQL 生成功能),系統會按照以下流程生成PromQL查詢語句:
- 用户問題向量化。將用户的自然語言問題輸入嵌入模型,得到一個向量表示。
- 指標檢索。使用該向量在Milvus向量庫中執行相似度搜索,找到Top 20個與問題語義最相關的指標信息(如指標名稱和描述)。
- 重排序(ReRank)。對這20個候選指標使用重排序模型進行再次排序,篩選出Top 10個更精確匹配的問題語義的指標及其對應的示例PromQL查詢。
- Few-Shot 提示構建。將上述10個指標的信息和示例PromQL作為few-shot示例拼接到提示詞中(例如以“示例:輸入→輸出”形式附加到用户問題前)。
- LLM生成PromQL。將包含用户問題和few-shot示例的完整提示發送給大語言模型,LLM根據上下文歸納出滿足用户需求的最終PromQL查詢語句。
整個過程中,系統相當於先“檢索”相關指標(向量搜索+重排序),再讓LLM生成最終答案,是典型的檢索增強生成(RAG)模式。
其內部轉換流程為:
- 步驟1:用户提問,比如:"查看過去5分鐘Nginx的QPS";
- 步驟2:向量化用户問題,Embedding模型將問題轉換為1024維向量;
- 步驟3:向量檢索,在Milvus中查找Top20相似的歷史指標,比如查詢到的歷史指標信息為:
- 指標名稱: nginx_http_requests_total
- 指標説明: Nginx HTTP請求總數
- PromQL示例:
rate(nginx_http_requests_total[5m])
- 相似度: 0.89
... - 步驟4:智能重排,使用ReRanker模型深度評估,篩選出Top10,其作用為:
- 過濾掉表面相似但語義不符的結果
- 重新排序,最相關的排在前面 - 步驟5:Few-shot推理,將Top10作為示例交給LLM,提高生成的準確率,比如:
"參考這些例子,生成查詢Nginx QPS的PromQL" - 步驟6:生成最終結果,如下:
sum(rate(nginx_http_requests_total{job="nginx"}[5m]))by (instance)
其他功能
其他三個功能:智能導航,環境感知,智能問答的具體技術原理和上述PQL生成類似,不同點在於:
在智能導航和環境感知功能中,首先需要構建Bonree ONE每個頁面的知識庫:收集Bonree ONE頁面上每個具體頁面的URL、導航路徑、功能介紹、詳細內容和概要總結等信息。將這些內容(網頁摘要、功能説明等)輸入嵌入模型生成向量,並存入Milvus數據庫。這樣,每個頁面都對應一個或多個向量記錄,形成頁面知識庫。
在智能導航功能中,在提供給LLM的提示詞中,需要輸入用户詢問的頁面的URL地址,導航路徑等內容,這樣LLM在進行回答時,會參考提示詞中的頁面地址和導航路徑,回答的問題中會詳細列出導航的頁面地址。
總 結
小睿助理的設計哲學可以用一句話來概括:"讓複雜的技術變得簡單,讓簡單的操作變得自然!"。
它不是要取代技術人員,而是要成為每個Bonree ONE使用者的"超級助理"——就像鋼鐵俠的賈維斯,哈利波特的魔杖,讓專業的人可以更專注於創造性工作,而把重複性的、記憶性的任務交給大模型。
當凌晨三點告警響起時,你不再需要翻遍文檔尋找那條PromQL語句;當新人入職時,他不再需要花一週時間摸索系統功能。小睿助理會像一個經驗豐富的老員工一樣,隨時隨地提供幫助。
這就是小睿助理帶來的温度——不是冰冷的代碼,而是貼心的夥伴。