本博客是一系列文章中的第一篇,解釋了為什么使用大型語言模型(LLM)部署專用領(lǐng)域聊天機(jī)器人的主流管道成本太高且效率低下。在第一篇文章中,我們將討論為什么矢量數(shù)據(jù)庫盡管最近流行起來,但在實(shí)際生產(chǎn)管道中部署時(shí)從根本上受到限制。在下面的文章中,我們說明了我們?cè)?/span>ThirdAI上發(fā)布的最新產(chǎn)品如何解決這些缺點(diǎn),并實(shí)現(xiàn)以低成本在生產(chǎn)中部署LLM驅(qū)動(dòng)的檢索的愿景。
動(dòng)機(jī)
專用領(lǐng)域聊天機(jī)器人是 ChatGPT 最受歡迎的企業(yè)應(yīng)用程序。具有特定知識(shí)庫的自動(dòng)問答功能可以使任何雇主的員工提高工作效率,同時(shí)節(jié)省員工寶貴的時(shí)間。舉例來說,如果員工與客戶互動(dòng),那么觸手可及的與客戶的所有歷史互動(dòng)將非常方便。如果你想為一個(gè)大型代碼庫做出貢獻(xiàn),如果你能在細(xì)粒度級(jí)別快速掌握任何現(xiàn)有功能,它可以讓你非常高效。這樣的例子不勝枚舉。
ChatGPT 是一個(gè)很棒的對(duì)話工具,它根據(jù)互聯(lián)網(wǎng)上發(fā)現(xiàn)的大量文本信息進(jìn)行了訓(xùn)練。如果你問ChatGPT關(guān)于互聯(lián)網(wǎng)的一般知識(shí),它可以很好地回答。但是,它有一些明顯的局限性。ChatGPT 無法回答那些答案不屬于其訓(xùn)練數(shù)據(jù)中的問題。因此,如果您問 ChatGPT,“誰贏得了 2022 年足球世界杯? 它將無法回答,因?yàn)樗?/span> 2021 年 9 月之后沒有接受過任何信息的訓(xùn)練。企業(yè)坐擁一堆非常專業(yè)、特有且不斷更新的信息語料庫,而開箱即用的 ChatGPT 不會(huì)成為該知識(shí)庫的查詢助手。更糟糕的是,眾所周知,在沒有適當(dāng)保護(hù)機(jī)制的情況下,對(duì) ChatGPT 的查詢可能會(huì)導(dǎo)致虛構(gòu)的答案。
幸運(yùn)的是,有著大量措施正圍繞使用提示解決上述兩個(gè)缺陷。
什么是提示?
提示是一種新術(shù)語,用于告訴會(huì)話代理回答問題所需的所有特定信息。然后,它依靠座席的對(duì)話能力來生成精美的答案。如果你想讓 ChatGPT 回答一個(gè)不屬于其訓(xùn)練集的特定問題,你必須基本上讓 ChatGPT 知道它需要知道的所有信息,少于 4096 個(gè)令牌(或大約 3200 個(gè)單詞,GPT-4的單詞上限達(dá)到了25000個(gè)),然后用給定的“上下文”問它同樣的問題。
無論這聽起來多么愚蠢,提示仍然是一種有價(jià)值的功能。像人類那樣進(jìn)行自動(dòng)化的對(duì)話是我們最近在生成式人工智能方面取得顯著進(jìn)步的罕見壯舉。實(shí)際上,構(gòu)建查詢助手可以歸結(jié)為經(jīng)典問題,即“檢索與查詢相關(guān)的信息”,然后使用 ChatGPT 的功能生成基于檢索到的信息的對(duì)話答案。我們可以看到,這會(huì)自動(dòng)在幻覺周圍設(shè)置護(hù)欄,因?yàn)闀?huì)話代理被迫將答案接地到檢索到的文本中,而這是知識(shí)庫的子集。
最難的部分是總是大海撈針!
嵌入和向量數(shù)據(jù)庫生態(tài)系統(tǒng):在任何給定的語料庫上使用 ChatGPT 構(gòu)建接地氣的查詢助手。
使用Langchain構(gòu)建了一系列聊天機(jī)器人應(yīng)用程序,您可以在其中引入任何文本語料庫并使用ChatGPT與之交互。所有這些應(yīng)用程序都建立在基于嵌入的標(biāo)準(zhǔn)信息檢索過程之上。
該過程分為兩個(gè)主要階段。第一階段是預(yù)處理步驟,用于生成嵌入向量并構(gòu)建用于近鄰搜索的向量索引。生成索引后,下一階段是查詢。我們簡(jiǎn)要介紹一下這兩個(gè)階段。
預(yù)處理步驟:此步驟獲取所有原始文本并構(gòu)建可以有效搜索的索引。下圖描述了該過程。
預(yù)處理步驟概述:您需要同時(shí)將文本和向量嵌入存儲(chǔ)在數(shù)據(jù)庫中,并以向量作為 KEY。該過程需要LLM將文本塊轉(zhuǎn)換為向量。LLM 在查詢時(shí)候的邏輯應(yīng)該是相同的。
注意:?對(duì)LLM的任何更改或更新都需要重新索引Vector DB中的所有內(nèi)容。您需要完全相同的LLM進(jìn)行查詢。?不允許更改尺寸。?
隱私風(fēng)險(xiǎn):所有文本都需要轉(zhuǎn)到嵌入模型和向量數(shù)據(jù)庫。
昂貴:?完整文本語料庫中的每個(gè)標(biāo)記都轉(zhuǎn)到LLM和Vector DB。
假設(shè)我們有一個(gè)文本文檔語料庫來準(zhǔn)備問答。第一步是將語料庫(或文本文檔)分解成小塊文本,我們稱之為塊(該過程也稱為分塊)。然后將每個(gè)塊饋送到經(jīng)過訓(xùn)練的語言模型(如 BERT 或 GPT)以生成向量表示,也稱為嵌入。然后將文本嵌入對(duì)存儲(chǔ)在矢量數(shù)據(jù)庫或 <KEY, VALUE> 存儲(chǔ)中,其中 KEY 是矢量嵌入,VALUE 是文本塊。矢量數(shù)據(jù)庫的獨(dú)特之處在于能夠有效地對(duì)矢量執(zhí)行近似近鄰 (ANN) 搜索以進(jìn)行 KEY 匹配,而不是在傳統(tǒng)數(shù)據(jù)庫中執(zhí)行精確的 KEY 匹配。
- 注意:?對(duì)LLM的任何更改或更新都需要重新索引Vector DB中的所有內(nèi)容。您需要完全相同的LLM進(jìn)行查詢。?不允許更改尺寸。
- 隱私風(fēng)險(xiǎn):所有文本都必須轉(zhuǎn)到嵌入模型和矢量數(shù)據(jù)庫。如果兩者都是不同的托管服務(wù),則可以在兩個(gè)不同的位置創(chuàng)建 COMPLETE 數(shù)據(jù)的兩個(gè)副本。
- 注意成本:?完整文本語料庫中的每個(gè)標(biāo)記都轉(zhuǎn)到LLM和Vector DB。將來,如果您通過微調(diào),升級(jí)模型甚至增加維度來更新LLM,則需要重新索引并再次支付全部費(fèi)用。
- 使用托管服務(wù)進(jìn)行成本估算:讓我們適度估計(jì)一下使用所有Pubmed摘要的知識(shí)庫來構(gòu)建聊天機(jī)器人,以構(gòu)建醫(yī)療保健問答應(yīng)用程序。Pubmed有大約35萬個(gè)摘要,大約需要100M個(gè)嵌入的塊。假設(shè)每塊 100 個(gè)代幣,我們將有大約 25B 個(gè)代幣。即使我們使用Pinecone的適度矢量數(shù)據(jù)庫計(jì)劃(性能)和OpenAI的更便宜的嵌入模型價(jià)格(Babbage V1),我們也在考慮向量數(shù)據(jù)庫每月大約7000-8000美元的成本。此費(fèi)用不包括任何倉儲(chǔ)費(fèi)。此外,根據(jù)代幣數(shù)量生成嵌入的一次性成本為?12500?美元。每次更改嵌入模型時(shí),我們也需要支付12500美元。如果我們每月進(jìn)行 10億次查詢,那么我們每月至少支付 25000 美元的額外經(jīng)常性費(fèi)用,用于使用 OpenAI 進(jìn)行查詢嵌入服務(wù)和響應(yīng)生成。值得注意的是,PubMed是較小的公共檢索數(shù)據(jù)集之一。企業(yè)可能使用在10-100倍大的語料庫之上進(jìn)行上述工作。
查詢階段:嵌入和使用ANN搜索,然后通過提示生成
此步驟采用用戶鍵入的問題,在矢量數(shù)據(jù)庫中搜索與問題“最相關(guān)”的文本內(nèi)容,然后根據(jù)該信息征求GenAI的響應(yīng)。下圖總結(jié)了這些步驟。
問答階段:?對(duì)于索引文本塊時(shí)使用的問題嵌入,您需要完全相同的 LLM。索引后無法修改 LLM。任何訓(xùn)練、調(diào)優(yōu)都將使搜索過程無法使用,因?yàn)?ANN over KEY 可能不一致。如果要更新或更改LLM,則需要重新索引。注意:查詢延遲是嵌入延遲 + 矢量數(shù)據(jù)庫查詢延遲 + GenAI 的文本生成延遲之和。
對(duì)于問答階段,這個(gè)過程很簡(jiǎn)單。我們首先使用用于索引向量數(shù)據(jù)庫的相同 LLM 生成查詢的向量嵌入。此嵌入用作查詢 KEY,并執(zhí)行近似近鄰搜索 (ANN) 以查找數(shù)據(jù)庫中最接近查詢嵌入的幾個(gè)向量。接近度的度量是預(yù)定義和固定的,通常是余弦相似性。識(shí)別最接近的向量后,其相應(yīng)的文本塊用作與問題相關(guān)的信息。然后,相關(guān)信息和問題通過提示提供給生成AI,如ChatGPT,以生成響應(yīng)。
- 注意:查詢延遲是三個(gè)延遲的總和:嵌入問題文本延遲 + 向量數(shù)據(jù)庫檢索延遲 + GenAI 的文本響應(yīng)生成延遲。如果您使用多個(gè)托管服務(wù)和不同的微服務(wù),請(qǐng)準(zhǔn)備好等待至少數(shù)百毫秒才能獲得答案。顯然,對(duì)于搜索引擎、電子商務(wù)和其他延遲關(guān)鍵型應(yīng)用程序來說,這太慢了,其中超過 100 毫秒的延遲會(huì)導(dǎo)致糟糕的用戶體驗(yàn)。這是一篇亞馬遜博客,介紹了每 100 毫秒延遲如何花費(fèi) 1% 的銷售額。
- 成本:如上一節(jié)所述,一旦數(shù)據(jù)位于外部托管服務(wù)上,查詢成本可能會(huì)很高并被鎖定。
已知嵌入和矢量搜索的基本限制:為什么現(xiàn)代信息檢索智慧提倡學(xué)習(xí)索引?
除了上面提到的延遲、成本、更新模型的不靈活性和隱私等問題外,還有一個(gè)根本的缺點(diǎn),即使用基于余弦相似性的ANN(文本檢索)斷開了嵌入過程(KEY生成)的連接。
一個(gè)假設(shè)和Andrej Karpathy最近的實(shí)驗(yàn)比較接近:整個(gè)生態(tài)系統(tǒng)背后的隱含假設(shè)是向量嵌入之間的余弦相似性在檢索相關(guān)文本。?眾所周知,可能有更好的選擇。這些LLM沒有針對(duì)余弦相似性檢索進(jìn)行微調(diào),其他相似性函數(shù)可能工作得更好。這是Andrej Karpathy的帖子和他的筆記本,以及關(guān)于他如何發(fā)現(xiàn)基于SVM的相似性更好。
深度學(xué)習(xí)革命告訴我們,聯(lián)合優(yōu)化的檢索系統(tǒng)總是比嵌入然后ANN的斷開連接的過程更好,在ANN過程中,ANN過程完全忽略了嵌入部分,反之亦然。
因此,如果矢量搜索生態(tài)系統(tǒng)的最終目標(biāo)是為所提出的問題檢索“相關(guān)文本”,為什么有兩個(gè)互不關(guān)聯(lián)的過程?為什么不有一個(gè)統(tǒng)一的學(xué)習(xí)系統(tǒng),在給定問題文本時(shí)返回“最相關(guān)”的文本?難怪Andrej發(fā)現(xiàn)學(xué)習(xí)的SVM比簡(jiǎn)單的點(diǎn)積檢索更好。近五年來,信息檢索社區(qū)一直在構(gòu)建這種聯(lián)合優(yōu)化的嵌入和檢索系統(tǒng)。
神經(jīng)信息檢索系統(tǒng)最有效的形式是學(xué)習(xí)索引。在本博客的第 2/3 部分中,我們將回顧學(xué)習(xí)索引并討論行業(yè)中以前部署的學(xué)習(xí)系統(tǒng)。我們將介紹神經(jīng)數(shù)據(jù)庫,這是一個(gè)端到端的學(xué)習(xí)索引系統(tǒng),它完全繞過了昂貴而繁瑣的高維近鄰搜索向量。文章來源:http://www.zghlxwxcb.cn/news/detail-620253.html
在最后一部分(第 3/3 部分),我們將討論 ThirdAI 的生產(chǎn)上使用的神經(jīng)數(shù)據(jù)庫 API 及其與 Langchain 和 ChatGPT 的集成。我們的解決方案完美避開了嵌入過程以及矢量數(shù)據(jù)庫檢索的昂貴、緩慢和嚴(yán)格的限制!文章來源地址http://www.zghlxwxcb.cn/news/detail-620253.html
到了這里,關(guān)于理解構(gòu)建LLM驅(qū)動(dòng)的聊天機(jī)器人時(shí)的向量數(shù)據(jù)庫檢索的局限性 - (第1/3部分)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!