Com utilitzar Parent Document Retriever a LangChain?

Com Utilitzar Parent Document Retriever A Langchain



El marc de LangChain permet als desenvolupadors construir grans models de llenguatge que puguin entendre i generar text en llenguatge natural. Els models LangChain s'entrenen en una quantitat massiva de dades perquè el model pugui entendre el llenguatge emmagatzemant les dades en magatzems de vectors. També permet a l'usuari crear recuperadors que puguin extreure dades de la base de dades o magatzems de vectors amb totes les dades emmagatzemades per al model.

Aquesta publicació mostrarà el procés d'utilitzar el recuperador de documents pare a LangChain.

Com utilitzar un recuperador de documents pare a LangChain?

El recuperador de documents pare a LangChain es pot utilitzar dividint els documents en trossos més petits perquè no perdin el seu significat en els moments de la inserció. Es pot dir que el document pare és el document sencer o el fragment més gran del qual s'extreuen els fragments més petits.







Per conèixer el procés d'utilitzar el recuperador de documents pare a LangChain, només cal que consulteu aquesta guia:



Pas 1: instal·leu els mòduls



Primer, comenceu a utilitzar el recuperador de documents pare instal·lant el marc LangChain mitjançant l'ordre pip:





pip install langchain

Instal·leu el mòdul de base de dades Chroma per desar les incrustacions del document i recuperar-ne dades:



pip instal·lar chromadb

Per instal·lar tiktoken, que és un tokenitzador que obté els testimonis del document mitjançant la creació de petits trossos:

pip install tiktoken

Obteniu el mòdul OpenAI executant l'ordre següent al quadern Python per obtenir les seves dependències i biblioteques:

pip install openai

Pas 2: Configuració de l'entorn i càrrega de dades

El següent pas és fer-ho configurar l'entorn utilitzant la clau API del compte OpenAI:

importar vostè
importar getpass

vostè . aproximadament [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Clau de l'API OpenAI:' )

Ara, carregueu els documents des del sistema local després d'importar la biblioteca de fitxers i, a continuació, truqueu al mètode upload():

des de Google. ET AL importar Fitxers
carregat = Fitxers. carregar ( )

Pas 3: importa les biblioteques

El següent pas conté el codi per importar les biblioteques necessàries per utilitzar els recuperadors de documents pare mitjançant el marc LangChain:

des de langchain. retrievers importar ParentDocumentRetriever
des de langchain. botigues de vectors importar Croma
des de langchain. incrustacions importar OpenAIEmbeddings
des de langchain. divisor_text importar RecursiveCharacterTextSplitter
des de langchain. emmagatzematge importar InMemoryStore
des de langchain. carregadors_de_documents importar TextLoader

Carregueu el document per crear el recuperador mitjançant els mètodes TextLoader() amb la ruta dels fitxers:

carregadors = [
TextLoader ( 'Data.txt' ) ,
TextLoader ( 'estat_de_la_unió.txt' ) ,
]
docs = [ ]
per l en carregadors:

Pas 4: Recuperació de documents complets

Un cop carregats els documents/fitxers al model, només cal que construïu les incrustacions dels documents i emmagatzemeu-los als magatzems de vectors:

divisor_infant = RecursiveCharacterTextSplitter ( mida_de_boca = 400 )

vectorstore = Croma (
nom_col·lecció = 'documents_complets' ,
funció_incrustació = OpenAIEmbeddings ( )
)

botiga = InMemoryStore ( )
retriever = ParentDocumentRetriever (
vectorstore = vectorstore ,
docstore = botiga ,
divisor_infant = divisor_infant ,
)

Ara, truqueu al mètode add_documents() mitjançant el recuperador per portar el recuperador als documents:

retriever. afegir_documents ( docs , identificacions = Cap )

El codi següent extreu les incrustacions dels documents que s'han emmagatzemat a la base de dades per als fitxers carregats:

llista ( botiga. yield_keys ( ) )

Després d'obtenir les incrustacions dels documents, truqueu al mètode similarity_search() amb la consulta per obtenir els petits trossos del document:

sub_docs = vectorstore. cerca de similitud ( 'breyer de justícia' )

Truqueu al mètode print() per mostrar els fragments anomenats al codi anterior en funció de la consulta:

imprimir ( sub_docs [ 0 ] . pàgina_contingut )

Truqueu a la funció complete the retriever() per obtenir tots els testimonis emmagatzemats a la base de dades mitjançant el codi següent:

documents_recuperats = retriever. obtenir_documents_rellevants ( 'breyer de justícia' )

Imprimir tots els documents requeriria un gran temps i una gran potència de processament, així que només cal obtenir la longitud dels documents recuperats anteriorment:

només ( documents_recuperats [ 0 ] . pàgina_contingut )

Pas 5: recuperació de trossos més grans

Aquest pas no implicarà tot el document; tanmateix, es necessitaria un esquirol més gran del document i en recuperaria un tros més petit:

parent_splitter = RecursiveCharacterTextSplitter ( mida_part = 2000 )
divisor_infant = RecursiveCharacterTextSplitter ( mida_part = 400 )
vectorstore = Croma ( nom_col·lecció = 'part_pares' , funció_incrustació = OpenAIEmbeddings ( ) )
botiga = InMemoryStore ( )

Configureu el recuperador per obtenir el testimoni més petit de l'enorme grup de dades emmagatzemats al ' vectorstore ” variable:

retriever = ParentDocumentRetriever (
vectorstore = vectorstore ,
docstore = botiga ,
divisor_infant = divisor_infant ,
parent_splitter = parent_splitter ,
)

Truqueu al recuperador per obtenir els trossos més grans de les botigues de vectors utilitzant el docs variable a l'argument de la funció:

retriever. afegir_documents ( docs )

Obteniu la longitud d'aquests documents des del docs variable mitjançant l'ordre següent:

només ( llista ( botiga. yield_keys ( ) ) )

Simplement obteniu un tros més petit d'un de més gran, ja que la captura de pantalla anterior mostra que hi ha 23 documents emmagatzemats a la botiga de vectors. La consulta s'utilitza per obtenir les dades rellevants mitjançant el similarity_search() mètode per recuperar dades del magatzem de vectors:

sub_docs = vectorstore. cerca de similitud ( 'breyer de justícia' )

Imprimiu els trossos més petits utilitzant la consulta esmentada al codi anterior per mostrar-los a la pantalla:

imprimir ( sub_docs [ 0 ] . pàgina_contingut )

Ara, utilitzeu el recuperador al conjunt de dades complet emmagatzemat a la base de dades utilitzant la consulta com a argument de la funció:

documents_recuperats = retriever. obtenir_documents_rellevants ( 'breyer de justícia' )

Obteniu la longitud dels fragments complets creats i emmagatzemats a la base de dades:

només ( documents_recuperats [ 0 ] . pàgina_contingut )

No podem mostrar tots els fragments, però el primer fragment amb el número d'índex 0 es mostra amb el codi següent:

imprimir ( documents_recuperats [ 0 ] . pàgina_contingut

Això és tot sobre el procés d'utilitzar el recuperador de documents pare a LangChain.

Conclusió

Per utilitzar el recuperador de documents pare a LangChain, simplement instal·leu els mòduls i configureu l'entorn OpenAI mitjançant la seva clau API. Després d'això, importeu les biblioteques necessàries de LangChain per utilitzar el recuperador de documents pare i, a continuació, carregueu els documents per al model. L'usuari pot utilitzar els documents pare com el document sencer o el tros gran i obtenir un tros més petit mitjançant la consulta. Aquesta publicació ha explicat el procés d'ús del recuperador de documents pare a LangChain.