精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

大模型之深入了解Retrievers解析器 原創(chuàng)

發(fā)布于 2024-12-23 14:46
瀏覽
0收藏

前言

在上一章【??大模型之深入探索RAG流程???】中,我們對(duì)RAG流程中 ??文檔讀取(LOAD)??? -> ??文檔切分(SPLIT)??? -> ??向量化(EMBED)??? -> ??存儲(chǔ)(STORE)??? 進(jìn)行了深入了解,本章將接著深入了解 ??解析(Retrieval)?? 的使用

解析器簡(jiǎn)介

大模型之深入了解Retrievers解析器-AI.x社區(qū)

簡(jiǎn)介:在 RAG(Retrieval-Augmented Generation)流程中,Retrieval(檢索)是關(guān)鍵環(huán)節(jié),其主要目標(biāo)是從大量文檔或知識(shí)庫(kù)中提取與用戶查詢相關(guān)的信息。

目的

  • 信息獲取:根據(jù)用戶的查詢,從外部知識(shí)庫(kù)中獲取相關(guān)文檔或片段,以增強(qiáng)生成模型的上下文信息。
  • 提高準(zhǔn)確性:通過提供具體的、相關(guān)的信息,幫助生成模型(如語言模型)產(chǎn)生更準(zhǔn)確和上下文相關(guān)的回答。

流程

  1. 用戶查詢:用戶輸入一個(gè)查詢或問題。
  2. 檢索器:使用檢索算法(如 BM25、TF-IDF 或基于嵌入的檢索)搜索知識(shí)庫(kù),找到與查詢最相關(guān)的文檔。
  3. 文檔評(píng)分:對(duì)檢索到的文檔進(jìn)行評(píng)分,通常依據(jù)相關(guān)性得分來排序。
  4. 返回結(jié)果:將最相關(guān)的文檔或片段返回給生成模型。

解析器的基礎(chǔ)使用

創(chuàng)建知識(shí)庫(kù)

第一步:?jiǎn)?dòng)Chroma數(shù)據(jù)庫(kù)

chroma run --path chroma_xiyou --port 8000

第二步:使用RAG基礎(chǔ)流程:Load->Split->EMBED->STORE創(chuàng)建一個(gè)知識(shí)庫(kù)

from langchain_text_splitters importRecursiveCharacterTextSplitter
from langchain.embeddings importHuggingFaceEmbeddings
from langchain.document_loaders importPyMuPDFLoader
from langchain_chroma importChroma
from chromadb importSettings
from chromadb importClient
from utils import get_ernie_models
import chromadb

# 連接大模型
llm_ernie, chat_ernie, embed_ernie = get_ernie_models()

# 初始化 HuggingFaceEmbeddings
embedding_function =HuggingFaceEmbeddings(model_name="bert-base-chinese")

# 加載文檔
pdf_loader =PyMuPDFLoader("testfiles/西游記.pdf")
documents = pdf_loader.load()

# 切分文檔
spliter =RecursiveCharacterTextSplitter(chunk_size=128, chunk_overlap=64)
docs = spliter.split_documents(documents)

# 配置連接信息
client = chromadb.HttpClient(host='localhost', port=8000)

chroma_db =Chroma(
    embedding_functinotallow=embedding_function,
    client=client
)

batch_size =6# 每次處理的樣本數(shù)量

# 分批入庫(kù)
for i inrange(0,len(docs), batch_size):
    batch = docs[i:i + batch_size]# 獲取當(dāng)前批次的樣本
print(f'Processing batch {i} to {i + batch_size}, total {len(batch)} samples')
    chroma_db.add_documents(documents=batch)  # 入庫(kù)

說明:

  • 向量化說明:由于Qwen和百度千帆的向量接口限制較多,對(duì)于向量化西游記這本書來說,經(jīng)常會(huì)遇到超出限制等問題,所以此處我將向量化接口換為HuggingFaceEmbeddings(),該接口可能會(huì)存在被Ban的風(fēng)險(xiǎn),請(qǐng)自行更換向量化接口。
  • 測(cè)試文檔:西游記下載地址請(qǐng)見夸克網(wǎng)盤:西游記

創(chuàng)建解析器

第三步:創(chuàng)建一個(gè)解析器

retriever = chroma_db.as_retriever()

創(chuàng)建chain鏈

創(chuàng)建chain鏈有兩種方法:一種是管道符連接,一種是使用 create_retrieval_chain 。本章我們兩種方法都做嘗試,以便對(duì)比代碼的寫法。

方式一:傳統(tǒng)的管道符構(gòu)建chain

# RAG系統(tǒng)經(jīng)典的 Prompt 
prompt =ChatPromptTemplate.from_messages([
("human","""You are an assistant for question-answering tasks. Use the following pieces 
  of retrieved context to answer the question. 
  If you don't know the answer, just say that you don't know. 
  Use three sentences maximum and keep the answer concise.
  Question: {question} 
  Context: {context} 
  Answer:""")
])


defformat_docs(docs):
return"\n\n".join(doc.page_content for doc in docs)


# RAG 鏈
rag_chain =(
{"context": retriever | format_docs,
"question":RunnablePassthrough()}
| prompt
| chat_ernie
|StrOutputParser()
)

rag_chain.invoke(input="孫悟空三打白骨精時(shí),白骨精分別變成了哪些形態(tài)?")

運(yùn)行結(jié)果:

大模型之深入了解Retrievers解析器-AI.x社區(qū)

方式二:使用create_retrieval_chain構(gòu)建

