精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
月之暗面對談 Zilliz:長文本和 RAG 如何選擇?
關于長文本和 RAG 到底如何選擇,一直有爭論,從基模公司到應用開發者。
今天這篇文章,是來自基模公司月之暗面和中間層 Zilliz 的技術對話,值得一看。

本期討論會參與者:

陳將老師:Zilliz 生態和 AI 平臺負責人

唐飛虎老師:月之暗面研發工程師,開發者關系負責人

主持人:周默:共識粉碎機,前美元對沖基金投資人,曾在騰訊與微軟從事戰略與投資業務

01 

長文本與RAG通用對比

準確率:通常情況下長文本優于RAG

  • 長文本:可更加綜合的去分析所有相關的內容,提取相關數字,生成圖表,效果尚可。

  • RAG:更適合找到一段或者是幾段可能相關的段落。如果希望大模型能夠對問題有全局的認識,比較困難。如,根據上市公司的2020年財務報表,繪制圖表,直接用RAG可能效果就不是很好。

長文本在準確性上表現好的原因,以及長度與準確性選擇

  • 長文本處理之后,會做對齊和專門的Benchmark測試調整。比如說之前的大海撈針以及騰訊的數星星的Benchmark,這些是更難一些要求,不僅要找到相關的位置,還得把具體的數字給出來。

  • 現在也出現了一些新的關于長文本模型的bench mark,比如legal bench,它就是專門測長文本模型的retrieval 和reasoning 的能力。然后如果大家對這個方面的推理有興趣的話,可以去搜,最近有一些論文是比較相關的。

  • 從實際應用出發,其實幾十 k token的輸入量量并不算很多,現在一般的大語言模型都能滿足。用額外的輔助,就有點像為了10本書,去搞一個圖書館,可能不太需要。但是如果對這 10 本書有什么特殊的需求,沒準也需要搞一個圖書館,需要搞一個機器人去幫你拿書。比如說是10本某個偉人的手記。就是這個取決于具體的情況。

  • 在現實情況中,只有十本書的情況畢竟不多。在數據量較大的場景,RAG還是非常適合。

  • 而且基準是在變化,趨勢來看大語言模型的文本的 context window會變得越來越長的。如果它普遍的都變得特別長,如果推理的成本,做了很多優化,能夠顯著的降低,那可能就是這么小的文本可能真的不需要去再費功夫給它搞一個數據庫去做這個 efficient retrieval,靠模型本身就能高效地把這些信息全部掃一遍了。

  • 對于效果,前面講的大海撈針都是在幾百萬的 token 這個量級下去講的,如果幾十k,可能就不算大海撈針,在這個量級上把注意力集中到用戶所問的那些問題上,不是一個特別難的事情,從觀測用戶使用的情況來看單純用大模型效果已經很好了。

長度與性能關系:RAG線性,長文本受限因素更多

  • 長文本:受限的因素比較多。比如并發性能會隨著上下文長度的增加反比下降,預填充的延遲也是會隨上下文長度的增長平方級別的增長;解碼延遲和上下文切換的開銷也是會線性的增加;最成瓶頸的是預填充延遲,因為它是會平方級別的增長,這也是構成目前長上下文推理的主要難度。

  • RAG:線性變化為主。

展開看上下文長度對長文本成本、延遲的影響

  • 目前主流的長文本推理,是根據 token 數去計算最后的價格,所以價格看起來是線性的關系。

  • 但是背后的長文本模型,實際推理成本受很多因素影響。需要有一個推理集群,然后做優化。

  • Context window越大除了成本會增長之外,首 token 延遲會顯著的增加。比如128K的模型,如果全用滿,需要大概幾十秒鐘的時間才能返回首token。

  • 部分廠商提供了更加長上下文的模型。比如月之暗面之前有一個 200 萬字的模型,包括像Claude也有一個更長的模型。這些模型,一次推理,可能延遲需要等幾分鐘。

  • 在很多目前的場景下,這樣的延遲導致模型不能投入實際使用。所以說主要是推理成本和首token的延遲這兩個問題,以及再把長上下文在進一步擴大的時候,還會遇到很多技術上的困難,在很多場景下,動輒可能需要數據是比如說幾GB,甚至有更大場景,用長上下文就不是特別好的選擇。

