Busca semântica com embeddings de IA retorna erro 500

Olá a todos,

Tenho a “pesquisa semântica com embeddings de IA” ativada no meu site, mas sempre que tento pesquisar algo, recebo um erro 500 Internal Server Error e nenhum resultado é retornado. A pesquisa normal funciona perfeitamente quando desativou essa configuração.

Aqui está o que aparece no console do navegador:

static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496:1  Falha ao carregar recurso: net::ERR_BLOCKED_BY_CLIENT
app.js:365 ℹ️ Discourse v2026.7.0-latest — https://github.com/discourse/discourse/commits/9981e29915 — Ember v6.10.1
/discourse-ai/embeddings/semantic-search?q=asd:1  Falha ao carregar recurso: o servidor respondeu com o status 500 ()
ajax.js:233  GET https://btt.community/discourse-ai/embeddings/semantic-search?q=discourse 500 (Internal Server Error)
send @ jquery.js:9940
ajax @ jquery.js:9521
i @ ajax.js:233
$ @ ajax.js:252
performHyDESearch @ ai-full-page-search.gjs:228
onSearch @ ai-full-page-search.gjs:64
sendEvent @ cache-DtDz7X5V.js:471
trigger @ evented.js:68
search @ full-page-search.js:623
(anonymous) @ index.js:2534
$h @ ember-text-field.gjs:46
insertNewline @ ember-text-field.gjs:155
interpretKeyEvents @ ember-text-field.gjs:142
keyUp @ ember-text-field.gjs:177
_trigger @ core_view.js:75
superWrapper @ mandatory-setter-CXNsxygN.js:311
_trigger @ ember-events.js:138
superWrapper @ mandatory-setter-CXNsxygN.js:311
(anonymous) @ ember-events.js:199

Anexei também uma captura de tela do erro.

Alguém já enfrentou isso antes, ou alguém sabe o que pode estar causando isso / o que devo verificar do meu lado (configurações, chaves de API, logs, etc.)? Qualquer orientação seria apreciada.

Obrigado desde já!

Você configurou um modelo de embeddings na página de configurações de IA?

Sim, configurei. Configurei um modelo de embeddings do Gemini na página de configurações de IA, e o botão Executar teste conclui com sucesso, exibindo o resultado Sucesso!, conforme mostrado na captura de tela. Portanto, o modelo de embeddings parece estar configurado corretamente.

Também tenho este erro no topo; não sei se está relacionado.

{A260A143-3DC6-4BA9-8906-55B70837FF12}

É provável que haja mais informações em /logs também, já que erros do tipo 500 vão para lá. Você pode verificar?

O “Sucesso!” confirma apenas que as credenciais da API e o endpoint estão funcionando, mas não testa o processo de pesquisa semântica.

Erro ERROR: esperavam-se 768 dimensões, não 3072 ao consultar embeddings para o modelo gemini:

Mensagem (15 cópias relatadas)

Erro ERROR:  esperavam-se 768 dimensões, não 3072
 ao consultar embeddings para o modelo gemini

Rastreamento de chamada (Backtrace)

