使用Meta釋出的模型,實作Chat GPT - Part 5

更新於 2024/05/13閱讀時間約 7 分鐘

延續使用Meta釋出的模型,實作Chat GPT - Part 4,我們現在遇到一個問題:語言模型回答的資訊不是我想要的。

於是我參照ChatGPT回答不是你要的怎麼辦?,想使用低成本的技術:RAG,來改善這問題。

以下開始實作,首先引入一個重量級工具包,它叫做LangChain,這是做語言模型AI在實作上的一個省力工具。

from langchain.llms import HuggingFacePipeline

LLM = HuggingFacePipeline(pipeline = Generate_Text)

這部分程式如下圖,我們一樣按下「紅色框框」處來執行,大約一秒鐘後,執行完成,「紅色框框」處會有綠色提示 (0秒處)。

raw-image

然後我們回顧ChatGPT回答不是你要的怎麼辦?,RAG的核心思想就是索引外部資料庫,來當作我的大腦,往後我希望我的語言模型在回答問題之前可以先來這個大腦知識區索引一下資料。

我同時將兩種知識索引的程式都列出來給大家使用,一種是以網站資料為知識索引,另一種是以PDF文件為知識索引,大家可以二選一執行。

  • 網站為知識索引
# ------------------- Web Version -------------------
from langchain.document_loaders import WebBaseLoader

Web_Links = ['https://1688.com']

Loader = WebBaseLoader(Web_Links)
Documents = Loader.load()

from langchain.text_splitter import RecursiveCharacterTextSplitter
Text_Splitter = RecursiveCharacterTextSplitter(chunk_size = 1000, chunk_overlap = 30)
All_Splits = Text_Splitter.split_documents(Documents)

這部分程式如下圖,我們一樣按下「紅色框框」處來執行,大約兩秒後,執行完成,「紅色框框」處會有綠色提示 (2秒處)。

raw-image
  • PDF文件為知識索引
# ------------------- Single PDF Version -------------------

from langchain.document_loaders import PyPDFLoader

from google.colab import files
uploaded = files.upload()
Loader = PyPDFLoader('1688.pdf')
Documents = Loader.load()

from langchain.text_splitter import RecursiveCharacterTextSplitter
Text_Splitter = RecursiveCharacterTextSplitter(chunk_size = 500, chunk_overlap = 100)
All_Splits = Text_Splitter.split_documents(Documents)

這部分我們需要準備一個檔名叫做「1688.pdf」的文件,我的作法是直接到阿里巴巴首頁https://1688.com,然後按右鍵轉存pdf,這樣我就有該網頁的pdf檔案了。

這部分程式如下圖,我們一樣按下「紅色框框」處來執行,大約43秒後,執行完成,「紅色框框」處會有綠色提示 (43秒處)。

raw-image

然後我希望不論透過上述哪種方式得到的知識都能存在一個向量資料庫,於是我要做Embedding,然後使用FAISS來儲存,它是Facebook開發的技術,全名叫做Facebook AI Similarity Search。

from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS

Model_Name = 'sentence-transformers/all-mpnet-base-v2'
Model_Kwargs = {"device": "cuda"}

Embedding = HuggingFaceEmbeddings(model_name = Model_Name, model_kwargs = Model_Kwargs)

VectorStore = FAISS.from_documents(All_Splits, Embedding)

這部分程式如下圖,我們一樣按下「紅色框框」處來執行,大約8秒後,執行完成,「紅色框框」處會有綠色提示 (8秒處)。

raw-image

接著把我們的大型語言模型與上述的向量資料庫一起拼湊成RAG技術,作法如下:

from langchain.chains import ConversationalRetrievalChain

RAG = ConversationalRetrievalChain.from_llm(LLM,
VectorStore.as_retriever(),
return_source_documents = True)

這部分程式如下圖,我們一樣按下「紅色框框」處來執行,大約一秒後,執行完成,「紅色框框」處會有綠色提示 (1秒處)。

raw-image

最後我們就可以問問題囉,我一樣問什麼是1688 ?

Chat_History = []

Query = "What is 1688 ?"

Result = RAG({"question": Query, "chat_history": Chat_History})
print(Result['answer'])

Chat_History.append((Query, Result['answer']))

這部分程式如下圖,我們一樣按下「紅色框框」處來執行,大約22秒後,執行完成,「紅色框框」處會有綠色提示 (22秒處)。

raw-image

最後得到的回答是:

raw-image

可以回顧一下使用Meta釋出的模型,實作Chat GPT - Part 4,之前回答我1688和威士忌有關係,加入RAG技術之後,他終於回答我正確答案:1688是一個電商平台,叫做阿里巴巴。

