شيء سيء مع التمثيلات المضمنة (المواضيع ذات الصلة تصبح مكلفة جدًا)

مرحباً :wave:

أنا أستخدم text-embedding-3-large لـ ai embeddings model وهناك خطأ ما فيه. أعني، لقد اضطررت إلى شحن حساب OpenAI الخاص بي مرتين الآن، منذ (30 نوفمبر) وهو أمر جنوني لأنه يجب أن يكون كافياً لأشهر… هل تغير أي شيء فيما يتعلق بالمواضيع ذات الصلة؟ ربما يقوم بإعادة ملء المواضيع دائماً والتي تم الانتهاء منها بالفعل أو لا أعرف. :thinking:

إنه يولد ~ 24 مليون رمز إدخال / يوم

قبل (30 نوفمبر) كان ~ 60 - 220 ألف

إعجابَين (2)

يرجى مشاركة قيم جميع إعدادات التضمين:

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
إعجاب واحد (1)
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
إعجاب واحد (1)

كم عدد التضمينات لديك؟

SELECT COUNT(*) FROM ai_topic_embeddings WHERE model_id = 7;

كم عدد المواضيع لديك؟

SELECT COUNT(*) FROM topics WHERE deleted_at IS NULL AND archetype = 'regular';

إعجاب واحد (1)

كم عدد التضمينات لديك؟
5964

كم عدد المواضيع لديك؟
5563

إعجاب واحد (1)

لقد تحققت من جهازي. انفجر في 27.11. وقبل ذلك كان أقل من 100 ألف رمز في اليوم، ثم زاد إلى 7 ملايين ويتزايد كل يوم، وبالأمس كان يقترب من 20 مليونًا.

تعديل: في أكتوبر، بلغت تكلفة التضمينات 46 سنتًا. الآن، في ديسمبر، اقتربت من أربعة أيام: ما يقرب من 6 دولارات.

نعم. لقد قمت بتعطيل التضمينات.

إعجابَين (2)

24 مليون في اليوم هو منتدى كامل لك، هذا يبدو به خلل. إلا إذا كنت تحصل على تحديثات في كل تلك المواضيع كل يوم، فهذا بالتأكيد خلل.

إعجاب واحد (1)

أحد الأشياء التي قد تكون ذات صلة هو أننا اعتدنا على تخطي استدعاء واجهة برمجة تطبيقات التضمينات عندما لم يتغير ملخص الموضوع، لكننا تراجعنا عن هذا في gen_bulk_reprensentations @Roman.

@Don هل تعرف عدد طلبات التضمينات التي تجريها يوميًا؟

إعجابَين (2)

لست أنا دون، ولكن طلبات واجهة برمجة التطبيقات الخاصة بي زادت من 80-100 إلى 3825.

إعجابَين (2)

عادةً ما يكون ~ 150 - 200 طلبًا / يوم


ولكن في نهاية نوفمبر زاد.

إعجاب واحد (1)

أنا آسف جدًا، لقد كان هذا خطأً في الكود الجديد الذي أضفناه لملء التضمينات بشكل أسرع. يجب إصلاحه بواسطة:

يرجى إعلامي إذا عادت الأمور إلى طبيعتها.

6 إعجابات

بالنظر إلى 250 في الساعة، لدينا حد أقصى قدره 6 آلاف في اليوم. هذه الأرقام لا تزال ضمن الحد.

ومع ذلك، إذا كانت هذه الطلبات تُشغَّل فقط من خلال “تحديث عينة عشوائية” للمواضيع، فيجب أن تقتصر على 10% من ذلك، مما يعني، في أسوأ الأحوال، 600 طلب.

@Roman هل هذا الحد لا يتم تطبيقه بطريقة ما؟ أم أن المشكلة في مكان آخر؟

إعجاب واحد (1)

نعم، أعتقد أن الخطأ الذي أصلحته كشف عن خطأ آخر كان فحص الملخص يخفيه.
أعتقد أن الخطأ هنا:

لقد غيرته من find_each إلى find_in_batches الأسبوع الماضي (الأول يستخدم دفعات داخليًا)، وبما أن كلاهما يعتمد على الحد لتحديد حجم الدفعة، يتم تجاهل الحد الأصلي لـ limit - rebaked. يجب أن نستخدم pluck + each_slice بدلاً من ذلك.

4 إعجابات

شكراً على الإصلاح :hugs:

لقد قمت بتحديث موقعي ولكن يبدو أن هناك مشكلة في /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'
إعجاب واحد (1)

للوهلة الأولى، لا يبدو الأمر ذا صلة. يبدو أنه فشل في إنشاء التضمين ويحاول إدراج 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.

إعجاب واحد (1)

لقد عدت إلى وحدة التحكم: truet? ولا شيء في /logs.

ربما يكون هذا تأخيرًا من OpanAI لأنني قمت بتعبئة حسابي مرة أخرى قبل ساعة وربما لم تكن هذه العملية فورية…

هذا يعني أنه يمكنه إنشاء تضمينات إذن. هل تستمر هذه الأخطاء؟ يجب أن ترى هذه الأخطاء كل خمس دقائق إن حدث ذلك.

لقد أجريت بعض الاختبارات على نسختي المحلية مقابل خدمة التضمينات المستضافة ذاتيًا وتأكدت من أن الملء الاحتياطي يعمل في ظل الظروف التالية:

  • لا توجد تضمينات.
  • الملخص قديم و updated_at للتضمينات أقدم من 6 ساعات.
  • الملخص ليس قديماً و updated_at للتضمينات أقدم من 6 ساعات (لا يتم التحديث في هذه الحالة).
إعجاب واحد (1)

لا، لا أرى تلك الأخطاء في /logs بعد الآن، كل شيء يعمل الآن. شكراً لك :slight_smile:

إعجاب واحد (1)

لقد قمنا بدمج إصلاح آخر قبل 5 ساعات، يرجى التحديث مرة أخرى.

بعد ذلك، يرجى إخباري كيف يبدو المعدل.

نسخ @Jagster.

إعجابَين (2)

لا أعرف شيئًا عن الحدود، لكن كمية طلبات واجهة برمجة التطبيقات وما إلى ذلك عادت إلى طبيعتها بعد الإصلاح السابق. لذا شكرًا لكم أيها الرفاق على رد الفعل السريع.

إعجابَين (2)