書接上回理解構(gòu)建LLM驅(qū)動(dòng)的聊天機(jī)器人時(shí)的向量數(shù)據(jù)庫檢索的局限性 - (第1/3部分)_阿爾法旺旺的博客-CSDN博客
其中我們強(qiáng)調(diào)了(1)嵌入生成,然后(2)使用近似近鄰(ANN)搜索進(jìn)行矢量搜索的解耦架構(gòu)的缺點(diǎn)。我們討論了生成式 AI 模型生成的向量嵌入之間的余弦相似性可能不是獲取相關(guān)內(nèi)容以進(jìn)行提示的正確指標(biāo)。我們還強(qiáng)調(diào),在生產(chǎn)環(huán)境中,通過向量數(shù)據(jù)庫存儲(chǔ)、更新和維護(hù)嵌入非常昂貴。
在這篇文章中,我們將討論使用學(xué)習(xí)索引的現(xiàn)代神經(jīng)數(shù)據(jù)庫學(xué)習(xí)如何緩解在嵌入和搜索相關(guān)的大多數(shù)問題方面提供對(duì)矢量數(shù)據(jù)庫的重大升級(jí)。最后,我們將簡(jiǎn)要介紹我們正在構(gòu)建的用于解決ThirdAI這些問題的神經(jīng)數(shù)據(jù)庫技術(shù),我們將在下一篇文章中深入探討。
維護(hù)、存儲(chǔ)和搜索嵌入的痛點(diǎn)
為了說明工程挑戰(zhàn),讓我們考慮使用 Pubmed 35M 數(shù)據(jù)集構(gòu)建 AI 代理的示例,這是一個(gè)符合行業(yè)標(biāo)準(zhǔn)的小型存儲(chǔ)庫。該數(shù)據(jù)集由大約 35 萬個(gè)摘要組成,轉(zhuǎn)化為大約 100 萬個(gè)塊,需要 100 萬個(gè)嵌入。假設(shè)每個(gè)區(qū)塊平均有 250 個(gè)代幣,我們做出以下觀察:
- 嵌入是非常重的對(duì)象:像 Ada-02 這樣更簡(jiǎn)單的 OpenAI 模型為每個(gè)文本塊生成大約 1500 維的嵌入。文本塊約為 250 個(gè)標(biāo)記(每個(gè)標(biāo)記平均 4 個(gè)字符)。存儲(chǔ) 100 萬個(gè) Pubmed 塊大約需要 600GB 來存儲(chǔ)嵌入。相比之下,未壓縮的原始文本的完整數(shù)據(jù)只有200GB。更精確的LLM模型的嵌入維度超過12000,這將需要大約5.5 TB的存儲(chǔ)空間,僅用于處理嵌入向量。
- 具有高維嵌入的近似近鄰搜索(ANN)要么慢要么不準(zhǔn)確:三十多年來,人們已經(jīng)認(rèn)識(shí)到,高維近鄰搜索,即使是近似形式,從根本上也是困難的。大多數(shù)ANN算法,包括流行的基于圖形的HNSW,都需要重量級(jí)的數(shù)據(jù)結(jié)構(gòu)管理,以確??煽康母咚偎阉?。任何ANN專家都知道,搜索的相關(guān)性和性能在很大程度上取決于向量嵌入的分布,這使得它非常不可預(yù)測(cè)。此外,隨著嵌入維度的增加,維護(hù)ANN、其搜索相關(guān)性和延遲可能會(huì)面臨重大挑戰(zhàn)。
- ANN索引的更新和刪除存在問題:大多數(shù)現(xiàn)代向量數(shù)據(jù)庫和ANN系統(tǒng)都是基于HNSW或其他圖遍歷算法構(gòu)建的,其中嵌入向量是節(jié)點(diǎn)。由于這些圖形索引的構(gòu)造方式的性質(zhì),基于文檔內(nèi)容中的更改更新節(jié)點(diǎn)可能是一個(gè)非常緩慢的操作,因?yàn)樗枰聢D形的邊緣。出于同樣的原因,刪除文檔也可能很慢。嵌入更新的動(dòng)態(tài)性質(zhì)甚至?xí)绊憴z索的整體準(zhǔn)確性。因此,對(duì)數(shù)據(jù)庫的增量更新非常脆弱。從頭開始重建通常成本太高。
- 檢索失敗很難評(píng)估和修復(fù):當(dāng)給定的文本查詢無法檢索相關(guān)的基礎(chǔ)上下文,而是提供不相關(guān)或垃圾文本時(shí),此失敗可能有三個(gè)原因:a) 數(shù)據(jù)庫中不存在相關(guān)的文本塊,b) 嵌入質(zhì)量很差,因此無法使用余弦相似性匹配兩個(gè)相關(guān)文本,c) 嵌入很好, 但由于嵌入的分布,近似近鄰算法無法檢索到正確的嵌入。雖然原因 (a) 是可以接受的,因?yàn)閱栴}似乎與數(shù)據(jù)集無關(guān),但區(qū)分原因 (b) 和 (c) 可能是一個(gè)乏味的調(diào)試過程。此外,我們無法控制ANN搜索,并且優(yōu)化嵌入可能無法解決問題。因此,即使在確定問題后,我們也可能無法修復(fù)它。
臭名昭著的維度詛咒:大量高維向量的ANN從根本上來說是困難和不可預(yù)測(cè)的。如果可以的話,避免整個(gè)過程。
持續(xù)自適應(yīng)領(lǐng)域特定檢索系統(tǒng):無嵌入神經(jīng)數(shù)據(jù)庫
事實(shí)證明,有一個(gè)簡(jiǎn)單的AI系統(tǒng)可以進(jìn)行端到端的訓(xùn)練,而無需昂貴,繁重和復(fù)雜的高維嵌入。關(guān)鍵概念是完全繞過嵌入過程,將檢索問題作為可以端到端學(xué)習(xí)的神經(jīng)預(yù)測(cè)系統(tǒng)來處理。在這種方法中,神經(jīng)網(wǎng)絡(luò)用于將給定的查詢文本直接映射到相關(guān)文本。此過程需要數(shù)據(jù)結(jié)構(gòu)以提高效率。每年都會(huì)在ICML,NeurIPS和ICLR等會(huì)議上發(fā)表大量論文,探討這些想法。我們的設(shè)計(jì)是NeurIPS論文的簡(jiǎn)化版本,隨后的研究在ICLR和KDD上發(fā)表。
神經(jīng)數(shù)據(jù)庫同樣也涉及兩個(gè)階段,如下所述。
訓(xùn)練和插入(或索引)階段:系統(tǒng)的前向工作流程如下圖所示。
該系統(tǒng)利用強(qiáng)大的大型神經(jīng)網(wǎng)絡(luò)生成將文本映射到離散鍵的內(nèi)存位置。這些預(yù)測(cè)鍵充當(dāng)存儲(chǔ)桶,用于插入和稍后檢索相關(guān)文本塊。從本質(zhì)上講,這是一個(gè)很好的舊哈希圖,其中哈希函數(shù)是一個(gè)大型神經(jīng)網(wǎng)絡(luò),經(jīng)過訓(xùn)練來預(yù)測(cè)指針。為了訓(xùn)練網(wǎng)絡(luò),我們需要“語義相關(guān)”的文本對(duì)和標(biāo)準(zhǔn)的交叉熵?fù)p失。有關(guān)更多詳細(xì)信息,請(qǐng)參閱?2019 年 NeurIPS?論文和隨后的?KDD 2022 論文中提供的理論和實(shí)驗(yàn)比較。從數(shù)學(xué)上講,可以證明模型的大小隨文本塊的數(shù)量以對(duì)數(shù)方式縮放,從而導(dǎo)致運(yùn)行時(shí)間和內(nèi)存的指數(shù)級(jí)改進(jìn)。此方法不需要嵌入管理。
查詢或檢索階段:?查詢或檢索階段同樣簡(jiǎn)單,如下圖所示。
給定一個(gè)問題,我們使用經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)分類器來計(jì)算排名前幾個(gè)桶的概率。然后,我們累積與這些頂級(jí)存儲(chǔ)桶關(guān)聯(lián)的所有 ChunkID。然后,對(duì)與問題相關(guān)的頂級(jí)存儲(chǔ)桶及其相關(guān)相關(guān)性分?jǐn)?shù)進(jìn)行聚合和排序,以返回候選文本塊的小型排名列表。然后,這些文本塊被用作生成 AI 的提示,以生成最終的接地響應(yīng)。
神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)庫相對(duì)于嵌入和ANN的主要優(yōu)勢(shì)
我們通過相同的Pubmed 35M AI-Agents應(yīng)用程序來說明神經(jīng)數(shù)據(jù)庫的優(yōu)勢(shì)。文章來源:http://www.zghlxwxcb.cn/news/detail-615749.html
- 沒有嵌入導(dǎo)致指數(shù)壓縮:我們的方法所需的額外內(nèi)存僅在于存儲(chǔ)神經(jīng)網(wǎng)絡(luò)的參數(shù)。我們發(fā)現(xiàn),一個(gè) 25?億參數(shù)的神經(jīng)網(wǎng)絡(luò)足以訓(xùn)練和索引完整的 Pubmed 35M 數(shù)據(jù)集。訓(xùn)練純粹是自我監(jiān)督的,因?yàn)槲覀儾恍枰魏螛?biāo)記的樣本。即使有所有的開銷,我們只有不到 20GB 的存儲(chǔ)空間用于完整索引。相比之下,使用矢量數(shù)據(jù)庫存儲(chǔ) 1500?維嵌入模型的數(shù)量至少為 600GB。這并不奇怪,因?yàn)槭褂们度肽P?,?jì)算和內(nèi)存隨塊數(shù)線性擴(kuò)展。相比之下,我們的神經(jīng)數(shù)據(jù)庫僅隨塊的數(shù)量進(jìn)行對(duì)數(shù)縮放,正如我們的NeurIPS論文所證明的那樣。
- 像管理傳統(tǒng)數(shù)據(jù)庫一樣管理插入和刪除:?與基于圖的近鄰索引不同,神經(jīng)數(shù)據(jù)庫具有簡(jiǎn)單的 KEY、VALUE 類型哈希表,其中插入、刪除、并行化、分片等都很簡(jiǎn)單,而且很容易理解。
- 超快速推理和顯著降低成本:?推理延遲僅包括運(yùn)行神經(jīng)網(wǎng)絡(luò)推理,然后是哈希表查找。最后,只有選定的區(qū)塊只需要對(duì)少數(shù)候選者進(jìn)行簡(jiǎn)單的加權(quán)聚合和排序。與嵌入和矢量數(shù)據(jù)庫相比,您可能會(huì)看到檢索速度快 10-100 倍。此外,借助ThirdAI突破性的稀疏神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法,我們可以在普通CPU上訓(xùn)練和部署這些模型。
- 使用持續(xù)學(xué)習(xí)進(jìn)行增量式的學(xué)習(xí)索引:可以使用語義含義相似的任何文本對(duì)來訓(xùn)練神經(jīng)索引。這意味著,對(duì)專門針對(duì)任何理想的任務(wù)或領(lǐng)域,檢索系統(tǒng)可以不斷訓(xùn)練。獲取用于訓(xùn)練的文本對(duì)并不難。首先,它們可以很容易地以自我監(jiān)督的方式生成。此外,它們自然可用于任何具有用戶交互的生產(chǎn)系統(tǒng)。
ThirdAI的亮點(diǎn)
在本系列的下一篇也是最后一篇博客文章(第 3/3 部分)中,我們將討論?ThirdAI 的神經(jīng)數(shù)據(jù)庫生態(tài)系統(tǒng),以及如何通過“動(dòng)態(tài)稀疏性”來馴服像LLM這樣的龐然大物,以便在任何數(shù)據(jù)處理系統(tǒng)中運(yùn)行,無論是在云上還是在本地。我們還將介紹一組簡(jiǎn)單的自動(dòng)調(diào)優(yōu) Python API。這些 API 使你能夠在設(shè)備上利用下一代學(xué)習(xí)索引的強(qiáng)大功能。此外,我們將解釋如何使用簡(jiǎn)單的CPU和幾行Python代碼創(chuàng)建一個(gè)接地氣的Pubmed Q&A AI-Agent,同時(shí)通過本地環(huán)境(不需要互聯(lián)網(wǎng))保持隱私。如上一篇文章所示,使用標(biāo)準(zhǔn)的OpenAI嵌入和矢量數(shù)據(jù)庫生態(tài)系統(tǒng)構(gòu)建這樣的AI代理通常需要花費(fèi)數(shù)十萬美元。您可以使用ThirdAI在您的個(gè)人設(shè)備上基本上免費(fèi)獲得所有這些。文章來源地址http://www.zghlxwxcb.cn/news/detail-615749.html
到了這里,關(guān)于神經(jīng)數(shù)據(jù)庫:用于使用 ChatGPT 構(gòu)建專用 AI 代理的下一代上下文檢索系統(tǒng) — (第 2/3 部分)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!