上下文長度在長文本與RAG的邊界

  • 有一些數值的參考坐標,如果講分chunk,大概就是500, 1000, 1500,甚至兩三千token,大概這個量級。所以如果是500個token,不需要搜索,搜索里邊的最小單元都比這個大。

  • 幾十 k 處在中間狀態,大語言模型 context window,可能是幾十 k 這個量級16K、 64K 或者更多的。embedding 模型如果要做搜索的話,需要能夠把這一段片段塞到embedding 模型的窗口里邊。之前的embedding 模型跟大語言模型的架構有一些不同,然后現在有一些embedding模型直接用大語言模型的架構去實現。量級大概也就是典型的像 16K context window 的,然后長一點兒的,比如有64K,但沒有太長的。

  • 文本如果比較多,就適合用知識庫的方式管理。海量的文本做分段落,每個段落用embedding提取向量,存到向量數據庫里。

長文本如何優化First Token延遲問題

  • 工程層面:比如說Flash attention。

  • 硬件層面:比如說英偉達有一些新的技術。

  • 算法的層面:用的比較多的是KV cache。可以把一些共同的長上下文先預處理出來,然后當需要用的時候,就直接調用,把 Preview 的時間就給省掉了,但是額外需要付出存儲的代價,以及維護存儲時間的開銷。

RAG的成本原理

  • 輸入階段:輸入內容的大小、類型會有很大差別。在RAG環節也會分離線和在線。離線是預先所有內容用Embedding模型等處理一邊,切分然后生成向量入庫,甚至在中間還可以做數據挖掘提取各種標簽用于搜索中做過濾。在這其中,也可以將總結同步生成出來,是否要生成總結以及是否伴隨細節,都會對成本直接影響。

  • 入庫成本的天花板:用小的Embedding模型把所有內容刷一遍,然后再用大模型把內容提取標簽或總結,所產生的成本基本是一次性入庫成本的天花板。

  • 輸出階段(Serving):每次的 serving 的服務成本,取決于retrieve 出來多少。這和業務邏輯設計的有關,可以是TOP3或者TOP5。然后取這里邊的乘積,比如說五個片段,每一個片段的平均長度是 1, 000 個tokens,那每一個平均的 context 長度就已經是 5, 000 個tokens。再加上用戶的query,一般情況下長度還是遠小于長文本方案的長度,按極限來說長文本是每次付出兩個 milliontoken 的推理成本,那 RAG 的方案可能就是 5, 000 個token,每次的推理成本大概是這么一個感覺,但還要考慮到 RAG 有一次性的入庫成本,包括除了入庫之外,存儲還有成本,但是存儲成本相對低。

  • 其他成本:需要維護data pipelines,即需要長期的維護數據。做數據更新,即增刪改查,還有很多工程成本。

  • 總體分配:推理成本不一定是最大的部分,如果是使用量非常大的服務,推理可能是成本大頭。但如果使用量很小,比如說企業知識庫文檔量極多,但大多數文檔的使用頻率非常低。那一次性入庫和存儲成本變成主要部分。

長文本的降本方向

  • 降本方面有一篇paper就是關于那個長文的推理的一個總結,來自于付瑤的博客的最新的一篇,從四個角度去分析了目前有可能去降低成本的這個方向。包括https://character.AI他們最近也發了一篇博客,就介紹了他們在這方面的一些努力。

具體的選擇比較需要看場景

  • 單純從學術上,長文本跟RAG有非常大的差別,沒有太多互相之間比較的點。很多指標雖然是同樣的指標但是要求千差萬別。在AI場景里面,需要根據不同的場景分析特點。

  • 需要從業務實際的情況去考慮,支持的業務的性質是什么?所需要工具有什么主要特點?比如關注延遲,關注整個系統的運維成本、機器成本?還是關注用戶體驗?比如問答愿意花 10 美金,只要這個問答能答對就有價值。

  • 長文本是大語言模型能力增長非常好的體現,但是大語言模型肯定不只有這一個能力,那么即便是短文本里邊,比如 reasoning 能力,數理邏輯的感知,在實際業務中非常重要;然后 RAG雖然說是叫 retrieval augmented generation,其實大家主要的關注點是在retrieval上,功能類似于搜索。

  • 現在在新的AI體系下,包括新的技術軟件的基建,包括像向量數據庫大語言模型,也是數據處理或者說數據挖掘的工具之一。以上重新組裝成了一套搜索的系統,包括數據流轉和處理系統,然后這套系統再去支撐業務,在應用中是否合適?在不同的業務下應該有什么樣的變化?應該選用什么樣的變種?應該根據實際去判定。

02 

部署落地與權限安全差別

