最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)建奧斯卡金像獎問答機器人的評論 (共 條)

分享到微博請遵守國家法律
集贤县| 巫溪县| 科尔| 三明市| 鹤岗市| 临洮县| 山丹县| 新余市| 温宿县| 双柏县| 绿春县| 商丘市| 黄大仙区| 凤凰县| 中西区| 和田县| 留坝县| 桑日县| 休宁县| 满城县| 沙坪坝区| 嘉兴市| 满城县| 孟村| 平遥县| 沁水县| 胶南市| 长宁区| 贺州市| 和林格尔县| 钦州市| 长寿区| 绥化市| 法库县| 弥勒县| 永济市| 怀仁县| 柘城县| 黄冈市| 登封市| 吴江市|