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

介紹一種實(shí)用的RAG技術(shù):父文檔檢索(PDR) 原創(chuàng)

發(fā)布于 2024-8-30 11:23
瀏覽
0收藏

父文檔檢索(PDR)能夠使RAG更準(zhǔn)確、細(xì)致地響應(yīng)各種復(fù)雜的查詢。本文將利用LangChain和OpenAI向你展示其分步實(shí)施步驟。

作為一種能在先進(jìn)的 RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)模型中實(shí)現(xiàn)的方法,父文檔檢索(Parent Document Retrieval,PDR)旨在恢復(fù)那些可以從中提取到相關(guān)子段落(或片段)的完整父文檔。此類文檔通過(guò)將豐富的上下文,傳遞給 RAG 模型,以便對(duì)復(fù)雜或細(xì)微的問(wèn)題,做出更全面且內(nèi)涵豐富的回答。通常,在 RAG 模型中檢索出父文檔的主要步驟包括:

  • 數(shù)據(jù)預(yù)處理:將冗長(zhǎng)的文檔分解為多個(gè)可管理的片段
  • 創(chuàng)建嵌入:將片段轉(zhuǎn)換為數(shù)值向量,以實(shí)現(xiàn)高效的搜索
  • 用戶查詢:讓用戶提交問(wèn)題
  • 塊檢索:模型檢索出那些與查詢嵌入最為相似的部分
  • 查找父文檔:檢索原始文檔或從中獲取更大的片段
  • 父文檔檢索:檢索完整的父文檔,為響應(yīng)提供更為豐富的上下文

介紹一種實(shí)用的RAG技術(shù):父文檔檢索(PDR)-AI.x社區(qū)

循序漸進(jìn)的實(shí)施

根據(jù)上圖,我們可以將實(shí)現(xiàn)父文檔檢索的步驟簡(jiǎn)單分為如下四個(gè)不同的階段:

1. 準(zhǔn)備數(shù)據(jù)

我們首先應(yīng)為自己的 RAG 系統(tǒng)創(chuàng)建環(huán)境并預(yù)處理數(shù)據(jù),以便對(duì)后續(xù)的父文檔開展文檔檢索。

(1)導(dǎo)入必要的模塊

我們將從已安裝的庫(kù)中導(dǎo)入所需的模塊,以設(shè)置我們的 PDR 系統(tǒng):

Python

from langchain.schema import Document
from langchain.vectorstores import Chroma
from langchain.retrievers import ParentDocumentRetriever
from langchain.chains import RetrievalQA
from langchain_openai import OpenAI
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.storage import InMemoryStore
from langchain.document_loaders import TextLoader
from langchain.embeddings.openai import OpenAIEmbeddings

上述這些庫(kù)和模塊正是構(gòu)成整個(gè)過(guò)程步驟的主要部分。

(2)設(shè)置 OpenAI API 密鑰

接著,我們使用 OpenAI LLM來(lái)生成響應(yīng),為此我們需要一個(gè) OpenAI 的API 密鑰。該密鑰可被用來(lái)設(shè)置環(huán)境變量:OPENAI_API_KEY。

Python

OPENAI_API_KEY = os.environ["OPENAI_API_KEY"] = ""  # Add your OpenAI API key
if OPENAI_API_KEY == "":
raise ValueError("Please set the OPENAI_API_KEY environment variable")

(3)定義文本嵌入函數(shù)

通過(guò)如下方式,我們利用 OpenAI 的嵌入來(lái)表示文本數(shù)據(jù):

Python

embeddings = OpenAIEmbeddings()

(4)加載文本數(shù)據(jù)

為了讀取想要檢索的文本文檔,你可以利用類TextLoader來(lái)讀取文本文件:

Python

loaders = [
    TextLoader('/path/to/your/document1.txt'),
    TextLoader('/path/to/your/document2.txt'),
]
docs = []
for l in loaders:
docs.extend(l.load())

2. 檢索完整的文檔

下面,我們將通過(guò)設(shè)置系統(tǒng),來(lái)檢索與子段落相關(guān)的完整父文檔。

(1)完整文檔的拆分

我們使用RecursiveCharacterTextSplitter將加載的文檔分割成比所需大小更小的文本塊。這些子文檔將使我們能夠有效地搜索相關(guān)段落:

Python

child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)

(2)矢量存儲(chǔ)和存儲(chǔ)設(shè)置

