為了解決這個(gè)問題,用戶可以用自己的定制文檔來增強(qiáng)大型語言模型。本文將展示一個(gè)框架,通過使用文檔嵌入為用戶自己的數(shù)據(jù)提供ChatGPT或GPT-4(或任何其他大型語言模型)的場(chǎng)景。
為大型語言模型提供場(chǎng)景
大型語言模型對(duì)場(chǎng)景敏感。如果用戶給它一個(gè)簡(jiǎn)單的提示,就會(huì)根據(jù)它們從訓(xùn)練數(shù)據(jù)中提取的知識(shí)做出反應(yīng)。但是,如果在提示符前添加自定義信息,則可以修改它們的行為。
例如,如果用戶問ChatGPT這個(gè)問題,“使用運(yùn)行率的風(fēng)險(xiǎn)是什么?”,它會(huì)提供一個(gè)很長(zhǎng)的答案。
ChatGPT給出的一般性答案
但是,用戶可以提示ChatGPT根據(jù)特定文檔提供答案。在下面的例子中,問了ChatGPT同樣的問題,但是在提示符前加上了“根據(jù)以下文檔回答我的問題”,后面是來自Investopedia公司的一篇關(guān)于運(yùn)行率的文章。這一次,ChatGPT提供了一個(gè)不同的答案,從文章的文本中提取。
從文檔中給出ChatGPT場(chǎng)景
ChatGPT根據(jù)文檔場(chǎng)景進(jìn)行響應(yīng)
這種技術(shù)的價(jià)值是顯而易見的,特別是在場(chǎng)景非常重要的應(yīng)用程序中。但是,人工向提示添加場(chǎng)景是不切實(shí)際的,特別是有數(shù)千個(gè)文檔時(shí)。
假設(shè)企業(yè)有一個(gè)網(wǎng)站,該網(wǎng)站有數(shù)千個(gè)頁面,其中包含有關(guān)金融主題的豐富內(nèi)容,并且希望創(chuàng)建一個(gè)基于ChatGPT API的聊天機(jī)器人,以幫助用戶瀏覽這些內(nèi)容。用戶需要一種系統(tǒng)的方法來將其提示與正確的頁面相匹配,并使用大型語言模型來提供場(chǎng)景感知的響應(yīng)。這就是文檔嵌入的用武之地。
使用嵌入捕獲語義
在進(jìn)入嵌入之前,先為聊天機(jī)器人創(chuàng)建一個(gè)高級(jí)框架:
1.用戶輸入提示。
2.檢索與提示相關(guān)的最佳文檔。
3.創(chuàng)建一個(gè)新的提示,其中包括用戶的問題以及文檔中的場(chǎng)景。
4.給語言模型提供新制作的提示。
5.將答案返回給用戶。
為ChatGPT提供場(chǎng)景
從編程的角度來看,除了第2步之外,這個(gè)過程非常簡(jiǎn)單。那么如何決定哪個(gè)文檔與用戶的查詢相關(guān)?一個(gè)基本的答案是使用經(jīng)典的索引和關(guān)鍵字搜索。更好的解決方案是使用嵌入。
嵌入是一個(gè)數(shù)字向量(一個(gè)數(shù)字列表),它捕獲了一條信息的不同特征。嵌入的維度越多,它可以學(xué)習(xí)的特征就越多。
用戶可以對(duì)不同類型的數(shù)據(jù)使用嵌入。例如,在與圖像相關(guān)的任務(wù)中,嵌入可以表示不同物體的存在與否,不同顏色的強(qiáng)度,不同物體之間的距離等。
在文本中,嵌入捕獲文本的不同語義方。例如,單詞嵌入可能包含有關(guān)單詞是否與城市或國(guó)家、動(dòng)物物種、體育活動(dòng)、政治概念等相關(guān)的信息。在同樣的意義上,短語嵌入創(chuàng)建了單詞序列內(nèi)容的數(shù)字表示。通過測(cè)量?jī)蓚€(gè)嵌入向量之間的距離,可以得到它們對(duì)應(yīng)內(nèi)容的相似度。
通過訓(xùn)練機(jī)器學(xué)習(xí)模型(通常是深度神經(jīng)網(wǎng)絡(luò))在大量示例數(shù)據(jù)集上創(chuàng)建嵌入。在許多情況下,嵌入模型是用于最終應(yīng)用(例如,文本生成或圖像分類)的相同模型的修改版本。
為文檔創(chuàng)建嵌入數(shù)據(jù)庫
要將嵌入集成到聊天機(jī)器人工作流中,用戶需要一個(gè)包含所有文檔嵌入的數(shù)據(jù)庫。如果文檔已經(jīng)在數(shù)據(jù)庫中以純文本形式存在,那么就可以創(chuàng)建嵌入了。如果沒有,需要使用某種技術(shù),例如使用Python Beautiful Soup的網(wǎng)頁抓取來從網(wǎng)頁中提取文本。如果其文檔是PDF文件,例如研究論文,則需要從中提取文本(可以使用Python PyPDF庫執(zhí)行此操作)。
要為文檔創(chuàng)建嵌入,用戶可以使用在線服務(wù),例如OpenAI的嵌入API。用戶向API提供文檔的文本,它將返回其嵌入。OpenAI的嵌入有1536個(gè)維度,是最大的嵌入之一?;蛘呖梢允褂闷渌度敕?wù),例如Hugging Face或用戶自己的自定義Transformer模型。
一旦有了嵌入,就必須將它們存儲(chǔ)在“矢量數(shù)據(jù)庫”中。向量數(shù)據(jù)庫專門用于嵌入,并提供不同的功能,例如基于不同度量(歐幾里得距離,余弦相似度等)的查詢。
Facebook公司的Faiss是一個(gè)流行的開源矢量數(shù)據(jù)庫,它提供了一個(gè)豐富的Python庫來托管用戶自己的嵌入數(shù)據(jù)。另外,可以使用Pinecone,這是一個(gè)在線矢量數(shù)據(jù)庫系統(tǒng),它抽象了存儲(chǔ)和檢索嵌入的技術(shù)復(fù)雜性。
現(xiàn)在,用戶已經(jīng)擁有了創(chuàng)建針對(duì)自己的專有數(shù)據(jù)定制的大型語言模型應(yīng)用程序所需的一切?,F(xiàn)在可以像下面這樣改變應(yīng)用程序的邏輯:
1.用戶輸入提示
2.為用戶提示創(chuàng)建嵌入
3.在嵌入數(shù)據(jù)庫中搜索最接近提示嵌入的文檔
4.檢索文檔的實(shí)際文本
5.創(chuàng)建一個(gè)新的提示,其中包括用戶的問題以及文檔中的場(chǎng)景
6.給語言模型提供新制作的提示
7.將答案返回給用戶
8.獎(jiǎng)勵(lì):提供一個(gè)鏈接到文件,用戶可以進(jìn)一步獲取信息
使用嵌入和矢量數(shù)據(jù)庫檢索相關(guān)文檔
為了避免人工創(chuàng)建整個(gè)工作流,用戶可以使用LangChain,這是一個(gè)用于創(chuàng)建大型語言模型應(yīng)用程序的Python庫。LangChain支持不同類型的大型語言模型和嵌入式,包括OpenAI、Cohere、AI21Labs以及開源模型。它還支持不同的矢量數(shù)據(jù)庫,包括Pinecone和FAISS。它為不同類型的應(yīng)用程序提供了現(xiàn)成的模板,包括聊天機(jī)器人、問答和活動(dòng)代理。
關(guān)于嵌入的重要考慮
為了正確使用大型語言模型的嵌入,需要記住以下事項(xiàng):
·在用戶使用的嵌入框架中保持一致:確保在整個(gè)應(yīng)用程序中使用相同的嵌入模型。例如,如果用戶選擇OpenAI嵌入,需要確保使用相同的API和模型來創(chuàng)建文檔嵌入、用戶提示嵌入和搜索矢量數(shù)據(jù)庫。否則,將得到不一致的結(jié)果。
·令牌限制:每個(gè)大型語言模型都有令牌限制。例如,ChatGPT可以保留多達(dá)4096個(gè)令牌的場(chǎng)景。GPT-4有8000個(gè)和32000個(gè)令牌限制。許多開源模型限制為2048個(gè)令牌。這包括文檔場(chǎng)景、用戶提示和模型響應(yīng)。因此,用戶必須確保場(chǎng)景數(shù)據(jù)不會(huì)填滿大型語言模型的內(nèi)存。一個(gè)良好的經(jīng)驗(yàn)法則是將文檔限制為1000個(gè)令牌。如果文檔比這個(gè)大,可以將其分成幾個(gè)塊,每個(gè)部分之間有一點(diǎn)重疊(大約100個(gè)令牌)。
·使用多個(gè)文檔:用戶的回復(fù)不必局限于單個(gè)文檔。可以檢索嵌入與提示符相似的幾個(gè)文檔,并使用它們來獲取響應(yīng)。為了確保不會(huì)遇到令牌限制,可以為每個(gè)文檔分別提示模型。
為什么不微調(diào)大型語言模型呢?
為什么不用微調(diào)大型語言模型來代替場(chǎng)景嵌入?微調(diào)是一個(gè)很好的選擇,使用它取決于用戶的應(yīng)用程序和資源。通過適當(dāng)?shù)奈⒄{(diào),用戶可以從大型語言模型中獲得良好的結(jié)果,而無需提供場(chǎng)景數(shù)據(jù),從而降低了付費(fèi)API的令牌和推理成本。然而,微調(diào)可能是昂貴和復(fù)雜的。使用場(chǎng)景嵌入是一種簡(jiǎn)單的選擇,能夠以最小的成本和努力實(shí)現(xiàn)。
最后,如果用戶有一個(gè)良好的數(shù)據(jù)收集管道,可以通過根據(jù)其目的的微調(diào)模型來改進(jìn)系統(tǒng)。
關(guān)于企業(yè)網(wǎng)D1net(r5u5c.cn):
國(guó)內(nèi)主流的to B IT門戶,同時(shí)在運(yùn)營(yíng)國(guó)內(nèi)最大的甲方CIO專家?guī)旌椭橇敵黾吧缃黄脚_(tái)-信眾智(www.cioall.com)。同時(shí)運(yùn)營(yíng)19個(gè)IT行業(yè)公眾號(hào)(微信搜索D1net即可關(guān)注)
版權(quán)聲明:本文為企業(yè)網(wǎng)D1Net編譯,轉(zhuǎn)載需在文章開頭注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責(zé)任的權(quán)利。