Este projeto fornece um script Python que processa um documento PDF, divide-o em pequenos pedaços de texto, cria embeddings para esses pedaços, armazena-os em um armazenamento vetorial FAISS e configura um sistema de QA baseado em recuperação usando um modelo LLM local. O script é projetado para ajudar os usuários a consultar e analisar documentos PDF de forma eficiente.
- Carregamento de PDF: Carrega e analisa documentos PDF.
- Divisão de Texto: Divide o documento em pequenos pedaços de texto gerenciáveis.
- Criação de Embeddings: Cria embeddings para os pedaços de texto usando modelos HuggingFace.
- Armazenamento Vetorial: Armazena embeddings em um armazenamento vetorial FAISS para recuperação eficiente.
- QA Baseado em Recuperação: Configura um sistema de QA baseado em recuperação usando o modelo Ollama do LangChain e modelos de prompt personalizados.
- Python 3.8+
langchain_communitylangchainlangchain_corelangchain_text_splitterslangchain_community.llmslangchain_community.embeddingslangchain_community.vectorstoresfaiss-cpuoufaiss-gpuhuggingface
-
Clone o repositório:
git clone https://github.com/seuusuario/interpretador-de-documentos-pdf.git cd interpretador-de-documentos-pdf -
Instale as dependências necessárias:
pip install langchain langchain_community langchain_core faiss-cpu huggingface_hub
-
Coloque seu documento PDF no mesmo diretório que o script e nomeie-o como
meu_pdf.pdf. -
Execute o script:
python pdfquery.py
- Carregamento de PDF: O script usa
PyPDFLoaderpara carregar o documento PDF. - Divisão de Texto: Os pedaços de texto são criados usando
CharacterTextSplitter. - Criação de Embeddings: Embeddings são gerados usando
HuggingFaceEmbeddings. - Armazenamento Vetorial: Embeddings são armazenados e recuperados de um armazenamento vetorial FAISS.
- QA Baseado em Recuperação: Uma cadeia de QA é configurada usando o modelo Ollama do LangChain e modelos de prompt personalizados para responder perguntas com base no conteúdo do documento.
- Caminho do PDF: Altere a variável
pdf_pathpara apontar para o seu arquivo PDF desejado. - Tamanho e Sobreposição dos Pedaços: Ajuste os parâmetros
chunk_sizeechunk_overlapnoCharacterTextSplitterpara atender às suas necessidades. - Consulta: Modifique a variável
querypara especificar diferentes perguntas ou tarefas de análise.
Este projeto é licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.