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

提示工程——檢索增強(qiáng)生成(RAG)

人工智能
下面我們主要介紹RAG如何工作,并通過一個(gè)實(shí)際的例子,將產(chǎn)品手冊(cè)作為專業(yè)語料庫,使用GPT-3.5 Turbo來作為問答模型,驗(yàn)證其有效性。

隨著GPT-3等大語言模型的出現(xiàn),自然語言處理(NLP)領(lǐng)域取得了重大突破。這些語言模型具有生成類人文本的能力,并且已經(jīng)在各種場(chǎng)景中得到應(yīng)用,例如:聊天機(jī)器人、翻譯。

然而,當(dāng)涉及到專業(yè)化和定制化的應(yīng)用場(chǎng)景時(shí),通用的大語言模型可能在專業(yè)知識(shí)方面會(huì)有所不足。用專業(yè)的語料庫對(duì)這些模型進(jìn)行微調(diào)往往昂貴且耗時(shí)。“檢索增強(qiáng)生成”(RAG)為專業(yè)化應(yīng)用提供了一個(gè)新技術(shù)方案。        

下面我們主要介紹RAG如何工作,并通過一個(gè)實(shí)際的例子,將產(chǎn)品手冊(cè)作為專業(yè)語料庫,使用GPT-3.5 Turbo來作為問答模型,驗(yàn)證其有效性。

案例:開發(fā)一個(gè)聊天機(jī)器人,可以回答有關(guān)特定產(chǎn)品的知識(shí)。該企業(yè)的產(chǎn)品自己獨(dú)特的用戶手冊(cè)。

RAG介紹

RAG 提供了一個(gè)有效的方式來解決在特定領(lǐng)域的問答,主要將行業(yè)知識(shí)轉(zhuǎn)化為向量進(jìn)行存儲(chǔ)和檢索,通過知識(shí)檢索的結(jié)果與用戶問題結(jié)合形成Prompt,最后利用大模型生成合適的回答。檢索機(jī)制與語言模型的相結(jié)合,增強(qiáng)了大模型的響應(yīng)能力。

下面是創(chuàng)建聊天機(jī)器人程序的步驟:

  1. 讀取PDF(用戶手冊(cè)PDF文件)并使用chunk_size為1000個(gè)令牌進(jìn)行令牌化。
  2. 創(chuàng)建向量(可以使用OpenAI EmbeddingsAPI來創(chuàng)建向量)。
  3. 在本地向量庫中存儲(chǔ)向量。我們將使用ChromaDB作為向量數(shù)據(jù)庫(向量數(shù)據(jù)庫也可以使用Pinecone或其他產(chǎn)品替代)。
  4. 用戶發(fā)出具有查詢/問題的提示。
  5. 根據(jù)用戶的問題從向量數(shù)據(jù)庫檢索出知識(shí)上下文數(shù)據(jù)。這個(gè)知識(shí)上下文數(shù)據(jù)將在后續(xù)步驟中與提示詞結(jié)合使用,來增強(qiáng)提示詞,通常被稱為上下文豐富。
  6. 提示詞包含用戶問題和增強(qiáng)的上下文知識(shí)一起被傳遞給LLM
  7. LLM 基于此上下文進(jìn)行回答。

動(dòng)手開發(fā)

(1)設(shè)置Python虛擬環(huán)境        設(shè)置一個(gè)虛擬環(huán)境來沙箱化我們的Python,以避免任何版本或依賴項(xiàng)沖突。執(zhí)行以下命令以創(chuàng)建新的Python虛擬環(huán)境。

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

(2)創(chuàng)建OpenAI密鑰

需要一個(gè)OpenAI密鑰來訪問GPT。

(3)安裝依賴庫

安裝程序需要的各種依賴項(xiàng)。包括以下幾個(gè)庫:

  • lanchain:一個(gè)開發(fā)LLM應(yīng)用程序的框架。
  • chromaDB:這是用于持久化向量嵌入的VectorDB。
  • unstructured:用于預(yù)處理Word/PDF文檔。
  • tiktoken: Tokenizer framework
  • pypdf:讀取和處理PDF文檔的框架。
  • openai:訪問OpenAI的框架。