from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts importChatPromptTemplate

prompt =ChatPromptTemplate.from_messages([
("system","""Answer any use questions based solely on the context below:
<context>
{context}
</context>"""),
("placeholder","{chat_history}"),
("human","{input}"),
])

combine_docs_chain = create_stuff_documents_chain(
    llm=chat_ernie,prompt= prompt
)

chain = create_retrieval_chain(retriever=retriever, combine_docs_chain=combine_docs_chain)

chain.invoke(input={"input":"孫悟空三打白骨精時(shí),白骨精分別變成了哪些形態(tài)?"})

說明:

  • 上述的prompt可以在smith.langchain.com上查詢??langchain-ai/retrieval-qa-chat??得到。

運(yùn)行結(jié)果:

大模型之深入了解Retrievers解析器-AI.x社區(qū)

通過對(duì)比,可以看到使用 ??create_retrieval_chain?? 創(chuàng)建chain時(shí),可以減少format_docs()步驟以及使用管道符部分的代碼量,簡(jiǎn)化調(diào)用步驟。

以上調(diào)用即為完整的解析器使用流程,其中第三步中 ??retriever = chroma_db.as_retriever()?? 可以有多種方式構(gòu)建解析器。本章內(nèi)容,我們著重對(duì)此深入研究。

解析器的不同類型

除了上面基礎(chǔ)的向量存儲(chǔ)檢索器之外,Langchain 還提供了多種高級(jí)檢索類型,包括多查詢檢索器(MultiQueryRetriever)、結(jié)合檢索器(EnsembleRetriever)等。

多查詢檢索器 MultiQueryRetriever

簡(jiǎn)介: ??MultiQueryRetriever?? 是一種檢索算法,它通過使用大型語言模型(LLM)生成多個(gè)查詢,從而自動(dòng)化提示調(diào)優(yōu)過程。

功能: 它為給定的用戶輸入查詢生成多個(gè)不同視角的查詢。對(duì)于每個(gè)查詢,它檢索一組相關(guān)文檔,并通過所有查詢的唯一聯(lián)合來獲得更大的一組潛在相關(guān)文檔。這種方法提高了檢索的準(zhǔn)確性和多樣性。

使用場(chǎng)景: 當(dāng)用戶的問題復(fù)雜并且需要多條不同的信息來回答時(shí),??MultiQueryRetriever?? 特別有用。它可以在需要關(guān)于多個(gè)主題的信息時(shí)提供更全面的結(jié)果

使用方法: 第一步:構(gòu)建知識(shí)庫(kù)(此處復(fù)用上面的知識(shí)庫(kù),詳細(xì)內(nèi)容不再贅述)

第二步:使用MultiQueryRetriever

import logging
from langchain.retrievers.multi_query importMultiQueryRetriever

question ="孫悟空三打白骨精時(shí),白骨精分別變成了哪些形態(tài)?"

# 把向量操作封裝為一個(gè)基本檢索器
retriever = chroma_db.as_retriever()

retriever_from_llm =MultiQueryRetriever.from_llm(
    retriever=chroma_db.as_retriever(), llm=chat_ernie
)

logging.basicConfig()
logging.getLogger("langchain.retrievers.multi_query").setLevel(logging.INFO)

unique_docs = retriever_from_llm.get_relevant_documents(query=question)
unique_docs

print(f'返回的文檔個(gè)數(shù):{len(unique_docs)}')
print(f'返回的文檔內(nèi)容:')
for doc in unique_docs:
print(doc.page_content)

運(yùn)行結(jié)果:

INFO:langchain.retrievers.multi_query:Generated 
queries: ['以下是三個(gè)不同版本的生成問題,旨在從不同角度探索原始問題的相關(guān)信息:', 
'1. 孫悟空在三打白骨精的情節(jié)中,白骨精分別化作了哪些生物或物體形態(tài)?', 
'2. 孫悟空三打白骨精時(shí),白骨精變身的形態(tài)有哪些?請(qǐng)?jiān)敿?xì)列出。', 
'3. 在《西游記》中,白骨精在孫悟空三打她的過程中,她變換成了哪些不同的身份或外觀?', 
'希望以上問題可以幫助你從不同的角度獲取相關(guān)信息,從而更全面地回答原始問題。']

大模型之深入了解Retrievers解析器-AI.x社區(qū)

第三步:使用 create_retrieval_chain 進(jìn)行完整查詢

from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts importChatPromptTemplate

# 創(chuàng)建結(jié)合文檔的鏈
prompt =ChatPromptTemplate.from_messages([
("system","""Answer any user questions based solely on the context below:
<context>
{context}
</context>"""),
("placeholder","{chat_history}"),
("human","{input}"),
])

combine_docs_chain = create_stuff_documents_chain(
    llm=chat_ernie, prompt=prompt
)

# 創(chuàng)建檢索鏈
chain = create_retrieval_chain(retriever=retriever_from_llm, combine_docs_chain=combine_docs_chain)

# 使用鏈進(jìn)行查詢
result = chain.invoke(input={"input": question})

# 輸出最終結(jié)果
print("最終回答:", result)

運(yùn)行結(jié)果:

