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 osimportar 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 arquivoscarregado = 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 ParentDocumentRetrieverde 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.