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

介紹一種實用的RAG技術:父文檔檢索(PDR)

譯文 精選
人工智能
父文檔檢索(PDR)能夠使RAG更準確、細致地響應各種復雜的查詢。本文將利用LangChain和OpenAI向你展示其分步實施步驟。

譯者 | 陳峻

審校 | 重樓

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

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

循序漸進的實施

根據上圖,我們可以將實現父文檔檢索的步驟簡單分為如下四個不同的階段:

1. 準備數據

我們首先應為自己的 RAG 系統創建環境并預處理數據,以便對后續的父文檔開展文檔檢索。

(1)導入必要的模塊

我們將從已安裝的庫中導入所需的模塊,以設置我們的 PDR 系統:

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

上述這些庫和模塊正是構成整個過程步驟的主要部分。

(2)設置 OpenAI API 密鑰

接著,我們使用 OpenAI LLM來生成響應,為此我們需要一個 OpenAI 的API 密鑰。該密鑰可被用來設置環境變量: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)定義文本嵌入函數

通過如下方式,我們利用 OpenAI 的嵌入來表示文本數據:

Python

embeddings = OpenAIEmbeddings()

(4)加載文本數據

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

Python

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

2. 檢索完整的文檔

下面,我們將通過設置系統,來檢索與子段落相關的完整父文檔。

(1)完整文檔的拆分

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

Python

child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)

(2)矢量存儲和存儲設置

下面,我們將使用Chroma向量存儲來嵌入各個子文檔,并利用InMemoryStore來跟蹤與子文檔關聯的完整父文檔: 

Python

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

(3)父文檔檢索器

接著,讓我們從類ParentDocumentRetriever中實例化一個對象。該類主要負責完整父文檔與基于子文檔相似性檢索相關的核心邏輯。

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)相似性搜索和檢索

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

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. 檢索更大的數據塊

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

塊和父級文本分割:

  • 使用RecursiveCharacterTextSplitter的兩個實例,其中一個用于創建特定大小的較大父文檔。另一個具有較小的塊大小,可用于創建文本片段,即父文檔中的子文檔。

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

  • 創建一個向量存儲Chroma,用于索引子文檔的嵌入。
  • 使用InMemoryStore保存父文檔的塊。

(1)父文檔檢索器

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

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)相似性搜索和檢索

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

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 集成

至此,我們已經實現了一個父文檔檢索器,你可以將其與RetrievalQA鏈集成,以使用檢索到的父文檔進行各種問答:

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)

小結

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

譯者介紹

陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。

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

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

責任編輯:姜華 來源: 51CTO內容精選
相關推薦

2024-10-11 09:04:55

2009-11-27 09:25:50

Cisco路由器備份

2021-04-08 10:19:39

人工智能機器學習知識圖譜

2011-07-04 17:53:48

快速測試

2025-11-07 04:00:00

2010-03-10 09:44:51

Linux啟動引導加密

2011-05-10 09:09:36

身份驗證HID Global

2019-12-31 14:21:00

數據挖掘關系網絡數據

2022-07-07 10:33:27

Python姿勢代碼

2022-06-22 09:44:41

Python文件代碼

2020-12-23 10:10:23

Pythonweb代碼

2011-01-24 15:52:07

2025-03-04 09:10:00

RAG大模型AI

2022-06-06 15:44:24

大數據數據分析思維模式

2020-12-09 10:15:34

Pythonweb代碼

2024-10-09 11:14:37

2023-09-12 14:46:24

人工智能自然語言

2022-06-20 14:03:11

區塊鏈可持續安全

2018-09-27 16:15:10

區塊鏈數據庫

2009-12-25 16:27:30

MODEM接入方式
點贊
收藏

51CTO技術棧公眾號

