一文探祕 LLM 應用開發 -2-
第一部分 基礎概念
1. 機器學習場景類別
2. 機器學習類型 (LLM 相關)
3. 深度學習的興起
4. 基礎模型
第二部分 應用挑戰
-
問題定義與基本思路
-
基本流程與相關技術
1)Embbeding 與 Tokenization
2)向量數據庫
3)finetune(微調)
4)模型部署與推理
5)prompt
6)編排與集成
7)預訓練
第三部分 場景案例
常用參考
第二部分 應用挑戰
- 問題定義與基本思路
對於大模型應用來講,核心工作圍繞這個問題展開:
如何讓大模型能夠完成具體領域場景的實際工作,並且能夠提升和干預效果?
從影響大模型的能力和效果的兩個因素入手:
1)模型(內在)
可以將模型理解爲知識和能力的混合體,經過微調的模型包含了學到的知識,邏輯,也包含執行具體某個任務的能力。但它有個缺點就是比較重量級,訓練和更新需要大量的時間和成本,這也就導致模型知識不夠及時,變更困難,黑盒難控制,能力擴展難度高等問題。
2)提示詞 (prompt)(外在)
可以將其理解爲知識和指令的混合體,類比於 AI 1.0 的判別模型,提示詞相當於特徵輸入,因此 AI2.0 將特徵工程(feature enginering)晉級爲提示詞工程(prompt enginnering),特徵工程決定了模型的上限,從這個角度側面可見用好提示詞的重要性。prompt 可以給大模型直接表達需求(zero-shot),也可以給它示例(few-shot)解釋需求,也可以一步步教它思考(chain of thought)一起完成需求,還可以給它一些背景信息(context),幫助它理解問題和回顧歷史。因此,prompt 有很好的靈活性和透明性,能夠輕量級地完成一些看似神奇的工作。但 prompt 也有它的約束,受限於大模型性能和成本考慮,prompt 的大小有限,加之每次請求都需要攜帶大量信息來維持狀態,在性能上也有一定缺陷。
那麼,針對於這兩個因素,我們分別可以做些什麼干預模型呢?
1)針對於模型本身的優化爲:fine-tune
對於 fine-tune 來講,影響的是模型的權重。
2)針對於輸入的優化爲:in-context learning,即 prompt learning
兩者比較:
可以看出,提示詞具有相當大的應用優勢,具備很明顯的成本和靈活性優勢,使用門檻也比較低,隨着 token 數量的不斷增長及 prompt 壓縮方案的提出,prompt 層面的工作將是工程化方案的最重要的內容。
工程改進:
如上面分析,目前提示詞中需要包含需求,背景,例子,歷史等很多內容,就拿常見的檢索場景,如何讓大模型在海量的文章裏總結回答,這不僅受限 token 的大小,還會導致響應的時間過長,不能滿足用戶的需要,那麼在不能提高 token 數量,及提升大模型推理的條件下,如何解決這一問題呢?
那就是對於 prompt 進行壓縮提煉,一個常見做法是外部引入一個檢索流程,增加一步粗篩召回的邏輯,減少候選範圍,便能明顯緩解這一問題。而這一過程,還有一個明顯的好處,給了大模型一個發揮的範圍,使得大模型能夠在更可靠的知識內容基礎上總結推理,一定程度上可以避免模型黑盒條件下的自說自話,提高了輸出的可信度。另一方面,對於提升模型返回角度考慮,增加檢索流程,可以對提示詞進行檢索增強(retrieval augmentation),比如對接知識圖譜,業務知識庫等,能夠提高輸出的質量。
總結一下,增加檢索流程,有三個作用:精煉 prompt,提高可信度,提高模型輸出質量。
檢索方式選擇向量檢索的原因
目前業內主流做法是採用向量檢索的方式來做檢索增強。很多同學有疑問爲什麼要用向量數據庫,原來傳統的 ElasticSearch 這樣的文本檢索的方案是否可以?
實際上,結合上面的分析來看,也不是不可以,本質上是大模型外圍需要一個檢索和存儲的組件來完成檢索過程,只要能滿足這樣的要求,均可以採納。那麼爲什麼大家不約而同選擇了向量檢索?
這樣的選擇本質上是爲了獲得更好的檢索效果,提高相關性。萬物皆可 embedding,通過 embedding 可以將一個維度的問題映射到另外一個維度,在新的維度裏能夠更準確的表達它們之間的關係。這一過程類似於我們曾經學習的信號處理的知識,將時域的信號通過傅立葉變換轉到頻域中處理,可以極大地減少複雜度。
從上圖可以看到,向量搜索和普通搜索的差異,它基於內容 embedding,在編碼時就考慮到了內容的相關性,在檢索時不必簡單文本匹配,基於語義的檢索,自然召回的效果更好。
從這個意義上講,選擇向量檢索並不是大模型的要求,而是對召回效果不斷提升加之向量檢索性能取得不斷提升的自然演進,因此,可以看出未來搜索服務面向語義檢索發展也是必然趨勢。
小結:
圍繞上面提到的關於內在模型及外在提示詞兩個 LLM 應用核心組成,涉及到如下核心技術需要掌握。
在實際的 LLM 開發中,也會先從簡單入手,只有當簡單無法完成需求時纔會轉而更復雜的方式去幹預實現。
本節介紹了目前主流的檢索增強的 LLM 應用的產生原因和基本實現思路,可以幫助構建整體宏觀的概念,在下一節中,對 LLM 應用開發過程中涉及到的技術展開討論。
包含:
-
embedding & tokenization
-
vectordb
-
fine-tune
-
prompt
-
deploy&inference
-
編排集成
-
預訓練
未完待續...
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/WIwt4F5_FPb2Ww__Lp0-pQ