Discourse AI - Temas relacionados

:bookmark: Esta guía explica cómo habilitar y configurar la función de Temas relacionados del plugin Discourse AI.

:person_raising_hand: Nivel de usuario requerido: Administrador

Temas relacionados ayuda a los usuarios a descubrir contenido relevante sugiriendo temas semánticamente similares basados en el que están leyendo actualmente. Esto mejora la exploración de contenido y aumenta la participación del usuario.

Características

  • Similitud textual semántica: Va más allá de la coincidencia de palabras clave para encontrar contenido verdaderamente relacionado
  • Alternar entre temas “Sugeridos” y “Relacionados”
  • Disponible para usuarios anónimos y registrados

Habilitar Temas relacionados

:information_source: Temas relacionados está activado por defecto para todos los clientes alojados en Discourse con el plugin Discourse AI activado.

Prerrequisitos

Temas relacionados requiere Embeddings para funcionar.

Si estás en nuestro hosting, Embeddings se proporciona utilizando un modelo de código abierto. No se requiere configuración adicional.

Las instancias autohospedadas necesitarán configurar un modelo de incrustación a través de un proveedor compatible.

Configuración

  1. Ve a Admin → Plugins → Discourse AI → AI Features
  2. Encuentra el módulo Embeddings y configúralo:
    • Establece ai_embeddings_selected_model en una definición de incrustación que hayas configurado
    • Habilita ai_embeddings_enabled para activar Embeddings
  3. Habilita ai_embeddings_semantic_related_topics_enabled para activar la función Temas relacionados

Configuración de un modelo de incrustación

Antes de habilitar las incrustaciones, debes configurar un modelo de incrustación. Ve a Admin → Plugins → Discourse AI → Embeddings para crear una nueva definición de incrustación. Puedes elegir entre varias configuraciones preestablecidas:

  • Open AI: text-embedding-3-small o text-embedding-3-large (recomendado para la mayoría de los sitios)
  • Google: gemini-embedding-001
  • Hugging Face (inferencia autohospedada): multilingual-e5-large (recomendado para sitios no ingleses o multilingües), bge-large-en, o bge-m3

Deberás proporcionar una clave de API (o vincular un Secreto de IA) y la URL del endpoint para el proveedor elegido.

Configuración adicional

La siguiente configuración te permite ajustar la función Temas relacionados:

  • ai_embeddings_semantic_related_topics: Número máximo de temas a mostrar en la sección de temas relacionados (predeterminado: 5)
  • ai_embeddings_semantic_related_include_closed_topics: Si incluir temas cerrados en los resultados relacionados (predeterminado: true)
  • ai_embeddings_semantic_related_age_penalty: Aplicar una penalización a los temas más antiguos para priorizar el contenido más nuevo (predeterminado: 0.0, rango: 0.0–2.0)
  • ai_embeddings_semantic_related_age_time_scale: Escala de tiempo en días para la penalización por antigüedad (predeterminado: 365)

FAQ Técnico

Expandir para ver un diagrama de la arquitectura de Temas relacionados

El resumen es que cuando se crea/actualiza un tema, sucede esto:

sequenceDiagram
    User->>Discourse: Crea tema
    Discourse-->>Embedding Microservice: Genera incrustaciones
    Embedding Microservice-->>Discourse: 
    Discourse-->>PostgreSQL: Almacena incrustaciones 

Y durante la visita al tema:

sequenceDiagram
    User->>Discourse: Visita tema
    Discourse-->>PostgreSQL: Consulta temas más cercanos
    PostgreSQL-->>Discourse: 
    Discourse->>User: Presenta temas relacionados 

¿Cómo funciona Temas relacionados?

  • Cuando un usuario visita un tema, Discourse consulta la base de datos para encontrar los temas semánticamente más similares basándose en sus representaciones incrustadas. Estos temas relacionados se presentan luego al usuario, fomentando una mayor exploración del contenido de la comunidad.

¿Cómo se procesan los datos de temas/publicaciones?

  • Para los sitios alojados en Discourse, los datos se procesan dentro de nuestro centro de datos de red privada virtual segura. Para los sitios autohospedados, el procesamiento de datos depende del proveedor de terceros que hayas elegido.

