Thanks to visit codestin.com
Credit goes to github.com

Skip to content

JeisonSilva/chat-document-response

Repository files navigation

Chat Document Response

Sistema de RAG (Retrieval-Augmented Generation) que permite fazer perguntas em linguagem natural sobre documentos PDF, usando embeddings locais com HuggingFace, Neo4j como vector store e LLM via OpenRouter.

Como funciona

PDFs → chunks → embeddings (local) → Neo4j
                                         ↓
Pergunta → similaritySearch → contexto → LLM → resposta
  1. Os PDFs são carregados e divididos em chunks de texto
  2. Cada chunk é convertido em um vetor (embedding) localmente via HuggingFace Transformers
  3. Os vetores são armazenados no Neo4j
  4. Na consulta, a pergunta é vetorizada e os chunks mais similares são recuperados
  5. Os chunks relevantes são enviados como contexto para o LLM gerar a resposta

Pré-requisitos

  • Node.js 22+
  • Docker

Instalação

git clone https://github.com/JeisonSilva/chat-document-response.git
cd chat-document-response
npm install

Configuração

Copie o .env.example e preencha as variáveis:

NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=password123

EMBEDDING_MODEL=Xenova/all-MiniLM-L6-v2

OPENROUTER_API_KEY=sua-chave-aqui
OPENROUTER_SITE_URL=http://localhost:3000
OPENROUTER_SITE_NAME=MeuProjetoRAG

NLP_MODEL=nvidia/nemotron-3-nano-30b-a3b:free

A chave da API pode ser obtida em openrouter.ai/keys

Uso

1. Subir a infraestrutura (Neo4j)

npm run infra:up

2. Ingerir os PDFs

Coloque os arquivos .pdf na pasta pdfs/ e execute:

npm run dev

O script carrega todos os PDFs da pasta, divide em chunks, gera os embeddings e salva no Neo4j. A cada execução, os dados anteriores são removidos e reinseridos.

3. Consultar

npm run consultar "sua pergunta aqui"

Exemplo:

npm run consultar "O que é o ato penitencial?"

Estrutura do projeto

src/
├── index.ts              # Ingestão: carrega PDFs e popula o Neo4j
├── consultarPdf.ts       # Consulta: recebe pergunta e retorna resposta
├── LeitorPdfLoader.ts    # Carrega os PDFs da pasta pdfs/
├── ProcessadorDadosLlm.ts # Divide os documentos em chunks
├── EmbeddingsTransformers.ts # Geração de embeddings com HuggingFace
├── StoreDataBase.ts      # Persiste os documentos no Neo4j
└── RagConsulta.ts        # Busca por similaridade + chamada ao LLM

Tecnologias

Tecnologia Uso
LangChain Orquestração do pipeline RAG
HuggingFace Transformers Embeddings locais (sem custo de API)
Neo4j Vector store para busca por similaridade
OpenRouter Gateway para LLMs (suporta modelos gratuitos)
pdf-parse Extração de texto dos PDFs

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors