成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于Langchain、ChromaDB和GPT 3.5實現檢索增強生成

譯文 精選
人工智能
在本博客中,我們將了解一種名為檢索增強生成(retrieval augmented generation)的提示工程技術,并將基于Langchain、ChromaDB和GPT 3.5的組合來實現這種技術。

譯者 | 朱先忠

審校 | 重樓

摘要在本博客中,我們將了解一種名為檢索增強生成(retrieval augmented generation)的提示工程技術,并將基于Langchain、ChromaDB和GPT 3.5的組合來實現這種技術。

動機

隨著GPT-3等基于轉換器的大數據模型的出現,自然語言處理(NLP)領域取得了重大突破。這些語言模型能夠生成類似人類的文本,并已有各種各樣的應用程序,如聊天機器人、內容生成和翻譯。然而,當涉及到專業化和特定于客戶的信息的企業應用場景時,傳統的語言模型可能滿足不了要求。另一方面,使用新的語料庫對這些模型進行微調可能既昂貴又耗時。為了應對這一挑戰,我們可以使用一種名為“檢索增強生成”(RAG:Retrieval Augmented Generation)的技術。

在本博客中,我們將探討這種檢索增強生成RAG技術是如何工作的,并通過一個實示例來證明這一技術的有效性需要說明的是,此實例將使用GPT-3.5 Turbo作為附加語料庫對產品手冊進行響應。

想象一下,你的任務是開發一個聊天機器人,該機器人可以響應有關特定產品的查詢。該產品有自己獨特的用戶手冊,專門針對企業的產品。傳統的語言模型,如GPT-3,通常是根據一般數據進行訓練的,可能不了解這種特定的產品。另一方面,使用新的語料庫對模型進行微調似乎是一種解決方案;然而,此辦法會帶來相當大的成本和資源需求。

檢索增強生成(RAG)簡介

檢索增強生成(RAG)提供了一種更高效的方法來解決在特定領域生成上下文適當的響應的問題。RAG沒有使用新的語料庫對整個語言模型進行微調,而是利用檢索的能力按需訪問相關信息。通過將檢索機制與語言模型相結合,RAG通過結合外部上下文來增強響應。這個外部上下文可以作為向量嵌入來提供。

面給出了創建本文中應用程序時要遵循的步驟流程。

  1. 閱讀Clarett用戶手冊PDF格式)并使用1000個令牌的chunk_size進行令牌化。
  2. 創建這些標記的向量嵌入。我們將使用OpenAIEmbeddings庫來創建向量嵌入
  3. 向量嵌入存儲在本地。我們將使用簡單的ChromaDB作為我們的VectorDB。我們可以使用Pinecone或任何其他更高可用性的生產級的向量數據庫VectorDB。
  4. 用戶發出帶有查詢/問題的提示。
  5. 這將從VectorDB中進行搜索和檢索,以便VectorDB中獲取更多上下文數據。
  6. 此上下文數據現在將與提示內容一起使用。
  7. 上下文增強了提示,這通常被稱為上下文豐富。
  8. 提示信息,連同查詢/問題和這個增強的上下文,現在被傳遞給大型語言模型LLM。
  9. 至此,LLM基于此上下文進行響應。

需要說明的是,在本示例中,我們將使用Focusrite Clarett用戶手冊作為附加語料庫。Focusrite Clarett是一個簡單的USB音頻接口,用于錄制和播放音頻。您可以從鏈接https://fael-downloads-prod.focusrite.com/customer/prod/downloads/Clarett%208Pre%20USB%20User%20Guide%20V2%20English%20-%20EN.pdf處下載使用手冊。

實戰演練

設置虛擬環境

讓我們設置一個虛擬環境來我們的實現案例封裝起來,以避免系統中可能出現的任何版本/庫/依賴沖突。現在,我們執行以下命令創建一個新的Python虛擬環境

pip install virtualenv
python3 -m venv ./venv
source venv/bin/activate 

創建OpenAI密鑰

接下來,我們將需要一個OpenAI密鑰來訪問GPT。讓我們創建一個OpenAI密鑰。您可以通過在鏈接https://platform.openai.com/apps處注冊OpenAI來免費創建OpenAIKey。

注冊后,登錄并選擇API選項,如屏幕截圖所示(時間原因所致,當您打開該屏幕設計可能會當前拍攝屏幕截圖有所變化)

然后,轉到您的帳戶設置并選擇“查看API密鑰(View API Keys)”:

然后,選擇“創建新密鑰(Create new secret key)”,你會看到一個彈出窗口,如下圖所示。你需要提供一個名稱,這將生成一個密鑰。

該操作將生成一個唯一的密鑰,您應該將其復制到剪貼板并存儲在安全的地方。

接下來,讓我們編寫Python代碼來實現上面流程圖中顯示的所有步驟。

安裝依賴庫