由上述實作可以看到引入大腦知識可以顯著讓大型語言模型得到你想要的答案的機率。

avatar-img
168會員
444內容數
這裡將提供: AI、Machine Learning、Deep Learning、Reinforcement Learning、Probabilistic Graphical Model的讀書筆記與演算法介紹,一起在未來AI的世界擁抱AI技術,不BI。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Learn AI 不 BI 的其他內容
在使用Meta釋出的模型,實作Chat GPT - Part 3中我們已經建立好大型語言模型遇到哪些「字串」要停止輸出的列表,現在我們將它製作成一個物件,對應程式如下: from transformers import StoppingCriteria, StoppingCriteriaList
延續使用Meta釋出的模型,實作Chat GPT - Part 2 我們已經確定可以進入HuggingFace之後,就要來載入模型,其對應程式為: Model_Config = transformers.AutoConfig.from_pretrained( Mode
背景 各位ChatGPT使用者是否常常發生以下狀況:ChatGPT跟你雞同鴨講。 原因就出在ChatGPT當初在訓練時,在你所處的專業Domain並沒有足夠的訓練資料。 針對這種情況要怎麼辦呢? 今天將介紹幾種分法來解決,並分析各種方法的優劣。 方法羅列 提示工程 (Prompt E
接著載入Part 2需要的相關依賴,其分別為: from torch import cuda, bfloat16import import transformers 然後選擇我們要的Meta模型,這邊可以是Llama 2或者是Llama 3,後者是Meta最新釋出的模型。 同時我們也讓系統自
第一步先在Python環境中安裝本次專案需要用到的Library,相關指令如下: !pip install accelerate==0.21.0 !pip install transformers==4.31.0 !pip install tokenizers==0.13.3 !pip insta
在使用Meta釋出的模型,實作Chat GPT - Part 3中我們已經建立好大型語言模型遇到哪些「字串」要停止輸出的列表,現在我們將它製作成一個物件,對應程式如下: from transformers import StoppingCriteria, StoppingCriteriaList
延續使用Meta釋出的模型,實作Chat GPT - Part 2 我們已經確定可以進入HuggingFace之後,就要來載入模型,其對應程式為: Model_Config = transformers.AutoConfig.from_pretrained( Mode
背景 各位ChatGPT使用者是否常常發生以下狀況:ChatGPT跟你雞同鴨講。 原因就出在ChatGPT當初在訓練時,在你所處的專業Domain並沒有足夠的訓練資料。 針對這種情況要怎麼辦呢? 今天將介紹幾種分法來解決,並分析各種方法的優劣。 方法羅列 提示工程 (Prompt E
接著載入Part 2需要的相關依賴,其分別為: from torch import cuda, bfloat16import import transformers 然後選擇我們要的Meta模型,這邊可以是Llama 2或者是Llama 3,後者是Meta最新釋出的模型。 同時我們也讓系統自
第一步先在Python環境中安裝本次專案需要用到的Library,相關指令如下: !pip install accelerate==0.21.0 !pip install transformers==4.31.0 !pip install tokenizers==0.13.3 !pip insta
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
今天又發現ChatGPT的一些缺點, 使用時需要很準確的提供你想要表達的文字(我覺得還蠻重要的) 又或者拿一些範例給它看, 它就能更準確的回答問題, 因為今天我發現有一篇文章和之前寫過的完全一樣了, 所以又要再請ChatGPT生成30則勵志英文短文, 結果之前發問的問題已經消失了, 又
Thumbnail
因為網路上充斥著 是是而非的資訊,公說公有理 婆說婆有理,我發現我的價值觀開始有點混淆,心中有許多問題 不知道真正的答案是甚麼?突然 想到最近的AI新科技-ChatGPT 或許可以解答我內心的困惑。所以我試著與ChatGPT進行對話,沒想到ChatGPT 的回覆 完全可以解答我心中的疑惑。
Thumbnail
AI生成真的很厲害,看多了AI文,真的會對自己沒信心!🫠🙃😭
Thumbnail
ChatGPT(全名:聊天生成預訓練轉換器)是一個由 OpenAI 開發的人工智慧聊天機器人程式。它於 2022 年 11 月推出,使用了基於 GPT-3.5、GPT-4 和 GPT-4o 架構的大型語言模型,並以強化學習進行訓練。
Thumbnail
筆記-曲博談AI模型.群聯-24.05.05 https://www.youtube.com/watch?v=JHE88hwx4b0&t=2034s *大型語言模型 三個步驟: 1.預訓練,訓練一次要用幾萬顆處理器、訓練時間要1個月,ChatGPT訓練一次的成本為1000萬美金。 2.微調(
Thumbnail
這陣子使用AI模型,還有參考國內外一些喜歡玩語言模型的同好發文,一個很有趣的結論就是,有時候把大型語言模型(尤其ChatGPT)當作一個人來溝通,會得到比較好的結果,這的確是非常反直覺的,也就是說很多時候ChatGPT耍懶不肯工作的時候,你用加油打氣,或是情緒勒索的方法,確實是可以得到比較好的結果。
Thumbnail
ChatGPT 是 OpenAI 開發的大型語言模型,以其強大的生成能力和對話能力而聞名。 ChatGPT 的訓練過程主要分為兩個階段:預訓練和微調。 微調使用了 RLHF(Reinforcement Learning from Human Feedback)技術,可以有效地提高模型生成內容的質量。
Thumbnail
在這篇文章中,我們將探討如何利用ChatGPT這個強大的語言模型來學習其他語言,並比較其與Google翻譯的優缺點。無論你是想提升外語能力還是在跨文化交流中更加流暢,ChatGPT都是一個極具價值的工具。
Thumbnail
從ChatGPT 4.0到GPTs 我是ChatGPT 4.0的付費使用者,說真格的,自從付費之後,就不想退出了,因為真是好用。 最近,ChatGPT 4.0又提供了GPTs的服務...... 有時候別人邀請我演講,我都會先溝通需求,有一次,某間學校邀請我對學生分享ChatGPT等生成式人工智
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
今天又發現ChatGPT的一些缺點, 使用時需要很準確的提供你想要表達的文字(我覺得還蠻重要的) 又或者拿一些範例給它看, 它就能更準確的回答問題, 因為今天我發現有一篇文章和之前寫過的完全一樣了, 所以又要再請ChatGPT生成30則勵志英文短文, 結果之前發問的問題已經消失了, 又
Thumbnail
因為網路上充斥著 是是而非的資訊,公說公有理 婆說婆有理,我發現我的價值觀開始有點混淆,心中有許多問題 不知道真正的答案是甚麼?突然 想到最近的AI新科技-ChatGPT 或許可以解答我內心的困惑。所以我試著與ChatGPT進行對話,沒想到ChatGPT 的回覆 完全可以解答我心中的疑惑。
Thumbnail
AI生成真的很厲害,看多了AI文,真的會對自己沒信心!🫠🙃😭
Thumbnail
ChatGPT(全名:聊天生成預訓練轉換器)是一個由 OpenAI 開發的人工智慧聊天機器人程式。它於 2022 年 11 月推出,使用了基於 GPT-3.5、GPT-4 和 GPT-4o 架構的大型語言模型,並以強化學習進行訓練。
Thumbnail
筆記-曲博談AI模型.群聯-24.05.05 https://www.youtube.com/watch?v=JHE88hwx4b0&t=2034s *大型語言模型 三個步驟: 1.預訓練,訓練一次要用幾萬顆處理器、訓練時間要1個月,ChatGPT訓練一次的成本為1000萬美金。 2.微調(
Thumbnail
這陣子使用AI模型,還有參考國內外一些喜歡玩語言模型的同好發文,一個很有趣的結論就是,有時候把大型語言模型(尤其ChatGPT)當作一個人來溝通,會得到比較好的結果,這的確是非常反直覺的,也就是說很多時候ChatGPT耍懶不肯工作的時候,你用加油打氣,或是情緒勒索的方法,確實是可以得到比較好的結果。
Thumbnail
ChatGPT 是 OpenAI 開發的大型語言模型,以其強大的生成能力和對話能力而聞名。 ChatGPT 的訓練過程主要分為兩個階段:預訓練和微調。 微調使用了 RLHF(Reinforcement Learning from Human Feedback)技術,可以有效地提高模型生成內容的質量。
Thumbnail
在這篇文章中,我們將探討如何利用ChatGPT這個強大的語言模型來學習其他語言,並比較其與Google翻譯的優缺點。無論你是想提升外語能力還是在跨文化交流中更加流暢,ChatGPT都是一個極具價值的工具。
Thumbnail
從ChatGPT 4.0到GPTs 我是ChatGPT 4.0的付費使用者,說真格的,自從付費之後,就不想退出了,因為真是好用。 最近,ChatGPT 4.0又提供了GPTs的服務...... 有時候別人邀請我演講,我都會先溝通需求,有一次,某間學校邀請我對學生分享ChatGPT等生成式人工智