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

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. 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 Recuperación Aumentada por Generación (RAG), para desarrollar chatbots conversacionales altamente sofisticados.

Configurar ChromaDB dentro de Django te permitirá gestionar información vectorizada para entrenar y ejecutar 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

1. Para instalar ChromaDB en tu entorno, sigue estos pasos:

pip install chromadb

2. Verifica la instalación comprobando la versión instalada:

python -c "import chromadb; print(chromadb.__version__)"
0.5.23

Configurar ChromaDB con Docker

Vamos a utilizar ChromaDB de forma persistete a través de Docker. Para ello, sigue estos pasos:

1. Docker compose

Crea un archivo docker-compose.yml con el siguiente contenido en la raiz del proyecto:

version: '3.9'
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_AUTH_FILE}
      - CHROMA_AUTH_TOKEN_TRANSPORT_HEADER=${CHROMA_AUTH_TOKEN_TRANSPORT_HEADER}
      - PERSIST_DIRECTORY=/chroma/chroma
    restart: unless-stopped
    ports:
      - "8010:8000"
    networks:
      - net

volumes:
  db-data-serverbot:
  chroma-data:

2. Crear un 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. Configurar 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="server.htpasswd"
CHROMA_SERVER_AUTHN_PROVIDER="chromadb.auth.basic_authn.BasicAuthenticationServerProvider"
CHROMA_AUTH_TOKEN_TRANSPORT_HEADER=""

4. Iniciar 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. Crear una aplicación para gestionar ChromaDB

Dentro de tu proyecto, crea una nueva aplicación llamada vectordb:

python manage.py startapp vectordb
  1. Configurar las dependencias

Asegúrate de que la nueva aplicación está registrada en el archivo settings.py:

INSTALLED_APPS = [
    ...,
    'vectordb.apps.VectordbConfig',
]
  1. Crear un modelo para almacenar vectores

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
  1. Migrar el modelo

Aplicamos las migraciones para crear la tabla en la base de datos:

python manage.py makemigrations
python manage.py migrate
  1. 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)
  1. Crea el superusuario para acceder al panel de administración:
python manage.py createsuperuser
  1. 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í esta primera parte de la guía para instalar y configurar ChromaDB en Django.

En la siguiente parte veremos como configurar la conexión a ChromaDB desde Django y como crear y gestionar colecciones de vectores desde una api REST.

Si te gusta este tipo de contenido, siguenos en nuestras redes sociales para seguir craendo contenido de calidad.