Discourse AI - Tópicos relacionados

:bookmark: Este guia explica como ativar e configurar o recurso Tópicos Relacionados do plugin Discourse AI.

:person_raising_hand: Nível de usuário necessário: Administrador

O Tópicos Relacionados ajuda os usuários a descobrir conteúdo relevante, sugerindo tópicos semanticamente semelhantes com base naquele que estão lendo no momento. Isso aprimora a exploração de conteúdo e aumenta o engajamento do usuário.

Recursos

  • Similaridade textual semântica: Vai além da correspondência de palavras-chave para encontrar conteúdo verdadeiramente relacionado
  • Alternância entre tópicos “Sugeridos” e “Relacionados”
  • Disponível para usuários anônimos e logados

Ativando Tópicos Relacionados

:information_source: O Tópicos Relacionados está ativado por padrão para todos os clientes hospedados no Discourse com o plugin Discourse AI ativado.

Pré-requisitos

O Tópicos Relacionados requer Embeddings para funcionar.

Se você estiver em nossa hospedagem, Embeddings é fornecido usando um modelo de código aberto. Nenhuma configuração adicional é necessária.

Instâncias auto-hospedadas precisarão configurar um modelo de embedding através de um provedor suportado.

Configuração

  1. Acesse Admin → Plugins → Discourse AI → AI Features (Recursos de IA)
  2. Encontre o módulo Embeddings e configure-o:
    • Defina ai_embeddings_selected_model para uma definição de embedding que você configurou
    • Ative ai_embeddings_enabled para ativar Embeddings
  3. Ative ai_embeddings_semantic_related_topics_enabled para ativar o recurso Tópicos Relacionados

Configurando um modelo de embedding

Antes de ativar os embeddings, você precisa configurar um modelo de embedding. Acesse Admin → Plugins → Discourse AI → Embeddings para criar uma nova definição de embedding. Você pode escolher entre várias predefinições:

  • Open AI: text-embedding-3-small ou text-embedding-3-large (recomendado para a maioria dos sites)
  • Google: gemini-embedding-001
  • Hugging Face (inferência auto-hospedada): multilingual-e5-large (recomendado para sites não-ingleses ou multilíngues), bge-large-en, ou bge-m3

Você precisará fornecer uma chave de API (ou vincular um Segredo de IA) e um URL de endpoint para o provedor escolhido.

Configurações adicionais

As seguintes configurações permitem ajustar o recurso Tópicos Relacionados:

  • ai_embeddings_semantic_related_topics: Número máximo de tópicos a serem exibidos na seção de tópicos relacionados (padrão: 5)
  • ai_embeddings_semantic_related_include_closed_topics: Se deve incluir tópicos fechados nos resultados relacionados (padrão: true)
  • ai_embeddings_semantic_related_age_penalty: Aplica uma penalidade a tópicos mais antigos para que conteúdo mais novo seja preferido (padrão: 0.0, intervalo: 0.0–2.0)
  • ai_embeddings_semantic_related_age_time_scale: Escala de tempo em dias para a penalidade de idade (padrão: 365)

FAQ Técnico

Expandir para ver um diagrama da arquitetura do Tópicos Relacionados

O resumo é que, quando um tópico é criado/atualizado, isto acontece:

sequenceDiagram
    User->>Discourse: Cria tópico
    Discourse-->>Embedding Microservice: Gera embeddings
    Embedding Microservice-->>Discourse: 
    Discourse-->>PostgreSQL: Armazena Embeddings 

E durante a visita ao tópico:

sequenceDiagram
    User->>Discourse: Visita tópico
    Discourse-->>PostgreSQL: Consulta tópicos mais próximos
    PostgreSQL-->>Discourse: 
    Discourse->>User: Apresenta tópicos relacionados 

Como funciona o Tópicos Relacionados?

  • Quando um usuário visita um tópico, o Discourse consulta o banco de dados em busca dos tópicos mais semanticamente semelhantes com base em suas representações incorporadas. Esses tópicos relacionados são então apresentados ao usuário, incentivando a exploração contínua do conteúdo da comunidade.

Como os dados de tópico/postagem são processados?

  • Para sites hospedados pelo Discourse, os dados são processados dentro de nosso data center de nuvem privada virtual segura. Para sites auto-hospedados, o processamento de dados depende do provedor de terceiros escolhido.

