ChromaDB RAG system - Docker deployment
- Shell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| docker-compose.yml | ||
| ingest.sh | ||
| query.sh | ||
| README.md | ||
| setup.sh | ||
| stats.sh | ||
ChromaDB RAG - Sistema de Retrieval Augmented Generation
ChromaDB corriendo en Docker sobre el Data Hub (192.168.3.216). Independiente de la Mac Mini, usando el disco de 1TB del Data Hub para almacenamiento persistente.
Requisitos
- Docker & Docker Compose
- curl
- python3 (para scripts de indexación y consulta)
Instalación
# Dar permisos de ejecución
chmod +x *.sh
# Setup completo (crea volumen, inicia contenedor, valida funcionamiento)
./setup.sh
Uso
Indexar documentos
# Indexar todos los .md, .txt, .csv de una carpeta
./ingest.sh ./mis-docs
# Especificar colección y límite de resultados
./ingest.sh ./documentos --collection manuales --top-k 10
Soporta chunking por párrafos con overlap de 1 párrafo.
Cada documento se indexa con metadatos: source, type, timestamp.
Consulta semántica
# Consulta básica
./query.sh "¿qué dice sobre X?"
# Con parámetros
./query.sh "instalación del servidor" --collection manuales --top-k 3
Muestra resultados enumerados con:
- Score (distancia coseno)
- Fuente (nombre del archivo original)
- Fragmento (texto relevante)
Estadísticas
./stats.sh
Muestra:
- Estado del contenedor Docker
- Colecciones disponibles y total de documentos por colección
- Espacio en disco usado en
/data/chromadb - Health check de la API
Arquitectura
┌─────────────────────────────────┐
│ Data Hub (.216) │
│ │
curl / python │ ┌───────────────┐ │
───────────────┼─>│ ChromaDB │ │
│ │ localhost:7100 │ │
│ └───────┬───────┘ │
│ │ │
│ ┌───────▼───────┐ │
│ │ /data/chromadb │ │
│ │ (disco 1TB) │ │
│ └───────────────┘ │
└─────────────────────────────────┘
- ChromaDB: Base de datos vectorial open-source
- Embeddings: Modelo por defecto
all-MiniLM-L6-v2(incluido en ChromaDB) - Puerto: 7100 (el 8000 está ocupado por otro servicio en el Data Hub)
- Persistencia: Volumen Docker montado en
/data/chromadb(disco de 1TB)
Sin dependencia de la Mac Mini
Este sistema corre completamente en el Data Hub (192.168.3.216). No necesita la Mac Mini para funcionar. Los embeddings se generan localmente en ChromaDB usando el modelo por defecto all-MiniLM-L6-v2.
Notas
- Los scripts usan
chromadb-client(librería liviana, sin dependencias pesadas) - El setup inicial instala automáticamente chromadb-client vía pip si no está presente
- Variables de entorno configurables:
CHROMA_PORT,CHROMA_VOLUME,PYTHON
Nota: El visor web para ChromaDB se agregará próximamente como un servicio aparte (Next.js liviano).
Nota de API: ChromaDB usa API v2 a partir de su versión más reciente. El health check se realiza en
/api/v2/health.
Comandos útiles
# Logs del contenedor
docker logs rag-chromadb
# Shell dentro del contenedor
docker exec -it rag-chromadb /bin/bash
# Detener
docker compose down
# Reiniciar
docker compose restart