利用“檢索增強(qiáng)生成”技術(shù)為大語言模型注入新鮮元素
像 GPT 這樣的大型語言模型是在大型語料庫數(shù)據(jù)上進(jìn)行離線訓(xùn)練的。這使得模型對(duì)于在它們訓(xùn)練之后生成的任何數(shù)據(jù)一無所知。本文介紹了如何對(duì)它們進(jìn)行更新。

圖片來自 Pixabay 的 Penny 。
基礎(chǔ)模型,包括像 GPT 這樣的大型語言模型(LLMs),通常是在大型語料庫數(shù)據(jù)上進(jìn)行離線訓(xùn)練的。這使得模型對(duì)于在它們訓(xùn)練之后生成的任何數(shù)據(jù)一無所知。
此外,由于基礎(chǔ)模型是在公開可用的通用語料庫數(shù)據(jù)上進(jìn)行訓(xùn)練的,它們?cè)谔囟I(lǐng)域的任務(wù)中效果較差。檢索增強(qiáng)生成(Retrieval Augmented Generation,RAG)是一種技術(shù),可以從基礎(chǔ)模型外部檢索數(shù)據(jù),并將相關(guān)檢索到的數(shù)據(jù)注入到上下文中,以增強(qiáng)提示信息。
RAG 比預(yù)訓(xùn)練或微調(diào)基礎(chǔ)模型更具成本效益和高效性。它是用于使 LLMs “接地”的技術(shù)之一,能夠提供與特定用例相關(guān)且相關(guān)的信息,以確保響應(yīng)的質(zhì)量和準(zhǔn)確性。這對(duì)于減少 LLMs 中的錯(cuò)誤回答非常關(guān)鍵。
在本文中,我們將仔細(xì)探討如何使用 RAG 來引入特定領(lǐng)域的知識(shí),并應(yīng)用于 LLMs 中。
為什么要實(shí)施 RAG ?
讓我們考慮一個(gè)簡(jiǎn)單的場(chǎng)景,您向 ChatGPT 提問關(guān)于第 95 屆奧斯卡獎(jiǎng)(Academy Awards)。由于宣布的日期在 2023 年 3 月,而 ChatGPT 的訓(xùn)練截止日期為 2021 年 9 月,您會(huì)得到一個(gè)典型的道歉回答。

然而,如果在詢問同樣的問題之前給 ChatGPT 一些上下文,它將能夠以有意義的答案回復(fù)。
讓我們復(fù)制并粘貼 Good Morning America 網(wǎng)站上與第 95 屆奧斯卡獎(jiǎng)相關(guān)的簡(jiǎn)介,這將為提示“注入”額外的上下文。

我們的提示現(xiàn)在如下:

正如我們所看到的,那個(gè)簡(jiǎn)單的簡(jiǎn)介對(duì) LLM 對(duì)問題的回答產(chǎn)生了重大影響。根據(jù)支持的上下文長(zhǎng)度,我們可以向 LLM 提供額外的信息,使其了解特定主題。
盡管我們手動(dòng)復(fù)制和粘貼,但實(shí)質(zhì)上我們實(shí)施了一個(gè)基本的 RAG 機(jī)制,以從 ChatGPT 獲取我們想要的結(jié)果。
在企業(yè)環(huán)境中,LLM 可能需要從各種非結(jié)構(gòu)化和結(jié)構(gòu)化數(shù)據(jù)源中檢索信息。因此,復(fù)制和粘貼上下文以補(bǔ)充提示不是一個(gè)可行的選擇。這就是 RAG 提供一個(gè)框架和藍(lán)圖,以構(gòu)建特定領(lǐng)域的生產(chǎn)級(jí) LLM 應(yīng)用的地方。
RAG 框架
在 RAG 中用于增強(qiáng)提示的外部數(shù)據(jù)可以來自不同的來源,包括文檔庫、數(shù)據(jù)庫和 API 。

第一步:提示
用戶在此交互中首次為 ChatGPT 提供提示。提示可能包含用戶期望在輸出中得到的簡(jiǎn)要描述。
第二步:上下文搜索
這是最關(guān)鍵的一步,通過一個(gè)外部程序來增強(qiáng)提示,該程序負(fù)責(zé)從外部數(shù)據(jù)源搜索和檢索上下文信息。這可能包括查詢關(guān)系數(shù)據(jù)庫,基于關(guān)鍵詞搜索一組索引文檔,或調(diào)用 API 從遠(yuǎn)程或外部數(shù)據(jù)源檢索數(shù)據(jù)。
第三步:提示增強(qiáng)
一旦生成上下文,它將被注入到原始提示中進(jìn)行增強(qiáng)?,F(xiàn)在,用戶的查詢中包含了附加的包含事實(shí)數(shù)據(jù)的信息。
第四步:推理
LLM 收到帶有附加上下文和用戶原始查詢的豐富提示。這顯著增加了模型的準(zhǔn)確性,因?yàn)樗梢栽L問事實(shí)數(shù)據(jù)。
第五步:回復(fù)
LLM 將帶有事實(shí)正確信息的回復(fù)發(fā)送回聊天機(jī)器人。
詞嵌入和向量數(shù)據(jù)庫在 RAG 中的作用
雖然上述框架解釋了實(shí)施 RAG 的高級(jí)方法,但沒有討論實(shí)現(xiàn)細(xì)節(jié)。
在執(zhí)行搜索和檢索的關(guān)鍵步驟之一是根據(jù)輸入查詢進(jìn)行語義搜索,以篩選具有相似含義的詞匯和句子。為此,我們必須利用詞嵌入模型,將文本轉(zhuǎn)換為一組向量。當(dāng)源數(shù)據(jù)和提示基于相同的詞嵌入模型進(jìn)行向量化時(shí),我們可以執(zhí)行語義搜索,匹配具有相似含義的句子和短語。
由于將大型數(shù)據(jù)語料庫基于詞嵌入轉(zhuǎn)換為向量對(duì)于每個(gè)查詢來說是昂貴的,因此生成它們一次并將它們存儲(chǔ)在數(shù)據(jù)庫中是個(gè)不錯(cuò)的主意。向量數(shù)據(jù)庫是一種新的數(shù)據(jù)庫類別,用于存儲(chǔ)向量并執(zhí)行相似性搜索。隨著新的文檔和數(shù)據(jù)庫添加到流程中,它們可以被轉(zhuǎn)換成向量并存儲(chǔ)在向量數(shù)據(jù)庫中。
在本系列的下一部分中,我們將實(shí)現(xiàn) RAG 來增強(qiáng)發(fā)送到 OpenAI 的提示。請(qǐng)繼續(xù)關(guān)注。
本文使用 文章同步助手 同步