您好 ![]()
我使用 text-embedding-3-large 作为 ai embeddings model,但似乎有些问题。我的意思是,自从(11月30日)以来,我已经不得不为我的 OpenAI 账户充值两次,这太疯狂了,因为这本应足够我用上几个月……这与相关主题有什么变化吗?它可能一直在回填已经完成的主题,或者我不知道。![]()
它每天生成约 2400 万个输入 token。
之前(11月30日)大约是 60 - 220k
您好 ![]()
我使用 text-embedding-3-large 作为 ai embeddings model,但似乎有些问题。我的意思是,自从(11月30日)以来,我已经不得不为我的 OpenAI 账户充值两次,这太疯狂了,因为这本应足够我用上几个月……这与相关主题有什么变化吗?它可能一直在回填已经完成的主题,或者我不知道。![]()
它每天生成约 2400 万个输入 token。
之前(11月30日)大约是 60 - 220k
请分享所有嵌入设置的值:
ai_embeddings_enabled
ai_embeddings_discourse_service_api_endpoint
ai_embeddings_discourse_service_api_endpoint_srv
ai_embeddings_discourse_service_api_key
ai_embeddings_model
ai_embeddings_per_post_enabled
ai_embeddings_generate_for_pms
ai_embeddings_semantic_related_topics_enabled
ai_embeddings_semantic_related_topics
ai_embeddings_semantic_related_include_closed_topics
ai_embeddings_backfill_batch_size
ai_embeddings_semantic_search_enabled
ai_embeddings_semantic_search_hyde_model
ai_embeddings_semantic_search_hyde_model_allowed_seeded_models
ai_embeddings_semantic_quick_search_enabled
ai_embeddings_enabled: true
ai_embeddings_discourse_service_api_endpoint: ""
ai_embeddings_discourse_service_api_endpoint_srv: ""
ai_embeddings_discourse_service_api_key: ""
ai_embeddings_model: text-embedding-3-large
ai_embeddings_per_post_enabled: false
ai_embeddings_generate_for_pms: false
ai_embeddings_semantic_related_topics_enabled: true
ai_embeddings_semantic_related_topics: 5
ai_embeddings_semantic_related_include_closed_topics: true
ai_embeddings_backfill_batch_size: 250
ai_embeddings_semantic_search_enabled: true
ai_embeddings_semantic_search_hyde_model: Gemini 1.5 Flash
ai_embeddings_semantic_search_hyde_model_allowed_seeded_models: ""
ai_embeddings_semantic_quick_search_enabled: false
您有多少个嵌入?
SELECT COUNT(*) FROM ai_topic_embeddings WHERE model_id = 7;
您有多少个主题?
SELECT COUNT(*) FROM topics WHERE deleted_at IS NULL AND archetype = 'regular';
你有多少个嵌入?
5964
你有多少个主题?
5563
我检查了我的。它在 11 月 27 日爆炸式增长,在此之前每天低于 10 万个 token,然后增长到 700 万,并且每天都在增长,昨天接近 2000 万。
编辑:10 月份,embeddings 的成本是 46 美分。现在,12 月份不到四天:将近 6 美元。
是的。我禁用了 embeddings。
您每天有 2400 万用户,这看起来有问题。除非您每天都能收到所有这些主题的更新,否则这绝对是一个错误。
有一个可能相关的事情是,我们过去在主题摘要未更改时会跳过调用 embeddings API,但我们在 gen_bulk_reprensentations 中对此进行了回退 @Roman。
@Don 你知道你每天发出多少次 embeddings 请求吗?
我不是唐,但我的 API 请求量从 80-100 次增加到了 3825 次。
很抱歉,这是我们在新代码中为了更快地回填嵌入(embeddings)而引入的一个 bug。它应该已经通过以下方式修复:
如果情况没有恢复正常,请告诉我。
考虑到每小时 250 次的限制,我们每天的硬性限制是 6000 次。这些数字仍在限制范围内。
但是,如果它们仅由我们对主题的“随机样本更新”触发,那么它应该限制在其中的 10%,最坏情况下是 600 次请求。
@Roman 是这里的限制没有被应用吗?还是问题出在别处?
是的,我认为我修复的错误暴露了另一个由摘要检查隐藏的错误。
我认为错误在这里:
上周我将其从 find_each 更改为 find_in_batches(前者内部使用批处理),并且由于两者都依赖于 limit 来指定批处理大小,因此原始的 limit - rebaked 被忽略了。我们应该改用 pluck + each_slice。
感谢修复 ![]()
我已经更新了我的网站,但看起来 /logs 存在一个问题。我不确定这是否与此有关……
Message
Job exception: ERROR: invalid input syntax for type halfvec: "[NULL]"
LINE 2: ...1, 1, 'e358a54a79f71861a4ebd17ecebbad6932fc1f9a', '[NULL]', ...
^
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/postgres/connection.rb:217:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `block in run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `block in with_lock'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:34:in `with_lock'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/active_record_postgres/connection.rb:38:in `run'
/var/www/discourse/lib/mini_sql_multisite_connection.rb:109:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_sql-1.6.0/lib/mini_sql/postgres/connection.rb:196:in `exec'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/vector_representations/base.rb:423:in `save_to_db'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/vector_representations/base.rb:86:in `block in gen_bulk_reprensentations'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/vector_representations/base.rb:86:in `each'
/var/www/discourse/plugins/discourse-ai/lib/embeddings/vector_representations/base.rb:86:in `gen_bulk_reprensentations'
/var/www/discourse/plugins/discourse-ai/app/jobs/scheduled/embeddings_backfill.rb:131:in `block in populate_topic_embeddings'
/var/www/discourse/plugins/discourse-ai/app/jobs/scheduled/embeddings_backfill.rb:130:in `each'
/var/www/discourse/plugins/discourse-ai/app/jobs/scheduled/embeddings_backfill.rb:130:in `each_slice'
/var/www/discourse/plugins/discourse-ai/app/jobs/scheduled/embeddings_backfill.rb:130:in `populate_topic_embeddings'
/var/www/discourse/plugins/discourse-ai/app/jobs/scheduled/embeddings_backfill.rb:36:in `execute'
/var/www/discourse/app/jobs/base.rb:308:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.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-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:295:in `block in perform'
/var/www/discourse/app/jobs/base.rb:291:in `each'
/var/www/discourse/app/jobs/base.rb:291:in `perform'
/var/www/discourse/app/jobs/base.rb:362:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:137:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'
乍一看,这似乎没有关联。看起来它未能生成嵌入,并且正在尝试插入 NULL。会不会是 OpenAI 返回了错误?也许与配额有关?
您能否从控制台运行此命令?
DiscourseAi::Embeddings::VectorRepresentations::Base
.find_representation(SiteSetting.ai_embeddings_model)
.new(DiscourseAi::Embeddings::Strategies::Truncation.new)
.vector_from("this is a test")
.present?
如果它引发 Net::HTTPBadResponse,它应该会在您的日志中记录错误。
我在控制台输入了 truet?,但 /logs 目录下没有任何内容。
也许这是 OpenAI 的延迟,因为我一小时前又充值了账户,这个过程可能不是即时的……
这意味着它可以生成嵌入。这些错误会持续存在吗?如果会,您应该每五分钟看到一次这些错误。
我在本地实例上针对我们自托管的嵌入服务运行了一些测试,并确认在以下条件下可以进行回填:
updated_at 早于 6 小时。updated_at 早于 6 小时(在这种情况下,它不会更新)。不,我在 /logs 中再也看不到这些错误了,现在一切都正常了。谢谢 ![]()
我不知道关于限制的任何信息,但在之前的修复之后,API 请求的数量等已恢复正常。所以,非常感谢你们的快速响应。