ChromaDB RAG system - Docker deployment
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-27 15:59:27 -06:00
docker-compose.yml clean: remove chromadb-admin (arm64 only, incompatible with amd64) 2026-05-27 15:15:43 -06:00
ingest.sh feat: initial ChromaDB RAG setup 2026-05-27 14:39:09 -06:00
query.sh feat: initial ChromaDB RAG setup 2026-05-27 14:39:09 -06:00
README.md fix: update health check to ChromaDB v2 API (/api/v2/health) 2026-05-27 15:59:27 -06:00
setup.sh fix: update health check to ChromaDB v2 API (/api/v2/health) 2026-05-27 15:59:27 -06:00
stats.sh fix: update health check to ChromaDB v2 API (/api/v2/health) 2026-05-27 15:59:27 -06:00

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