中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

哪里做網(wǎng)站一套一百灰色行業(yè)怎么推廣引流

哪里做網(wǎng)站一套一百,灰色行業(yè)怎么推廣引流,做網(wǎng)站用的國(guó)外節(jié)點(diǎn)服務(wù)器,襄陽(yáng)網(wǎng)站seo技巧文章目錄 PDF問(wèn)答程序程序流程處理PDF文檔創(chuàng)建問(wèn)答鏈 在探索和學(xué)習(xí)新技術(shù)時(shí),了解LangChain框架的理論知識(shí)固然重要,但實(shí)際的案例分析與實(shí)踐嘗試能為你提供更加直觀的認(rèn)識(shí)和更深人的理解。本文主要以解析案例代碼為主。通過(guò)具體的實(shí)踐操作,你可…

文章目錄

    • PDF問(wèn)答程序
      • 程序流程
      • 處理PDF文檔
      • 創(chuàng)建問(wèn)答鏈

????在探索和學(xué)習(xí)新技術(shù)時(shí),了解LangChain框架的理論知識(shí)固然重要,但實(shí)際的案例分析與實(shí)踐嘗試能為你提供更加直觀的認(rèn)識(shí)和更深人的理解。本文主要以解析案例代碼為主。通過(guò)具體的實(shí)踐操作,你可以更好地理解LangChain技術(shù)的本質(zhì),了解各個(gè)模塊如何協(xié)同工作,以及如何在實(shí)際應(yīng)用中發(fā)揮其價(jià)值。

????值得注意的是,介紹這些案例代碼主要是為了教學(xué)和解釋,它們可能并不適用于真實(shí)的生產(chǎn)環(huán)境。另外,可能在你的電腦環(huán)境中運(yùn)行案例代碼后,比如打印文本切分的塊數(shù),得到了與案例不一樣的數(shù)值結(jié)果。比如案例中拆分出446個(gè)塊,而你拆分出448個(gè)塊。這種差異可能是以下幾點(diǎn)原因造成的:

  1. 文檔內(nèi)容存在微小差異,如額外的空白或換行;
  2. 兩個(gè)環(huán)境中庫(kù)的版本有所不同;
  3. chunk_overlap等參數(shù)導(dǎo)致的邊界效應(yīng);
  4. Python或其他庫(kù)的版本存在差異。

????相同地,在執(zhí)行相同的查詢代碼時(shí),大語(yǔ)言模型可能會(huì)給出略有不同的答案。這種現(xiàn)象的背后原理與大語(yǔ)言模型的工作機(jī)制有關(guān)。大語(yǔ)言模型(如GPT系列)是基于概率的模型,它預(yù)測(cè)下一個(gè)詞的可能性是基于訓(xùn)練數(shù)據(jù)中的統(tǒng)計(jì)信息。當(dāng)模型為生成文本時(shí),它實(shí)際上是在每個(gè)步驟中做出基于概率的決策,所以,當(dāng)你在執(zhí)行案例中的查詢代碼時(shí)可能會(huì)得到與案例稍微不同的答案。

PDF問(wèn)答程序

????PDF問(wèn)答程序是可以引人外部數(shù)據(jù)集對(duì)大語(yǔ)言模型進(jìn)行微調(diào),以生成更準(zhǔn)確的回答的程序。假設(shè)你是一個(gè)航天飛機(jī)設(shè)計(jì)師,你需要了解最新的航空材料技術(shù)。你可以將幾百頁(yè)的航空材料技術(shù)文檔輸人到大語(yǔ)言模型中,模型會(huì)根據(jù)最新的數(shù)據(jù)集給出準(zhǔn)確的答案。你不用看完整套材料,而是根據(jù)自己的經(jīng)驗(yàn)提出問(wèn)題,獲得你想要知道的技術(shù)知識(shí)。PDF問(wèn)答程序界面中呈現(xiàn)的是人類與文檔問(wèn)答程序的聊天內(nèi)容,但實(shí)質(zhì)上,人類仍然是在與大語(yǔ)言模型交流,只不過(guò)這個(gè)模型現(xiàn)在被賦予了接入外部數(shù)據(jù)集的能力。

????就像你在與一位熟悉公司內(nèi)部文檔的同事交談,盡管他可能并未參與過(guò)這些文檔的編寫(xiě),但他可以準(zhǔn)確地回答你的問(wèn)題。在大語(yǔ)言模型出現(xiàn)之前,人類不能像聊天一樣與文檔交流,只能依賴于搜索。例如,你正在為一項(xiàng)重要的報(bào)告尋找資料,你必須知道你需要查找的關(guān)鍵詞,然后在大量的信息中篩選出你需要的部分。而現(xiàn)在,你可以通過(guò)聊天的方式一即使你不知道具體的關(guān)鍵詞,也可以讓模型根據(jù)你的問(wèn)題告訴你答案。你就好像在問(wèn)一位專業(yè)的圖書(shū)館員,哪些書(shū)可以幫助你完成這份報(bào)告。

