免費(fèi)建站網(wǎng)站網(wǎng)站開發(fā)需要的技術(shù)
一.?embedding
????????簡單來說,embedding就是用一個(gè)低維的向量表示一個(gè)物體,可以是一個(gè)詞,或是一個(gè)商品,或是一個(gè)電影等等。這個(gè)embedding向量的性質(zhì)是能使距離相近的向量對(duì)應(yīng)的物體有相近的含義,比如 Embedding(復(fù)仇者聯(lián)盟)和Embedding(鋼鐵俠)之間的距離就會(huì)很接近,但 Embedding(復(fù)仇者聯(lián)盟)和Embedding(亂世佳人)的距離就會(huì)遠(yuǎn)一些?! ?br /> ????????除此之外Embedding甚至還具有數(shù)學(xué)運(yùn)算的關(guān)系,比如Embedding(馬德里)-Embedding(西班牙)+Embedding(法國)≈Embedding(巴黎)
從另外一個(gè)空間表達(dá)物體,甚至揭示了物體間的潛在關(guān)系,上次體會(huì)這樣神奇的操作還是在學(xué)習(xí)傅里葉變換的時(shí)候,從某種意義上來說,Embedding方法甚至具備了一些本體論的哲學(xué)意義。
Embedding在大模型中的價(jià)值
前面說的其實(shí)都是Embedding在之前的價(jià)值。但是,大語言模型時(shí)代,例如ChatGPT這樣的模型流行之后,大家發(fā)現(xiàn)embedding有了新的價(jià)值,即解決大模型的輸入限制。
此前,OpenAI官方也發(fā)布了一個(gè)案例,即如何使用embedding來解決長文本輸入問題,我們DataLearner官方博客也介紹了這個(gè)教程:OpenAI官方教程:如何使用基于embeddings檢索來解決GPT無法處理長文本和最新數(shù)據(jù)的問題 | 數(shù)據(jù)學(xué)習(xí)者官方網(wǎng)站(Datalearner)
像 GPT-3 這樣的語言模型有一個(gè)限制,即它們可以處理的輸入文本量有限。這個(gè)限制通常在幾千到數(shù)萬個(gè)tokens之間,具體取決于模型架構(gòu)和可用的硬件資源。
這意味著對(duì)于更長的文本,例如整本書或長文章,可能無法一次將所有文本輸入到語言模型中。在這種情況下,文本必須被分成較小的塊或“片段”,可以由語言模型單獨(dú)處理。但是,這種分段可能會(huì)導(dǎo)致輸出的上下文連貫性和整體連貫性問題,從而降低生成文本的質(zhì)量。
這就是Embedding的重要性所在。通過將單詞和短語表示為高維向量,Embedding允許語言模型以緊湊高效的方式編碼輸入文本的上下文信息。然后,模型可以使用這些上下文信息來生成更連貫和上下文適當(dāng)?shù)妮敵鑫谋?#xff0c;即使輸入文本被分成多個(gè)片段。
此外,可以在大量文本數(shù)據(jù)上預(yù)訓(xùn)練Embedding,然后在小型數(shù)據(jù)集上進(jìn)行微調(diào),這有助于提高語言模型在各種自然語言處理應(yīng)用程序中的準(zhǔn)確性和效率。
如何基于Embedding讓大模型解決長文本(如PDF)的輸入問題?
這里我們給一個(gè)案例來說明如何用Embedding來讓ChatGPT回答超長文本中的問題。
如前所述,大多數(shù)大語言模型都無法處理過長的文本。除非是GPT-4-32K,否則大多數(shù)模型如ChatGPT的輸入都很有限。假設(shè)此時(shí)你有一個(gè)很長的PDF,那么,你該如何讓大模型“讀懂”這個(gè)PDF呢?
首先,你可以基于這個(gè)PDF來創(chuàng)建向量embedding,并在數(shù)據(jù)庫中存儲(chǔ)(當(dāng)前已經(jīng)有一些很不錯(cuò)的向量數(shù)據(jù)庫了,如Pinecone)。
接下來,假設(shè)你想問個(gè)問題“這個(gè)文檔中關(guān)于xxx是如何討論的?”。那么,此時(shí)你有2個(gè)向量embedding了,一個(gè)是你的問題embedding,一個(gè)是之前PDF的embedding。此時(shí),你應(yīng)該基于你的問題embedding,去向量數(shù)據(jù)庫中搜索PDF中與問題embedding最相似的embedding。然后,把你的問題embedding和檢索的得到的最相似的embedding一起給ChatGPT,然后讓ChatGPT來回答。
當(dāng)然,你也可以針對(duì)問題和檢索得到的embedding做一些提示工程,來優(yōu)化ChatGPT的回答。
二、大模型
機(jī)器學(xué)習(xí)基礎(chǔ)
深度學(xué)習(xí)
通過構(gòu)建和訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)和提取數(shù)據(jù)中的特征,從而實(shí)現(xiàn)高度自動(dòng)化和準(zhǔn)確性能的模型訓(xùn)練和預(yù)測。
深度學(xué)習(xí)和大模型:?大模型技術(shù)通常與深度學(xué)習(xí)相結(jié)合,因?yàn)樯疃葘W(xué)習(xí)網(wǎng)絡(luò)通常具有大量的參數(shù)和復(fù)雜的結(jié)構(gòu)。大模型技術(shù)通過增加模型的規(guī)模和容量,例如增加網(wǎng)絡(luò)層數(shù)、神經(jīng)元的數(shù)量或卷積核的大小,以增強(qiáng)模型的表達(dá)能力和學(xué)習(xí)性能。大模型技術(shù)還包括優(yōu)化算法和訓(xùn)練策略,以有效地訓(xùn)練和優(yōu)化這些龐大的深度學(xué)習(xí)模型。
大模型概念
-
預(yù)訓(xùn)練是指在大規(guī)模的未標(biāo)記數(shù)據(jù)上進(jìn)行的初始化模型訓(xùn)練階段。模型通過對(duì)大量的文本數(shù)據(jù)進(jìn)行自監(jiān)督學(xué)習(xí),學(xué)習(xí)到語言的各種結(jié)構(gòu)和表達(dá)方式。預(yù)訓(xùn)練的目標(biāo)是讓模型能夠在下游任務(wù)中具有更好的理解和表達(dá)能力。預(yù)訓(xùn)練通常是通過自編碼器或掩碼語言建模的方式進(jìn)行,其中模型要根據(jù)上下文預(yù)測缺失的詞或片段。
-
微調(diào):
微調(diào)是在預(yù)訓(xùn)練完成后,將預(yù)訓(xùn)練模型應(yīng)用于特定任務(wù)并進(jìn)行有監(jiān)督的訓(xùn)練的過程。在微調(diào)階段,模型使用標(biāo)記的訓(xùn)練數(shù)據(jù)進(jìn)行進(jìn)一步的訓(xùn)練,以適應(yīng)特定任務(wù)的要求。微調(diào)以較低的學(xué)習(xí)率進(jìn)行,以避免過度調(diào)整預(yù)訓(xùn)練模型的參數(shù),從而保留預(yù)訓(xùn)練模型所學(xué)到的知識(shí)。通常,微調(diào)的數(shù)據(jù)集規(guī)模相對(duì)較小,因此可以使用更少的計(jì)算資源和時(shí)間來完成。 -
語料:
語料是指用于模型訓(xùn)練的文本數(shù)據(jù)集。對(duì)于預(yù)訓(xùn)練大模型來說,用于預(yù)訓(xùn)練的語料庫通常是非常龐大的,例如大規(guī)模的網(wǎng)頁文本、維基百科、書籍、新聞等。預(yù)訓(xùn)練模型需要處理大量的語料來學(xué)習(xí)普遍的語言知識(shí)。對(duì)于微調(diào)階段,語料可以是特定任務(wù)的標(biāo)記訓(xùn)練集。
預(yù)訓(xùn)練、微調(diào)和語料是在大型NLP模型中實(shí)現(xiàn)強(qiáng)大性能的重要因素。通過預(yù)訓(xùn)練技術(shù),模型可以從大量無監(jiān)督的數(shù)據(jù)中學(xué)習(xí)語言特征,從而提高模型的泛化能力。通過微調(diào)過程,模型可以將預(yù)訓(xùn)練知識(shí)轉(zhuǎn)移到特定任務(wù)中,并根據(jù)特定任務(wù)的訓(xùn)練數(shù)據(jù)進(jìn)行細(xì)化調(diào)整。同時(shí),使用多樣化且廣泛的語料庫可以提高模型對(duì)不同領(lǐng)域和上下文的理解能力。
需要注意的是,預(yù)訓(xùn)練和微調(diào)的過程是基于大量的計(jì)算資源和大規(guī)模的數(shù)據(jù)集進(jìn)行的。這也導(dǎo)致了建立和訓(xùn)練大型模型的門檻相對(duì)較高,并且模型可能帶來較大的計(jì)算和存儲(chǔ)要求。
三、LangChain
參考:什么是LangChain - 知乎
LangChain是一個(gè)開源框架,允許從事人工智能的開發(fā)者將例如GPT-4的大語言模型與外部計(jì)算和數(shù)據(jù)來源結(jié)合起來。該框架目前以Python或JavaScript包的形式提供。
假設(shè),你想從你自己的數(shù)據(jù)、文件中具體了解一些情況(可以是一本書、一個(gè)pdf文件、一個(gè)包含專有信息的數(shù)據(jù)庫)。LangChain可以將GPT-4和這些外部數(shù)據(jù)連接起來,甚至可以讓LangChain幫助你采取你想采取的行動(dòng),例如發(fā)一封郵件。
三個(gè)重要概念:
- Components
-LLM Wrapper:包裝器,允許我們連接到大語言模型,例如GPT-4或HuggingFace的模型。
-Prompt Templates:提示模板,使我們不必對(duì)文本進(jìn)行硬編碼,而文本是LLM的輸入。
-Indexes for relevant information retrieval:相關(guān)內(nèi)容的索引,允許我們?yōu)長LM提取相關(guān)信息。
- Chains
允許我們將多個(gè)組件組合在一起,以解決一個(gè)特定的任務(wù),并建立一個(gè)完整的LLM應(yīng)用程序。
- Agents
允許LLM與外部API互動(dòng)。
二、 原理
將你的文件切成小塊,把這些小塊存儲(chǔ)在一個(gè)矢量數(shù)據(jù)庫中,這些塊被存儲(chǔ)為embedding,意味著它們是文本的矢量表示。
pipeline執(zhí)行流程:
>>一個(gè)用戶提出了初始問題。
>>然后,這個(gè)問題被發(fā)送到大語言模型,并將該問題的向量表示在向量數(shù)據(jù)庫中做相似性搜索。
>>獲取相關(guān)的信息塊,將其反饋給大語言模型。
>>大語言模型通過初始問題和來自矢量數(shù)據(jù)庫的相關(guān)信息,提供一個(gè)答案或采取一個(gè)行動(dòng)。