RAG部署有許多系統化優化點

  • RAG分化程度非常高,因為RAG是許多東西的組成,類似大數據生態,里邊有非常多的環節,從數據抓取、數據清洗、數據挖掘,然后預處理,再經過模型分析,比如說embedding模型生成向量,然后再做數據的持久化,serving stack,就是怎么能夠非常 efficiently 把東西檢索出來。

  • 然后到檢索層面上整個serving鏈路,從某個 query 的語義識別到解析,可能要路由到不同的業務邏輯上。有的是用向量檢索,有的直接通過規則,有的通過大語言模型進行回答。然后最后再加一些guardrails,比如說要檢查一下這個是否符合價值觀,或者不安全的內容,然后再去作為回答的后處理。

  • 各個環節基本上把數據基礎軟件的環節都涉及到了,還涉及到模型的hosting,machine learning infra stack 里邊的東西,包括部署到生產環境之中,要有 continuous evaluation,要有監控 observability ,涉及到的方面會非常多。

  • 所以在實際部署的時候,客戶有的是自研一部分,然后用一部分開源的組件,有的用第三方的服務商所提供的組件,也有全部交給集成商去做、交給云廠去做的,還有用self service 方式,就是用一個定制化程度不高,但是前前后后全都給做了公開服務的套件,這里邊的情況比較復雜。采用什么方法取決于客戶業務是什么樣的訴求,尤其是對定制化,對功能有沒有客戶自己特殊的要求等等,造成解決方式的多樣性和可選方案的多樣性。

長文本(大模型)的部署相對簡單

  • 大模型的部署要么用開放的API服務,比如說月之暗面提供的公有云上的服務,要么客戶自己私有化部署的開源方案,或者大模型廠商提供的私有部署方案主要是這兩種情況。

  • 就從部署技術而言,能解決這個問題的人大部分都是大的云廠和大模型公司本身,或者有一些開源項目,如vLLM 能做一些inference的優化。這一塊的分化程度是比較低的。

  • 長文本做得比較好的一些模型廠商,一般提供的都是閉源模型。可能因為對于長文本模型來說,部署和推理中間牽扯到比較復雜,現在還沒有一個特別好的開源長文本模型,支持用戶的本地化部署。

?RAG可以做到很高精度的權限劃分?

  • 權限可以分為大權限和小權限。大權限,比如數據根本不能上網,需要放在本地一體化的硬件數據中;或者說數據可以聯網,但是只能在存儲在客戶私有的IDC 里,但IDC不能連接公有云或者不能使用公有云廠提供的第一方服務。小權限,不限制云服務使用方式,但是需要保證不同部門不能訪問他部門內限制數據。

  • 從大權限到小權限中間是連續的光譜,采用RAG的方案,只要保證基礎軟件,包括machine learningstack 的組裝都符合對應的權限的需求即可。

  • 保證權限的統一性。比如有不能聯網的要求,所有stack的行為就必須得在盒子里邊發生,或者說是我都在公有云上,但是不同用戶能訪問什么要被 stack 里的每一個步驟里邊都要遵守。

  • 有的客戶數據的某些處理可以是上網的,某些處理是必須在私有環境中進行,那么這種情況會稍微復雜一點,需要根據場景定制化一個方案。但一般來說這種方案都是可以實施的,因為在每一個成熟的組件里邊,比如向量數據庫,像Zilliz其實支持了各種部署方式,從私有的到公有的,有的用開源,有的用商業化服務,只要保證每一個組件都能夠滿足整條業務鏈路對于前線的要求就可以了。

?長文本在權限上更取決于數據架構設計?

  • 在權限處理上,類似問題在沒有大模型的時候也會遇到,跟具體用什么樣的模型關聯不是特別大,因為模型技術并不涉及這方面的細節,主要還是數據架構設計和權限管理。這個取決于各家的標準。

企業落地RAG時克服冷啟動、降低落地難度的方法

  • 落地里邊是有很多挑戰的,尤其對于傳統企業,沒有成熟的AI技術棧,又有非常復雜的業務訴求,很難通過通用的方案去解決。這個現狀造成落地具有很大挑戰,但這也是商業上的機會。

  • Zilliz選擇的方式:一方面先做好基礎設施,同時跟生態,比如開源的做邏輯串聯,或者做某一個方面,比如像知識圖譜,或者 evaluation 這些項目做集成、做合作,然后給大家提供更多的工具選擇;另外一方面也跟商業項目形成伙伴,這里邊有很多落地的咨詢服務、定制化服務,甚至本地部署解決數據的管理和安全問題。這些需要一些有服務能力的商業項目去做實施,Zilliz也選擇合作。

  • 需要整個生態,包括大模型廠商,應用廠商、咨詢能力的公司一起構建開發者或者說服務矩陣,通過多層的能力去解決客戶的實際問題。