????為什么要引入文檔的外部數(shù)據(jù)集呢?這是因?yàn)榇笳Z(yǔ)言模型的訓(xùn)練數(shù)據(jù)都是在2021年9月之前產(chǎn)生的,之后產(chǎn)生的知識(shí)和信息并未被包含進(jìn)去。大語(yǔ)言模型就像一個(gè)生活在過(guò)去的時(shí)間旅行者,他只能告訴你他離開(kāi)的那個(gè)時(shí)刻之前的所有信息,但對(duì)之后的信息一無(wú)所知。

????引入外部數(shù)據(jù)集還有一個(gè)重要的目的,那就是修復(fù)大語(yǔ)言模型的“機(jī)器幻覺(jué)”,避免給出錯(cuò)誤的回答。試想一下,如果你向一個(gè)只知道過(guò)去的信息的人詢問(wèn)未來(lái)的趨勢(shì),他可能會(huì)基于過(guò)去的信息進(jìn)行推斷,但這樣的答案未必正確。所以,要引入最新的數(shù)據(jù),讓大語(yǔ)言模型能夠更準(zhǔn)確地回答問(wèn)題,避免因?yàn)樾畔⑦^(guò)時(shí)產(chǎn)生的誤導(dǎo)。

????另外,現(xiàn)在普遍使用的數(shù)據(jù)文檔形式包括PDF、JSON、Word、Excel等,這些都是獲取實(shí)時(shí)知識(shí)和數(shù)據(jù)的途徑。同時(shí),這類程序現(xiàn)在非常受歡迎,比如最著名的Chat PDF和ChatDOC,還有針對(duì)各種特定領(lǐng)域的程序,如針對(duì)法律文檔的程序。就像在閱讀各種格式的圖書(shū)一樣,不同的程序能夠?yàn)槟闾峁┎煌闹R(shí)和信息。以上就是選擇PDF問(wèn)答程序作為本章案例的原因。

程序流程

????PDF問(wèn)答程序的實(shí)現(xiàn)方式是利用LangChain已實(shí)現(xiàn)的向量存儲(chǔ)、嵌入,以及使用查詢和檢索相關(guān)的鏈來(lái)獲取外部數(shù)據(jù)集及處理文檔,在進(jìn)行相關(guān)性檢索后進(jìn)行合并處理,將其置入大語(yǔ)言模型的提示模板中,實(shí)現(xiàn)與PDF文件交流的目的。這里選定的文檔是Reid Hoffman寫(xiě)的一本關(guān)于GPT-4和人工智能的書(shū),下載這份PDF文檔并將其轉(zhuǎn)換為可查詢和交互的形式。連接這個(gè)PDF文檔數(shù)據(jù)使用的是LEDVR工作流管理,最后使用內(nèi)置的RetrievalQA問(wèn)答鏈和load_qa_chain方法構(gòu)造文檔鏈組件,并且使用不同的文檔合并鏈Stuf和Map re-rank對(duì)比答案的質(zhì)量。

LEDVR工作流

  • L:加載器。首先,選擇的文檔是Reid Hoffman寫(xiě)的一本關(guān)于GPT-4和人工智能的書(shū)。為了使用戶與這個(gè)PDF問(wèn)答程序能夠進(jìn)行互動(dòng)回答和查詢,首先需要通過(guò)加載器從本地獲取這份數(shù)據(jù)。加載器提供了從各種來(lái)源獲取數(shù)據(jù)的通道,并為后續(xù)步驟做好準(zhǔn)備。
  • E:嵌入模型包裝器。接下來(lái),需要處理這份PDF文檔的內(nèi)容。通過(guò)嵌入模型包裝器,將文檔中的每一段文字轉(zhuǎn)換為一個(gè)高維向量。這一步的目的是實(shí)例化一個(gè)嵌入模型包裝器對(duì)象,方便后續(xù)將向量傳遞給向量存儲(chǔ)庫(kù)。
  • D:文檔轉(zhuǎn)換器。這個(gè)環(huán)節(jié)主要是切分文本,轉(zhuǎn)換文檔對(duì)象格式。如果文檔過(guò)長(zhǎng),則文檔轉(zhuǎn)換器可以將其切分成更小的段落。
  • V:向量存儲(chǔ)庫(kù)。將LED的成果都交給向量存儲(chǔ)庫(kù),在實(shí)例化嵌入模型包裝器對(duì)象時(shí),將切分后的文檔轉(zhuǎn)換為向量列表。處理好的向量將被存儲(chǔ)在向量存儲(chǔ)庫(kù)中。這是一個(gè)專為高維向量設(shè)計(jì)的存儲(chǔ)系統(tǒng),它允許快速地查找和檢索向量,為后續(xù)的查詢提供了極大的便利。
  • R:檢索器。最后,當(dāng)用戶想要查詢某個(gè)特定的信息時(shí),檢索器就會(huì)進(jìn)入工作狀態(tài)。檢索器會(huì)將用戶的查詢問(wèn)題轉(zhuǎn)換為一個(gè)嵌入向量,并在向量存儲(chǔ)庫(kù)中尋找與之最匹配的文檔向量。在找到最相關(guān)的文檔后,檢索器會(huì)返回文檔的內(nèi)容,滿足用戶的查詢需求。

