LLM 學習筆記:最好的學習方法是帶著問題去尋找答案
作者:huaxing
知其然,然后知其所以然。本文主要是對學習賽博活佛Andrej Karpathy 7個小時教學視頻的總結和拓展閱讀筆記,推薦去看原視頻,很精彩,鏈接在文末。從最常用的聊天應用過程分析開始,引入對話過程原理淺析,再到LLM訓練過程;再結合當前主流的應用形式,在得知最新用法的同時,加深對LLM的理解;再談談AI的最新重大進展MCP;以及作為JAVAer,在Java領域有哪些前沿能力去整合LLM。
最后再羅列一下再公司內部一些AI平臺、工具。最好的學習方法是帶著問題去尋找答案,以費曼學習法為標準,產出可教學的資料。本文是個人所學梳理和所想記錄,作為AI的小白,個人知識有限,難免有所錯誤、疏漏,請及時糾偏、不吝賜教,感謝。
一、大模型聊天過程分析
我打開AI聊天窗口https://chat.deepseek.com,發送我的Query:
1. 流程淺析
當我們開始一個LLM聊天對話,輸入問題時,實際上大模型托管服務有內置的上下文信息,在我們輸入信息,按下發送按鈕時,大模型收到的是內置上下文 + 系統服務Prompt + 用戶輸入信息。
大模型經過神經網絡的概率統計(權重擬合)得到下一個要說的詞,通過流式響應逐個詞丟回會話窗口,用戶就能看到大模型“正在打字”和我們聊天。“打字”的速度就是大模型響應的速度,通??疵枋鯨LM性能的一個指標N token/s。
2. 原理淺析
本質就是從輸入的 tokens 推測下一個 token 的出現概率,將可能性較高的作為輸出token,再將得到的token添加到輸入中,直到滿足結束條件(上下文長度限制、結束符以較高概率出現、用戶定義的停止條件、概率閾值與采樣策略、模型架構的隱式結束符)。所以LLM本質上是一個具有統計概率的知識記憶模糊的知識回顧系統,也可簡稱概率性復讀機。那么這個回顧系統是怎么實現的呢,“zip文件”怎么得來的?構建一個現代的LLM三個步驟:**預訓練、后訓練(SFT)和強化學習(RL\RLHF)**。
3. 預訓練
在預訓練過程中,需要有原始數據和驗證數據,所以通??梢詫祿譃閮煞荩?0%用于訓練,10%用于驗證(具體比例可能因任務調整)。
(1) 數據集
圖片來源huggingface.co/space...
數據集生成流程:
- 列舉主流網站的URL
- 有害網站URL過濾,垃圾站點、成人內容等
- 從URL網站響應的富文本提取文字內容
- 文本語言過濾,如僅針保留英文或者中文內容,在huggingface上數據集語言分布前5如下圖:
- Gopher 過濾,去除無意義、低信息量或有害內容(如垃圾文本、暴力、偏見等)
- MinHash 去重,用于快速檢測并移除數據集中的重復或近似重復的文本片段(如文檔、段落或句子)。其核心目的是減少數據冗余,避免模型因重復數據過擬合或偏向高頻內容,同時節省計算資源。
- C4 過濾,C4(Colossal Clean Crawled Corpus) 數據集進行清洗和篩選的步驟,旨在從原始網頁文本中提取高質量、多樣化的語料,同時去除噪聲、重復和低效內容。
- Custom Filters(自定義過濾器)目標是針對通用過濾方法(如MinHash去重、C4/Gopher過濾)無法覆蓋的領域特殊性問題,進行更精細化的數據質量控制。
- PII Removal(個人身份信息移除) 是指從原始數據中識別并刪除或匿名化 個人身份信息(Personally Identifiable Information, PII) 的關鍵步驟,旨在保護用戶隱私、遵守數據保護法規(如GDPR、CCPA),并降低模型泄露敏感信息的風險。
預訓練數據集示例:
(2) Tokenization
tiktokenizer.vercel.... 上可以看到模型token可能是不一樣的,這里舉例OpenAI的對話示例:
可以看到OpenAI對數據結構化了,定義了對話角色,增加了<|im_start|>、<|im_sep|>、<|im_end|>這樣的標識符用于分割對話,這些標識符都對飲一個token,“You are a helpful assistant”的tokens序列是“3575, 553, 261, 10297, 29186”。
Tokenization(分詞/令牌化)是將輸入文本拆分為模型可處理的離散單元(Token)的過程,即將文本數據表示為token的一維序列。它是自然語言處理(NLP)中的關鍵步驟,直接影響模型對文本的理解能力和效率。
數據集的原始文本數據量非常大,如著名的FineWeb數據集就有15萬億個token,總共44TB大小,需要高效拆分文本窗口,在能表達混合多種語言、復雜字符表達等情況,但不丟失語義。分詞實際上就是一層映射包裝,過粗、過細的分詞都不利于訓練和模型性能表現,分詞過細(如字符級、字節級別、比特級別)導致長序列,計算開銷大,分詞過粗(如單詞級)則詞匯表爆炸,內存占用高。
采用BPE(Byte-Pair Encoding,如GPT)、WordPiece(如BERT)或SentencePiece,將文本轉化為子詞(subword)單元。BPE算法(Byte-Pair Encoding):平衡詞匯表大小與序列長度。
原始文本:
原始字節:
tokenization:
對話過程中輸入的token越多,越分散注意力,降低模型準確性和性能,節約成本。不丟失信息的情況,越短越好,性能成本都會提升。所以,聊不同的主題應該單獨開會話窗口。
(3) 詞匯表
在tokenization過程中,我們發現,在44TB的文本內容里,很多詞一起出現的概率較高,如圖中49305后面出現17,那么就可以將49305與17合并成4930517,作為一個新的token,重復如此。最后,再將所有詞匯壓縮到最小映射表,重新編號token,這樣就得到了一份可以還原44TB內容的詞匯表。如GPT-4詞匯表是100277個。主流大語言模型的詞匯表大小如下(按數值從小到大排序):
① 原版LLaMA詞匯表大小為 32,000 (32K),但中文token較少(僅幾百個)。
② 中文LLaMA/Alpaca通過合并中文tokenizer后,詞匯表擴展至 49,953 (約50K)。
③ 優化后的實驗模型
- 部分研究將詞匯表從32K擴展至 43,000 (43K),顯著提升下游任務性能。
- 理論預測的Llama2-70B最優詞表大小為 216,000 (216K),但尚未實際部署。
④ 多語言模型(如XLM-R、Bloom)詞匯表普遍較大,約 250,000 (250K)。
(4) 數據分片
將大規模訓練數據集劃分為多個邏輯或物理片段(Shard)的技術,目的是實現高效的數據并行處理和分布式訓練。
數據分片的核心作用:
- 解決內存與存儲限制:單個節點無法加載全部數據,分片后每個節點僅處理部分數據。
- 并行加速訓練:不同分片由不同計算設備并行處理(如GPU),縮短訓練時間。
- 容錯性:單個分片損壞或失敗時,只需重新處理該分片,而非整個數據集。
我們知道數據集是一張表,所以數據分片的方式方法和傳統結構化數據分片類似,但這里要結合訓練過程的實際情況做調整,數據分片常見方法:
- 靜態分片,預先規劃好分片,每個GPU固定處理指定分片,優點實現簡單,缺點是實際訓練過程中可能導致GPU負載不平衡,因為數據集中的每一行長度是不同的,所以會導致數據傾斜。
- 動態分片,訓練過程中動態分配數據(如通過中央調度器或分布式文件系統),優點:自動平衡負載,適應數據異構性。缺點:實現復雜,需額外協調開銷(如Apache Spark或Ray框架)。
- 分片與數據管道的結合,流水線加載:當一個GPU處理當前分片時,異步預加載下一個分片(隱藏I/O延遲);格式優化:分片常存儲為高效二進制格式(如TFRecord、HDF5),加速讀取。
(5) 模型架構選擇
當前主流LLM通常是采用Transformer結構,包含自主力(Self-Attention)和多頭注意力(Multi-Head Attention)的注意力層、前饋神經網絡(FFN),注意力層+FFN等模塊組成一層,需要確定模型的層數和參數量。
主流架構:Transformer(基于自注意力機制),常見變體:
- Decoder-only(GPT系列):適合生成任務,單向注意力掩碼。
- Encoder-decoder(T5、BART):適合翻譯等序列到序列任務。
規模參數:
- 層數(L):12-100+(如GPT-3 davinci版本包含96層)
- 隱藏層維度(d_model):768-12,288
- 注意力頭數(h):12-128
Transformer結構:
- 自注意力機制:計算輸入序列中每個位置的關聯權重(如多頭注意力)。
- 前饋網絡(FFN):每個注意力層后接非線性變換。
- 層數與參數量:例如,GPT-3有1750億參數,包含96層Transformer塊。
(6) 訓練任務設計、執行和優化
① 預訓練任務設計
自監督學習:無需人工標注,通過文本自身生成監督信號。
- 因果語言建模(CLM):預測下一個Token,目標函數:
- 掩碼語言建模(MLM):隨機遮蓋部分Token并預測(如BERT),遮蓋比例通常15%。
- 混合目標:如UniLM結合雙向和單向預測。
② 訓練執行
③ 訓練過程
分布式訓練,并行策略執行、通信優化,每一輪訓練(單步訓練)流程包括:
- 數據加載與預處理,可以是分布式數據加載,或動態批次構建。
- 前向傳播(含激活重計算)
- 反向傳播
- 梯度同步(數據并行)
- 參數更新(含梯度裁剪)
Transformer結構的訓練通常需要經過上萬輪的訓練,即上萬個訓練步數,訓練時會充分利用GPU并行的特性,在分布式訓練中并行,包括數據并行、模型并行、張量并行、流水線并行,且總GPU數 = 數據并行度 × 模型并行度。
數據并行(Data Parallelism):將批次(Batch)劃分為多個子批次(Sub-batch),分配到不同GPU上并行處理。模型并行(Model Parallelism):
- 張量并行(Tensor Parallelism):將單個矩陣運算拆分到多GPU(如Megatron-LM)。
- 流水線并行(Pipeline Parallelism):將模型層拆分到多GPU(如GPipe)。
舉例GPT-3的預訓練情況,加深直觀理解:
- 參數量:1750億
- 訓練數據:約3000億token
- 訓練步數:約94000步(批量大小3.2M tokens/步,3000億/3.2M 約等于94000)
- 耗時:數周(使用數千張A100 GPU)
- 上下文大?。涸忌舷挛拈L度是2048 Tokens,硬件顯存和注意力計算復雜度的權衡結果,Transformer的自注意力機制計算復雜度為 O(n2)(n為序列長度),導致顯存和計算成本隨序列長度急劇增長。
這里批量大小和上下文大小的關系是:序列數=批次大小/上下文長度=3.2*10^6/2048≈1562 個序列/步,批次大小是并行訓練的序列數量,而上下文長度是單個序列的長度。這里對tokenization后的數據集進行切分為一個個小塊(chunk),這個chunk的大小就是上下文窗口長度(context window),chunk的大小是序列長度,批次大小是同時處理的chunk數量,訓練批次總token數是兩者的乘積。
④ 單輪訓練結果
在預訓練的階段,每一輪預訓練訓練的結果是得到一個基礎模型(Base Model),這個模型可以預測每一個輸入序列tokens的下一個token,可能每個詞匯token都會有一個概率,這里是統計性和概率性的結果,是對訓練數據集的回放。
上圖得到的next token ID 是19348(" Direction"),但是我們期望的是3962(" Post")概率更高一些。所以,在完成一輪訓練后,我們會用測試數據集進行測試,計算Lost函數,并將擬合偏離反饋到神經網絡的參數調整上,這樣下一輪訓練后,token ID 3962(" Post")的概率就會更高一些。
整個訓練的過程,我們逐步調整參數權重,這種權重的參數有上億個,如DeepSeek R1滿血版參數量是671B(6710億)個,GPT-3 的參數量是 1750 億,GPT4的參數量1.8 萬億左右,這是很大的參數量。所以,我們可以理解為神經網絡實際上是一個非常巨大的數學表達式,我們預訓練后得到的就是這樣一個或者一群這樣的函數表達式。
這樣一個超巨大的數學表達式展開式什么樣的呢?這里有一個大模型可視化網址bbycroft.net/llm ,可以看到一個85584個參數的神經網絡,這里詳細講解了通過預訓練后得到的排序神經網絡,在處理一個排序任務的時候整個過程,推薦大家去做拓展閱讀。這里面還有GPT-2、GPT-3的神經網絡可視化,可以直觀感受到不同規格參數的神經網絡。
循環訓練以上單步訓練外,還需要引入優化,保證訓練結果。
⑤ 訓練優化
包括軟件技術優化和硬件技術優化。
a. 軟件技術優化:
混合精度訓練:
- FP16/FP8存儲:參數和梯度用低精度保存,減少顯存占用,DeepSeek 的優化之一就是FP8化,并且開源了他們FP8的項目DeepGEMM,提升效果是很明顯的。
- Loss Scaling:對損失值放大以防止梯度下溢。
- 激活檢查點(Activation Checkpointing):僅保存關鍵層的激活值,其余在反向傳播時重新計算,顯存減少30%-50%。
- 內核融合(Kernel Fusion):將多個CUDA操作合并為單一內核(如將LayerNorm + Dropout融合)。
b. 硬件技術優化
顯存管理:
- 顯存池(Memory Pool):預分配顯存塊,避免碎片化。
- 頁鎖定內存(Pinned Memory):加速主機到設備的數據傳輸。
計算加速:
- FlashAttention:優化注意力計算顯存占用,支持更長的上下文(如32K)。
- 稀疏計算(Sparsity):對MoE(Mixture of Experts)模型的專家路由動態分配計算資源。
(7) 預訓練產物
至此,我們得到了一個基礎模型(Base Model),可以看做是一個互聯網詞匯模擬器,它能夠模仿數據集的知識,蹦出概率較高的下一個token,這些token組成的知識是模糊的、具有統計性質的。就像是將數據集的只是內化存儲到了神經網絡之上,知識可以被擬合回放。但是它還不能成為一個有用的助手,它的回答可能是不可讀,甚至有害的,這時候給他問題他也許只會給出更多問題或者做簡單背誦。還需要進到后訓練才能做出正確相應,成為一個有個性的助手。
4. 后訓練
進一步優化模型性能、對齊人類意圖或適應特定任務的階段。這一階段的關鍵在于讓模型從“通用知識庫”轉變為“可控、安全、可用的工具”。
后訓練是LLM從“知識存儲”到“實用工具”的關鍵過渡。通過這一過程,模型不僅學會生成流暢文本,還能在安全性、可控性和任務適應性上達到實際應用標準。例如,ChatGPT的后訓練階段(包括SFT和RLHF)使其能夠理解復雜指令并生成符合倫理的回答,而未經后訓練的原始GPT模型可能輸出有害或無意義內容。
這一過程需要大量高質量數據、計算資源和多學科協作(如語言學、倫理學、計算機科學),是當前LLM研發的核心挑戰之一。
(1) 監督微調(Supervised Fine-Tuning, SFT)
我們在用的聊天型LLM是對話模式的,
對話示例 通過人工標注的高質量數據,調整模型的輸出風格、格式和內容,使其更符合實際需求。
- 數據集:是一組對話列表,是通過人工創建的高質量對話。
- 方法:使用問答對、指令-響應數據(例如:用戶指令+理想回答)進行微調,對模型進行“隱式編程”,進一步調整了權重,模型會逐漸建立從自然語言指令到目標響應的隱式映射函數,通過梯度下降在參數空間中尋找指令對齊的最優解。
- 效果:提升模型對指令的理解和響應質量,減少無意義或重復輸出。
數據集的構造,早期OpenAI是在upwork(一個自由職業平臺)和scaleAI(一個標注平臺)發布問題任務,由網友完成回答并提交,形成數十萬的條基礎數據集。
OpenAI在2022年的一個論文《Training language models to follow instructions with human feedback》 如今,大量標注工作由大語言模型輔助完成(例如,人類更多是進行編輯而非從頭撰寫),甚至有些標注完全是合成生成的,如著名的UltraChat。
nvidia公開的一份代碼SFT數據集示例如下圖:
huggingface上的后訓練數據集 Models need tokens to think,問答是否更好,也會考慮模型本身的特性,那些能讓回答逐步計算和迭代的回答更好,跳躍性、單步計算量的回答是沒那么好。比如下圖右邊的答案更好,因為他是逐步推導和計算,在最后給出的答案,而左邊在一開始就做了全部計算,這對模型本身的計算消耗是更大。
(2) 獎勵模型(Reward Modeling)
目的:訓練一個能夠評估生成內容質量的獎勵模型(Reward Model),為后續強化學習提供反饋信號。
方法:
- 數據集,收集人類對模型輸出的排序數據(例如:讓標注者對多個回答按質量排序),在huggingface上公開的一些數據集會附上評分。
- 訓練獎勵模型,使其能夠預測人類對回答的偏好(如回答A比回答B更好,B比C更好,則A是winning_response,C是losing_response)。
- 數據格式,三元組(Prompt, 優質回答, 劣質回答),或四元組(Prompt, 回答A, 回答B, 偏好標簽。
- 關鍵點,獎勵模型通常是另一個小型神經網絡,學習人類的偏好標準。
- 模型架構設計,通?;陬A訓練語言模型(如BERT、GPT)改造,移除最后一層并添加標量輸出層,即輸出標量分數,表示回答的質量。
- 損失函數,基于對比學習,常用Bradley-Terry模型計算偏好概率,L=?log(σ(r(q,w)?r(q,l))) ,其中r(q, w)和r(q, l)分別是對優質回答和劣質回答的預測分數,σ為Sigmoid函數。
- 驗證與迭代,一致性:對相似質量的回答評分差異小,區分度:能捕捉回答間的細微質量差距,對齊度:預測分數與人工標注偏好高度相關(如Kendall Tau系數)。
(4) 領域適應(Domain Adaptation)
目的:解決源域(訓練數據)與目標域(測試數據)分布不一致的問題,使模型在目標域上保持高性能,適應特定領域知識(如醫療、法律、金融、代碼生成)。
方法:
- 在領域相關數據上繼續預訓練(持續預訓練)。
- 使用領域指令數據進行監督微調。
(4) 模型存在的問題
① 幻覺和解決辦法
企業微信截圖_05db3b26-91f3-4523-99b7-4de36a915e6a
② 長記憶和解決辦法
- 發生場景:對話上下文非常長時,如上傳了文件、多輪對話、跨模態任務融合等
- 技術原因:上下文窗口硬性限制、信息稀釋與注意力衰減、模型無狀態和存儲機制缺失、計算資源和效率的矛盾(需要分布式計算)
- 解決辦法:外部存儲結合(向量數據庫)、顯示記憶和分層存儲(高頻知識內化到模型參數、中頻KV向量存儲、低頻動態檢索)等方法
③ 數學計算能力 經典問題:
進行大數乘法的時候,通過心算,得出近似的錯誤答案:
DeepSeek R1思考了很久,最終通過心算計算正確,應該是借助MoE分配給了數學專家神經網絡完成了正確的推算。
④ 模型直接使用工具
模型本身還不具備注解調用工具的能力,目前都是在模型輸出后給到應用層來完成工具調用。
⑤ Tokenization的副作用
5. 強化學習(RL)
通常認為RL是屬于后訓練的一部分,但Andrej Karpathy認為RL和SFT、RLHF是有本質區別的。RLHF在不可驗證的領域進行學習,通過持續采樣、評分和策略更新逐步對齊人類偏好,在完成訓練后做重復訓練是沒有收益的;而RL是可以不斷重復對模型進行改進,獲得復利的,如增加推理輪次獲得更深度的思考結果。而RL從后訓練中拿出來是因為RL有廣闊的前景,RL是推理模型構建的必要,也是模型走向AGI的關鍵。
早在DeepMind的AlphaGo就在用,但是是在封閉的環境內,是明確游戲規則的,在開放化話題中表現不佳,如何提升在開放環、開放話題的表現一直是業界難題。RL是當前業界前沿的技術話題,DeepSeek是第一個公開討論實現方法并開源了實現成果、開源實現工具和實現框架的,所以我主要是閱讀DeepSeek_R1.pdf來理解RL。論文中提出了一種用強化學習“教會”大模型自主推理的方法。他們先訓練了一個完全靠自我摸索成長的模型(DeepSeek-R1-Zero),發現它雖然聰明但“說話混亂”;于是改進出一個結合少量示例教學和多階段訓練的升級版(DeepSeek-R1),最終達到接近頂尖閉源模型的水平。團隊還成功將大模型的能力“壓縮”到小模型上,讓手機等設備也能運行高性能推理模型。這項工作為AI自主學習和知識遷移提供了新思路,并開源了全部成果供社區使用。
(1) 訓練方法
① 通過純強化學習(無需監督微調)訓練,直接從基礎模型(DeepSeek-V3-Base)開始,使用GRPO(Group Relative Policy Optimization)算法優化,通過分組獎勵估計替代傳統批評模型,降低訓練成本。獎勵模型結合準確性獎勵(基于規則驗證結果)和格式獎勵(強制結構化輸出)。模型在訓練中自然涌現出自我驗證、反思、生成長思維鏈(CoT)等能力,在數學(如AIME 2024)、編程等任務上表現優異(pass@1達71%),但存在可讀性差和語言混合問題。
② 為解決DeepSeek-R1-Zero的缺陷,引入冷啟動數據(人工設計數千條高質量長思維鏈可讀模板示例)初始化模型,隨后進行兩階段強化學習(優化推理能力與人類偏好對齊)和兩階段SFT(融合推理與非推理任務數據)。最終性能與OpenAI的o1-1217模型相當,在AIME 2024上pass@1達79.8%,數學任務(MATH-500)準確率達97.3%。
③ 將DeepSeek-R1的推理能力遷移到小規模密集模型(1.5B至70B參數的模型),即直接使用DeepSeek-R1生成的80萬條數據微調小模型,無需額外強化學習。例如,蒸餾后的14B模型在AIME 2024上超越QwQ-32B-Preview,32B和70B模型在推理基準上刷新記錄。
示例:國人開源,基于滿血DeepSeek-R1生成,可用于蒸餾的中文數據集 huggingface.co/datas...
(2) 思維鏈(CoT,chain-of-thought)
在解決復雜問題時生成的一種結構化推理過程,它要求模型不僅輸出最終答案,還需詳細展示解題的中間步驟(如邏輯推導、公式計算、假設驗證等),從而提升推理的透明性和準確性。示例:
<think> 1. 設方程 √(a?√(a+x)) = x,首先平方兩邊得到 a?√(a+x) = x2;
2. 進一步整理得 √(a+x) = a?x2,再次平方后化簡為四次方程;
3. 發現中間步驟可能有誤,重新檢查并修正推導邏輯...</think>
<answer>
.....最終答案是......
</answer>
主要作用:
- 提升準確性,在數學(AIME 2024)、編程(Codeforces)等任務中,CoT幫助模型分解復雜問題,減少計算錯誤。
- 增強可解釋性,CoT使模型的思考過程可視化,便于用戶理解其決策邏輯,尤其在教育、科研等需透明推理的場景中價值顯著。
- 支持長上下文推理,模型通過生成數百至數千個推理標記(Token),逐步解決需多步推導的問題(如證明題或代碼調試)。
示例:
(3) Aha moment
在強化學習(RL)過程中,DeepSeek - R1 - Zero 在訓練集上的平均回復長度。DeepSeek - R1 - Zero 自然而然地學會了花費更多思考時間來解決推理任務。
DeepSeek - R1 - Zero 一個中間版本的有趣 “頓悟時刻”。該模型學會了以擬人化的口吻重新思考。這對我們來說也是一個頓悟時刻,讓我們見證了強化學習的力量與美妙之處。
6. 原理總結
圖片來源 zeropointlabs.ai/lla...
輸入文本tokens,token向量化,自注意、多頭注意,前饋神經網絡,循環自注意、多頭注意,前饋神經網絡,輸出文本token,自回歸解碼,追加到輸入tokens,循環上述過程。展開一些就是下面的過程:
再展開可以看大模型可視化 bbycroft.net/llm
二、市面上主流特性和應用
1. 文件上傳
流程淺析:
- 解析文件,拿到文本序列(也有模型方案支持理解圖片、表格等),將文本切分一個個小塊,組成一個很長的塊序列。
- 文件內容token化,把用戶輸入文本拼在一起,作為輸入。
- 經過神經網絡這個超大函數,輸出丟出token。
- 循環第三步,直到結束符出現。
2. 網絡搜索
解決最新知識缺失問題。
搜索流程淺析:
- 將用戶輸入做總結,特別是在經過多輪對話后,關注點分散、關鍵詞不易捕捉的情況。
- 調用搜索引擎,每個AI聊天應用的實現情況不一樣,調用特定的搜索引擎,如ChatGPT是Bing,DeepSeek是博查。
- 對搜索結果列表中內容進行閱讀和解析。
- 對搜索結果進行相關度排序,選出前N;Rerank模型,對初步檢索結果重新排序,提升相關性(如Cohere Reranker、Cross-Encoder)。
- 將前N篇文章作為參考內容,標識草考內容與用戶Query一起傳給LLM。
- 大模型返回結果。