Como usar o recuperador de documentos pai no LangChain?

Como Usar O Recuperador De Documentos Pai No Langchain



A estrutura LangChain permite que os desenvolvedores construam grandes modelos de linguagem que podem compreender e gerar texto em linguagem natural. Os modelos LangChain são treinados em uma grande quantidade de dados para que o modelo possa entender a linguagem armazenando os dados em armazenamentos de vetores. Ele também permite ao usuário construir recuperadores que podem extrair dados do banco de dados ou armazenamentos de vetores com todos os dados armazenados para o modelo.

Esta postagem demonstrará o processo de uso do recuperador de documentos pai no LangChain.

Como usar um recuperador de documento pai no LangChain?

O recuperador de documentos pai no LangChain pode ser usado dividindo os documentos em pedaços menores para que não percam o significado no momento da incorporação. Pode-se dizer que o documento pai é o documento inteiro ou o pedaço maior do qual os pedaços menores são extraídos.







Para aprender o processo de uso do recuperador de documento pai no LangChain, basta verificar este guia:



Etapa 1: instalar módulos



Primeiro, comece a usar o recuperador de documento pai instalando a estrutura LangChain usando o comando pip:





pip instalar langchain

Instale o módulo de banco de dados Chroma para salvar os embeddings do documento e recuperar dados dele:



pip instalar o chromadb

Para instalar o tiktoken, que é um tokenizer que obtém os tokens do documento criando pequenos pedaços:

pip instalar tiktoken

Obtenha o módulo OpenAI executando o seguinte comando no notebook Python para obter suas dependências e bibliotecas:

pip instalar openai

Etapa 2: configurar ambiente e fazer upload de dados

O próximo passo é configurar o ambiente usando a chave API da conta OpenAI:

importar os
importar Obter passagem

os . aproximadamente [ 'OPENAI_API_KEY' ] = Obter passagem . Obter passagem ( 'Chave de API OpenAI:' )

Agora, carregue os documentos do sistema local após importar a biblioteca de arquivos e então chame o método upload():

de Google. ET AL importar arquivos
carregado = arquivos. carregar ( )

Etapa 3: importar bibliotecas

A próxima etapa contém o código para importar as bibliotecas necessárias para usar os recuperadores de documentos pai usando a estrutura LangChain:

de cadeia longa. recuperadores importar ParentDocumentRetriever
de cadeia longa. lojas de vetores importar Croma
de cadeia longa. incorporações importar OpenAIEbeddings
de cadeia longa. divisor_de_texto importar RecursiveCharacterTextSplitter
de cadeia longa. armazenar importar InMemoryStore
de cadeia longa. document_loaders importar Carregador de texto

Carregue o documento para construir o recuperador usando os métodos TextLoader() com o caminho dos arquivos:

carregadores = [
Carregador de texto ( 'Dados.txt' ) ,
Carregador de texto ( 'estado_da_união.txt' ) ,
]
documentos = [ ]
para eu em carregadores:

Etapa 4: Recuperando Documentos Completos

Depois que os documentos/arquivos forem carregados no modelo, basta construir os embeddings dos documentos e armazená-los nos armazenamentos de vetores:

divisor_filho = RecursiveCharacterTextSplitter ( tamanho do pedaço = 400 )

loja de vetores = Croma (
nome_coleção = 'documentos_completos' ,
incorporação_função = OpenAIEbeddings ( )
)

loja = InMemoryStore ( )
recuperador = ParentDocumentRetriever (
loja de vetores = loja de vetores ,
loja de documentos = loja ,
divisor_filho = divisor_filho ,
)

Agora, chame o método add_documents() usando o recuperador para levá-lo aos documentos:

recuperador. add_documents ( documentos , IDs = Nenhum )

O código a seguir extrai os embeddings dos documentos que foram armazenados no banco de dados para os arquivos carregados:

lista ( loja. chaves_de_rendimento ( ) )

Depois de obter os embeddings dos documentos, chame o método similarity_search() com a consulta para obter os pequenos pedaços do documento:

sub_docs = loja de vetores. pesquisa_similaridade ( 'justiça Breyer' )

Chame o método print() para exibir os pedaços chamados no código anterior com base na consulta:

imprimir ( sub_docs [ 0 ] . Conteúdo da página )

Chame a função completa retriever() para obter todos os tokens armazenados no banco de dados usando o seguinte código:

documentos_recuperados = recuperador. get_relevant_documents ( 'justiça Breyer' )

Imprimir todos os documentos levaria muito tempo e poder de processamento, então basta obter o comprimento dos documentos recuperados anteriormente:

apenas ( documentos_recuperados [ 0 ] . Conteúdo da página )

Etapa 5: recuperando pedaços maiores

Esta etapa não ocupará todo o documento; no entanto, seria necessário pegar um esquilo maior do documento e recuperar um pedaço menor dele:

pai_divisor = RecursiveCharacterTextSplitter ( tamanho do pedaço = 2000 )
divisor_filho = RecursiveCharacterTextSplitter ( tamanho do pedaço = 400 )
loja de vetores = Croma ( nome_coleção = 'pais_divididos' , incorporação_função = OpenAIEbeddings ( ) )
loja = InMemoryStore ( )

Configure o recuperador para obter o token menor do enorme conjunto de dados armazenados no “ loja de vetores ' variável:

recuperador = ParentDocumentRetriever (
loja de vetores = loja de vetores ,
loja de documentos = loja ,
divisor_filho = divisor_filho ,
pai_divisor = pai_divisor ,
)

Chame o recuperador para obter os pedaços maiores dos armazenamentos de vetores usando o documentos variável no argumento da função:

recuperador. add_documents ( documentos )

Obtenha a extensão desses documentos no documentos variável através do comando abaixo:

apenas ( lista ( loja. chaves_de_rendimento ( ) ) )

Basta obter um pedaço menor de um maior, pois a captura de tela anterior mostra que há 23 documentos armazenados no armazenamento de vetores. A consulta é usada para obter os dados relevantes usando o pesquisa_similaridade() método para recuperar dados do armazenamento de vetores:

sub_docs = loja de vetores. pesquisa_similaridade ( 'justiça Breyer' )

Imprima os pedaços menores usando a consulta mencionada no código anterior para exibi-los na tela:

imprimir ( sub_docs [ 0 ] . Conteúdo da página )

Agora, use o recuperador no conjunto de dados completo armazenado no banco de dados usando a consulta como argumento da função:

documentos_recuperados = recuperador. get_relevant_documents ( 'justiça Breyer' )

Obtenha o comprimento dos pedaços completos criados e armazenados no banco de dados:

apenas ( documentos_recuperados [ 0 ] . Conteúdo da página )

Não podemos exibir todos os pedaços, mas o primeiro pedaço com o número de índice 0 é exibido usando o seguinte código:

imprimir ( documentos_recuperados [ 0 ] . Conteúdo da página

Isso é tudo sobre o processo de uso do recuperador de documento pai no LangChain.

Conclusão

Para usar o recuperador de documentos pai no LangChain, basta instalar os módulos e configurar o ambiente OpenAI usando sua chave API. Depois disso, importe as bibliotecas necessárias do LangChain para usar o recuperador de documentos pai e, em seguida, carregue os documentos para o modelo. O usuário pode usar documentos pai como o documento inteiro ou como parte grande e obter uma parte menor usando a consulta. Esta postagem elaborou o processo de uso do recuperador de documento pai no LangChain.