????創(chuàng)建鏈采用RetrievalQA內(nèi)置的問(wèn)答鏈結(jié)合load_qa_chain方法可以創(chuàng)建文檔鏈部件,然后通過(guò)對(duì)比Stuff與Map re-rank這兩種不同的合并文檔鏈來(lái)評(píng)估答案的優(yōu)劣。

處理PDF文檔

????首先安裝所需的Python庫(kù)來(lái)為后續(xù)的操作打基礎(chǔ)。

pip -q install langchain openai tiktoken PyPDF2 faiss-cpu

????這里安裝了LangChain、openai、tiktoken、PyPDF2和faiss-cpu這5個(gè)庫(kù)。其中,openai是OpenAI的官方庫(kù),能與其API進(jìn)行交互。tiktoken是用于計(jì)算字符串中token數(shù)的工具,PyPDF2允許處理PDF文件,而faiss-cpu是一個(gè)高效的相似性搜索庫(kù)。這里為OpenAI設(shè)置了API密鑰:

import os
os.environ["OPENAI API KEY"]="填人你的密鑰"

????首先在本書(shū)的代碼倉(cāng)庫(kù)中下載一個(gè)名為impromptu-rh.pdf的文件。這個(gè)文件在后續(xù)的代碼中會(huì)被用到,比如進(jìn)行文本分析。為了從PDF文檔中提取內(nèi)容,需要一個(gè)PDF閱讀器。這里選擇了一個(gè)基礎(chǔ)的PDF閱讀器,但在實(shí)際應(yīng)用中,可能需要根據(jù)具體需求選擇更復(fù)雜或?qū)I(yè)的PDF處理庫(kù)。在處理PDF文檔時(shí),可能會(huì)遇到格式問(wèn)題或其他意外情況,因此選擇合適的工具和方法是很重要的。不同的項(xiàng)目或數(shù)據(jù)源可能需要不同的處理方法,這也是為什么有時(shí)需要使用更高級(jí)的工具或服務(wù),比如AWS、Google Cloud的相關(guān)API。為了處理PDF和后續(xù)的操作,導(dǎo)人以下庫(kù)和工具:

from PyPDF2 import PdfReader
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS

????PdfReader是PDF閱讀器,它來(lái)自PyPDF2庫(kù),可用于從PDF文檔中讀取內(nèi)容。OpenAIEmbeddings可用于嵌入或轉(zhuǎn)換文本數(shù)據(jù)。Character TextSplitter可用于處理或切分文本。而FAISS是一個(gè)高效的相似性搜索庫(kù),后續(xù)可用于文本或數(shù)據(jù)的搜索和匹配。加載之前下載的PDF文檔:

doc_reader = PdfReader ('/content/impromptu-rh.pdf')