最終回答: {'input':'孫悟空三打白骨精時(shí),白骨精分別變成了哪些形態(tài)?',
'context':[
Document(metadata={'author':'吳承恩','creationDate':"D:20240329064911+00'00'",'creator':'calibre 3.23.0 [https://calibre-ebook.com]','file_path':'testfiles/西游記.pdf','format':'PDF 1.4','keywords':'','modDate':'','page':7,'producer':'calibre 3.23.0 [https://calibre-ebook.com]','source':'testfiles/西游記.pdf','subject':'','title':'西游記(人文社經(jīng)典彩皮版,長(zhǎng)銷70年,以明代世德堂本為底本;三次修訂重校;豆瓣上萬條評(píng)論;2020年教育部指導(dǎo)目錄圖書)','total_pages':675,'trapped':''}, page_cnotallow='了許多新的成果,為了能讓廣大讀者更好地理解該作品,這次特意邀請(qǐng)北京大學(xué)劉勇強(qiáng)教授重新為該書撰\n寫了前言。\n六、關(guān)于取經(jīng)途中所遇的八十一難順序,第九十九回諸神給觀音菩薩提供的簿子所記,與小說的敘述'),
....(內(nèi)容過多,此處省略)
Document(metadata={'author':'吳承恩','creationDate':"D:20240329064911+00'00'",'creator':'calibre 3.23.0 [https://calibre-ebook.com]','file_path':'testfiles/西游記.pdf','format':'PDF 1.4','keywords':'','modDate':'','page':6,'producer':'calibre 3.23.0 [https://calibre-ebook.com]','source':'testfiles/西游記.pdf','subject':'','title':'西游記(人文社經(jīng)典彩皮版,長(zhǎng)銷70年,以明代世德堂本為底本;三次修訂重校;豆瓣上萬條評(píng)論;2020年教育部指導(dǎo)目錄圖書)','total_pages':675,'trapped':''}, page_cnotallow='五、更換前言。本書的前言,過去一直沿用華東師范大學(xué)郭豫適、簡(jiǎn)茂森教授一九七二年所寫的文\n字,限于當(dāng)時(shí)的歷史環(huán)境,政治化色彩較濃,而《西游記》研究在過去的幾十年中取得了很大發(fā)展,出現(xiàn)')],
'answer':'根據(jù)原文信息得出,孫悟空三打白骨精時(shí),白骨精分別變成了美麗的村姑、年滿八旬的老婦人、和一位白發(fā)蒼蒼的老公公。'}

通過以上實(shí)踐,可以看到:

 1、MultiQueryRetriever會(huì)借助大模型生成新的多個(gè)查詢 queries;

 2、MultiQueryRetriever會(huì)通過這些 queries 檢索出相關(guān)的文檔;

 3、最后,通過 combine_docs_chain 將檢索出的文檔交給大模型得到最終答案。

結(jié)合檢索器 EnsembleRetriever

簡(jiǎn)介: EnsembleRetriever是一種結(jié)合多個(gè)檢索器結(jié)果的算法,通過重新排序來提高檢索效果。

功能: 該算法從多個(gè)檢索器中獲取文檔,并將它們組合在一起,以提高文本相似性匹配和信息檢索的準(zhǔn)確性。通過結(jié)合多種補(bǔ)充的向量搜索算法,EnsembleRetriever提供了最先進(jìn)的文本相似性匹配和信息檢索能力。

使用場(chǎng)景: 當(dāng)需要結(jié)合多種檢索方法以獲得更高的檢索準(zhǔn)確性時(shí),EnsembleRetriever是理想的選擇。這種方法適用于需要從大量文檔集合中進(jìn)行信息檢索的應(yīng)用場(chǎng)景

使用方法 第一步:安裝依賴包

pip install rank_bm25
pip install faiss-gpu

第二步:準(zhǔn)備知識(shí)數(shù)據(jù)

from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import BM25Retriever
from langchain_community.vectorstores import FAISS

# 初始化 HuggingFaceEmbeddings
embedding =HuggingFaceEmbeddings(model_name="bert-base-chinese")


# 中文文檔列表
doc_list_1 =[
"我喜歡蘋果",
"我喜歡橙子",
"蘋果和橙子都是水果",
]

doc_list_2 =[
"你喜歡蘋果嗎?",
"你喜歡橙子嗎?",
]

第三步:創(chuàng)建組合檢索器

# 初始化 BM25 檢索器
bm25_retriever = BM25Retriever.from_texts(
    doc_list_1, metadatas=[{"source":1}]*len(doc_list_1)
)
bm25_retriever.k =2

# 創(chuàng)建 FAISS 向量存儲(chǔ) 
faiss_vectorstore = FAISS.from_texts(
    doc_list_2, embedding, metadatas=[{"source":2}]*len(doc_list_2)
)
faiss_retriever = faiss_vectorstore.as_retriever(search_kwargs={"k":2})

# 初始化組合檢索器
ensemble_retriever =EnsembleRetriever(
    retrievers=[bm25_retriever, faiss_retriever], weights=[0.5,0.5]
)

第四步:進(jìn)行查詢

# 輸入查詢
docs = ensemble_retriever.invoke("我想知道關(guān)于蘋果的信息")
print(docs)

運(yùn)行結(jié)果:

[
    Document(metadata={'source':1}, page_cnotallow='蘋果和橙子都是水果'),
Document(metadata={'source':2}, page_cnotallow='你喜歡蘋果嗎?'),
Document(metadata={'source':1}, page_cnotallow='我喜歡橙子'),
Document(metadata={'source':2}, page_cnotallow='你喜歡橙子嗎?')
]

說明:

  • BM25Retriever 是一種基于經(jīng)典信息檢索模型 BM25 的檢索器。它的優(yōu)點(diǎn):

簡(jiǎn)單易用,適合處理短文本和關(guān)鍵詞檢索。