下面,我們將使用Chroma向量存儲(chǔ)來(lái)嵌入各個(gè)子文檔,并利用InMemoryStore來(lái)跟蹤與子文檔關(guān)聯(lián)的完整父文檔: 

Python

vectorstore = Chroma(
    collection_name="full_documents",
    embedding_function=OpenAIEmbeddings()
)
store = InMemoryStore()

(3)父文檔檢索器

接著,讓我們從類ParentDocumentRetriever中實(shí)例化一個(gè)對(duì)象。該類主要負(fù)責(zé)完整父文檔與基于子文檔相似性檢索相關(guān)的核心邏輯。

Python

full_doc_retriever = ParentDocumentRetriever(
    vectorstore=vectorstore,
    docstore=store,
    child_splitter=child_splitter
)

(4)添加文檔

然后,這些加載的文檔將使用add_documents方法被饋入ParentDocumentRetriever中,如下代碼所示:

Python

full_doc_retriever.add_documents(docs)
print(list(store.yield_keys()))  # List document IDs in the store

(5)相似性搜索和檢索

至此,檢索器已基本實(shí)現(xiàn),你可以在給定查詢的情況下,去檢索相關(guān)的子文檔,并獲取相關(guān)的完整父文檔:

Python

sub_docs = vectorstore.similarity_search("What is LangSmith?", k=2)
print(len(sub_docs))
print(sub_docs[0].page_content)  
retrieved_docs = full_doc_retriever.invoke("What is LangSmith?")
print(len(retrieved_docs[0].page_content)) 
print(retrieved_docs[0].page_content)

3. 檢索更大的數(shù)據(jù)塊

有時(shí),在文檔非常大的情況下,我們可能無(wú)法獲取完整的父文檔。對(duì)此,可參考如下從父文檔獲取較大片段的方法:

塊和父級(jí)文本分割:

  • 使用RecursiveCharacterTextSplitter的兩個(gè)實(shí)例,其中一個(gè)用于創(chuàng)建特定大小的較大父文檔。另一個(gè)具有較小的塊大小,可用于創(chuàng)建文本片段,即父文檔中的子文檔。

矢量存儲(chǔ)和存儲(chǔ)設(shè)置(類似完整的文檔檢索):

  • 創(chuàng)建一個(gè)向量存儲(chǔ)Chroma,用于索引子文檔的嵌入。
  • 使用InMemoryStore保存父文檔的塊。

(1)父文檔檢索器

該檢索器可解決 RAG 中的一個(gè)基本問(wèn)題:由于被檢索的整個(gè)文檔過(guò)大,而無(wú)法包含足夠的上下文。為此,RAG需將文檔切成小塊進(jìn)行檢索,進(jìn)而對(duì)這些小塊進(jìn)行索引。不過(guò),在查詢之后,它不會(huì)去檢索這些文檔片段,而是檢索整個(gè)父文檔,從而為后續(xù)的生成提供更為豐富的上下文。

Python

parent_splitter = RecursiveCharacterTextSplitter(chunk_size=2000)  
child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)   
vectorstore = Chroma(
    collection_name="split_parents",
    embedding_function=OpenAIEmbeddings()
)
store = InMemoryStore()
big_chunks_retriever = ParentDocumentRetriever(
    vectorstore=vectorstore,
    docstore=store,
    child_splitter=child_splitter,
    parent_splitter=parent_splitter
)
# Adding documents
big_chunks_retriever.add_documents(docs)
print(len(list(store.yield_keys())))  # List document IDs in the store

(2)相似性搜索和檢索

該過(guò)程仍然與完整的文檔檢索類似,我們需要查找相關(guān)的子文檔,然后從父文檔中獲取相應(yīng)的更大文檔塊。

Python

sub_docs = vectorstore.similarity_search("What is LangSmith?", k=2)
print(len(sub_docs))
print(sub_docs[0].page_content)  
retrieved_docs = big_chunks_retriever.invoke("What is LangSmith?")
print(len(retrieved_docs))
print(len(retrieved_docs[0].page_content)) 
print(retrieved_docs[0].page_content)

4. 與 RetrievalQA 集成

至此,我們已經(jīng)實(shí)現(xiàn)了一個(gè)父文檔檢索器,你可以將其與RetrievalQA鏈集成,以使用檢索到的父文檔進(jìn)行各種問(wèn)答:

Python

qa = RetrievalQA.from_chain_type(llm=OpenAI(),
                                chain_type="stuff",
                                retriever=big_chunks_retriever)