月之暗面在長文本使用中的配套方案

  • 目前,月之暗面和谷歌的Gemini,現在都有上線長上下文緩存的服務給開發者。月之暗面之前在founder park 的 AGI Playground 上面做了發布,現在也可以直接使用。

  • 以客服群里的文檔機器人舉例,其實只有 32K 的長度,但每小時有 20 次提問,這其實是很容易達到的。只要群里面隨便跟同這個文檔機器人聊天幾句,就能達收支平衡,就是推理的開銷就超過存儲的開銷。如果是一些爆款應用,比如說之前很火的M.Riddle、哄哄模擬器、拜年模擬器等,可能在短時間內,比如說幾個小時內有一個瞬時的爆發性流量,用這種方法也是非常的合適的。

  • 這個是目前對開發者來說最容易接觸到的推理優化方案。之前月之暗面也發了一篇叫mooncake的論文,具體闡述了 KV cache的推理集群是如何優化的,并且這個優化方案已經在Kimi智能助手上線了相當長的時間。上了這個方案之后,讓 Kimi 智能助手每天能夠處理的推理量增加了80%。

03 

場景:客服與Sales Agent

客服與Sales Agent選擇取決于知識庫復雜度

  • 場景所需要的文檔量級會直接影響選擇,例如幾千字或者幾萬字規模適合長文本模型+上下文緩存的方式,不僅能優化價格,還可以優化First Token的延遲。

  • 例如營銷群里的段問題,多數已經不需要人工介入,大模型能回答得很好,并且延遲可以控制在2-3秒。

  • 例如游戲客服的文檔在幾萬字,也符合上面的要求。還有一些特定場景,請求比較頻繁,共同的上下文比較集中,例如AI翻譯、針對AI文檔的回答等,也適合長文本。

  • 但到了更加復雜的場景,例如大型呼叫中心或者作業輔導,就需要長文本+RAG;如果長度特別長,那可能就需要主要依靠RAG。

長文本在相對簡單知識庫時候的優勢

  • 單純從開發角度來說,只用長文本會有優勢,開發比較簡單,基本上不需要復雜的機構或者使用其他的第三方工具,只需要把文本轉化成text,然后全部給大模型的message里即可,這個不在于使用效果有多大的差別,而是對于開發者的負擔比較小。

  • 如果用戶側問經常問一些刁鉆的問題,比如模型的推理價格報表,或一些比較復雜的問題,比如用 a 模型相較于 b 模型能省多少錢?可能這個時候用長文本是一個比較合適的選擇。

  • 還是要看具體場景。可能有些場景,比如說簡單的客服,RAG和長上下文它的效果都可以,都可以滿足日常的需求。

對準確率要求高的場景如何選擇

  • 要看具體的場景,需要開發人員去測一下。一般來說,RAG肯定是相對多一些準確度的損耗。因為最后還是要把過RAG的信息給到大模型(RAG本身的準確度損耗+大模型的準確度損耗 vs 只有大模型的準確度損耗)。

  • 但也要具體看用的是什么樣的長上下文的模型,部分情況也會存在lost in middle 的現象。如果能更精準的把相關內容給到模型,那模型回答的是一定更準的,因為噪音少了。

04 

場景:AI Coding

AI Coding如何選擇

  • 在很長一段時間內,這兩種技術都是需要去搭配使用的。產品經理在做技術選型的時候,需要更深入的了解這兩個技術,去設計場景。

  • 在AI coding細分賽道,已經變得越來越專業,對模型的要求也越來越高。對于場景如何去獲取信息,要求也越來越高。

  • 比如GitHub,推出了Github copilot workspace,這是更加專業的場景。

  • 包括字節、騰訊和Google ,都推出瀏覽器VScode 的插件,甚至一些IDE能力。這樣他們可以更加全面的做代碼推理,不僅僅是代碼補全,還包括一跨文檔的能力,比如在一處進行修改,能夠幫助把相關聯的地方全部都做修改,但這也需要更加復雜的產品設計能力。

  • 現在什么代碼放到Context Window,什么放到RAG里沒有Best Practise。這類工作,具體先要劃分出核心邏輯,比如用 MVC(model-view-controller)的話,是model 層面的邏輯,然后把view層面的邏輯給弱化,除非具體問到的時候再把它們加進來。需要要看具體的項目去做具體調整。