¿Dónde se almacenan los datos de incrustaciones?

  • Los datos de incrustaciones se almacenan en tu base de datos de Discourse, junto con otros datos del foro como temas, publicaciones y usuarios.

¿Qué modelos de incrustación están disponibles?

  • Discourse AI admite modelos de OpenAI (text-embedding-3-small, text-embedding-3-large), Google (gemini-embedding-001), endpoints compatibles con Hugging Face (bge-large-en, bge-m3, multilingual-e5-large) y Cloudflare Workers AI. También puedes configurar modelos de incrustación personalizados a través de la interfaz de administración.
14 Me gusta

Algo que vale la pena vigilar.

Al revisar muchas publicaciones en Temas relacionados para un sitio en inglés (OpenAI), empiezo a notar que los temas en español tienden a agruparse y sospecho que si se tradujeran primero al inglés, cada publicación tendría un vector diferente y, por lo tanto, se agruparía con otras publicaciones. :slightly_smiling_face:



Un beneficio secundario de esta función para los moderadores es verificar que las categorías de los temas enumerados en Temas relacionados sean correctas.

A medida que reviso cada nueva publicación, también reviso los Temas relacionados. Esto se está convirtiendo en una forma eficaz de identificar temas creados con la categoría incorrecta.

Para tu información: se observó una idea relacionada en esta solicitud de función.



Encuentra este tema cuando a menudo necesitas seguir un enlace que no es tan fácil de encontrar, así que lo anoto aquí.

2 Me gusta

Ese comportamiento está regido por el modelo, y parece ser un problema conocido:

Creo que el modelo OSS que recomendamos para sitios multilingües hace un mejor trabajo en esto, pero aún necesitamos implementarlo para más clientes para validar esto.

2 Me gusta

No me deja habilitar esta opción:

¿Me falta algo aquí o Gemini por sí solo no es suficiente?

ACTUALIZACIÓN: Las instrucciones y la descripción del error pueden querer actualizarse para agregar que el modelo de embeddings de IA también debe actualizarse para que coincida con el proveedor, de lo contrario, ai_embeddings_enabled no se puede habilitar. A la descripción del parámetro le falta Gemini como opción.

1 me gusta

7 publicaciones se dividieron en un nuevo tema: “Errores de Net::HTTPBadResponse” en Gemini Embeddings

¿Qué debo rellenar aquí, por favor?

Quiero rellenar lo anterior, porque quiero habilitar la primera opción de las 4 que se muestran a continuación:

Si usas OpenAI, nada.

1 me gusta

Entonces esta primera opción (Módulo de Incrustaciones) me preocupa, no me deja habilitarla:

La mayoría de esos están vacíos. Pero ai embeddings discourse service api key es tu API de OpenAI y ai embeddings discourse service api endpoint es https://api.openai.com/v1/embeddings. El modelo debería ser text-embedding-3-large (claro, también puede ser small pero tiene algunos problemas).

1 me gusta

3 publicaciones se dividieron en un nuevo tema: Cómo hacer que se muestren tanto los temas sugeridos como los relacionados

¿Cuáles fueron tus resultados al comparar small y large? Sé que hay una diferencia en las dimensiones que afecta la precisión del modelo. La versión small es 5 veces más barata. ¿Es realmente inutilizable en el mundo real para la similitud de temas? Nuestro foro es 99% en inglés.

Me interesaría mucho saber más. ¿Podrías por favor explicar dónde se sitúa all-mpnet-base-v2 en comparación con los modelos de OpenAI para un sitio puramente en inglés?

Los embeddings son tan baratos que el precio no importa, a menos que haya una miríada de publicaciones cuando 0.01 centavos importan en los costos totales.

Pero, sinceramente… no vi ninguna diferencia. Y para mí, debido a que existe la posibilidad de que no pueda usar RAG y embeddings correctamente, ambos son igualmente inútiles. Sé que esto va en contra de la opinión pública, pero en mi sitio ese sistema simplemente no encuentra ni usa nada útil.

Probablemente provenga de los modelos de OpenAI, pero no tengo suficiente dinero para usar esas soluciones más profesionales.

1 me gusta

Estuve usando el modelo text-embedding-3-small antes de leer esto. ¿Es el text-embedding-ada-002 mucho mejor?

Ada es de la generación anterior

1 me gusta

Una publicación fue dividida en un nuevo tema: Related Topics not translated