對(duì)于傳統(tǒng)的文本匹配任務(wù)表現(xiàn)良好。

  • FAISS(Facebook AI Similarity Search)是一個(gè)高效的相似性搜索庫(kù),專門用于處理大規(guī)模向量數(shù)據(jù)。它的優(yōu)點(diǎn):
  • 適合處理復(fù)雜的語義檢索任務(wù),尤其是在向量空間中。
  • 能夠處理大規(guī)模數(shù)據(jù)集,檢索速度快。
  • 將 BM25Retriever 和 FAISS 組合在一起:
  • 互補(bǔ)性:BM25 更適合處理基于關(guān)鍵詞的檢索,能夠有效地從文本中找到相關(guān)文檔;FAISS 則擅長(zhǎng)處理語義相似性,通過向量化表示捕捉文本的深層含義。
  • 提高檢索:通過組合兩種方法,可以充分利用 BM25 的詞頻特性和 FAISS 的向量相似性,從而提高整體檢索的準(zhǔn)確性和全面性。

長(zhǎng)上下文重排序 LongContextReorder

簡(jiǎn)介: LongContextReorder是一種用于處理長(zhǎng)上下文信息的技術(shù),旨在提高模型在長(zhǎng)文本中的信息提取和理解能力。它通過重新排序文檔,以使最相關(guān)的信息更易于被模型捕捉。

功能信息重排序: LongContextReorder從多個(gè)檢索器中獲取文檔,并對(duì)它們進(jìn)行重新排序,使得最相關(guān)的文檔位于上下文窗口的開頭和結(jié)尾。這有助于模型更好地關(guān)注整個(gè)上下文中的關(guān)鍵內(nèi)容。 上下文優(yōu)化: 通過優(yōu)化上下文的排列,模型能夠更有效地利用長(zhǎng)文本中的信息,從而提高回答的準(zhǔn)確性和相關(guān)性。

使用場(chǎng)景: 這種技術(shù)特別適合需要在長(zhǎng)文本中提取關(guān)鍵信息的應(yīng)用場(chǎng)景,比如法律文書分析、學(xué)術(shù)論文閱讀和長(zhǎng)篇故事理解等。

使用方法

第一步:?jiǎn)?dòng) Chroma 數(shù)據(jù)庫(kù)

chroma run --path chroma_test --port 8000

說明:

  • 此處是避免與前面的代碼產(chǎn)生數(shù)據(jù)污染,所以最好關(guān)閉之前的chroma數(shù)據(jù)庫(kù),重新啟動(dòng)一個(gè)新的。

第二步:準(zhǔn)備數(shù)據(jù)

import os
from langchain.chains importLLMChain,StuffDocumentsChain
from langchain.prompts importPromptTemplate
from langchain_chroma importChroma
from langchain_community.document_transformers import(
LongContextReorder,
)
from langchain_community.embeddings importHuggingFaceEmbeddings

# 測(cè)試數(shù)據(jù)
texts =[
"籃球是一項(xiàng)很棒的運(yùn)動(dòng)。",
"《Fly me to the moon》 是我最喜歡的歌曲之一。",
"凱爾特人是我最喜歡的球隊(duì)。",
"這是關(guān)于波士頓凱爾特人的一篇文章。",
"我最喜歡的游戲是《黑神話:悟空》",
"波士頓凱爾特人以20分的優(yōu)勢(shì)贏得了比賽。",
"在《西游記》中,孫悟空三打白骨精時(shí),白骨精分別變成了村姑、老婦和老翁這三種形態(tài)。"
"孫悟空三大白骨精是西游記中一段精彩的篇章。",
"L. Kornet 是凱爾特人隊(duì)中最優(yōu)秀的球員之一",
"Larry Bird 是一位標(biāo)志性的NBA球員。",
]
# 初始化 HuggingFaceEmbeddings
embeddings =HuggingFaceEmbeddings(model_name="bert-base-chinese")

第三步:創(chuàng)建Retriever并查詢相關(guān)信息

# 創(chuàng)建一個(gè) retriever
retriever = Chroma.from_texts(texts, embedding=embeddings).as_retriever(
    search_kwargs={"k": 10}
)

query = "請(qǐng)告訴我關(guān)于白骨精的事情"
 
# Get relevant documents ordered by relevance score
docs = retriever.get_relevant_documents(query)
for doc in docs:
    print(doc.page_content)

運(yùn)行結(jié)果:

在《西游記》中,孫悟空三打白骨精時(shí),白骨精分別變成了村姑、老婦和老翁這三種形態(tài)。孫悟空三大白骨精是西游記中一段精彩的篇章。
這是關(guān)于波士頓凱爾特人的一篇文章。
我最喜歡的游戲是《黑神話:悟空》
L. Kornet 是凱爾特人隊(duì)中最優(yōu)秀的球員之一
《Fly me to the moon》 是我最喜歡的歌曲之一。
凱爾特人是我最喜歡的球隊(duì)。
Larry Bird 是一位標(biāo)志性的NBA球員。
籃球是一項(xiàng)很棒的運(yùn)動(dòng)。
波士頓凱爾特人以20分的優(yōu)勢(shì)贏得了比賽。

第四步:使用LongContextReorder進(jìn)行重排序

reordering = LongContextReorder()
reordered_docs = reordering.transform_documents(docs)
 
for doc in reordered_docs:
    print(doc.page_content)

運(yùn)行結(jié)果:

在《西游記》中,孫悟空三打白骨精時(shí),白骨精分別變成了村姑、老婦和老翁這三種形態(tài)。孫悟空三大白骨精是西游記中一段精彩的篇章。
我最喜歡的游戲是《黑神話:悟空》
《Fly me to the moon》 是我最喜歡的歌曲之一。
Larry Bird 是一位標(biāo)志性的NBA球員。
波士頓凱爾特人以20分的優(yōu)勢(shì)贏得了比賽。
籃球是一項(xiàng)很棒的運(yùn)動(dòng)。
凱爾特人是我最喜歡的球隊(duì)。
L. Kornet 是凱爾特人隊(duì)中最優(yōu)秀的球員之一
這是關(guān)于波士頓凱爾特人的一篇文章。

對(duì)比上面的結(jié)果,可以看到,通過使用 LongContextReorder,可以將文檔重新排序,將與西游相關(guān)的信息排在前面,有助于提高模型的理解能力。

ElasticSearchBM25Retriever

簡(jiǎn)介: ElasticSearchBM25Retriever使用BM25算法,這是信息檢索中的一種經(jīng)典方法,廣泛應(yīng)用于ElasticSearch等搜索引擎中。

功能: BM25是一種基于概率模型的檢索算法,能夠根據(jù)文檔和查詢之間的詞頻和逆文檔頻率,計(jì)算文檔的相關(guān)性得分。

使用場(chǎng)景: ElasticSearchBM25Retriever適用于需要高效文本搜索的場(chǎng)景,尤其是在需要處理大量非結(jié)構(gòu)化文本數(shù)據(jù)時(shí)。它在搜索引擎優(yōu)化和文本挖掘中非常有用。

使用方法

第一步:安裝必要的庫(kù)

pip install elasticsearch langchain

第二步:安裝Elasticsearch并啟動(dòng)服務(wù)

  1. 1. 啟動(dòng)Elasticsearch的Docker容器,確保 Elasticsearch 服務(wù)正在運(yùn)行。
  2. 2. 在瀏覽器中訪問 http://localhost:9200 可以得到如下內(nèi)容。
  3. 大模型之深入了解Retrievers解析器-AI.x社區(qū)

說明:Elasticsearch 的安裝方法較長(zhǎng),由于不是本章的主線內(nèi)容,所以我將這方面內(nèi)容放在附錄部分。

第三步:準(zhǔn)備數(shù)據(jù)并創(chuàng)建索引

from elasticsearch importElasticsearch
from langchain.retrievers importElasticSearchBM25Retriever

elasticsearch_url ="http://elastic:mytest@localhost:9200"


# 創(chuàng)建檢索器
retriever =ElasticSearchBM25Retriever.create(elasticsearch_url,"langchain-index-5")

# 準(zhǔn)備測(cè)試數(shù)據(jù)
documents =[
"籃球是一項(xiàng)很棒的運(yùn)動(dòng)。",
"《Fly me to the moon》 是我最喜歡的歌曲之一。",
"凱爾特人是我最喜歡的球隊(duì)。",
"這是關(guān)于波士頓凱爾特人的一篇文章。",
"我最喜歡的游戲是《黑神話:悟空》"
]

# 添加文本
retriever.add_texts(documents)

運(yùn)行結(jié)果:

['39c92ff7-4aba-42fb-bc88-2997b5e0c297',
 'b1e9c357-b67c-43e0-bf95-2591c9e2a103',
 'e4f964cf-92a0-4b4a-b648-9d0c2f8594b0',
 '9edcfd38-e954-4bb1-b0d5-68ebf13b3443',
 'ea0fc62f-6afd-4e27-9f85-a357ef9221a3']

說明: ??http://elastic:mytest@localhost:9200?? 中:

  • ??elastic?? 是用戶名
  • ??mytest?? 是密碼

第四步:使用 ??retriever?? 進(jìn)行查詢

# 查詢
query ="請(qǐng)告訴我關(guān)于凱爾特人的事情"
try:
    docs = retriever.get_relevant_documents(query)

# 輸出結(jié)果
for doc in docs:
print(doc.page_content)
print("-"*20)
exceptExceptionas e:
print(f"An error occurred: {e}")

運(yùn)行結(jié)果:

這是關(guān)于波士頓凱爾特人的一篇文章。
--------------------
凱爾特人是我最喜歡的球隊(duì)。
--------------------
我最喜歡的游戲是《黑神話:悟空》
--------------------
《Fly me to the moon》 是我最喜歡的歌曲之一。
--------------------
籃球是一項(xiàng)很棒的運(yùn)動(dòng)。
--------------------

附錄

ElasticSearch的Docker安裝教程

由于在系統(tǒng)環(huán)境中安裝ElasticSearch非常繁瑣,需要安裝(JDK等)基礎(chǔ)環(huán)境,所以我們使用Docker來安裝ElasticSearch。

安裝Docker

Docker的安裝教程比較多且詳細(xì),所以本文不再贅述,詳情請(qǐng)查看: 10分鐘學(xué)會(huì)Docker的安裝和使用

創(chuàng)建網(wǎng)絡(luò)

docker network create es-net

運(yùn)行結(jié)果:

大模型之深入了解Retrievers解析器-AI.x社區(qū)

拉取鏡像

docker pull elasticsearch:8.6.0

運(yùn)行結(jié)果:

大模型之深入了解Retrievers解析器-AI.x社區(qū)

創(chuàng)建掛載點(diǎn)目錄

