Desde 2014 · Servicios Sin permanencia

Guía para instalar y configurar ChromaDB en Django para crear tu propio ChatGPT

Este artículo describe los pasos necesarios para instalar y configurar ChromaDB en un proyecto Django.
En este artículo

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.

Django

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.

ChromaDB

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/.

Django 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.

Cuéntanos tu proyecto

¿Te ha servido? Compártelo
LinkedIn
WhatsApp
X
Facebook
Reddit
Imagen de CodigoJS
CodigoJS
En este artículo
Sigue leyendo

Otros artículos que te pueden interesar

Blog

Hablemos de tu web

Cuéntanos qué necesitas y te respondemos en menos de 24 h laborables. Sin compromiso.