El plugin Discourse AI tiene muchas características que requieren embeddings (incrustaciones) para funcionar, como Temas Relacionados, Búsqueda con IA, Sugerencia de Categorías y Etiquetas con IA, etc. Si bien puedes usar una API de terceros, como Configurar claves API para OpenAI, Configurar claves API para Cloudflare Workers AI o Configurar claves API para Google Gemini, construimos Discourse AI desde el primer día para no estar limitados a ellas.
Ejecución con HuggingFace TEI
HuggingFace proporciona una asombrosa imagen de contenedor que puede ponerte en marcha rápidamente.
Por ejemplo:
mkdir -p /opt/tei-cache
docker run --rm --gpus all --shm-size 1g -p 8081:80 \
-v /opt/tei-cache:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id BAAI/bge-large-en-v1.5
Esto debería ponerte en funcionamiento con una instancia local de BAAI/bge-large-en-v1.5, un modelo de código abierto con muy buen rendimiento.
Puedes comprobar si está funcionando con
curl -X POST \
'http://localhost:8081/embed' \
-H 'Content-Type: application/json' \
-d '{ "inputs": "Testing string for embeddings" }'
Lo cual debería devolver un array de flotantes en condiciones normales de funcionamiento.
Ponerlo a disposición de tu instancia de Discourse
La mayoría de las veces, ejecutarás esto en un servidor dedicado debido a la aceleración de la GPU. Al hacerlo, recomiendo ejecutar un proxy inverso, realizando la terminación TLS y asegurando el endpoint para que solo pueda ser conectado por tu instancia de Discourse.
Configuración de DiscourseAI
Discourse AI ahora utiliza un sistema de definición de embeddings totalmente configurable, similar a cómo se configuran los LLM. Para configurar tu endpoint autoalojado:
- Navega a Administrador → Plugins → Discourse AI → Embeddings.
- Haz clic en Nuevo para crear una nueva definición de embedding.
- Selecciona un preset (ajuste preestablecido) que coincida con tu modelo (p. ej.,
bge-large-en,bge-m3omultilingual-e5-large), o elige Configurar manualmente para cualquier otro modelo. - Establece la URL para que apunte a tu servidor TEI autoalojado (p. ej.,
https://tu-servidor-tei:8081). - Usa el botón Test (Probar) para verificar la conectividad antes de guardar.
- Después de guardar, establece
ai_embeddings_selected_modela tu nueva definición de embedding.
Una vez configurado, Discourse rellenará automáticamente los embeddings para los temas existentes a través de un trabajo en segundo plano programado. Si tienes un gran número de temas pendientes, puedes aumentar la configuración oculta ai_embeddings_backfill_batch_size (predeterminado: 250) para procesar los temas más rápido.