# 選擇合適的目錄創(chuàng)建三個(gè)文件夾
mkdir -p /Users/deadwalk/Code/elasticsearch/data /Users/deadwalk/Code/elasticsearch/config /Users/deadwalk/Code/elasticsearch/plugins

運(yùn)行結(jié)果:

大模型之深入了解Retrievers解析器-AI.x社區(qū)

啟動(dòng)容器

命令行中輸入命令啟動(dòng)Docker容器

docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /Users/deadwalk/Code/elasticsearch/data:/usr/share/elasticsearch/data \
-v /Users/deadwalk/Code/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.6.0

運(yùn)行結(jié)果:

大模型之深入了解Retrievers解析器-AI.x社區(qū)

使用 ??docker ps?? 可以看到Docker容器已經(jīng)啟動(dòng)。

大模型之深入了解Retrievers解析器-AI.x社區(qū)

修改elasticsearch的密碼

第一步:進(jìn)入es容器

docker exec -it es /bin/bash

第二步:命令行輸入重置密碼命令

bin/elasticsearch-reset-password -i -u elastic

根據(jù)提示重置密碼,例如:mytest

第三步:使用瀏覽器訪問http://localhost:9200/ 使用用戶名 ??elastic??? 和重置的密碼 ??mytest?? ,驗(yàn)證可以登錄。

大模型之深入了解Retrievers解析器-AI.x社區(qū)

內(nèi)容小結(jié)

  • RAG系統(tǒng)在進(jìn)行Load->Split->Embedding->Store->Query流程時(shí),需要使用??Retriever?? 進(jìn)行文檔檢索。
  • Retriever進(jìn)行文檔檢索時(shí),有兩種方法構(gòu)建Chain鏈:一種是傳統(tǒng)的管道符構(gòu)建,另一種是使用??create_retrieval_chain?? 。
  • 使用Retriever時(shí),除了基礎(chǔ)的向量存儲(chǔ)檢索器之外,還可以使用多查詢檢索器(??MultiQueryRetriever??)、結(jié)合檢索器(??EnsembleRetriever??)等。
  • ??MultiQueryRetriever?? 是一種檢索算法,它通過使用大型語言模型(LLM)生成多個(gè)查詢,從而自動(dòng)化提示調(diào)優(yōu)過程。
  • ??MultiQueryRetriever?? 的工作流程如下:

     1.??MultiQueryRetriever??? 會(huì)借助大模型生成新的多個(gè)查詢 ??queries;??

     2.??MultiQueryRetriever??? 會(huì)通過這些 ??queries?? 檢索出相關(guān)的文檔;

     3.最后,通過 ??combine_docs_chain?? 將檢索出的文檔交給大模型得到最終答案。

  • ??EnsembleRetriever?? 是一種結(jié)合多個(gè)檢索器結(jié)果的算法,通過重新排序來提高檢索效果。
  • BM25Retriever 是一種基于經(jīng)典信息檢索模型 BM25 的檢索器。
  • FAISS(Facebook AI Similarity Search) 是一個(gè)高效的相似性搜索庫(kù),專門用于處理大規(guī)模向量數(shù)據(jù)。
  • EnsembleRetriever 可以將 BM25Retriever 和 FAISS 組合使用,從而提高整體檢索的準(zhǔn)確性和全面性。
  • LongContextReorder 是一種用于處理長(zhǎng)上下文信息的技術(shù),旨在提高模型在長(zhǎng)文本中的信息提取和理解能力。
  • ElasticSearchBM25Retriever 可以與開源搜索引擎 ElasticSearch 進(jìn)行交互,以實(shí)現(xiàn)向量搜索。


本文轉(zhuǎn)載自公眾號(hào)一起AI技術(shù) 作者:熱情的Dongming