????通過(guò)使用PdfReader,將PDF文檔的內(nèi)容加載到doc reader變量中。這一步的目的是讀取PDF文檔并為后續(xù)的文本提取做準(zhǔn)備。為了驗(yàn)證是否成功加載了PDF文檔,可以打印doc reader,得到的輸出結(jié)果是這個(gè)對(duì)象在內(nèi)存中的地址:<PyPDF2.reader…PdfReader at Ox’7f119f57f640>,這表明doc reader已經(jīng)成功創(chuàng)建并包含了PDF文檔的內(nèi)容。緊接著,從PDF文檔中提取文本,這部分代碼的作用是遍歷PDF文檔中的每一頁(yè),并使用extract text(0方法提取每一頁(yè)的文本內(nèi)容,然后將這些文本內(nèi)容累加到raw text變量中。

raw_text=''
for i,page in enumerate(doc reader.pages):text page.extract_text ()if text:raw_text +=text

????為了驗(yàn)證是否成功地從PDF文檔中提取了文本,這里打印了raw_text變量的長(zhǎng)度,得到的結(jié)果是356710。請(qǐng)注意文本拆分的方法很簡(jiǎn)單,就是將這個(gè)長(zhǎng)字符串按照字符數(shù)拆分。比如可以設(shè)定每1000個(gè)字符為一個(gè)塊,即chunk size=1000。

Splitting up the text into smaller chunks for indexing
text_splitter =CharacterTextSplitter(separator ="\n",chunk size =1000,chunk overlap =200, # striding over the textlength_function= len,)
texts= text_splitter.split_text (raw_text)

????總共切了448個(gè)塊:

len(texts)448

????在這個(gè)代碼片段中,chunk overlap參數(shù)用于指定文本切分時(shí)的重疊量(overlap)。它表示在切分后生成的每個(gè)塊之間重疊的字符數(shù)。具體來(lái)說(shuō),這個(gè)參數(shù)表示每個(gè)塊的前后,兩個(gè)塊之間會(huì)有多少個(gè)字符是重復(fù)的。例如chunkA和chunkB,它們之間有200個(gè)字符是重復(fù)的。然后,采用滑動(dòng)窗口的方法來(lái)拆分文本。即每個(gè)塊之間會(huì)有部分字符重疊,比如在每1000個(gè)字符的塊上,讓前后兩個(gè)塊有200個(gè)字符重疊??梢噪S機(jī)打印一塊的內(nèi)容:

texts [20]

????輸出是:

'million registered users.\nIn late January 2023,Microsoft1-which had
invested $1 billion \nin OpenAI in 2019-announced that it would be investing $10
Inbillion more in the company.It soon unveiled a new version of \nits search
engine Bing,with a variation of ChatGPT built into it.\nl I sit on Microsoft's
Board of Directors.10Impromptu:Amplifying Our Humanity Through AI\nBy the start
of February 2023,OpenAI said ChatGPT had \none hundred million monthly active
users,making it the fast-\nest-growing consumer internet app ever.Along with
that \ntorrent of user interest,there were.news stories of the new Bing \nchatbot
functioning in sporadically unusual ways that were \nvery different from how
ChatGPT had generally been engaging \nwith users-including showing "anger,"
hurling insults,beast-\ning on its hacking abilities and capacity for revenge,
and basi-\ncally acting as if it were auditioning for a future episode of Real
\nHousewives:Black Mirror Edition.

????下面介紹如何將提取的文本轉(zhuǎn)換為機(jī)器學(xué)習(xí)可以理解的格式,并且如何使用這些數(shù)據(jù)進(jìn)行搜索匹配。為了理解和處理文本,需要將其轉(zhuǎn)換為向量列表。這里選擇使用OpenAI的嵌入模型來(lái)為文本創(chuàng)建嵌入向量列表。

# Download embeddings from OpenAI
embeddings= OpenAIEmbeddings ()

????為了能夠高效地在這些向量中搜索和匹配,這里使用FAISS庫(kù)。先把文本txts和嵌入模型包裝器OpenAIEmbeddings作為參數(shù)傳遞,然后通過(guò)FAISS庫(kù)創(chuàng)建一個(gè)向量存儲(chǔ)庫(kù),以實(shí)現(xiàn)高效的文本搜索和匹配功能。

docsearch =FAISS.from texts(texts,embeddings)

????通過(guò)上面的代碼,將原本的文本內(nèi)容轉(zhuǎn)換為機(jī)器學(xué)習(xí)可以理解和處理的向量數(shù)據(jù)。基于文本的向量表示,程序就可以進(jìn)行高效的搜索和匹配了。相似度檢索是其中的一種方法。為了展示如何使用這種方法,下面選擇了一個(gè)實(shí)據(jù)?;谖谋镜南蛄勘硎?#xff0c;程序就可以進(jìn)行高效的搜索和匹配了。相似度檢索是其中的一種方法。為了展示如何使用這種方法,下面選擇了一個(gè)實(shí)際中的查詢:“GPT-4如何改變了社交媒體?”。

query="GPT-4如何改變了社交媒體?"
docs =docsearch.similarity_search(query)

????將查詢傳遞給similarity_search方法,在向量數(shù)據(jù)中通過(guò)docsearch方法查找與查詢最匹配的文檔。這種搜索基于向量之間的相似度。得到的搜索結(jié)果是一個(gè)數(shù)組,其中包含了與查詢最匹配的文檔。

len (docs)

????運(yùn)行上面的代碼,發(fā)現(xiàn)結(jié)果為4,這意味著有4處文檔與查詢有關(guān)。為了驗(yàn)證搜索的準(zhǔn)確性,可以嘗試查看第一個(gè)匹配的文檔。

docs [0]

????在搜索結(jié)果中,第一個(gè)匹配的文檔中多次提到了“社交媒體”(下文中的Social media),這證明了PDF問(wèn)答程序的查詢效果非常好,并且嵌入和相似度搜索的方法都是有效的。

Document (page_content='rected ways that tools like GPT-4 and DALL-E 2
enable.\nThis is a theme I've touched on throughout this travelog,but \nit's
especially relevant in this chapter.From its inception,social \nmedia worked
to recast broadcast media's monolithic and \npassive audiences as interactive,
democratic communities,in \nwhich newly empowered participants could connect
directly \nwith each other.They could project their own voices broadly,\nwith
no editorial "gatekeeping"beyond a given platform's terms \nof service.\nEven
with the rise of recommendation algorithms,social media \nremains a medium where
users have more chance to deter -\nmine their own pathways and experiences than
they do in the \nworld of traditional media.It's a medium where they've come
Into expect a certain level of autonomy,and typically they look for \nnew ways
to expand it.\nSocial media content creators also wear a lot of hats,especially
Anwhen starting out.A new YouTube creator is probably not only',metadata=())

????前面只有一個(gè)PDF文檔,實(shí)現(xiàn)代碼也很簡(jiǎn)單,通過(guò)LangChain提供的LEDVR工作流管理,完成得很快。接下來(lái),要處理多文檔的提問(wèn)。在現(xiàn)實(shí)中要獲取到真實(shí)的信息,通常需要跨越多個(gè)文檔,比如讀取金融研報(bào)、新聞綜合報(bào)道等。

創(chuàng)建問(wèn)答鏈

????加載一個(gè)PDF文檔,在將其轉(zhuǎn)換格式及切分字符后,通過(guò)創(chuàng)建向量數(shù)據(jù)來(lái)進(jìn)行搜索匹配并獲得了問(wèn)題的答案。一旦我們有了已經(jīng)處理好的文檔,就可以開(kāi)始構(gòu)建一個(gè)簡(jiǎn)單的問(wèn)答鏈。下面看一看如何使用LangChain創(chuàng)建問(wèn)答鏈。在這個(gè)過(guò)程中,這里選擇了內(nèi)置的文檔處理鏈中一種被稱為suff的鏈類型。在Suff模式下,將所有相關(guān)的文檔內(nèi)容都全部提交給大語(yǔ)言模型處理,在默認(rèn)情況下,放人的內(nèi)容應(yīng)該少于4000個(gè)標(biāo)記。除Stuff鏈外,文檔處理鏈還有Refine鏈、MapReduce鏈、重排鏈。重排鏈在后面會(huì)用到。

from langchain.chains.question answering import load_ga_chain
from langchain.llms import OpenAI
chain =load_ga_chain (OpenAI(),chain type="stuff")

????下一步,構(gòu)建查詢。首先,使用向量存儲(chǔ)中返回的內(nèi)容作為上下文片段來(lái)回答查詢。然后,將這個(gè)查詢傳給LLM。LLM會(huì)回答這個(gè)查詢,并給出相應(yīng)的答案。例如,查詢的問(wèn)題是“這本書(shū)是哪些人創(chuàng)作的?”語(yǔ)言模型鏈將該問(wèn)題傳遞給向量存儲(chǔ)庫(kù)進(jìn)行相似性搜索。向量存儲(chǔ)庫(kù)會(huì)返回最相似的4個(gè)文檔片段doc,通過(guò)運(yùn)行chain.run并傳遞問(wèn)題和相似文檔片段,然后LLM會(huì)給出一個(gè)答案。

query="這本書(shū)是哪些人創(chuàng)作的?"
docs = docsearch.similarity search(query)
chain.run (input documents=docs,question=query)

????看看LLM回答了什么:

'不知道'

????在默認(rèn)情況下,系統(tǒng)會(huì)返回4個(gè)最相關(guān)的文檔,但可以更改這個(gè)數(shù)字。例如,可以設(shè)置返回6個(gè)或更多的搜索結(jié)果。

query="這本書(shū)是哪些人創(chuàng)作的?"
docs= docsearch.similarity_search(query,k=6)
chain.run(input_documents=docs,question=query)

????然而,需要注意的是,如果設(shè)置返回的文檔數(shù)量過(guò)多,比如設(shè)置k=20,那么總的標(biāo)記數(shù)可能會(huì)超過(guò)模型平臺(tái)的最大上下文長(zhǎng)度,導(dǎo)致錯(cuò)誤。例如,你使用的模型的最大上下文長(zhǎng)度為4096,但如果請(qǐng)求的標(biāo)記數(shù)超過(guò)了5000,則系統(tǒng)就會(huì)報(bào)錯(cuò)。設(shè)置返回的文檔數(shù)量為6,則獲取的結(jié)果是:

'這本書(shū)的作者是Reid Hoffman和Sam Altman。'

????在這種情況下,如果相關(guān)文檔的內(nèi)容多一些,則答案會(huì)更加準(zhǔn)確一些。設(shè)置的返回的文檔數(shù)量越少,意味著大語(yǔ)言模型獲取到的相關(guān)信息也就越少。之前詢問(wèn)query="這本書(shū)是哪些人創(chuàng)作的?"僅僅返回了4條結(jié)果,導(dǎo)致它回答了“不知道”。而修改返回的文檔數(shù)量為6條時(shí),它找出了作者Reid Hoffman。它還提到了Sam Altman,實(shí)際上Sam Altman并不是作者。出現(xiàn)這種錯(cuò)誤可能是因?yàn)槭褂昧说图?jí)的模型型號(hào),默認(rèn)LLM類模型包裝器是“text-davinci-003”型號(hào),這個(gè)型號(hào)的能力遠(yuǎn)不如GPT-4。

重排鏈

????Suff鏈的優(yōu)勢(shì)是把所有文檔的內(nèi)容都放在提示詞模板中,并不對(duì)文檔進(jìn)行細(xì)分處理。而重排鏈則是選擇了優(yōu)化的算法,提高查詢的質(zhì)量。下面提出更復(fù)雜的查詢。比如說(shuō),想要知道“OpenAI的創(chuàng)始人是誰(shuí)?”并且想要獲取前10個(gè)最相關(guān)的查詢結(jié)果。在這種情況下,會(huì)返回多個(gè)答案,而不僅僅是一個(gè)??梢钥吹剿恢环祷匾粋€(gè)答案,而是根據(jù)需求返回了每個(gè)查詢的答案和相應(yīng)的評(píng)分。

from langchain.chains.question_answering import load_qa_chain
chain =load_ga_chain (OpenAI(),chain_type="map_rerank",return_intermediate steps=True)
query="OpenAI的創(chuàng)始人是誰(shuí)?"
docs =docsearch.similarity search(query,k=10)
results =chain({"input_documents":docs,"question":query},return_only_outputs=True)

????return intermediate steps=True是重要的參數(shù),設(shè)置這個(gè)參數(shù)可以讓我們看到map_rerank是如何對(duì)檢索到的文檔進(jìn)行打分的。下面對(duì)返回的每個(gè)查詢結(jié)果進(jìn)行評(píng)分。例如,OpenAI被多次提及,因此它的評(píng)分可能會(huì)有80分,90分甚至l00分。觀察intermediate_steps中的內(nèi)容,有2個(gè)得分為100的答案。

('intermediate steps':[('answer':This document does not answer the question.', 'score':'0'},
('answer':,OpenAI的創(chuàng)始人是Elon Musk,Sam Altman,Greg Brockman和Ilya Sutskever。','score':'100'},
{'answer':This document does not answer the question.''score':'0'),
('answer':'This document does not answer the question.','score':'0'),
('answer':This document does not answer the question.','score':'0'),
('answer':This document does not answer the question','score':'0'),
('answer':'OpenAI的創(chuàng)始人是Elon Musk、Sam Altman、Greg Brockman、Ilya Sutskever、Wojciech Zaremba和Peter Norvig。','score':'100'),
('answer':This document does not answer the question.','score':'0'),
{'answer':This document does not answer the question.','score':'0'),
('answer':This document does not answer the question','score':'0')],'output text':'OpenAI的創(chuàng)始人是Elon Musk,Sam Altman,Greg Brockman和Ilya Sutskever.'}

????在進(jìn)行評(píng)分后,模型輸出一個(gè)最終的答案:‘score’:‘100’,即得分為100的那個(gè)答案:

results['output_text']
'OpenAI的創(chuàng)始人是Elon Musk,Sam Altman,Greg Brockman和Ilya Sutskever。'

????為了搞清楚為什么模型會(huì)評(píng)分,可以打印提示詞模板。

# check the prompt
chain.llm =chain.prompt.template

????從提示詞模板內(nèi)容中可以看出,為了確保大語(yǔ)言模型能夠在收到問(wèn)題后提供準(zhǔn)確和有用的答案,LangChain為模型設(shè)計(jì)了一套詳細(xì)的提示詞模板。該提示詞模板描述了如何根據(jù)給定的背景信息回答問(wèn)題,并如何為答案打分。提示詞模板開(kāi)始強(qiáng)調(diào)了整體目標(biāo):使模型能夠根據(jù)給定的背景信息提供準(zhǔn)確的答案,并為答案打分(第15行代碼)。模型需要明白其核心任務(wù):根據(jù)給定的背景信息回答問(wèn)題。如果模型不知道答案,則它應(yīng)該直接表示不知道,而不是試圖編造答案。對(duì)于這一點(diǎn)要提醒模型:如果不知道答案,應(yīng)該直接表示不知道,而不是編造答案(第1行代碼)。

????接下來(lái),為模型提供答案和評(píng)分的標(biāo)準(zhǔn)格式。對(duì)于答案部分,要求模型簡(jiǎn)潔、明確地回答問(wèn)題,而對(duì)于評(píng)分部分,則要求模型為其答案給出一個(gè)0-100的分?jǐn)?shù),用以表示答案的完整性和準(zhǔn)確性。這部分明確了答案和評(píng)分的格式,并強(qiáng)調(diào)了答案的完整性和準(zhǔn)確性(第5-6行代碼)。通過(guò)3個(gè)示例,模型可以更好地理解如何根據(jù)答案的相關(guān)性和準(zhǔn)確性為其打分(第7~21行代碼)。在示例中強(qiáng)調(diào)了答案的完整性和準(zhǔn)確性是評(píng)分的核心標(biāo)準(zhǔn)。

????最后,為了使模型能夠在具體的實(shí)踐中應(yīng)用上述提示詞模板,這里為模型提供了一個(gè)上下文背景和用戶輸人問(wèn)題的模板。當(dāng)模型接到一個(gè)問(wèn)題時(shí),它應(yīng)使用此模板為問(wèn)題提供答案和評(píng)分(第22~25行代碼)。下面是格式化和翻譯過(guò)后的提示詞模板。

1.當(dāng)你面對(duì)以下的背景信息時(shí),如何回答最后的問(wèn)題是關(guān)鍵。如果不知道答案,則直接說(shuō)你不知道,不要試圖編造答案。
2.除提供答案外,還需要給出一個(gè)分?jǐn)?shù),表示它如何完全回答了用戶的問(wèn)題。請(qǐng)按照以下格式:
3.問(wèn)題:[qustion]
4.有幫助的答案:[answer]
5.分?jǐn)?shù):[分?jǐn)?shù)范圍為0-100]
6.如何確定分?jǐn)?shù):更高的分?jǐn)?shù)代表更好的答案,更好的答案能夠充分地回應(yīng)所提出的問(wèn)題,并提供足夠的細(xì)節(jié),·如果根據(jù)上下文不知道答案,那么分?jǐn)?shù)應(yīng)該是0,不要過(guò)于自信!
7.示例 #1
8.背景:蘋(píng)果是紅色的
9.問(wèn)題:蘋(píng)果是什么顏色?
10.有幫助的答案:紅色
11.分?jǐn)?shù):100
12.示例 #2
13.背景:那是夜晚,證人忘了帶他的眼鏡。他不確定那是一輛跑車還是SUV
14.問(wèn)題:那輛車是什么類型的?
15.有幫助的答案:跑車或SUV
16.分?jǐn)?shù):60
17.示例 #3
18.背景:梨要么是紅色的,要么是橙色的
19.問(wèn)題:蘋(píng)果是什么顏色?
20.有幫助的答案:這個(gè)文檔沒(méi)有回答這個(gè)問(wèn)題
21.分?jǐn)?shù):0
22.開(kāi)始!
23.背景:{context}
24.問(wèn)題:{question}
25.有幫助的答案:

RetrievalQA鏈

????RetrievalQA鏈?zhǔn)荓angChain已經(jīng)封裝好的索引查詢問(wèn)答鏈。在將其實(shí)例化之后,可以直接把問(wèn)題扔給它,從而簡(jiǎn)化了很多步驟,并可以獲得比較穩(wěn)定的查詢結(jié)果。為了創(chuàng)建這樣的鏈,需要一個(gè)檢索器??梢允褂弥霸O(shè)置好的docsearch作為檢索器,并且可以設(shè)置返回的文檔數(shù)量為"k":4。

docsearch =FAISS.from texts(texts,embeddings)
from langchain.chains import RetrievalQA
retriever =docsearch.as_retriever(search type="similarity",search kwargs=("k":4))

????將RetrievalQA鏈的chain_type設(shè)置為stuf類型,stuf類型會(huì)將搜索到的4個(gè)相似文檔片段全部提交給LLM。

# create the chain to answer questions
rqa =RetrievalQA.from_chain_type (llm=OpenAI(),chain type="stuff",retriever=retriever,return_source_documents=True)

????設(shè)置return_source documents=-True后,當(dāng)查詢“OpenAI是什么”時(shí),不僅會(huì)得到一個(gè)答案,還會(huì)得到源文檔source_documents。

query="OpenAI是什么?"
rqa(query)['result']

????查詢的結(jié)果是:OpenAI是一家技術(shù)研究和開(kāi)發(fā)公司,旨在研究人工智能的安全性、可控性和效率。它的主要目標(biāo)是使智能技術(shù)得以廣泛使用,以改善人類生活?!と绻恍枰虚g步驟和源文檔,只需要最終答案,那么可以直接請(qǐng)求返回結(jié)果。設(shè)置return_source_documents為False。比如問(wèn)“GPT-4對(duì)創(chuàng)新力有什么影響?”

query="GPT-4對(duì)創(chuàng)新力有什么影響?"
rga(query)['result']

????它會(huì)直接返回結(jié)果,不包括源文檔。GPT-4可以加強(qiáng)創(chuàng)作者和創(chuàng)作者的創(chuàng)作能力和生產(chǎn)力,從而提高創(chuàng)新力。它可以幫助他們,例如頭腦風(fēng)暴、編輯、反饋、翻譯和營(yíng)銷。此外,GPT-4還可以幫助他們更快地完成任務(wù),從而提高他們的生產(chǎn)效率。它也可以幫助他們更深入地思考,更有創(chuàng)意地思考。

http://www.risenshineclean.com/news/47588.html

相關(guān)文章:

  • 建設(shè)工程合同備案是在網(wǎng)站上嗎國(guó)外搜索引擎網(wǎng)站
  • 美食網(wǎng)站制作模板網(wǎng)站流量排名查詢工具
  • 網(wǎng)站建設(shè)的關(guān)鍵詞網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn)教程
  • 傳動(dòng)設(shè)備 技術(shù)支持 東莞網(wǎng)站建設(shè)數(shù)據(jù)分析網(wǎng)頁(yè)
  • 公眾號(hào)電影網(wǎng)站怎么做搜索引擎優(yōu)化技術(shù)都有哪些
  • 一般做網(wǎng)站要多少錢怎樣優(yōu)化網(wǎng)站排名靠前
  • 濟(jì)南網(wǎng)站建設(shè)公司有哪些廣州seo優(yōu)化費(fèi)用
  • 裝修網(wǎng)平臺(tái)品牌seo培訓(xùn)
  • 上海網(wǎng)站建設(shè)方案2021年年度關(guān)鍵詞
  • 陜西中洋建設(shè)有限公司網(wǎng)站自己怎么做關(guān)鍵詞優(yōu)化
  • 三站合一的網(wǎng)站怎么做教程找培訓(xùn)機(jī)構(gòu)的app
  • 手機(jī)社區(qū)網(wǎng)站模板求網(wǎng)址
  • 網(wǎng)站域名自己做百度經(jīng)驗(yàn)官網(wǎng)
  • 做設(shè)計(jì)什么設(shè)計(jì)比較好的網(wǎng)站開(kāi)魯網(wǎng)站seo
  • 怎樣用織夢(mèng)做音樂(lè)網(wǎng)站百度導(dǎo)航如何設(shè)置公司地址
  • 蘇州網(wǎng)站開(kāi)發(fā)公司招聘網(wǎng)頁(yè)制作作業(yè)100例
  • 轉(zhuǎn)轉(zhuǎn)怎么做釣魚(yú)網(wǎng)站素材網(wǎng)
  • 梁山城鄉(xiāng)建設(shè)局網(wǎng)站網(wǎng)絡(luò)輿情分析
  • 產(chǎn)品展示網(wǎng)站模板東莞市網(wǎng)站seo內(nèi)容優(yōu)化
  • wordpress主題插件seo工程師
  • wordpress加一個(gè)字段seo外鏈推廣
  • 杭州的網(wǎng)站建設(shè)靜態(tài)網(wǎng)站開(kāi)發(fā)
  • 廣州商城建網(wǎng)站渠道搜索排名優(yōu)化軟件
  • ecshop網(wǎng)站模板手機(jī)優(yōu)化大師
  • 做100個(gè)網(wǎng)站關(guān)鍵詞優(yōu)化軟件有哪些
  • 魔方網(wǎng)站建設(shè)網(wǎng)站制作網(wǎng)站關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • 現(xiàn)在建網(wǎng)站seo關(guān)鍵詞優(yōu)化排名外包
  • 商城網(wǎng)站建設(shè)經(jīng)驗(yàn)seo工具軟件
  • 網(wǎng)站建設(shè)第一步怎么弄win7優(yōu)化大師官網(wǎng)
  • 深圳網(wǎng)站建設(shè)制作公司排名國(guó)際新聞?lì)^條