pip install langchain
pip install unstructured
pip install pypdf
pip install tiktoken
pip install chromadb
pip install openai

創(chuàng)建一個(gè)環(huán)境變量來存儲(chǔ)OpenAI密鑰。

export OPENAI_API_KEY=<OPENAI-KEY>

(4)將用戶手冊(cè)PDF文件轉(zhuǎn)化為向量并將其存儲(chǔ)在ChromaDB中

導(dǎo)入所有將要使用的依賴庫和函數(shù)。

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,標(biāo)記化文檔并拆分文檔。

loader = PyPDFLoader("Clarett.pdf")
pdfData = loader.load()

text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)
splitData = text_splitter.split_documents(pdfData)

創(chuàng)建一個(gè)chroma集合,和一個(gè)存儲(chǔ)chroma數(shù)據(jù)的本地目錄。然后,創(chuàng)建一個(gè)向量(embeddings)并將其存儲(chǔ)在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()

執(zhí)行此代碼后,您應(yīng)該看到一個(gè)已經(jīng)創(chuàng)建好的文件夾,用于存儲(chǔ)向量。

將向量嵌入存儲(chǔ)在ChromaDB后,接著使用LangChain中的ConversationalRetrievalChain API來啟動(dòng)一個(gè)聊天歷史組件。

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,以獲得答復(fù)并打印出來。

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

總之

RAG將GPT等語言模型的優(yōu)勢(shì)與信息檢索的優(yōu)勢(shì)結(jié)合在一起。通過使用特定的知識(shí)上下文的信息提高提示詞的豐富程度,使語言模型能夠生成更準(zhǔn)確的和知識(shí)上下文相關(guān)的回答。RAG提供了一種比“微調(diào)”更高效且具有成本效益的解決方案,為行業(yè)應(yīng)用或企業(yè)應(yīng)用提供可定制化的交互方案。

責(zé)任編輯:趙寧寧 來源: andflow
相關(guān)推薦

2025-02-11 08:00:00

大語言模型檢索增強(qiáng)生成CAG

2025-04-01 09:25:09

2024-05-20 08:31:33

檢索增強(qiáng)生成LLM大型語言模型

2025-04-29 08:20:51

2024-02-18 09:00:00

RAG工具LlamaIndexChatGPT

2025-05-28 01:25:00

RAG人工智能語言模型

2024-11-19 13:05:40

2024-10-31 14:46:31

2025-06-13 02:25:00

2025-02-27 10:55:44

2024-04-19 14:27:26

檢索增強(qiáng)生成大型語言模型

2025-04-27 00:30:00

RAG檢索增強(qiáng)生成AI

2024-05-28 09:24:32

2025-02-13 09:01:03

2024-09-05 08:24:09

2025-01-23 16:23:30

2025-02-26 12:21:08

2023-09-11 09:00:00

檢索增強(qiáng)生成大數(shù)據(jù)模型自然語言處理

2023-10-31 16:37:55

大型語言模型人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99tv| 国产一区免费 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 99精品免费视频 | 欧美日韩国产中文 | 最近中文字幕第一页 | 成人三级av | 久综合 | 国产精品99一区二区 | 成人在线观看黄 | 一区二区三区四区国产 | 国产精品中文字幕在线 | 成人乱人乱一区二区三区软件 | 二区在线视频 | 欧美区日韩区 | 色婷婷国产精品综合在线观看 | 久久综合久久综合久久综合 | 水蜜桃久久夜色精品一区 | 免费激情 | 搞av.com | 久久久久久91 | 涩涩视频在线观看 | 欧美一区二区免费 | 一区二区福利视频 | 免费在线黄 | 日韩av网址在线观看 | 岛国av免费看 | 亚洲色图50p| 久久久久久成人 | 91精品国产综合久久精品 | 久草视频在线播放 | 欧美一区二区免费电影 | 国产精品视频久久久 | 北条麻妃国产九九九精品小说 | 久久人人爽人人爽人人片av免费 | 色偷偷噜噜噜亚洲男人 | 日韩在线视频免费观看 | 久久久精品一区二区三区 | 精品美女 | 日韩精品亚洲专区在线观看 | 免费骚视频 |