原文鏈接:??https://mp.weixin.qq.com/s/8FhQ2Svp6E15c08OgSCUxQ??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
久久视频这里有精品| 国产日韩在线观看av| 国模无码视频一区| 自拍偷拍欧美视频| 久久午夜色播影院免费高清| 国产精品色视频| 久久精品一级片| 蜜臀av免费一区二区三区 | 尤物tv国产一区| 亚洲天堂小视频| 自由日本语热亚洲人| 自拍av一区二区三区| 国产一区二区三区四区hd| 伊人久久久久久久久久久久| 自拍偷拍欧美专区| 亚洲欧美日韩中文在线| 69久久精品无码一区二区| 中文字幕乱码在线播放| 自拍视频在线观看一区二区| 欧美激情专区| 国产福利小视频| 日韩成人免费在线| 久久久久久久激情视频| www.涩涩爱| 亚洲欧美tv| 欧美sm极限捆绑bd| 一本色道久久亚洲综合精品蜜桃| 黄色在线观看www| 最近中文字幕一区二区三区| 久久综合中文色婷婷| 国产丝袜在线视频| 日本不卡一区二区| 欧美一级大片在线免费观看| a级黄色片免费看| 日本欧美肥老太交大片| 日韩成人久久久| 国产日韩视频一区| 成人在线分类| 717成人午夜免费福利电影| 久久免费视频3| 肉体视频在线| 中文字幕字幕中文在线中不卡视频| 欧美一区二区三区四区夜夜大片| 国产 日韩 欧美 综合| 国产九色精品成人porny| 国产精品视频一| 亚洲国产成人精品女人久久| 中文亚洲免费| 欧美性受xxxx白人性爽| 国产无遮挡aaa片爽爽| 欧美精品三级| 色综合久综合久久综合久鬼88 | 午夜精品一区二区三区在线播放| 在线免费观看亚洲视频| 亚洲成av人电影| 日韩小视频在线观看| 天堂av网手机版| 第一会所sis001亚洲| 一本色道久久综合狠狠躁篇的优点 | 日韩电影在线播放| 国产一级在线| 亚洲国产精品成人综合色在线婷婷| 欧美日韩电影一区二区| 青青草在线免费视频| 久久综合成人精品亚洲另类欧美 | 青青草一区二区| 欧美a视频在线观看| 美女久久网站| 国产精品免费久久久久久| 中文字幕手机在线视频| 日韩成人一级片| 国产在线精品一区免费香蕉 | 婷婷伊人五月天| 999成人网| 欧美成人精品在线播放| 黄色一级视频免费| 亚洲精品少妇| 日韩免费在线播放| 中文字幕在线观看高清| 麻豆国产精品视频| 亚洲最大激情中文字幕| 狠狠综合久久av一区二区| 91亚洲资源网| 亚洲成人一区二区三区| 超碰在线免费公开| 亚洲一区影音先锋| 日日橹狠狠爱欧美超碰| 日韩毛片在线| 日韩欧美一级片| 人妻无码一区二区三区| 国产精品午夜一区二区三区| 日韩中文在线观看| 久久综合综合久久| 石原莉奈在线亚洲二区| 91人成网站www| 午夜黄色小视频| 国产精品久久久久久久岛一牛影视| 成人手机在线播放| 成人性生活av| 日韩一区二区三区免费观看| 国产老熟女伦老熟妇露脸| 日韩国产一区二区| 久久久久久高潮国产精品视| 少妇久久久久久久| 国产成人午夜视频| 日本成人黄色| 国产美女福利在线观看| 欧美亚洲国产一区二区三区va| 国产成人精品综合久久久久99| 久久99蜜桃| 欧美激情一级精品国产| 久久久久久在线观看| 国产精品一二三| 日韩精品不卡| 成人影院在线播放| 欧美精品成人一区二区三区四区| 日韩 中文字幕| 天天超碰亚洲| 日韩免费中文字幕| 蜜桃视频久久一区免费观看入口 | 澳门黄色一级片| 久久精品123| 国产精品.com| 老司机在线看片网av| 欧美视频在线观看免费| 国产老头和老头xxxx×| 国产精品99一区二区三| 国产91在线播放九色快色| 亚洲精品97久久中文字幕无码| 国产精品亲子乱子伦xxxx裸| 国产精品va无码一区二区| 国产精品99久久免费| 主播福利视频一区| 国产精品久久久久久人| 不卡的av在线播放| 日韩亚洲欧美一区二区| www.一区| 亚洲最新视频在线| 加勒比在线一区| 26uuu欧美| 国产精品沙发午睡系列| 韩国精品福利一区二区三区 | 深夜在线视频| 亚洲精品wwwww| 日韩三级小视频| proumb性欧美在线观看| 天堂8在线天堂资源bt| 91麻豆精品| 美女精品久久久| 国产乱淫av免费| 综合欧美亚洲日本| 91日韩精品视频| 久久久久久久久久久9不雅视频| 国产精品视频yy9099| 国产一级片在线| 在线亚洲高清视频| 99精品全国免费观看| 丝袜美腿亚洲色图| 日韩av一区二区三区在线| 91p九色成人| www亚洲欧美| 国产又粗又猛又黄又爽| 亚洲三级在线观看| 色哟哟网站在线观看| 亚洲国产精品一区制服丝袜| 国产欧美日韩亚洲| 性欧美又大又长又硬| 亚洲视频免费一区| 伊人网免费视频| 日韩美女视频一区二区| 亚洲成年人av| 久久99伊人| 亚洲欧洲三级| 日韩精品一区二区三区中文在线| 久久久久国产一区二区三区| 日本韩国一区| 欧美日韩中文国产| 欧美成人aaa片一区国产精品| 成人美女视频在线看| 97成人在线免费视频| 国产精品密蕾丝视频下载| 国产精品美女网站| 污污在线观看| 亚洲国语精品自产拍在线观看| 免费看污视频的网站| 国产精品久久久久久久久久免费看 | 91麻豆免费视频网站| 国产福利精品导航| 91视频 -- 69xx| 99久久婷婷| 精品国产乱码久久久久| 久久精品女人天堂av免费观看 | 欧美videosex性极品hd| 日韩成人激情视频| 97在线公开视频| 午夜精品免费在线| 日韩一区二区三区四区视频| 成人av网在线| 少妇网站在线观看| 国产一区日韩欧美| 色一情一乱一伦一区二区三区丨 | 日韩视频一区在线观看| 好看的av在线| 亚洲少妇最新在线视频| 黄色正能量网站| 国产美女久久久久| 精品久久久久av| 午夜国产精品视频免费体验区| 欧美日韩一区二区三区免费| 国产成人免费视频网站视频社区 | 在线观看免费黄色片| 日韩电影不卡一区| 亚洲一区二区中文字幕| 日韩影片中文字幕| 性色av一区二区三区红粉影视| 欧洲不卡av| 亚洲视频在线免费看| 精品人妻久久久久一区二区三区| 欧美视频完全免费看| 中文字幕亚洲精品在线| 一区二区三区欧美在线观看| 精品日韩在线视频| 91丨九色丨国产丨porny| 亚洲综合123| 免费在线观看视频一区| 成人免费在线小视频| 国产在线成人| 国产精品av免费| 久久激情电影| 日本免费高清一区| 日韩美脚连裤袜丝袜在线| 99久久99久久| 精品国产一区二区三区2021| 国产精品私拍pans大尺度在线| 免费福利视频一区二区三区| 久久露脸国产精品| 色黄网站在线观看| 久久av在线看| www在线观看播放免费视频日本| 影音先锋欧美精品| 粉嫩av在线播放| 一个色综合导航| 成人动漫在线免费观看| 亚洲色图第一页| 国产精品二线| 这里只有精品视频| av大片在线看| 日韩在线观看免费网站| 午夜激情在线观看| 丝袜美腿精品国产二区| 成人18在线| 日韩一区av在线| 美女免费久久| 美乳少妇欧美精品| 日本在线视频网址| 久久全国免费视频| sm捆绑调教国产免费网站在线观看| 国内精品久久久久久影视8| 免费男女羞羞的视频网站在线观看| 欧美二区乱c黑人| 超碰高清在线| 欧美一区二区三区免费观看| 韩国美女久久| 国产精品久久久久高潮| www.成人| 国产精品久久久久久久久久久久午夜片| 在线日韩成人| 美国av一区二区三区| 国产成人3p视频免费观看| 亚洲春色在线视频| 中文一区一区三区免费在线观看| 中文字幕色呦呦| 亚洲在线电影| 鲁一鲁一鲁一鲁一av| 国产伦精品一区二区三区视频青涩| 日本女人性视频| 91视频免费播放| 欧美xxxx精品| 亚洲一区二区三区国产| 亚洲午夜18毛片在线看| 欧美日韩极品在线观看一区| 精品区在线观看| 亚洲毛片在线观看| 黄色免费在线观看| 97久久超碰福利国产精品…| 欧美日韩精品免费观看视欧美高清免费大片| 国产精品亚洲视频在线观看| 日韩视频一二区| 奇米影视首页 狠狠色丁香婷婷久久综合 | 日本不卡123| 原创真实夫妻啪啪av| 95精品视频在线| 免费黄色国产视频| 亚洲无人区一区| 一区精品在线观看| 亚洲激情视频在线| 欧美成年黄网站色视频| 性欧美办公室18xxxxhd| 伊人亚洲精品| 精品视频一区在线| 午夜精品一区二区三区国产| 日韩a∨精品日韩在线观看| 久久99精品久久只有精品| 中国极品少妇videossexhd| 中文一区在线播放| 成人精品在线看| 欧美一区二区三区白人| 欧美亚洲日本| 久久99国产综合精品女同| 手机在线观看av网站| 97久草视频| 色小子综合网| 欧美国产亚洲一区| 高清不卡一区二区在线| 国产欧美小视频| 色综合久久99| 人妻少妇一区二区三区| 久久精品国产亚洲7777| 亚洲一区二区三区四区| 精品国产一区二区三区四区精华| 婷婷另类小说| 亚洲欧洲日本精品| 久久久不卡网国产精品二区| 日本亚洲欧美在线| 日韩一级大片在线观看| 日本蜜桃在线观看| 国产精品免费一区| 国产精品羞羞答答在线观看| 欧美 日韩 亚洲 一区| 成人中文字幕电影| 日本青青草视频| 日韩一区二区三区免费看| 欧美激情二区| 国产精品香蕉在线观看| 欧美精品尤物在线观看| 中文字幕乱码人妻综合二区三区| 成人av免费在线| 日本三级免费看| 亚洲爱爱爱爱爱| sm在线播放| 久久综合久久综合这里只有精品| 亚洲欧洲另类| 捆绑裸体绳奴bdsm亚洲| 午夜国产精品一区| 蜜桃av中文字幕| 欧美性视频在线| 国产日产精品_国产精品毛片| www.浪潮av.com| 久久久久久一级片| 波多野结衣不卡| 中文字幕久热精品视频在线| 久久日本片精品aaaaa国产| 亚洲一卡二卡三卡四卡无卡网站在线看| 日韩一区精品视频| 日韩精品一区二区三区在线视频| 欧美夫妻性生活| 操你啦在线视频| 粉嫩av一区二区三区免费观看| 精品av久久久久电影| 添女人荫蒂视频| 在线欧美日韩国产| 黄色网在线看| 99久久精品久久久久久ai换脸| 亚洲国产mv| 国产精品扒开腿做爽爽| 欧美日韩一区二区三区四区 | 精品国产无码一区二区| 欧美韩国理论所午夜片917电影| 成人激情自拍| av免费观看网| 中文字幕乱码亚洲精品一区| 国产精品国产三级国产aⅴ| 欧美噜噜久久久xxx| 欧美有码在线| 一区二区三区视频在线观看免费| 亚洲欧洲日韩在线| 亚洲国产精品二区| 欧美中文在线观看国产| 久久激情电影| 国产精品手机在线观看| 91高清视频免费看| a级影片在线| 欧美日韩亚洲一区二区三区在线观看| 蜜臀av一级做a爰片久久| 九九精品在线观看视频| 亚洲精品一区二区久| 国产精品一区二区三区四区在线观看 | 92裸体在线视频网站| 亚洲三级免费| 国产一级淫片久久久片a级| 精品乱人伦小说| 视频精品导航| 欧美视频免费看欧美视频| 国产欧美日韩综合精品一区二区 | 国产一区二区看久久| 精品美女久久久久| 久久躁日日躁aaaaxxxx| 一区二区三区视频免费观看| 成人av毛片在线观看| 日韩欧美亚洲范冰冰与中字|