/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.5/lib/active_support/broadcast_logger.rb:218:in 'block in ActiveSupport::BroadcastLogger#dispatch'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in 'Array#map'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.5/lib/active_support/broadcast_logger.rb:217:in 'ActiveSupport::BroadcastLogger#dispatch'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.5/lib/active_support/broadcast_logger.rb:129:in 'ActiveSupport::BroadcastLogger#error'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/schema.rb:188:in 'DiscourseAi::Embeddings::Schema#asymmetric_similarity_search'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/semantic_search.rb:89:in 'DiscourseAi::Embeddings::SemanticSearch#search_for_topics'
/var/www/discourse/plugins/discourse-ai/app/controllers/discourse_ai/embeddings/embeddings_controller.rb:70:in 'block in DiscourseAi::Embeddings::EmbeddingsController#search'
/var/www/discourse/lib/hijack.rb:68:in 'BasicObject#instance_eval'
/var/www/discourse/lib/hijack.rb:68:in 'block (2 levels) in Hijack#hijack'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/i18n-1.14.8/lib/i18n.rb:354:in 'I18n::Base#with_locale'
/var/www/discourse/lib/hijack.rb:68:in 'block in Hijack#hijack'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:911:in 'Concurrent::Promises::Event#callback_on_resolution'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:797:in 'Concurrent::Promises::AbstractEventFuture#call_callback'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:803:in 'Concurrent::Promises::AbstractEventFuture#call_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:692:in 'Concurrent::Promises::AbstractEventFuture#resolve_with'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:1325:in 'Concurrent::Promises::ResolvableEvent#resolve'
/var/www/discourse/lib/scheduler/defer.rb:135:in 'block in Scheduler::Deferrable#do_work'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in 'RailsMultisite::ConnectionManagement.with_connection'
/var/www/discourse/lib/scheduler/defer.rb:130:in 'Scheduler::Deferrable#do_work'
/var/www/discourse/lib/scheduler/defer.rb:116:in 'block (2 levels) in Scheduler::Deferrable#start_thread'

Ambiente (Env)

HTTP HOSTS: censor

Falha ao processar a resposta interceptada corretamente : DiscourseAi::Embeddings::Schema::MissingEmbeddingError : DiscourseAi::Embeddings::Schema::MissingEmbeddingError

Mensagem (15 cópias relatadas)

Falha ao processar a resposta interceptada corretamente : DiscourseAi::Embeddings::Schema::MissingEmbeddingError : DiscourseAi::Embeddings::Schema::MissingEmbeddingError

Rastreamento de chamada (Backtrace)

/var/www/discourse/plugins/discourse-ai/lib/embeddings/schema.rb:189:in 'DiscourseAi::Embeddings::Schema#asymmetric_similarity_search'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/semantic_search.rb:89:in 'DiscourseAi::Embeddings::SemanticSearch#search_for_topics'
/var/www/discourse/plugins/discourse-ai/app/controllers/discourse_ai/embeddings/embeddings_controller.rb:70:in 'block in DiscourseAi::Embeddings::EmbeddingsController#search'
/var/www/discourse/lib/hijack.rb:68:in 'BasicObject#instance_eval'
/var/www/discourse/lib/hijack.rb:68:in 'block (2 levels) in Hijack#hijack'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/i18n-1.14.8/lib/i18n.rb:354:in 'I18n::Base#with_locale'
/var/www/discourse/lib/hijack.rb:68:in 'block in Hijack#hijack'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:911:in 'Concurrent::Promises::Event#callback_on_resolution'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:797:in 'Concurrent::Promises::AbstractEventFuture#call_callback'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:803:in 'Concurrent::Promises::AbstractEventFuture#call_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:692:in 'Concurrent::Promises::AbstractEventFuture#resolve_with'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.7/lib/concurrent-ruby/concurrent/promises.rb:1325:in 'Concurrent::Promises::ResolvableEvent#resolve'
/var/www/discourse/lib/scheduler/defer.rb:135:in 'block in Scheduler::Deferrable#do_work'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in 'RailsMultisite::ConnectionManagement.with_connection'
/var/www/discourse/lib/scheduler/defer.rb:130:in 'Scheduler::Deferrable#do_work'
/var/www/discourse/lib/scheduler/defer.rb:116:in 'block (2 levels) in Scheduler::Deferrable#start_thread'

Ambiente (Env)

HTTP HOSTS: btt.community

Parece que só precisei recriar a configuração de Embeddings nas configurações administrativas do Discourse-AI para o Gemini e definir as dimensões de embedding para 3072. Acho que essa configuração foi criada há algum tempo, quando o padrão ainda era 768.

Obrigado, @nat, por me indicar para verificar os logs!