Onde os dados de embeddings são armazenados?

  • Os dados de embeddings são armazenados em seu banco de dados do Discourse, juntamente com outros dados do fórum, como tópicos, postagens e usuários.

Quais modelos de embedding estão disponíveis?

  • O Discourse AI suporta modelos da OpenAI (text-embedding-3-small, text-embedding-3-large), Google (gemini-embedding-001), endpoints compatíveis com Hugging Face (bge-large-en, bge-m3, multilingual-e5-large) e Cloudflare Workers AI. Você também pode configurar modelos de embedding personalizados através da interface de administração.
14 curtidas

Algo que vale a pena ficar de olho.

Ao revisar muitas postagens em Tópicos Relacionados para um site em inglês (OpenAI), comecei a notar que os tópicos em espanhol tendem a ser agrupados. Suspeito que, se fossem traduzidos primeiro para o inglês, cada postagem teria um vetor diferente e, assim, seria agrupada com outras postagens. :slightly_smiling_face:



Um benefício colateral desse recurso para moderadores é verificar se as categorias dos tópicos listados em Tópicos Relacionados estão corretas.

À medida que reviso cada nova postagem, também verifico os Tópicos Relacionados. Isso está se tornando uma maneira eficaz de identificar tópicos criados com a categoria errada.

Para sua informação - uma ideia relacionada foi observada neste pedido de recurso.



Encontre este tópico quando muitas vezes precisar seguir um link que não é tão fácil de encontrar, então estou anotando aqui.

2 curtidas

Esse comportamento é controlado pelo modelo e parece ser um problema conhecido:

Acho que o modelo OSS que recomendamos para sites multilíngues faz um trabalho melhor nisso, mas ainda precisamos implementá-lo para mais clientes para validar isso.

2 curtidas

Não me deixa habilitar esta opção:

Estou a perder alguma coisa aqui ou o Gemini sozinho não é suficiente?

ATUALIZAÇÃO: As instruções e a descrição do erro podem querer ser atualizadas para adicionar que o ai embeddings model também deve ser atualizado para corresponder ao provedor, caso contrário, ai_embeddings_enabled não pode ser habilitado. A descrição do parâmetro está a falhar o Gemini como uma opção.

1 curtida

7 posts foram divididos em um novo tópico: “Net::HTTPBadResponse” errors on Gemini Embeddings

O que devo preencher aqui, por favor:

Quero preencher o acima, porque quero habilitar a primeira opção entre as 4 mostradas abaixo:

Se você usar OpenAI, nada.

1 curtida

Então esta primeira opção (Módulo de Incorporações) me incomoda, não me deixa ativá-la:

A maioria deles está vazia. Mas ai embeddings discourse service api key é sua API da OpenAI e ai embeddings discourse service api endpoint é https://api.openai.com/v1/embeddings. O modelo deve ser text-embedding-3-large (claro, pode ser small também, mas ele tem alguns problemas).

1 curtida

3 posts foram divididos em um novo tópico: Como fazer com que os tópicos Sugeridos e Relacionados sejam exibidos

Quais foram seus resultados ao comparar small e large? Sei que há uma diferença nas dimensões que afeta a precisão do modelo. A versão small é 5x mais barata. Ela é realmente inutilizável no mundo real para similaridade de tópicos? Nosso fórum é 99% em inglês.

Eu estaria muito interessado em saber mais. Você pode, por favor, elaborar onde all-mpnet-base-v2 se compara aos modelos da OpenAI para um site puramente em inglês?

Embeddings são tão baratos que o preço não importa — a menos que haja uma miríade de posts quando 0,01 centavos importam nos custos totais.

Mas, honestamente… eu não vi nenhuma diferença. E para mim, como há a chance de eu não poder usar RAG e embeddings adequadamente, ambos são igualmente inúteis. Sei que isso vai contra a opinião pública, mas no meu site esse sistema simplesmente não encontra e não usa nada útil.

Provavelmente vem dos modelos da OpenAI, mas eu não tenho dinheiro suficiente para usar essas soluções mais profissionais.

1 curtida

Eu estava usando o modelo text-embedding-3-small antes de ler isso. O text-embedding-ada-002 é muito melhor?

Ada é da geração anterior

1 curtida

Uma postagem foi dividida em um novo tópico: Related Topics not translated