免费福利视频一区| 激情av在线播放| 奇米影视一区二区三区| 欧美成年人视频网站欧美| 亚洲精品鲁一鲁一区二区三区 | 日本在线免费观看| 精品久久久久久久| 日韩欧美国产精品一区| 男人添女人下部高潮视频在观看| 久久久久久久久亚洲精品| 日韩成人一区二区三区在线观看| 久热精品视频在线观看一区| 中文成人无字幕乱码精品区| xxxxx.日韩| 亚洲国产精品久久久男人的天堂| 三级三级久久三级久久18| 国产叼嘿视频在线观看| 99成人精品| 久久精品亚洲热| 免费毛片视频网站| 99精品国产高清一区二区麻豆| 日本道色综合久久| 国产天堂视频在线观看| 1024国产在线| 91麻豆精品秘密| 91传媒视频在线观看| 青青国产在线视频| 日韩一级欧洲| 欧美俄罗斯乱妇| 三级黄色录像视频| 精品国产一区二区三区小蝌蚪| 日韩精品一区二区在线观看| jizzzz日本| 美女100%一区| 天天色综合成人网| 国产一区二区片| 激情影院在线观看| 国产精品网站在线观看| 欧美一区1区三区3区公司 | 三上悠亚亚洲一区| 精品动漫一区二区三区| 日韩极品视频在线观看 | 97avcom| 婷婷在线精品视频| 999精品在线| yw.尤物在线精品视频| 韩国av一区二区三区四区| 青青青国产精品一区二区| 国产精品成人av久久| 正在播放日韩欧美一页| 久久精品国产99国产精品澳门| 成人在线一级片| 亚洲+变态+欧美+另类+精品| 亚洲国产精品大全| 老司机av网站| 91蜜桃臀久久一区二区| 欧美成人精品二区三区99精品| 亚洲一二三不卡| 国产精品一区二区美女视频免费看| 欧美日韩免费观看一区二区三区 | 蜜臀a∨国产成人精品| 国产精品27p| 看黄色一级大片| 蜜桃视频在线一区| 国产中文字幕日韩| 国产视频在线一区| 粉嫩av一区二区三区粉嫩| 国产亚洲情侣一区二区无| 日本高清视频www| www国产成人免费观看视频 深夜成人网| 精品国产一区二区三区四区精华| 天天操天天干天天| 久久久亚洲精品一区二区三区| 欧美一级二级三级| 色欧美激情视频在线| 亚洲视频在线观看三级| 亚洲啊啊啊啊啊| 蜜桃视频动漫在线播放| 在线观看日韩毛片| jizz18女人| 日本一区二区中文字幕| 日韩视频一区在线观看| 日本在线不卡一区二区| 精品国产美女| 久久国产精彩视频| 日韩久久精品视频| 日韩av在线发布| 成人黄色av播放免费| 免费观看成年人视频| 久久久美女毛片| 美女在线免费视频| 国产三级伦理在线| 欧美天堂一区二区三区| 国产人妻精品久久久久野外| 天海翼亚洲一区二区三区| 永久免费看mv网站入口亚洲| 九九热最新地址| 在线欧美亚洲| 国产视频999| 天堂中文网在线| 久久亚洲二区三区| 妞干网这里只有精品| 中文在线资源| 欧美一二三在线| av女人的天堂| 欧美私人啪啪vps| 国产精品www| 黄色美女一级片| 国产精品你懂的在线欣赏| 日韩精品一区在线视频| 亚洲精品三区| 欧美精品一区二区不卡| 任你操精品视频| 国产精品美女| 成人区精品一区二区| 超碰97在线免费观看| 午夜精品一区在线观看| 一级做a免费视频| 国产一区二区三区四区五区 | 亚洲性色av| 日韩免费性生活视频播放| 中字幕一区二区三区乱码| 亚洲一级影院| 国产美女被下药99| 牛牛热在线视频| 午夜电影一区二区| 女女调教被c哭捆绑喷水百合| 日韩大片在线| 国产v综合v亚洲欧美久久| 免费观看的毛片| 一区二区欧美视频| 久久久久久国产精品日本| 日本女优一区| 欧美亚洲另类激情另类| 亚洲精品一级片| 亚洲同性gay激情无套| www.天天射.com| 蜜桃精品wwwmitaows| 97色在线观看免费视频| 国模人体一区二区| 亚洲精品午夜久久久| 第一区免费在线观看| 日韩国产专区| 国产欧美在线视频| 色视频精品视频在线观看| 一区二区三区不卡在线观看| 91大神免费观看| 亚洲精品一二三区区别| 成人两性免费视频| 久久综合网导航| 欧美在线999| 亚洲成人黄色av| 日韩福利视频导航| 亚洲区一区二区三区| 成人av色网站| 日韩在线小视频| 国产欧美一区二区三区视频在线观看| 国产日韩欧美一区二区三区乱码| 99久久激情视频| 精品久久久久中文字幕小说 | 日韩中文字幕在线精品| 国产美女裸体无遮挡免费视频| 国产精品传媒视频| 欧美性猛交xxxx乱大交91| 欧美伊人影院| 国产亚洲欧美一区二区三区| 中文字幕成在线观看| 亚洲欧洲成视频免费观看| 日本成人一级片| 国产精品久久久久国产精品日日| 天天干天天色天天干| 久久久久美女| 国产精品国产三级国产专区53| free性护士videos欧美| 亚洲人成电影网站色www| 中文字幕第31页| 亚洲欧美激情在线| 日批在线观看视频| 日韩精品一卡二卡三卡四卡无卡| 亚洲免费视频一区| 亚洲乱码一区| 日本中文字幕不卡免费| 一广人看www在线观看免费视频| 在线播放一区二区三区| 黄色激情视频在线观看| 国产区在线观看成人精品| 在线播放av中文字幕| 国产精品大片| 色播亚洲视频在线观看| 久久久国产精品入口麻豆| 91精品国产91久久久| 国产精品四虎| 日韩久久久久久| 成人av网站在线播放| 亚洲人成亚洲人成在线观看图片| 日本一级片在线播放| 免费精品视频在线| 无码人妻少妇伦在线电影| 精品国产乱码久久久久久果冻传媒| 91免费版网站入口| 手机在线理论片| 欧美噜噜久久久xxx| 国产在线播放av| 精品国产乱码久久久久久久久| 午夜精品免费观看| 亚洲午夜在线电影| 二区三区四区视频| 91年精品国产| 国产黄色一区二区三区 | 中文字幕资源在线观看| 国产毛片久久| 成人在线免费观看网址| 欧美久久综合网| 国产九色91| **欧美日韩在线| 国产成人精品电影久久久| 后进极品白嫩翘臀在线播放| 爱福利视频一区| 国产精品毛片一区二区三区四区| 精品久久久久久久久久久久久久久| 亚洲精品一区二三区| 欧美日韩国产一区二区三区| 青娱乐国产在线视频| 国产精品成人免费在线| 日韩在线免费观看av| 成人18视频在线播放| 极品人妻一区二区| 国内一区二区在线| 国产小视频精品| 久久精品一区| 欧美精品色婷婷五月综合| 伊人影院久久| 国产精品久久久久久久久电影网| 水蜜桃精品av一区二区| 日本欧洲国产一区二区| 亚欧日韩另类中文欧美| 国产精品日韩欧美一区二区| 日本少妇精品亚洲第一区| 成人免费黄色网| 日韩av黄色| 91精品国产综合久久香蕉| 色综合久久久| 91精品免费看| 青青国产精品| 国产精品永久在线| 国产成人福利夜色影视| 国产精品高潮呻吟久久av黑人| 日韩电影av| 日韩免费av在线| 久久夜夜操妹子| 国产精品欧美一区二区| 久久久久伊人| 成人午夜高潮视频| 久久伊人影院| 成人在线资源网址| jizz性欧美2| 国内外成人免费视频| 欧美18免费视频| 久久综合给合久久狠狠色| 国产午夜一区| 亚洲精品国产精品久久| 久久久久亚洲| 欧美中文字幕在线观看视频| 夜夜嗨网站十八久久| 777久久久精品一区二区三区| 久久亚洲视频| 欧美特级aaa| 国产乱国产乱300精品| 少妇熟女视频一区二区三区| 99久久综合狠狠综合久久| 中文字幕高清视频| 国产精品久久久久9999吃药| 欧美日韩在线观看成人| 精品成人av一区| 国产精品第6页| 欧美一区二区视频在线观看2020 | 在线观看国产精品91| 91网页在线观看| 欧美另类在线播放| 在线视频cao| 国产在线一区二区三区| 国产精品调教| 亚洲精品一品区二品区三品区| 欧美精品日韩| 92看片淫黄大片一级| 精品一区二区成人精品| 国产精品成人99一区无码| 久久久一区二区三区捆绑**| 成年人在线免费看片| 亚洲在线成人精品| 极品国产91在线网站| 日韩无一区二区| 懂色一区二区三区| 欧美福利小视频| 日韩在线免费| 国产精品毛片va一区二区三区| 欧美日韩xxxx| 欧美亚洲色图视频| 日韩电影在线一区二区| 国产精久久久久| 国产精品欧美一区喷水| 国产福利拍拍拍| 制服丝袜成人动漫| 九一在线视频| 久久久免费av| 色婷婷成人网| 日韩av大全| 国产日韩高清一区二区三区在线| 色噜噜狠狠一区二区三区狼国成人| 91蜜桃免费观看视频| 69xx绿帽三人行| 欧美亚洲综合久久| 日本福利在线观看| 欧美激情一区二区三级高清视频| 成人午夜毛片| 欧美性大战久久久久| 在线不卡视频| 小日子的在线观看免费第8集| 国产精品久久毛片| 亚洲毛片一区二区三区| 欧美精品一区二区久久婷婷| 国内精品久久久久久野外| 国产精品成人免费电影| 亚州综合一区| 欧美 日韩 国产 高清| 大美女一区二区三区| 亚洲av鲁丝一区二区三区| 欧美色窝79yyyycom| 看电影就来5566av视频在线播放| 国内精品一区二区三区四区| 伊人精品综合| 中文字幕乱码免费| 激情久久久久久久久久久久久久久久| 国产成人精品无码免费看夜聊软件| 亚洲成a人v欧美综合天堂| 国产 欧美 自拍| 色综合久久悠悠| 欧美影院视频| 国产欧美综合一区| 国模娜娜一区二区三区| 欧美风情第一页| 69精品人人人人| 国产在线观看a| 成人做爽爽免费视频| 国产精品麻豆久久| 性久久久久久久久久久久久久| 中文字幕一区日韩精品欧美| 亚洲一区二区视频在线播放| 国产一区二区三区网站| 小明成人免费视频一区| 日韩精品电影网站| 日本成人在线不卡视频| 黄色激情小视频| 5月丁香婷婷综合| 亚洲制服国产| 国产精品美女久久久久av福利| 一区久久精品| 久久久久久久久免费看无码| 欧美性生交大片免网| 第一福利在线| 成人黄色中文字幕| 欧美一区二区三区另类 | 国产又粗又长又大视频| 久久精品99无色码中文字幕 | 91麻豆精品国产91久久久久| a免费在线观看| 国产精品亚洲综合| 久久不射中文字幕| 日本高清黄色片| 日韩一级免费一区| av电影免费在线看| 少妇精品久久久久久久久久| 美腿丝袜在线亚洲一区| 精品亚洲乱码一区二区| 精品久久国产字幕高潮| 国产精品粉嫩| 最新精品视频| 不卡一区二区三区四区| 日韩欧美国产另类| 欧美成人精品一区| 精品中文字幕一区二区三区av| www.com黄色片| 亚洲一区二区黄色| 国产免费视频在线| 99porn视频在线| 久久久久在线| 亚洲波多野结衣| 日韩精品视频在线播放| 日本午夜精品久久久久| 黄色国产一级视频| 成人欧美一区二区三区| 天堂av中文字幕| 国产日产欧美精品| 一本一本久久| 黑人操日本美女| 精品亚洲国产视频| 亚洲精品高潮| 日韩一区二区三区不卡视频| 精品二区三区线观看| 成人黄视频在线观看|