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

閱讀時間約 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是一個電商平台,叫做阿里巴巴。

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

152會員
386內容數
這裡將提供: AI、Machine Learning、Deep Learning、Reinforcement Learning、Probabilistic Graphical Model的讀書筆記與演算法介紹,一起在未來AI的世界擁抱AI技術,不BI。
留言0
查看全部
發表第一個留言支持創作者!
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
打開這款黑色的應用程式,先輸入自我介紹,短短幾個步驟就完成註冊,這可是上星期風靡全球社群界的新話題: 「你,下載Threads了嗎?」Threads是一款介面非常簡單,類似推特(Twitter)的文字版對話應用程式,究竟它的魅力在哪阿?現在還有人在持續活躍使用嗎?
Thumbnail
PROCESS macro for SPSS 可以用非常簡單方式學會調節中介模式。本文將介紹四種類型的變項,並解釋調節式中介的公式,還有如何操作最4.0版本的PROCESS macro for SPSS。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
PROCESS macro for SPSS 可以用非常簡單方式使用調節分析。本文將介紹三種類型的變項,還有如何操作最4.2版本的PROCESS macro for SPSS進行調節模式。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
PROCESS macro for SPSS 可以用非常簡單方式進中介模式。本文將介紹三種類型的變項,還有如何操作最4.0版本的PROCESS macro for SPSS。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
Potato Media雖然和方格子及Matters同樣歸類為寫作平台,同樣強調將內容變現,前者卻與後面兩者完全不同,當然,所獲得的收入報酬也不會一樣,更清楚一點來說,連獲得收益的方式也大不相同。
Thumbnail
我們將介紹各種類型的信度和統計方法,包含Cohen Kappa 係數、組內相關係數、α係數的SPSS教學。信度的可以使用不同的評估方法來評估。信度對於確定評分標準或量表的一致性和穩定度至關重要。
Thumbnail
如果依變項並非連續變項時,就可以改用羅吉斯迴歸。接下來本文將介紹勝算、勝算比、計算範例、二元/順序/多項式羅吉斯迴歸分析範例和SPSS操作方法。
Thumbnail
通常我們對於類別變項就直接看敘述統計大小,但如果我們想要用檢定確定兩者差距是達到統計顯著,就要用卡方檢定(Chi-square test)是一種統計學方法,獨立性考驗用於檢驗兩個類別變項各組別之間是否有顯著關聯。本文將介紹卡方檢定並介紹上機操作和事後比較方法。
Thumbnail
本篇介紹Mplus的「結構方程模型(Structural Equation Modelling, SEM)」之語法內容,並透過例題向大家示範如何分析撰寫SEM的語法。本文為新手教學,輸入方式可能不是最有效率,但是比較簡單且不太會犯錯
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
打開這款黑色的應用程式,先輸入自我介紹,短短幾個步驟就完成註冊,這可是上星期風靡全球社群界的新話題: 「你,下載Threads了嗎?」Threads是一款介面非常簡單,類似推特(Twitter)的文字版對話應用程式,究竟它的魅力在哪阿?現在還有人在持續活躍使用嗎?
Thumbnail
PROCESS macro for SPSS 可以用非常簡單方式學會調節中介模式。本文將介紹四種類型的變項,並解釋調節式中介的公式,還有如何操作最4.0版本的PROCESS macro for SPSS。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
PROCESS macro for SPSS 可以用非常簡單方式使用調節分析。本文將介紹三種類型的變項,還有如何操作最4.2版本的PROCESS macro for SPSS進行調節模式。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
PROCESS macro for SPSS 可以用非常簡單方式進中介模式。本文將介紹三種類型的變項,還有如何操作最4.0版本的PROCESS macro for SPSS。文末也會附上所有所有Process模型圖例,提供給讀者方便分析~
Thumbnail
Potato Media雖然和方格子及Matters同樣歸類為寫作平台,同樣強調將內容變現,前者卻與後面兩者完全不同,當然,所獲得的收入報酬也不會一樣,更清楚一點來說,連獲得收益的方式也大不相同。
Thumbnail
我們將介紹各種類型的信度和統計方法,包含Cohen Kappa 係數、組內相關係數、α係數的SPSS教學。信度的可以使用不同的評估方法來評估。信度對於確定評分標準或量表的一致性和穩定度至關重要。
Thumbnail
如果依變項並非連續變項時,就可以改用羅吉斯迴歸。接下來本文將介紹勝算、勝算比、計算範例、二元/順序/多項式羅吉斯迴歸分析範例和SPSS操作方法。
Thumbnail
通常我們對於類別變項就直接看敘述統計大小,但如果我們想要用檢定確定兩者差距是達到統計顯著,就要用卡方檢定(Chi-square test)是一種統計學方法,獨立性考驗用於檢驗兩個類別變項各組別之間是否有顯著關聯。本文將介紹卡方檢定並介紹上機操作和事後比較方法。
Thumbnail
本篇介紹Mplus的「結構方程模型(Structural Equation Modelling, SEM)」之語法內容,並透過例題向大家示範如何分析撰寫SEM的語法。本文為新手教學,輸入方式可能不是最有效率,但是比較簡單且不太會犯錯