La búsqueda semántica con embeddings de IA devuelve error 500

Hola a todos,

Tengo habilitada la “búsqueda semántica con incrustaciones de IA” en mi sitio, pero cada vez que intento buscar algo, obtengo un error 500 Internal Server Error y no se devuelven resultados. La búsqueda normal funciona bien cuando desactivo esa configuración.

Esto es lo que obtengo en la consola del navegador:

static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496:1  Failed to load resource: 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  Failed to load resource: the server responded with a status of 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

He adjuntado una captura de pantalla del error también.

¿Alguien ha tenido este problema antes, o sabe qué podría estar causándolo / qué debería revisar en mi extremo (configuración, claves API, registros, etc.)? Agradecería cualquier orientación.

¡Gracias de antemano!

¿Has configurado un modelo de incrustaciones en la página de configuración de IA?

Sí, lo he hecho. He configurado un modelo de incrustaciones Gemini en la página de configuración de IA, y el botón Ejecutar prueba se completa correctamente con un resultado de ¡Éxito!, como se muestra en la captura de pantalla. Por lo tanto, parece que el modelo de incrustaciones está configurado correctamente.

También tengo este error en la parte superior; no sé si está relacionado.

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

Es probable que haya más información en /logs, ya que los errores tipo 500 se registran allí. ¿Puedes comprobarlo?

El mensaje “¡Éxito!” solo confirma que las credenciales de la API y el punto de conexión funcionan, pero no prueba el proceso de búsqueda semántica.

Error ERROR: se esperaban 768 dimensiones, no 3072 al consultar incrustaciones para el modelo gemini:

Mensaje (15 copias reportadas)

Error ERROR: se esperaban 768 dimensiones, no 3072
 al consultar incrustaciones para el modelo gemini

Rastreo

/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'

Env

HTTP HOSTS: censor

Error al procesar correctamente la respuesta secuestrada : DiscourseAi::Embeddings::Schema::MissingEmbeddingError : DiscourseAi::Embeddings::Schema::MissingEmbeddingError

Mensaje (15 copias reportadas)

Error al procesar correctamente la respuesta secuestrada : DiscourseAi::Embeddings::Schema::MissingEmbeddingError : DiscourseAi::Embeddings::Schema::MissingEmbeddingError

Rastreo

/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'

Env

HTTP HOSTS: btt.community

Parece que solo tuve que recrear la configuración de Embeddings en la configuración de administración de Discourse-AI para Gemini y establecer las dimensiones de embedding en 3072. Supongo que esta configuración se creó hace un tiempo, cuando el valor predeterminado era aún 768.

Gracias a @nat por indicarme que revisara los registros.