Sistema de extração de dados de documentos e assistente técnico. É construído para executar um LLM (Qwen2.5-3B) em CPUs legadas (Intel Ivy Bridge) que possuem o conjunto de instruções AVX. O sistema prioriza a inferência determinística e de baixa latência.
- Core de Inferência: Um binário
llama.cppcustomizado é executado como um daemon de longa duração, expondo a funcionalidade do modelo em uma porta local (8080). - Backend (API Bridge): Um servidor Python (
FastAPI) atua como uma ponte para o daemonllama.cpp. Ele gerencia um pipeline de ingestão de documentos e expõe endpoints para upload, status e recuperação de resultados (:8002). - Pipeline de Ingestão: Um serviço de monitoramento (watchdog) observa um diretório (
ingestion/input) para novos arquivos PDF. O motor de ingestão processa os PDFs usando extração de texto nativo e OCR adaptativo (Tesseract) quando necessário. O conteúdo extraído é usado para RAG e armazenado em um banco de dados SQLite. - Frontend: A interação do usuário é feita através de duas interfaces web estáticas (HTML/JS):
frontend/: Interface de conversação (chat).frontend_technical/: Painel para monitorar o status da extração de documentos.
- Hardware: CPU com suporte ao conjunto de instruções AVX (ex: Intel Ivy Bridge ou superior).
- Software:
- Sistema Operacional: Linux
- Compiladores: GCC ou Clang
- Python: 3.10+
- OCR Engine: Tesseract
- Bibliotecas Python:
PyMuPDFpdfplumberpytesseractPillowpydanticfastapiuvicorn
- Compilar Binários: Execute o script para compilar o motor
llama.cpp../scripts/build_optimized.sh
- Iniciar o Daemon do Modelo: Inicie o servidor de inferência em segundo plano.
./scripts/start_daemon.sh
- Iniciar a API Backend: Inicie o servidor da API Python.
./scripts/start_api.sh
- Ativar o Monitor de Arquivos: Inicie o serviço que monitora o diretório de ingestão.
./scripts/start_watchdog.sh
- Acessar a Interface:
- Para o assistente de chat, abra
frontend/index.htmlem um navegador. - Para o painel técnico, abra
frontend_technical/index.html.
- Para o assistente de chat, abra