Este artículo describe los pasos necesarios para instalar y configurar ChromaDB en un proyecto Django.
ChromaDB es una base de datos vectorial que se utiliza para almacenar representaciones numéricas de datos (vectores), ideales para proyectos de inteligencia artificial como la creación de un chatbot similar a ChatGPT.
Este artículo es parte de nuestro proyecto MyChatBot, una iniciativa donde integramos tecnologías de inteligencia artificial de vanguardia, como bases de datos vectoriales, modelos avanzados de lenguaje como ChatGPT y estrategias de Generación Aumentada por Recuperación (RAG), para desarrollar chatbots conversacionales altamente sofisticados.
Si antes quieres ver para qué le sirve un chatbot a un negocio, te recomendamos leer cómo los chatbots están cambiando el servicio al cliente.
Configurar ChromaDB dentro de Django te permitirá gestionar información vectorizada para dar contexto a los modelos de lenguaje de manera eficiente.
Asumimos que tienes conocimientos básicos de Python y Django. Si no es así, te recomendamos que sigas la documentación oficial de Django.
Proyecto con Django
1. Creamos el entorno virtual
python -m venv venv
2. Activamos el entorno virtual
source venv/bin/activate
3. Instalamos Django
pip install django
4. Creamos un proyecto Django
django-admin startproject chatgpt
5. Aplicamos las migraciones
cd chatgpt
python manage.py migrate
6. Ejecutamos el servidor de desarrollo
python manage.py runserver
Abre tu navegador y visita http://localhost:8000/ para verificar que el servidor esté en funcionamiento.

Instalación de ChromaDB
Para instalar ChromaDB en tu entorno, sigue estos pasos:
1. Instala el paquete
pip install chromadb
2. Verifica la instalación comprobando la versión instalada:
python -c "import chromadb; print(chromadb.__version__)"
Deberías ver el número de la versión instalada, por ejemplo 0.5.23.
Configurar ChromaDB con Docker
Vamos a utilizar ChromaDB de forma persistente a través de Docker. Para ello, sigue estos pasos:
1. Crea el archivo docker-compose.yml
Crea un archivo docker-compose.yml con el siguiente contenido en la raíz del proyecto:
networks:
net:
driver: bridge
services:
chromadb:
image: chromadb/chroma
volumes:
- chroma-data:/chroma/chroma
- ./server.htpasswd:/chroma/server.htpasswd
environment:
- IS_PERSISTENT=TRUE
- CHROMA_SERVER_AUTHN_PROVIDER=${CHROMA_SERVER_AUTHN_PROVIDER}
- CHROMA_SERVER_AUTHN_CREDENTIALS_FILE=${CHROMA_SERVER_AUTHN_CREDENTIALS_FILE}
- CHROMA_AUTH_TOKEN_TRANSPORT_HEADER=${CHROMA_AUTH_TOKEN_TRANSPORT_HEADER}
- PERSIST_DIRECTORY=/chroma/chroma
restart: unless-stopped
ports:
- "8010:8000"
networks:
- net
volumes:
chroma-data:
2. Crea el archivo de credenciales
Crea un archivo server.htpasswd en la raíz del proyecto con las credenciales de acceso al servidor ChromaDB:
htpasswd -Bbn admin secret > server.htpasswd
3. Configura las variables de entorno
Crea un archivo .env en la raíz del proyecto con las siguientes variables de entorno:
CHROMA_SERVER_AUTHN_CREDENTIALS_FILE="/chroma/server.htpasswd"
CHROMA_SERVER_AUTHN_PROVIDER="chromadb.auth.basic_authn.BasicAuthenticationServerProvider"
CHROMA_AUTH_TOKEN_TRANSPORT_HEADER=""
4. Inicia el contenedor de ChromaDB
Ejecuta el siguiente comando para iniciar el contenedor de ChromaDB:
docker-compose up -d
Si todo ha ido bien, podrás acceder a ChromaDB en http://localhost:8010/openapi.json y ver la documentación de la API.

Configuración en Django
A continuación, vamos a configurar ChromaDB en un proyecto Django para tener control de las colecciones que creamos en ChromaDB.
1. Crea una aplicación para gestionar ChromaDB
Dentro de tu proyecto, crea una nueva aplicación llamada vectordb:
python manage.py startapp vectordb
2. Registra la aplicación
Asegúrate de que la nueva aplicación está registrada en el archivo settings.py:
INSTALLED_APPS = [
...,
'vectordb.apps.VectordbConfig',
]
3. Crea un modelo para registrar las colecciones
Dentro de la aplicación vectordb, creamos un modelo para almacenar los nombres de las colecciones de ChromaDB:
from django.db import models
class Collection(models.Model):
name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'Collection'
verbose_name_plural = 'Collections'
def __str__(self):
return self.name
4. Migra el modelo
Aplicamos las migraciones para crear la tabla en la base de datos:
python manage.py makemigrations
python manage.py migrate
5. Registra el modelo en el admin de Django
Registra el modelo en el panel de administración de Django para gestionar las colecciones:
from django.contrib import admin
from .models import Collection
admin.site.register(Collection)
6. Crea un superusuario
Ejecuta el siguiente comando para crear el usuario con el que accederás al panel de administración:
python manage.py createsuperuser
7. Accede al panel de administración
Inicia el servidor de desarrollo y accede al panel de administración en http://localhost:8000/admin/.

Hasta aquí llega esta primera parte de la guía para instalar y configurar ChromaDB en Django.
En la siguiente parte veremos cómo configurar la conexión a ChromaDB desde Django y cómo crear y gestionar colecciones de vectores desde una API REST.
Si te gusta este tipo de contenido, síguenos en nuestras redes sociales para seguir creando contenido de calidad.
¿Quieres un chatbot o automatizar tareas con IA?
Te decimos qué tiene sentido para tu negocio y lo implementamos, sin humo y con precio cerrado.

