Ingerir documentos, indexar com vetores, recuperar trechos relevantes com KNN e gerar respostas ancoradas nas fontes.
Este projeto implementa um Retrieval-Augmented Generation (RAG):
- Ingestão de PDFs/MD/TXT em
data/, - Chunking + overlap e geração de embeddings,
- Indexação vetorial no Postgres com pgvector,
- Busca por similaridade (KNN) dos chunks,
- Geração de resposta por um LLM com guardrails (responder apenas com base nas fontes e citar referências).
- API: FastAPI
- Índice vetorial: Postgres + pgvector (Docker)
- Embeddings & Geração: OpenAI API (pode ser trocado por endpoint compatível)
- Cliente HTTP:
curlou qualquer REST client
mini-rag/ ├── docker-compose.yml ├── requirements.txt ├── .env.example ├── data/ # seus PDFs/MD/TXT (não versionar) ├── scripts/ │ ├── init_db.py # cria extensão pgvector + tabela + índices │ └── ingest.py # chunking + embeddings + upsert no Postgres └── app/ ├── main.py # FastAPI (/ask, /health) └── rag.py # retrieve + prompt + geração
- Docker e Docker Compose
- Python 3.10+ (recomendado usar
venv) - Chave de API válida (OpenAI ou compatível com o SDK)
Copie o .env.example para .env e edite: