Problema com Gemini Embeddings após atualização do Discourse para 3.6.0 Beta 2

Algo aconteceu depois que atualizei o discourse para a versão 2.6.0 beta 2, os embeddings pararam de funcionar e não consigo descobrir o porquê.

Estou usando os LLMs Gemini Flash e Flash Lite e eles estão funcionando perfeitamente, o bot de IA está funcionando, etc.

No entanto, quando vou ao modelo de Embedding e executo test no embedding do Gemini, recebo este erro (e os logs também estão cheios dele)

 Tentando contatar o modelo retornou este erro: { "error": { "code": 429, "message": "Você excedeu sua cota atual, verifique seus detalhes de plano e faturamento. Para mais informações sobre este erro, acesse: https://ai.google.dev/gemini-api/docs/rate-limits.\n* Cota excedida para a métrica: generativelanguage.googleapis.com/embed_content_free_tier_requests, limite: 0\n* Cota excedida para a métrica: generativelanguage.googleapis.com/embed_content_free_tier_requests, limite: 0\n* Cota excedida para a métrica: generativelanguage.googleapis.com/embed_content_free_tier_requests, limite: 0\n* Cota excedida para a métrica: generativelanguage.googleapis.com/embed_content_free_tier_requests, limite: 0", "status": "RESOURCE_EXHAUSTED", "details": [ { "@type": "type.googleapis.com/google.rpc.QuotaFailure", "violations": [ { "quotaMetric": "generativelanguage.googleapis.com/embed_content_free_tier_requests", "quotaId": "EmbedContentRequestsPerMinutePerProjectPerModel-FreeTier" }, { "quotaMetric": "generativelanguage.googleapis.com/embed_content_free_tier_requests", "quotaId": "EmbedContentRequestsPerMinutePerUserPerProjectPerModel-FreeTier" }, { "quotaMetric": "generativelanguage.googleapis.com/embed_content_free_tier_requests", "quotaId": "EmbedContentRequestsPerDayPerUserPerProjectPerModel-FreeTier" }, { "quotaMetric": "generativelanguage.googleapis.com/embed_content_free_tier_requests", "quotaId": "EmbedContentRequestsPerDayPerProjectPerModel-FreeTier" } ] }, { "@type": "type.googleapis.com/google.rpc.Help", "links": [ { "description": "Saiba mais sobre as cotas da API Gemini", "url": "https://ai.google.dev/gemini-api/docs/rate-limits" } ] } ] } }

Isso está funcionando perfeitamente até a versão 3.6.0 beta 1, depois de atualizar para a beta 2 começou a dar este erro. Estou usando a mesma chave com este embedding que estou usando com o LLM. Eu até tentei gerar uma nova chave, esperei 48 horas, etc., e nada parece resolver isso.

Alguém pode me aconselhar sobre por que parou de funcionar de repente, por que o LLM AI Bot está funcionando, mas este não, e como posso consertar isso?

Vou responder à minha própria postagem. O problema não é a compilação, mas o tempo. Em outubro, o Google tornou obsoleto o modelo de incorporação atual (embedding-001), então ele parou de funcionar. O novo modelo é gemini-embedding-001

Você precisa alterar a configuração de incorporação de
https://generativelanguage.googleapis.com/v1beta/models/embedding-001:embedContent
para
https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent

Você pode encontrar os detalhes aqui: https://ai.google.dev/gemini-api/docs/embeddings

@Falco, talvez a configuração padrão do gemini precise ser atualizada no discourse, pois ao criar uma nova incorporação do gemini, ele ainda usa embedding-001 em vez de gemini-embedding-001.

1 curtida

…e parece que o discourse pode não estar configurado para lidar com o novo modelo gemini-embedding-001. O Executar teste funciona bem, mas quando tento pesquisar no fórum, agora vejo esses erros nos logs:

Message (2 copies reported)

Error ERROR:  expected 768 dimensions, not 3072
 querying embeddings for model gemini

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.3/lib/active_support/broadcast_logger.rb:218:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.3/lib/active_support/broadcast_logger.rb:217:in `map'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.3/lib/active_support/broadcast_logger.rb:217:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.3/lib/active_support/broadcast_logger.rb:129:in `error'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/schema.rb:192:in `rescue in asymmetric_similarity_search'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/schema.rb:139:in `asymmetric_similarity_search'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/semantic_search.rb:89:in `search_for_topics'
/var/www/discourse/plugins/discourse-ai/app/controllers/discourse_ai/embeddings/embeddings_controller.rb:56:in `block in search'
/var/www/discourse/lib/hijack.rb:68:in `instance_eval'
/var/www/discourse/lib/hijack.rb:68:in `block (2 levels) in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/lib/hijack.rb:68:in `block in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:911:in `callback_on_resolution'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:797:in `call_callback'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:803:in `call_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:692:in `resolve_with'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1325:in `resolve'
/var/www/discourse/lib/scheduler/defer.rb:125:in `block in do_work'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `with_connection'
/var/www/discourse/lib/scheduler/defer.rb:119:in `do_work'
/var/www/discourse/lib/scheduler/defer.rb:105:in `block (2 levels) in start_thread'
Message (2 copies reported)

Failed to process hijacked response correctly : DiscourseAi::Embeddings::Schema::MissingEmbeddingError : DiscourseAi::Embeddings::Schema::MissingEmbeddingError

Backtrace

/var/www/discourse/plugins/discourse-ai/lib/embeddings/schema.rb:193:in `rescue in asymmetric_similarity_search'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/schema.rb:139:in `asymmetric_similarity_search'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/semantic_search.rb:89:in `search_for_topics'
/var/www/discourse/plugins/discourse-ai/app/controllers/discourse_ai/embeddings/embeddings_controller.rb:56:in `block in search'
/var/www/discourse/lib/hijack.rb:68:in `instance_eval'
/var/www/discourse/lib/hijack.rb:68:in `block (2 levels) in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/lib/hijack.rb:68:in `block in hijack'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:911:in `callback_on_resolution'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:797:in `call_callback'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:803:in `call_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:692:in `resolve_with'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1325:in `resolve'
/var/www/discourse/lib/scheduler/defer.rb:125:in `block in do_work'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `with_connection'
/var/www/discourse/lib/scheduler/defer.rb:119:in `do_work'
/var/www/discourse/lib/scheduler/defer.rb:105:in `block (2 levels) in start_thread'

…e o que parece funcionar é criar um novo modelo e alterar as Embedding dimensions para 3072 em vez do padrão 768.

Possivelmente, os embeddings gemini do discourse podem precisar de uma reformulação em suas configurações padrão e um pequeno guia “Como configurar o embedding gemini” na primeira postagem também pode ser uma boa ideia.

1 curtida

Duplicado de Configuração de embedding do Gemini não passa output_dimensionality?