搜尋
首頁科技週邊人工智慧提升工程效率-增強檢索生成(RAG)

提升工程效率-增強檢索生成(RAG)

Oct 14, 2023 pm 08:17 PM
gpt-3提示工程rag

隨著GPT-3等大型語言模型的問世,自然語言處理(NLP)領域取得了重大突破。這些語言模型具備生成類人文本的能力,並已廣泛應用於各種場景,如聊天機器人和翻譯

提升工程效率-增強檢索生成(RAG)

#然而,當涉及到專業化和定制化的應用場景時,通用的大語言模型可能在專業知識方面會有所不足。用專業的語料庫對這些模型進行微調往往昂貴且耗時。 「檢索增強生成」(RAG)為專業化應用提供了一個新技術方案。

提升工程效率-增強檢索生成(RAG)

下面我們主要介紹RAG如何運作,並透過一個實際的例子,將產品手冊作為專業語料庫,使用GPT-3.5 Turbo來作為問答模型,驗證其有效性。

案例:開發一個聊天機器人,能夠回答與特定產品相關的問題。該企業擁有獨特的使用手冊

RAG介紹

RAG 提供了一個有效的解決方案,用於特定領域的問答。它主要透過將行業知識轉化為向量進行儲存和檢索,並將檢索結果與使用者問題結合形成提示訊息,最終利用大型模型來產生合適的答案。透過結合檢索機制和語言模型,大大增強了模型的回應能力

建立聊天機器人程式的步驟如下:

  1. 讀取PDF(使用者手冊PDF檔案)並使用chunk_size為1000個令牌進行令牌化。
  2. 建立向量(可以使用OpenAI EmbeddingsAPI來建立向量)。
  3. 在本機向量庫中儲存向量。我們將使用ChromaDB作為向量資料庫(向量資料庫也可以使用Pinecone或其他產品替代)。
  4. 使用者發出具有查詢/問題的提示。
  5. 根據使用者的問題從向量資料庫檢索出知識上下文資料。這個知識上下文資料將在後續步驟中與提示詞結合使用,來增強提示詞,通常被稱為上下文豐富。
  6. 提示詞包含使用者問題和增強的上下文知識一起傳遞給LLM
  7. LLM 基於此上下文進行回答。

動手開發

(1)設定Python虛擬環境        設定虛擬環境來砂箱化我們的Python,以避免任何版本或依賴衝突。執行以下命令以建立新的Python虛擬環境。

需要重写的内容是:pip安装virtualenv,python3 -m venv ./venv,source venv/bin/activate

需要進行改寫的內容是:(2)產生OpenAI金鑰

使用GPT需要一個OpenAI金鑰來進行存取

提升工程效率-增強檢索生成(RAG)

#需要進行重寫的內容是:(3)安裝依賴函式庫

安裝程式所需的各種相依性。包括以下幾個函式庫:

  • lanchain:一個開發LLM應用程式的框架。
  • chromaDB:這是用於持久化向量嵌入的VectorDB。
  • unstructured:用於預處理Word/PDF文件。
  • tiktoken: Tokenizer framework
  • pypdf:讀取和處理PDF文件的框架。
  • openai:存取OpenAI的框架。
pip install langchainpip install unstructuredpip install pypdfpip install tiktokenpip install chromadbpip install openai

建立一個環境變數來儲存OpenAI金鑰。

export OPENAI_API_KEY=<openai-key></openai-key>

(4)將使用手冊PDF檔案轉換為向量並將其儲存在ChromaDB中

將所有需要使用的依賴函式庫和函數匯入

import osimport openaiimport tiktokenimport chromadbfrom langchain.document_loaders import OnlinePDFLoader, UnstructuredPDFLoader, PyPDFLoaderfrom langchain.text_splitter import TokenTextSplitterfrom langchain.memory import ConversationBufferMemoryfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.llms import OpenAIfrom langchain.chains import ConversationalRetrievalChain

讀取PDF,標記化文件並拆分文件。

loader = PyPDFLoader("Clarett.pdf")pdfData = loader.load()text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)splitData = text_splitter.split_documents(pdfData)

建立一個chroma集合,和一個儲存chroma資料的本機目錄。然後,建立一個向量(embeddings)並將其儲存在ChromaDB中。

collection_name = "clarett_collection"local_directory = "clarett_vect_embedding"persist_directory = os.path.join(os.getcwd(), local_directory)openai_key=os.environ.get('OPENAI_API_KEY')embeddings = OpenAIEmbeddings(openai_api_key=openai_key)vectDB = Chroma.from_documents(splitData,embeddings,collection_name=collection_name,persist_directory=persist_directory)vectDB.persist()

執行此程式碼後,您應該會看到一個已經建立好的資料夾,用於儲存向量。

提升工程效率-增強檢索生成(RAG)

在將向量嵌入儲存在ChromaDB後,可以使用LangChain中的ConversationalRetrievalChain API來啟動一個聊天歷史元件

memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)chatQA = ConversationalRetrievalChain.from_llm(OpenAI(openai_api_key=openai_key, temperature=0, model_name="gpt-3.5-turbo"), vectDB.as_retriever(), memory=memory)

初始化了langchan之後,我們可以使用它來聊天/Q A。在下面的程式碼中,接受使用者輸入的問題,並在使用者輸入'done'之後,將問題傳遞給LLM,以獲得答案並列印出來。

chat_history = []qry = ""while qry != 'done':qry = input('Question: ')if qry != exit:response = chatQA({"question": qry, "chat_history": chat_history})print(response["answer"])

提升工程效率-增強檢索生成(RAG)

提升工程效率-增強檢索生成(RAG)

總之

RAG將GPT等語言模型的優點與資訊檢索的優勢結合在一起。透過利用特定的知識脈絡資訊來增強提示詞的豐富度,使得語言模型能夠產生更準確、與知識脈絡相關的答案。 RAG提供了一種比「微調」更有效率且成本效益更好的解決方案,為產業應用或企業應用提供可客製化的互動方案

以上是提升工程效率-增強檢索生成(RAG)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
如何使用Huggingface Smollm建立個人AI助手如何使用Huggingface Smollm建立個人AI助手Apr 18, 2025 am 11:52 AM

利用“設備” AI的力量:建立個人聊天機器人CLI 在最近的過去,個人AI助手的概念似乎是科幻小說。 想像一下科技愛好者亞歷克斯(Alex)夢見一個聰明的本地AI同伴 - 不依賴

通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析Apr 18, 2025 am 11:49 AM

他們的首屆AI4MH發射於2025年4月15日舉行,著名的精神科醫生兼神經科學家湯姆·因斯爾(Tom Insel)博士曾擔任開幕式演講者。 Insel博士因其在心理健康研究和技術方面的傑出工作而聞名

2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭Apr 18, 2025 am 11:44 AM

恩格伯特說:“我們要確保WNBA仍然是每個人,球員,粉絲和公司合作夥伴,感到安全,重視和授權的空間。” anno

Python內置數據結構的綜合指南 - 分析VidhyaPython內置數據結構的綜合指南 - 分析VidhyaApr 18, 2025 am 11:43 AM

介紹 Python擅長使用編程語言,尤其是在數據科學和生成AI中。 在處理大型數據集時,有效的數據操作(存儲,管理和訪問)至關重要。 我們以前涵蓋了數字和ST

與替代方案相比,Openai新型號的第一印象與替代方案相比,Openai新型號的第一印象Apr 18, 2025 am 11:41 AM

潛水之前,一個重要的警告:AI性能是非確定性的,並且特定於高度用法。簡而言之,您的里程可能會有所不同。不要將此文章(或任何其他)文章作為最後一句話 - 目的是在您自己的情況下測試這些模型

AI投資組合|如何為AI職業建立投資組合?AI投資組合|如何為AI職業建立投資組合?Apr 18, 2025 am 11:40 AM

建立杰出的AI/ML投資組合:初學者和專業人士指南 創建引人注目的投資組合對於確保在人工智能(AI)和機器學習(ML)中的角色至關重要。 本指南為建立投資組合提供了建議

代理AI對安全操作可能意味著什麼代理AI對安全操作可能意味著什麼Apr 18, 2025 am 11:36 AM

結果?倦怠,效率低下以及檢測和作用之間的差距擴大。這一切都不應該令任何從事網絡安全工作的人感到震驚。 不過,代理AI的承諾已成為一個潛在的轉折點。這個新課

Google與Openai:AI為學生打架Google與Openai:AI為學生打架Apr 18, 2025 am 11:31 AM

直接影響與長期夥伴關係? 兩週前,Openai提出了強大的短期優惠,在2025年5月底之前授予美國和加拿大大學生免費訪問Chatgpt Plus。此工具包括GPT-4O,A A A A A

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)