業務場景看代碼庫大小

  • 如果是前端代碼,可能很多都是跟業務沒什么關系的代碼,可能就不那么的關鍵。

  • 如果是一個智能合約,其核心邏輯非常短,百行之內就能把核心的邏輯描述清楚。

  • 產品類型也非常有關。像一些dify的代碼,大概在幾十行,就把核心的邏輯表述出來。

  • 但比如游戲代碼,大概一大半的代碼是引擎。真正涉及到核心邏輯的代碼會很分散,這種的實現就會更困難。

1m Context Windown對于大部分科技公司還不夠用

  • 百萬代碼量可能是一個很小的代碼庫,千萬代碼量可能也是小代碼庫。一個項目稍微復雜點的就能做到百萬的量級的代碼量。

  • 像 Google這樣大的體量,2015 年有 20 億行,一行一般幾十個token,所以代碼量在稍微大一點的軟件工程的場景下時巨大的。

  • 如果能夠限定問題所在的代碼范圍,比如說某些文件夾,那么代碼量并不大,一個文件夾里面的幾個files,可能 5, 000 行,什么1萬行就到頭,然后幾十個token一行,總計大概在幾十萬token。

  • 稍微上體量的中等公司,根據業務的情況,也有可能達到千萬甚至更多的代碼行數,這樣token 數也要上億了。

對于代碼庫大的企業可以不用RAG嗎?

  • 可以不用RAG,但是需要有辦法把代碼篩選出來。

  • RAG背后是向量,向量搜索是基于語義的 similarity 去搜,對代碼的搜索除了語義還能利用其他信息。因為代碼是有結構的,對于能夠解析的結構,就不一定需要全用Vector similarity 去search。

  • 比如可以根據項目名稱,模塊名稱先去找到大概的范圍,當然這個范圍有多大的代碼量可能預先并不不知道,如果量特別大,可以結合長文本。

  • 如果量大且對成本的考量比較敏感,可以再用向量搜索的方式去做一些切塊,然后把里邊的部分代碼通過語義的 similarity 去搜出來,甚至可以結合標簽,根據標簽的similarity,或者根據大語言模型線下給這一部分代碼做的總結去搜索。這里邊有很多工程化方法。

客戶如何針對代碼進行結構解析和工程優化

  • 通用代碼結構解析的能夠做到的程度:比如Java 的項目,因為 Java 的語法是相對標準,所以能夠解析出來它的類(function)的結構,然后建立結構化樹,該樹用來做從項目名到模塊的路由。這部分是有通用性的,因為各家用的Java的項目結構大體都是一樣,甚至有一些框架帶有一定結構,然后這個框架是通用的。

  • 不能通用的部分:比如,某個模塊是由某個團隊管理,該團隊要負責給該模塊寫說明,因為代碼里幾乎找不出來它跟業務邏輯之間的關系。這一段代碼,具體是給哪個模塊,給哪個業務里邊的哪個功能的,如果沒有歷史背景,只有維護這個東西的團隊知道,甚至維護的團隊時間久了也不知道了。

  • 企業實際應用中會遇到這類 “三不管”代碼,是個比較現實的問題。這個現實問題就很難用通用的方法去解,可能有的甚至要通過組織架構的方式去解,這些就需要做很多定制化的東西。

  • 一些開源的項目會相對容易,host 在 GitHub 上,各方面的文檔的read me,各種描述軟件,比如說各種 function 的使用文檔都是內嵌在 code 里邊,有了這些前置條件,這屬于比較容易觸達到這個問題的核心相對好用通用的辦法去解決。

  • 但如果是個對知識產權有很強的訴求的公司,組織架構非常復雜,代碼的管理也比較的粗糙,然后文檔什么的建設都不健全,如果是這樣的場景,解決起來就非常困難。

05 

場景:搜索

搜索場景的選擇

  • 這種選擇大概率是出于成本等的考量,不能承擔太高的推理成本的。因為搜索是商業服務,而不是慈善業務。

  • 所以如果每一個免費用戶都花幾美金的成本去承擔query的成本,這肯定是付不起的。所以背后一定是做了大量的優化,Perplexity 宣稱做了一些小一點的模型,并單獨為這個場景做了模型優化,這樣它能夠把成本降下來。

  • 大家會覺得RAG 就是成本很低,但量大情況也不一定。如果使用的體量非常大的話,向量數據庫本身的存儲成本,還有進行服務 的serving 成本也是很高,也需要做一些優化。

  • 比如Zilliz最近在做的冷熱存儲的切換,將價值不高、訪問頻次不高的數據放到冷存儲里,以節省成本。如果用 RAG 都有成本的問題,那全都用大語言模型去付出高昂的推理成本,應該說在這些商業的產品里邊一般是不現實的。

  • 甚至剛才所說的coding場景成本下降都不一定很明顯。舉之前有客戶疑問:Github Copilot 做的不錯,是否拿長文本做的,'我把整個項目給丟進去了,然后我去問的時候,他這個回答的效果就很好,就是說他好像方方面面都照顧到了,那不就是長文本嗎'。如果一個建庫就需要超過 10 分鐘,背后大概率是離線做了索引。當搜的時候,每一個 query的延遲,非常短,瞬間搜出來了,采用的技術一定不是長文本, 是結合了RAG的。Github Copilot的建庫時間較長,單次搜索延遲很短,應該是采用了RAG的方案。

