Семантический поиск AI Embeddings возвращает ошибку 500

Привет всем,

На моем сайте включена опция «Семантический поиск с использованием AI-эмбеддингов», но при любой попытке поиска я получаю ошибку 500 Internal Server Error, и результаты не возвращаются. Обычный поиск работает нормально, когда я отключаю эту настройку.

Вот что я вижу в консоли браузера:

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

Я также прикрепил скриншот с ошибкой.

Кто-нибудь сталкивался с этой проблемой раньше? Или, может быть, кто-то знает, что могло её вызвать и что мне следует проверить на своей стороне (настройки, API-ключи, логи и т. д.)? Буду признателен за любые советы.

Заранее спасибо!

Вы настроили модель эмбеддингов на странице настроек ИИ?

Да, я это сделал. Я настроил модель встраиваний Gemini на странице настроек ИИ, и кнопка Run test (Запустить тест) успешно выполняется с результатом Success! (Успех!), как показано на скриншоте. Таким образом, модель встраиваний, по-видимому, настроена правильно.

Также у меня есть эта ошибка вверху; я не знаю, связана ли она с этим.

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

Вероятно, в /logs также содержится больше информации, поскольку туда записываются ошибки типа 500. Не могли бы вы проверить?

Сообщение «Success!» подтверждает лишь работоспособность учётных данных API и конечной точки, но не проверяет процесс семантического поиска.

Ошибка ERROR: ожидалось 768 измерений, а не 3072 при запросе эмбеддингов для модели gemini:

Сообщение (сообщено 15 копий)

Ошибка ERROR:  ожидалось 768 измерений, а не 3072
 при запросе эмбеддингов для модели gemini

Стек вызовов

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

Окружение

HTTP HOSTS: censor

Не удалось правильно обработать перехваченный ответ : DiscourseAi::Embeddings::Schema::MissingEmbeddingError : DiscourseAi::Embeddings::Schema::MissingEmbeddingError

Сообщение (сообщено 15 копий)

Не удалось правильно обработать перехваченный ответ : DiscourseAi::Embeddings::Schema::MissingEmbeddingError : DiscourseAi::Embeddings::Schema::MissingEmbeddingError

Стек вызовов

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

Окружение

HTTP HOSTS: btt.community

Похоже, мне просто нужно было пересоздать конфигурацию Embeddings в настройках администратора Discourse-AI для Gemini и установить размерность эмбеддингов на 3072. Полагаю, эта конфигурация была создана некоторое время назад, когда значение по умолчанию всё ещё было 768.

Спасибо @nat за подсказку проверить логи!