Buscador inteligente de documentos para PYMES: sube tus PDF, TXT, MD o CSV y pregunta en lenguaje natural. Basado en RAG (Retrieval-Augmented Generation): embeddings + vector database (ChromaDB) + LLM, con fuentes citadas en cada respuesta.
Construido por EterWebs — agencia de IA y automatización para PYMES en Madrid (chatbots IA, automatización RAG, agentes de IA).
PDF / TXT / MD / CSV → chunks → embeddings → ChromaDB → pregunta → respuesta + fuentes
- RAG completo y funcional: ingesta, chunking, embeddings, vector store y generación con fuentes citadas.
- LLM y embeddings intercambiables: funciona con OpenAI, Ollama, LM Studio o cualquier API
OpenAI-compatible (
OPENAI_BASE_URL). - API REST lista (FastAPI):
POST /ingestyPOST /query. - Docker listo:
docker compose upy a funcionar. - Persistencia local: ChromaDB en un volumen, sin servicios externos.
- Detección de duplicados: re-indexar el mismo documento no crea copias.
- Idioma automático: responde en el idioma de la pregunta (ES/EN/...).
git clone https://github.com/eterwebs/document-rag.git
cd document-rag
cp .env.example .env
# edita .env y pon tu OPENAI_API_KEY
docker compose up --buildLa API queda en http://localhost:8000 (docs interactivos en /docs).
curl -X POST http://localhost:8000/ingest \
-F "file=@tu-documento.pdf"curl -X POST http://localhost:8000/query \
-H "Content-Type: application/json" \
-d '{"question": "¿Cuánto cuesta el plan premium?"}'Respuesta de ejemplo:
{
"answer": "El plan premium cuesta 49 €/mes (documento-precios.pdf).",
"sources": [
{
"source": "documento-precios.pdf",
"doc_id": "a1b2c3d4e5f6",
"fragment": "Plan Premium: 49 €/mes, soporte prioritario..."
}
],
"model": "gpt-4o-mini"
}python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
export OPENAI_API_KEY=sk-...
uvicorn app.main:app --reload# docker-compose.yml → descomenta las líneas OPENAI_BASE_URL / LLM_MODEL / EMBEDDING_MODEL
ollama pull llama3.1
ollama pull nomic-embed-text
docker compose up --build| Variable | Defecto | Descripción |
|---|---|---|
OPENAI_API_KEY |
— | Clave del proveedor LLM (obligatoria salvo Ollama local) |
LLM_MODEL |
gpt-4o-mini |
Modelo de generación |
EMBEDDING_MODEL |
text-embedding-3-small |
Modelo de embeddings |
OPENAI_BASE_URL |
(oficial OpenAI) | URL base de una API OpenAI-compatible |
CHUNK_SIZE |
800 |
Tamaño de chunk (caracteres) |
CHUNK_OVERLAP |
120 |
Solapamiento entre chunks |
CHROMA_DIR |
./chroma_db |
Carpeta del vector store |
CHROMA_COLLECTION |
eterwebs_docs |
Nombre de la colección |
document-rag/
├── app/
│ ├── main.py # API FastAPI (ingest + query)
│ ├── ingest.py # Carga, chunking e indexado en ChromaDB
│ ├── embeddings.py # Embeddings configurables (OpenAI-compatible)
│ └── rag.py # Recuperación + generación con fuentes
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── requirements.txt
- Gestorías: responder clientes con su documentación interna (fiscal, laboral).
- Despachos de abogados: buscar jurisprudencia y contratos en segundos.
- Ecommerce: consultas de producto sobre catálogos y fichas técnicas.
- RRHH: filtrar CVs y consultar la política interna de la empresa.
PRs, issues y estrellas son bienvenidas. Antes de contribuir: código limpio, sin secretos en el repo y pruebas de los endpoints.
MIT — ver LICENSE.
Document RAG es un proyecto de EterWebs · IA y Automatización para PYMES en Madrid · chatbots IA, automatización RPA, agentes de IA y consultoría.