AI搜索的語義提取顆粒度

  • 分兩部分,第一部分是做語義檢索,語義檢索本質上是粗顆粒度的模糊的搜索,把這一篇網頁分成 50 個片段,每個片段 500 個字,然后整個片段就生成一個向量,然后向量代表了這個網頁抽象語義,或者是它的一個指紋或表征,這是一種抽取的方式,它并沒有邏輯的關系。

  • 至于向量怎么生成出來,拿深度神經網絡模型訓出來的,然后對齊了一些業務場景對模型的需求,就是語義相似的東西,就給把這個向量給分布到相似的空間里邊的位置上,然后這是一部分的抽取。

  • 另外一部分就是給提取出來的東西標簽、關鍵字,或者根據它的內容提出來一些描述性的標簽。這個一般也是通過模型來實現,有的是用大語言模型做的,有的是專有模型來做。

  • 這兩種情況在互聯網公司,因為技術能力會比較強,一般都是存在的。

類似百度和Google已經采用AI搜索,還是會偏傳統更多采用倒排?

  • 是用到向量檢索去檢索到一些內容,然后再搭配關鍵字的倒排和一些其他標簽。Web 搜索里叫token base retrieve,把那些 token 相關的東西都去除。然后對所有這些拿出來的東西放在一起進行 merge,這個merge 是根據業務和渠道的特點做重排序。

  • 然后重排序里邊,像互聯網的話,業務是占主流的,即要達到什么商業目的,重排序要與根據商業目的對齊。

  • 對企業知識庫談不上商業考量的場景,更多是根據問答質量去考量。

現在有一些做AI搜索公司,宣稱壁壘是靠去做緩存到的網頁的語義索引來積累語義索引庫。按照合格邏輯,對于百度和谷歌的工作來講,它其實已經建立了全網網頁細粒度的索引庫的話,那么對于 AI 搜索的創業公司,大廠還是有領先優勢的嗎?

  • 不好判斷。創業公司可能在商業層面上,比如說他根據場景做的一些定制,或者說從流量獲取就是純商業運營的角度上有自己的獨特玩法。

  • 具體的價值不一定全是在技術層面上。從技術層面上也很難講。因為不知道創業公司具體做的事情是什么,可能他們有自己獨特的東西,比如說根據一些具體場景去訓的模型,比如說對二次元的內容,專門做了優化什么。存在大一點體量公司所忽視的細分場景,這些都有可能成為創業公司的機會。

06 

其他場景

涉及數值計算以及Text2SQL的選擇

  • Text to SQL可以看到成熟度越來越高。但總體而言數值計算,并不太適合用大語言模型這種概率模型直接去做。數值計算比較適合使用邏輯模型或者規則工具去做,比如說SQL。大語言模型在里面起到的作用是把自然語言所表達的問題,拆解成有邏輯關聯的步驟,然后將這些步驟轉化sql。達到的效果是輸入自然語言,輸出是SQL 的查詢語句,然后SQL查詢語句進入數據庫運行,這是一種比較好的方式。

  • 如果非要用大語言模型去解決這樣的問題,即仍然依賴于概率分布,不去借助類似計算器這樣的工具,則需要給大語言模型很多例子,至少告訴大語言模型怎么計算步驟的拆解。但是大語言模型還是擺脫不了next token predictor的情況 ,即知道自然語言的分布是怎樣的,回答的結果就是概率分布的結果。比如說之前 3.11 和3.8比大小的情況,大預言模型會認為3.11更大,是因為大語言模型可能理解的是兩個版本號,比如Python的3.11和3.8。大語言模型理解的是3.11版本比3.8版本更晚出現,肯定更強,所以更大,而不是不是按照人類日常使用的小數規則。

  • 這樣的例子非常多,有一些非常識性的問題,人類可能不可能犯的錯誤。但是大型語言模型可能是語料被污染,或者是人類語言自然就有的歧義,可能就會弄錯。對于非常嚴肅的計算場景,則一般需要額外的verify手段保證大語言模型做的是正確。

07 

技術爬坡

長文本的技術爬坡方向

  • 推理質量不能有所下降,如何在保質保量的做長文本的推理,是一件非常困難的事。

  • 解決了能力問題之后,還要解決貴且慢的問題。前面講到兩個瓶頸,一個是推理成本會特別高,一個是首token會特別慢。在一個階段解決好這兩個問題之后,待上下文窗口再提升到下一個里程碑,這兩個問題又會出現。

  • 但還是要持續去研究expand context window, 因為有一個現象表明,當長文本能力上去之后,有很多附帶的能力會涌現出來。

  • 具體到以后長度能到多長,現在行業沒有共識。具體的技術,從實驗室環境到真正的生產環境,會有很大的gap。10 Million 的模型, 100 Million的模型可能已經有了,但是可能推不到生產。主要是延遲特別高,或者精度特別的差。

RAG的技術爬坡方向

  • 整個鏈路變得更長了,遠遠比半年之前變得更復雜,開始有更多的技術棧被加入進來。

  • 大概 6- 12 個月之前,市場對于 RAG 的印象是:先embedding 模型抽象出一個向量,然后導入向量數據庫里邊,然后搜索出向量背后代表的短文本塊,放入大語言模型。

  • 6個月之前,甚至三五個月之前,出現了一種說法,如果不用向量數據庫,把整個文章輸入大語言模型就解決問題了,所以在Twitter等自媒體上,開始有了長文本vsRAG 的提法,這個故事很抓眼球。但后來實際的情況沒這么簡單,這里邊是一整個鏈路的問題,這兩個東西不是簡單就能比較的。

  • 開始大家都覺得只應該用向量。但慢慢的發現其實向量檢索只是很復雜技術棧中間的一塊而已。包括有人覺得向量數據庫是不是有能力做端到端服務,或者向量數據庫是不是能做端到端服務,直接提供搜索業務,但實際不然。

  • 實際情況比向量檢索加大語言模型拼接更復雜。最近新涌現出來的技術棧提供了很多其他的解決方式,比如知識圖譜,包括長文本用于離線數據的挖掘,即給很長的文本進行壓縮,總結出來一些信息,然后這個信息更容易進行搜索。或者因為有長文本,所以對文本檔案的切分就不用那么精益求精了,稍微長一點也沒有關系。甚至于其他新的embedding 模型類型,根本就不在意切斷的具體方法,但這個主要還是在學術界領域在討論,實際應用的比較少。

  • 從語義的識別,query serving角度來說,原來覺得query 就應該直接去匹配文本段,但實際上不是所以情景都適合這樣做。很多時候 query 不是一個簡單拿一個文本段就能回答了。很可能query 含有一個復合問題,需要分為好幾步才能夠解答,比如說是需要比較分析的問題,比如A和B之間的區別是什么?如果是人去做這類問題的回答,可能會先看 A 是什么,然后 B 是什么,這兩者都充分理解后,然后再去做一個比較,這就是一個多步問題。

  • 大語言模型的進展除了長文本本身之外,包括推理和邏輯的能力也在提升,然后就出現了用大語言模型去解析query語義,將其拆成多步,甚至產生了是交互式的問題解答,即先解答一步,然后根據該步的返回的情況,再讓大語言模型去決后面一步要解決什么樣的問題。這樣復雜的 query 的解析和路由的方式已經開始出現了,而且在前期生產應用的效果看起來也不錯。

  • 整個過程是需要online和offline的結合:傳統搜索,就有offline的部分, offline 就是像管理圖書館中的圖書一樣,怎么分門別類的把書放好,這樣進行檢索的的時候更容易。另外一部分是online 的部分, online 的時候就是用戶要過來查這個書了,那怎么能夠快速把這書找到,依賴于線下做的事情,然后這兩塊現在都有進化,都有新的技術棧的加入,整體來看實現效果包括應用情況也比 6 個月之前要好了很多。

  • 可以看到整個市場中,越來越多的人開始探索更細節的問題,比如語義識別應該怎么做?用什么模型比較好?該用大的模型還是小的模型,還是幾個模型堆在一起做gate,像基層鏈路關系。然后單純的問 RAG是什么的問題越來越少,說明已經慢慢的開始解決落地的問題,而不只是概念驗證的問題。

