五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

教程:基于 ChatGPT 構(gòu)建奧斯卡金像獎問答機器人

2023-07-29 22:04 作者:岱軍  | 我要投稿

本教程將引導(dǎo)您通過一個實際示例,使用 GPT 3.5 的檢索增強生成功能,根據(jù)自定義數(shù)據(jù)集回答問題。

翻譯自 Tutorial: Build a Q&A Bot for Academy Awards Based on ChatGPT 。

照片來自 Pixaba 的 Mirko Fabian

在之前的文章中,我介紹了檢索增強生成(Retrieval Augmented Generation,RAG)的概念,該方法用于為大型語言模型(Large Language Models,LLMs)提供上下文信息,以提高其響應(yīng)的準(zhǔn)確性。

本教程將帶您進行一個實際示例,展示如何使用 GPT 3.5 中的 RAG 功能來根據(jù)自定義數(shù)據(jù)集回答問題。由于 GPT 3.5 的訓(xùn)練截止日期為 2021 年,它無法回答基于最近事件的問題。因此,我們將使用與奧斯卡金像獎相關(guān)的數(shù)據(jù)集來實現(xiàn) RAG ,并讓 GPT 3.5 回答關(guān)于第 95 屆奧斯卡金像獎的問題,該獎項于 2023 年 3 月舉行。

在開始之前,請確保您擁有 OpenAI 的活躍賬號,并已將您的 API 密鑰填入 OPENAI_API_KEY 環(huán)境變量中。

第一步 - 準(zhǔn)備數(shù)據(jù)集

從 Kaggle 下載奧斯卡金像獎數(shù)據(jù)集,并將 CSV 文件移動到名為 "data" 的子目錄中。該數(shù)據(jù)集包含了 1927 年至 2023 年的所有奧斯卡金像獎的類別、提名和獲獎情況。我將 CSV 文件重命名為 "oscars.csv" 。

首先,導(dǎo)入 Pandas 庫并加載數(shù)據(jù)集:

數(shù)據(jù)集結(jié)構(gòu)良好,包含列標(biāo)題和表示每個類別詳情的行,包括演員/技術(shù)人員的姓名、電影名稱以及提名是否獲獎。

由于我們主要關(guān)注與 2023 年相關(guān)的獎項,讓我們將其過濾出來并創(chuàng)建一個新的 Pandas 數(shù)據(jù)幀。同時,我們還將把類別轉(zhuǎn)換為小寫,并刪除電影值為空的行。這樣有助于我們設(shè)計發(fā)送給 GPT 3.5 的上下文提示。

通過過濾和清洗后的數(shù)據(jù)集,我們將為數(shù)據(jù)幀添加一個新列,其中包含表示每個提名的完整句子。當(dāng)將這些完整句子發(fā)送給 GPT 3.5 時,它能夠在上下文中找到相關(guān)信息。

請注意,我們將值連接起來以生成完整的句子。例如,數(shù)據(jù)幀的前兩行中 “text” 列的值如下:

Austin Butler got nominated under the category, actor in a leading role, for the film Elvis but did not win

Colin Farrell got nominated under the category, actor in a leading role, for the film The Banshees of Inisherin but did not win

第二步 - 生成數(shù)據(jù)集的詞嵌入

現(xiàn)在,我們有了從數(shù)據(jù)集構(gòu)建的文本,讓我們將其轉(zhuǎn)換為詞嵌入。這是一個關(guān)鍵的步驟,因為嵌入模型生成的令牌將幫助我們執(zhí)行語義搜索,從數(shù)據(jù)集中檢索具有相似含義的句子。

在上面的步驟中,我們將嵌入模型設(shè)置為 "text-embedding-ada-002" ,然后使用 lambda 函數(shù)為數(shù)據(jù)幀添加一個名為 "embedding" 的新列。這與同一行中相應(yīng)的文本直接映射。

第三步 - 執(zhí)行搜索以檢索相似文本

有了每行生成的嵌入,我們現(xiàn)在可以使用一個簡單的技術(shù)稱為余弦相似度來比較兩個向量的相似性。

讓我們導(dǎo)入本步驟所需的模塊。

我們將創(chuàng)建一個幫助函數(shù)來執(zhí)行余弦相似度搜索。它將查詢轉(zhuǎn)換為嵌入,并將其與數(shù)據(jù)幀中的每個嵌入進行比較。函數(shù)將返回文本以及用于排名相似性的分?jǐn)?shù)。 top_n 參數(shù)定義要返回的句子數(shù)量。

讓我們通過發(fā)送關(guān)鍵字 "Lady Gaga" 來測試這個函數(shù)。目標(biāo)是從具有關(guān)鍵字引用的數(shù)據(jù)幀中獲取前三個值。

顯然,第一個值的得分為 0.821 ,最接近搜索?,F(xiàn)在我們可以將它注入到我們的提示中來增強上下文。

第四步 - 基于RAG構(gòu)建提示

我們想確保標(biāo)記數(shù)不超過模型支持的上下文長度。對于 GPT 3.5 ,上下文長度為 4K 。以下函數(shù)處理這一點。

讓我們創(chuàng)建輔助函數(shù),通過在數(shù)據(jù)幀中執(zhí)行相似性搜索的方式來輕松創(chuàng)建提示,并同時考慮標(biāo)記大小。

基于前一個函數(shù)生成的上下文,我們將創(chuàng)建一個調(diào)用 OpenAI API 的函數(shù)。

現(xiàn)在是時候向與第95屆奧斯卡金像獎相關(guān)的 GPT 3.5 提問了。


讓我們再試一次。

即使模型沒有關(guān)于最近事件的知識,該機器人似乎工作得很好。

您可以在下面找到完整的代碼:

在本教程的下一部分中,我們將探索如何使用向量數(shù)據(jù)庫來存儲、搜索和檢索詞嵌入。敬請關(guān)注。

教程:基于 ChatGPT 構(gòu)建奧斯卡金像獎問答機器人的評論 (共 條)

分享到微博請遵守國家法律
金乡县| 曲松县| 合水县| 奎屯市| 芜湖县| 扶绥县| 襄城县| 潮安县| 军事| 长春市| 永吉县| 崇义县| 松桃| 吐鲁番市| 焉耆| 秭归县| 嘉祥县| 轮台县| 荔波县| 聊城市| 仁布县| 衡东县| 长岭县| 镇雄县| 汶上县| 新兴县| 肥乡县| 鄂州市| 东港市| 晴隆县| 北宁市| 全椒县| 陇川县| 德清县| 甘南县| 封开县| 若羌县| 金平| 苍南县| 云和县| 西乌珠穆沁旗|