首先,讓我們安裝我們需要的各種依賴項。我們將使用以下庫:

  • Lanchain一個開發LLM應用程序的框架。
  • ChromaDB:這是用于持久化向量嵌入的VectorDB。
  • unstructured:用于預處理Word/PDF文檔。
  • TiktokenTokenizer框架
  • pypdf:閱讀和處理PDF文檔的框架
  • openai:訪問openai的框架
pip install langchain
pip install unstructured
pip install pypdf
pip install tiktoken
pip install chromadb
pip install openai

一旦成功安裝了這些依賴項,請創建一個環境變量來存儲在最后一步中創建的OpenAI密鑰。

export OPENAI_API_KEY=<OPENAI-KEY>

接下來,讓我們開始編程。

從用戶手冊PDF創建向量嵌入并將其存儲在ChromaDB中

在下面的代碼中,我們將導入所有將要使用的依賴庫和函數。

import os
import openai
import tiktoken
import chromadb

from langchain.document_loaders import OnlinePDFLoader, UnstructuredPDFLoader, PyPDFLoader
from langchain.text_splitter import TokenTextSplitter
from langchain.memory import ConversationBufferMemory
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.llms import OpenAI
from 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)

在下面的代碼中,我們將創建一個色度集合,一個用于存儲色度數據庫的本地目錄。然后,我們創建一個向量嵌入并將其存儲在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()

執行此代碼后,您應該會看到創建了一個存儲向量嵌入的文件夾。

現在我們將向量嵌入存儲在ChromaDB中。下面,讓我們使用LangChain中的ConversationalRetrievalChain API來啟動聊天歷史記錄組件。我們將傳遞由GPT 3.5 Turbo啟動的OpenAI對象和我們創建的VectorDB。我們將傳遞ConversationBufferMemory,它用于存儲消息。

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)

既然我們已經初始化了會話檢索鏈,那么接下來我們就可以使用它進行聊天/問答了。在下面的代碼中,我們接受用戶輸入(問題),直到用戶鍵入“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"])

這是輸出的屏幕截圖。

小結

正如你從本文中所看到的,檢索增強生成是一項偉大的技術,它將GPT-3等語言模型的優勢與信息檢索的能力相結合。通過使用特定于上下文的信息豐富輸入,檢索增強生成使語言模型能夠生成更準確和與上下文相關的響應。在微調可能不實用的企業應用場景中,檢索增強生成提供了一種高效、經濟高效的解決方案,可以與用戶進行量身定制、知情的交互。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:Prompt Engineering: Retrieval Augmented Generation(RAG),作者:A B Vijay Kumar


責任編輯:華軒 來源: 51CTO
相關推薦

2025-02-11 08:00:00

大語言模型檢索增強生成CAG

2023-10-14 17:46:17

RAG提示工程GPT-3

2024-05-20 08:31:33

檢索增強生成LLM大型語言模型

2024-02-18 09:00:00

RAG工具LlamaIndexChatGPT

2024-09-05 08:24:09

2025-04-29 08:20:51

2024-11-19 13:05:40

2025-01-23 16:23:30

2025-04-01 09:25:09

2024-05-22 09:38:25

2024-06-18 15:36:50

2023-10-27 10:23:35

大語言模型人工智能

2024-12-23 11:31:05

大模型檢索人工智能

2024-10-31 14:46:31

2025-05-28 01:25:00

RAG人工智能語言模型

2024-01-17 09:00:00

大型語言模型機器學習向量搜索引擎

2025-06-13 02:25:00

2024-11-26 14:30:00

模型數據

2025-02-27 10:55:44

2024-04-19 09:00:01

映射算法大型語言模型LLM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美男人天堂 | 日韩福利片 | 亚洲国产高清在线观看 | 蜜桃视频麻豆 | jav成人av免费播放 | 天天影视网天天综合色在线播放 | 先锋资源站 | 国产一区二区三区在线 | 国产区一区二区三区 | 成人精品在线观看 | 久久亚洲天堂 | 日韩一区不卡 | 国产亚洲精品久久久久动 | 欧美激情精品久久久久久变态 | 国产精品99久久久久久人 | 黄色在线 | 欧美成年黄网站色视频 | 久热国产在线 | 中文字幕 欧美 日韩 | 美女中文字幕视频 | av影音资源 | 国产福利资源在线 | 国产精品色哟哟网站 | av免费在线播放 | 欧美一级二级三级视频 | 日韩中文字幕免费在线 | 欧美日日| av在线天天| 91精品一区二区三区久久久久久 | 久久成人一区 | 91影院| 欧美日韩中文字幕在线 | 特级做a爰片毛片免费看108 | 欧美精品区 | 视频一区在线 | 国产精品久久久久久福利一牛影视 | 91精品国产99久久 | 日韩欧美不卡 | 日韩午夜| 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 国产精品久久久久久影院8一贰佰 |