長文本與RAG也在融合部署

  • 比如說開始有離線做數據挖掘的情況出現了,比如說最簡單的數據挖掘就寫一個總結。除了給這一整本書的很長的內容做了場景切分之外,還去把這一本書在離線的時候都讀了,就是拿大語言模型長文本的能力去讀了一遍,然后寫了一個總結,這個總結本身也是作為召回的語料之一。

  • 然后在serving的階段,原來大家會謹小慎微的往里邊塞東西,現在可能多塞幾個片段,甚至切分 chunking 都不用切的特別小,可以切很大的chunk。然后把幾個很大的 chunk 加在一起,非常長的東西扔進去,只要能承擔這個成本。

  • 這里邊也會有一些問題,有trade off,比如說放了很長的東西,對大語言模的穩定性要求就很高,就是剛才提到大海撈針或者數星星的這種能力要逐步的增強。還有推理的能力,大模型需要注意到這些任務里面有自相矛盾的內容,它應該有判斷。

  • 整個進步是螺旋上升的,就是一邊在系統層,比如說搜索數據處理在提升。另外一方面,大語言模型作為框架里邊非常重要的工具,本身也要提升。整個系統會采用大語言模型工具提升的能力來,甚至有新的用法,就比如說剛才提到的做總結,做數據挖掘這類事情。

08 

GraphRAG

GraphRAG 帶來的啟發?GraphRAG的技術路線是否是目前的best practice?

  • GraphRAG是一個價值很高的項目。對于知識圖譜的提取,應用都做了開源的實現,填補了市場上的空白

  • 知識圖譜在實際應用領域需求非常強,因為語義檢索只能解決一部分問題,如果對檢索的可靠性、可預測性的要求比較高的話,應該加入一些基于規則化的檢索。知識圖譜是一個非常好的系統化解決知識結構化的問題。因為如果單純是用專家系統,可能用人去編輯能覆蓋的范圍比較有限,體量也會受到限制。但是用知識圖譜,具有知識圖譜的抽取,就是三元組的抽取,知識圖譜構建,包括在實際 serving 的過程中,也可以把實體做向量化,相關的實體作為標量一起存儲,召回時也參考相關實體的信息,實驗發現效果提升很明顯。同時因為知識圖譜是一個很好的系統整理信息的工具,也適合基于知識圖譜做數據挖掘,比如先聚類然后再做總結。

GraphRAG在一些方面填補了知識圖譜的空白,但實際上它做的不是一個典型傳統的知識圖譜,GraphRAG做了兩件事情:

  • 一是創造了community的概念,本質上是利用知識圖譜進行數據挖掘。通俗點說,把一個很長的一個文檔,或者說文檔庫里邊的內容先做了切分,這個有點像 RAG 里邊做 chunking ,切分后對于每一個單元去提取里邊的知識三元組,比如說一個實體和另外一個實體中間是什么關系。比如說奧巴馬是美國總統,這樣的關系提取出來。

  • 二是還把知識圖譜跟向量檢索做了結合。一方面用知識圖譜做了數據挖掘,建立樹形的信息結構,這個叫community,相關的 entity 聚合成小的community,然后把多個小的 community聚合成大的community,相當于采用金字塔型的結構整理了信息,并做了總結。使得每一個三元組成為信息單元。對知識三元組本身也做了向量化。然后將所有這些東西放在向量數據庫里邊,根據語義去做召回。GraphRAG召回的方法的設計也比較全面,考慮到小的entity,也考慮到總結性的信息。最后把這一套東西做了開源的實現,這是價值比較大的點。

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
百萬token上下文窗口也殺不死向量數據庫?CPU笑了
模型上下文長度越來越長,RAG會被取代嗎?
獵戶星空大模型發布!傅盛:企業應用百億參數就夠了
大佬們都在關注的AI Agent,到底是什么?用5W1H分析框架拆解AI Agent(下篇)
純干貨全面解讀AI框架RAG
大模型落地,如何跨過數據這道坎?
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 宁化县| 安西县| 思茅市| 平江县| 阳西县| 稷山县| 涟源市| 元氏县| 商水县| 乌恰县| 余干县| 库车县| 奉化市| 老河口市| 密云县| 武胜县| 武安市| 鸡东县| 醴陵市| 汉川市| 永昌县| 赤壁市| 开化县| 贵南县| 禹城市| 定南县| 襄汾县| 青阳县| 荣成市| 江阴市| 瑞金市| 临汾市| 临夏市| 敦煌市| 蓬溪县| 贵阳市| 金堂县| 万宁市| 枝江市| 昭平县| 山丹县|