query = "What is LangSmith?"
response = qa.invoke(query)
print(response)

小結(jié)

綜上所述,PDR 大幅提高了 RAG 模型輸出響應(yīng)的準(zhǔn)確性,而且這些響應(yīng)都帶有豐富的上下文。而通過(guò)對(duì)父文檔的全文檢索,我們可以深入準(zhǔn)確地回答各種復(fù)雜問(wèn)題,這也是復(fù)雜人工智能的基本要求。

譯者介紹

陳峻(Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。

原文標(biāo)題:Parent Document Retrieval (PDR): Useful Technique in RAG,作者:Intiaz Shaik

鏈接:https://dzone.com/articles/parent-document-retrieval-useful-technique-in-rag。

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
已于2024-8-30 11:24:42修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
日韩高清不卡一区| 精品自拍偷拍| 尤物在线观看一区| 国产精品久久久久免费| 视频一区二区三区四区五区| 日韩国产欧美一区二区| 日韩欧美一区二区久久婷婷| www.日本在线播放| 香港伦理在线| 成人一级视频在线观看| 国产成人鲁鲁免费视频a| 中文字幕美女视频| 婷婷成人影院| 日韩免费高清av| 校园春色 亚洲色图| 9999精品成人免费毛片在线看| 国产日韩欧美综合在线| 成人黄动漫网站免费| 久久久久久av无码免费看大片| 欧美精品导航| 最近2019中文字幕一页二页| 88av在线播放| 97色婷婷成人综合在线观看| 色综合咪咪久久| 屁屁影院ccyy国产第一页| 免费在线视频一级不卡| 国产成人免费视| 国产日韩欧美综合| aaa在线视频| 亚洲高清激情| 欧美疯狂xxxx大交乱88av| 国产又粗又猛又爽又黄的视频四季| 免费萌白酱国产一区二区三区| 在线播放国产精品二区一二区四区| 人妻丰满熟妇av无码区app| av第一福利在线导航| 亚洲免费观看在线观看| 亚洲视频在线二区| 丁香婷婷在线| 久久婷婷综合激情| 久草热久草热线频97精品| 狠狠综合久久av一区二区| 国产在线视频一区二区| 91精品久久久久久久久久久久久| 超碰在线97观看| 久久久久欧美精品| 日本最新高清不卡中文字幕| 在线能看的av| 国产精品免费看| 97国产在线观看| 久久精品视频久久| 精品二区久久| 韩国一区二区电影| 99热国产在线观看| 亚洲在线观看| 日韩av片永久免费网站| 69xxxx国产| 蜜臀av性久久久久av蜜臀妖精| 国产成人在线精品| 少妇又紧又色又爽又刺激视频 | 日韩网站在线免费观看| 免费看电影在线| 精品久久久久久中文字幕一区奶水 | 欧美老女人另类| 一区二区中文字幕| 99自拍视频在线| 欧美福利视频| 97在线视频免费| 神马久久久久久久| 免费欧美在线视频| 91中文在线视频| 隣の若妻さん波多野结衣| 91在线你懂得| 日韩在线观看电影完整版高清免费| av在线免费一区| 亚洲欧美另类在线| 欧洲精品一区二区三区久久| 午夜欧美激情| 欧美日韩国产影片| 亚洲精品成人无码毛片| 偷窥自拍亚洲色图精选| 中文字幕9999| 国产一级二级三级视频| 亚欧美中日韩视频| 成人久久久久久| 成人乱码一区二区三区| 久久久久久一二三区| 在线观看欧美一区| 成全电影大全在线观看| 色诱视频网站一区| 91人妻一区二区三区| 蜜桃久久久久| 伊人久久免费视频| 久久久精品国产sm调教| 久久亚洲色图| 成人国产一区二区| 五月天婷婷在线视频| 亚洲午夜国产一区99re久久| 黄色免费网址大全| 亚洲精品a区| 尤物yw午夜国产精品视频| 少妇久久久久久被弄高潮| 午夜在线精品偷拍| 91精品国产高清久久久久久91裸体| 神马亚洲视频| 亚洲黄色尤物视频| wwwwww.色| 国偷自产av一区二区三区| 日韩在线欧美在线国产在线| 国产成人无码精品| 国产成人精品免费视频网站| 日日噜噜噜噜夜夜爽亚洲精品| 久操av在线| 3atv在线一区二区三区| 娇妻被老王脔到高潮失禁视频| 欧美精品色网| 91情侣偷在线精品国产| 国产在线观看网站| 韩曰欧美视频免费观看| www日本在线观看| 久久社区一区| 国产精品9999| 蜜桃成人在线视频| 婷婷成人激情在线网| 色哟哟免费视频| 999久久久国产精品| 啪一啪鲁一鲁2019在线视频| 亚洲精品18p| 亚洲精品国产一区二区三区四区在线| 久久精品影视大全| 国产不卡一二三区| 欧美一级大片在线观看| 熟妇人妻一区二区三区四区| 亚洲最新视频在线观看| 在线观看视频你懂得| 五月激情久久久| 国产精品视频地址| av在线免费观看网| 欧美中文字幕亚洲一区二区va在线| 国产精品第七页| 99在线精品免费视频九九视| 国产乱码一区| 国产夫妻在线| 亚洲美女中文字幕| 欧美 日韩 精品| www日韩大片| 乱子伦视频在线看| 精品免费视频| 国产精品色婷婷视频| aaa日本高清在线播放免费观看| 色播五月激情综合网| 国产手机在线观看| 奇米影视在线99精品| 先锋影音日韩| 91精品在线免费视频| 操日韩av在线电影| 亚洲欧美国产高清va在线播放| 一区二区三区欧美亚洲| wwwxx日本| 亚洲视频播放| 日韩动漫在线观看| 24小时成人在线视频| 草民午夜欧美限制a级福利片| 国产激情久久久久久熟女老人av| 一区二区三区不卡视频 | 91视频com| 熟女人妇 成熟妇女系列视频| 欧美日韩国产传媒| 亚洲va久久久噜噜噜| 国产高清在线a视频大全| 日韩精品在线看| 亚洲午夜在线播放| 亚洲精品五月天| 中文字幕乱码在线| 美腿丝袜在线亚洲一区| 欧美交换配乱吟粗大25p| 欧美交a欧美精品喷水| 国产精品久久91| 在线三级电影| 亚洲男人天堂久| 国产三级小视频| 精品久久久久久| 国产视频123区| av在线播放成人| 亚洲国产成人va在线观看麻豆| 午夜久久tv| 日本亚洲自拍| 超碰97成人| 国产精品电影在线观看| 日皮视频在线观看| 一区二区三区视频免费| 99热这里只有精品66| 日韩欧美a级成人黄色| 欧美手机在线观看| 久久综合久久综合久久| 亚洲日本黄色片| 久久99伊人| 免费看黄色a级片| 欧美精品系列| 韩国成人av| 9999在线精品视频| 国产精品久久久久久久美男 | 99久久99久久精品国产片果冰| 古典武侠综合av第一页| 国产精品蜜月aⅴ在线| 国内外成人免费激情在线视频 | 久久久亚洲影院你懂的| 瑟瑟视频在线| 一个色综合导航| 五月婷婷六月色| 日韩免费观看高清完整版在线观看| 欧美另类高清videos的特点| 精品美女国产在线| 欧美日韩一级在线观看| 国产免费观看久久| 91精品国产自产| 成人午夜在线免费| 久久精品久久99| 人禽交欧美网站| 精品视频一区二区在线| 亚洲高清不卡| 成人免费视频91| 欧美福利影院| 狠狠干视频网站| 欧美激情电影| 亚洲高清视频一区二区| 国产一区不卡| 免费中文日韩| 亚洲免费福利一区| 狠狠爱一区二区三区| 成人动漫视频| 成人在线观看91| 高清精品视频| 国产免费一区二区三区| 成人春色在线观看免费网站| 国产精品18毛片一区二区| 1769国产精品视频| 不卡视频一区二区三区| 大奶一区二区三区| 国产女主播一区二区三区| 国产精品三p一区二区| 国产精品一 二 三| 久久久久影视| 另类小说综合网| 亚洲人成网亚洲欧洲无码| 精品一区二区日本| 欧美禁忌电影| 日韩久久久久久久久久久久久| 狠狠做深爱婷婷综合一区| 欧美一区激情视频在线观看| 精品72久久久久中文字幕| 日韩免费电影一区二区| 日本一区二区在线看| 三年中文高清在线观看第6集| 婷婷综合社区| 男人的天堂avav| 亚洲乱码久久| 无码人妻丰满熟妇区毛片18| 天堂资源在线中文精品| 四季av一区二区三区| 国产乱色国产精品免费视频| 久久久久亚洲av无码专区首jn| 成人一区二区三区中文字幕| 黄色a一级视频| 国产精品私人影院| 丰满少妇被猛烈进入一区二区| 亚洲影视在线观看| 天天操天天操天天操天天| 在线视频一区二区免费| 国产孕妇孕交大片孕| 欧美成人欧美edvon| 四虎影视精品成人| 久久精品久久久久久国产 免费| 欧美性爽视频| 奇米四色中文综合久久| 日韩毛片免费视频一级特黄| 亚洲最大成人在线| 偷拍亚洲色图| 国产欧美自拍视频| 亚洲女优在线| 182午夜视频| 99精品久久99久久久久| 精品人体无码一区二区三区| 一区二区三区精品视频在线| 亚洲天堂视频网站| 7777精品伊人久久久大香线蕉| 老牛影视av牛牛影视av| 综合国产在线视频| mm视频在线视频| 成人黄色大片在线免费观看| 欧美一区 二区| 欧美精品久久96人妻无码| 亚洲欧美日韩精品一区二区 | 91精品国产自产精品男人的天堂| 欧美伦理一区二区| 欧美三级网页| 欧美日韩一区二区三区69堂| 99视频有精品| 日本一级二级视频| 色婷婷激情一区二区三区| 国内精品偷拍视频| 在线电影欧美日韩一区二区私密| wwww在线观看免费视频| 国产日韩欧美影视| 久久99青青| 黄网站欧美内射| 国产一区二区h| 日本在线观看网址| 欧美性猛交xxxx乱大交极品| www.成人免费视频| 日韩一二三在线视频播| 无遮挡爽大片在线观看视频 | 亚洲成人精品影院| 国产精品久久久久久久久毛片| 亚洲欧洲在线播放| 2020国产在线| 成人自拍网站| 欧美二区视频| 中文字幕第三区| 中文字幕在线不卡一区二区三区| 九一国产在线观看| 亚洲第一福利网站| 俄罗斯一级**毛片在线播放 | 刘亦菲毛片一区二区三区| 久久亚洲电影天堂| 日韩有码欧美| 最新不卡av| 麻豆91精品视频| 1024手机在线观看你懂的| 日韩欧美亚洲国产一区| 天堂国产一区二区三区| 久久青草福利网站| 都市激情久久| 可以看毛片的网址| 成人黄色大片在线观看 | 欧美精品在线视频| 中文字幕在线播放| 国产玖玖精品视频| 日本一二区不卡| 日日躁夜夜躁aaaabbbb| 国产精品色婷婷| 亚洲视频在线观看一区二区| 日韩视频在线免费观看| 日韩成人免费av| 亚洲欧洲免费无码| 激情综合色综合久久| 91麻豆精品成人一区二区| 91精品国产丝袜白色高跟鞋| 超碰公开在线| 国产精品99久久久久久久| 亚洲高清网站| 人妻精品久久久久中文字幕| 色综合久久88色综合天天6| av大全在线免费看| 成人福利网站在线观看| 一区二区中文| 国产视频精品视频| 欧美日韩中文字幕| 高清性色生活片在线观看| 国产精品永久免费在线| 欧美一区国产在线| 好吊色视频一区二区三区| 福利二区91精品bt7086| 成人三级黄色免费网站| 成人在线视频网站| 韩国一区二区三区在线观看| 影音先锋黄色资源| 日本高清成人免费播放| 日本亚洲精品| 国产精品一区二区欧美黑人喷潮水| 99国产精品99久久久久久粉嫩| 最近中文字幕在线mv视频在线 | 成人午夜免费在线观看| 欧美亚洲视频在线观看| 日韩精品中文字幕第1页| 无套白嫩进入乌克兰美女| 香蕉久久一区二区不卡无毒影院| 蜜桃免费在线| 51精品国产人成在线观看| 国产欧美69| a一级免费视频| 日韩成人中文电影| 欧美啪啪网站| 僵尸世界大战2 在线播放| 中文字幕免费不卡| 黄色小视频免费观看| 国产精品永久免费视频| 日韩一级欧洲| 亚洲欧美卡通动漫| 日韩av一区二区在线| 日韩久久一区| 国产成人在线免费看| 亚洲精品第1页| 激情小视频在线| 成人h视频在线观看| 久久99精品一区二区三区| av网站中文字幕| 欧美日韩福利视频| 日韩中文欧美| 性久久久久久久久久|