Don
4 ديسمبر 2024، 11:40ص
1
مرحباً
أنا أستخدم text-embedding-3-large لـ ai embeddings model وهناك خطأ ما فيه. أعني، لقد اضطررت إلى شحن حساب OpenAI الخاص بي مرتين الآن، منذ (30 نوفمبر) وهو أمر جنوني لأنه يجب أن يكون كافياً لأشهر… هل تغير أي شيء فيما يتعلق بالمواضيع ذات الصلة؟ ربما يقوم بإعادة ملء المواضيع دائماً والتي تم الانتهاء منها بالفعل أو لا أعرف.
إنه يولد ~ 24 مليون رمز إدخال / يوم
قبل (30 نوفمبر) كان ~ 60 - 220 ألف
إعجابَين (2)
Falco
(Falco)
4 ديسمبر 2024، 3:40م
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)
Don
4 ديسمبر 2024، 3:51م
3
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)
Falco
(Falco)
4 ديسمبر 2024، 3:55م
4
كم عدد التضمينات لديك؟
SELECT COUNT(*) FROM ai_topic_embeddings WHERE model_id = 7;
كم عدد المواضيع لديك؟
SELECT COUNT(*) FROM topics WHERE deleted_at IS NULL AND archetype = 'regular';
إعجاب واحد (1)
Don
4 ديسمبر 2024، 4:14م
5
كم عدد التضمينات لديك؟
5964
كم عدد المواضيع لديك؟
5563
إعجاب واحد (1)
Jagster
(Jakke Lehtonen)
4 ديسمبر 2024، 4:22م
6
لقد تحققت من جهازي. انفجر في 27.11. وقبل ذلك كان أقل من 100 ألف رمز في اليوم، ثم زاد إلى 7 ملايين ويتزايد كل يوم، وبالأمس كان يقترب من 20 مليونًا.
تعديل: في أكتوبر، بلغت تكلفة التضمينات 46 سنتًا. الآن، في ديسمبر، اقتربت من أربعة أيام: ما يقرب من 6 دولارات.
نعم. لقد قمت بتعطيل التضمينات.
إعجابَين (2)
Falco
(Falco)
4 ديسمبر 2024، 6:57م
7
24 مليون في اليوم هو منتدى كامل لك، هذا يبدو به خلل. إلا إذا كنت تحصل على تحديثات في كل تلك المواضيع كل يوم، فهذا بالتأكيد خلل.
إعجاب واحد (1)
Falco
(Falco)
4 ديسمبر 2024، 7:44م
8
أحد الأشياء التي قد تكون ذات صلة هو أننا اعتدنا على تخطي استدعاء واجهة برمجة تطبيقات التضمينات عندما لم يتغير ملخص الموضوع، لكننا تراجعنا عن هذا في gen_bulk_reprensentations @Roman .
@Don هل تعرف عدد طلبات التضمينات التي تجريها يوميًا؟
إعجابَين (2)
Jagster
(Jakke Lehtonen)
4 ديسمبر 2024، 8:05م
10
لست أنا دون، ولكن طلبات واجهة برمجة التطبيقات الخاصة بي زادت من 80-100 إلى 3825.
إعجابَين (2)
Don
4 ديسمبر 2024، 8:15م
11
عادةً ما يكون ~ 150 - 200 طلبًا / يوم
ولكن في نهاية نوفمبر زاد.
إعجاب واحد (1)
Roman
(Roman Rizzi)
4 ديسمبر 2024، 8:51م
12
أنا آسف جدًا، لقد كان هذا خطأً في الكود الجديد الذي أضفناه لملء التضمينات بشكل أسرع. يجب إصلاحه بواسطة:
main ← bulk_embeddings_digest_check
opened 08:38PM - 04 Dec 24 UTC
يرجى إعلامي إذا عادت الأمور إلى طبيعتها.
6 إعجابات
Falco
(Falco)
4 ديسمبر 2024، 8:59م
13
Don:
بالنظر إلى 250 في الساعة، لدينا حد أقصى قدره 6 آلاف في اليوم. هذه الأرقام لا تزال ضمن الحد.
ومع ذلك، إذا كانت هذه الطلبات تُشغَّل فقط من خلال “تحديث عينة عشوائية” للمواضيع، فيجب أن تقتصر على 10% من ذلك، مما يعني، في أسوأ الأحوال، 600 طلب.
@Roman هل هذا الحد لا يتم تطبيقه بطريقة ما؟ أم أن المشكلة في مكان آخر؟
# Then, we'll try to backfill embeddings for topics that have outdated
# embeddings, be it model or strategy version
relation = topics.where(<<~SQL).limit(limit - rebaked)
#{table_name}.model_version < #{vector_def.version}
OR
#{table_name}.strategy_version < #{vector_def.strategy_version}
إعجاب واحد (1)
Roman
(Roman Rizzi)
4 ديسمبر 2024، 9:09م
14
نعم، أعتقد أن الخطأ الذي أصلحته كشف عن خطأ آخر كان فحص الملخص يخفيه.
أعتقد أن الخطأ هنا:
.where("#{table_name}.updated_at < ?", 6.hours.ago)
.where("#{table_name}.updated_at < topics.updated_at")
.limit((limit - rebaked) / 10)
populate_topic_embeddings(vector, relation, force: true)
next unless SiteSetting.ai_embeddings_per_post_enabled
# Now for posts
table_name = DiscourseAi::Embeddings::Schema::POSTS_TABLE
posts_batch_size = 1000
posts =
Post
.joins(
"LEFT JOIN #{table_name} ON #{table_name}.post_id = posts.id AND #{table_name}.model_id = #{vector_def.id}",
)
.where(deleted_at: nil)
.where(post_type: Post.types[:regular])
# First, we'll try to backfill embeddings for posts that have none
لقد غيرته من find_each إلى find_in_batches الأسبوع الماضي (الأول يستخدم دفعات داخليًا)، وبما أن كلاهما يعتمد على الحد لتحديد حجم الدفعة، يتم تجاهل الحد الأصلي لـ limit - rebaked. يجب أن نستخدم pluck + each_slice بدلاً من ذلك.
4 إعجابات
Don
4 ديسمبر 2024، 11:37م
15
شكراً على الإصلاح
لقد قمت بتحديث موقعي ولكن يبدو أن هناك مشكلة في /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)
Roman
(Roman Rizzi)
4 ديسمبر 2024، 11:51م
16
للوهلة الأولى، لا يبدو الأمر ذا صلة. يبدو أنه فشل في إنشاء التضمين ويحاول إدراج 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)
Don
5 ديسمبر 2024، 12:02ص
17
لقد عدت إلى وحدة التحكم: truet? ولا شيء في /logs.
ربما يكون هذا تأخيرًا من OpanAI لأنني قمت بتعبئة حسابي مرة أخرى قبل ساعة وربما لم تكن هذه العملية فورية…
Roman
(Roman Rizzi)
5 ديسمبر 2024، 1:00ص
18
هذا يعني أنه يمكنه إنشاء تضمينات إذن. هل تستمر هذه الأخطاء؟ يجب أن ترى هذه الأخطاء كل خمس دقائق إن حدث ذلك.
لقد أجريت بعض الاختبارات على نسختي المحلية مقابل خدمة التضمينات المستضافة ذاتيًا وتأكدت من أن الملء الاحتياطي يعمل في ظل الظروف التالية:
لا توجد تضمينات.
الملخص قديم و updated_at للتضمينات أقدم من 6 ساعات.
الملخص ليس قديماً و updated_at للتضمينات أقدم من 6 ساعات (لا يتم التحديث في هذه الحالة).
إعجاب واحد (1)
Don
5 ديسمبر 2024، 6:21ص
19
Roman Rizzi:
هل تستمر هذه الأخطاء؟
لا، لا أرى تلك الأخطاء في /logs بعد الآن، كل شيء يعمل الآن. شكراً لك
إعجاب واحد (1)
Falco
(Falco)
5 ديسمبر 2024، 7:12م
21
Don:
لقد قمت بتحديث موقعي
لقد قمنا بدمج إصلاح آخر قبل 5 ساعات، يرجى التحديث مرة أخرى.
main ← embedding_backfill_limit
opened 09:30PM - 04 Dec 24 UTC
I'm trying to solve two issues here:
1. Using `find_in_batches` or `find_each… ` will ignore the limit because it relies on it to specify a batch size.
2. We need to individually apply the limit on each step since `rebaked` gets bigger every time we process a batch.
بعد ذلك، يرجى إخباري كيف يبدو المعدل.
نسخ @Jagster .
إعجابَين (2)
Jagster
(Jakke Lehtonen)
5 ديسمبر 2024، 7:16م
22
لا أعرف شيئًا عن الحدود، لكن كمية طلبات واجهة برمجة التطبيقات وما إلى ذلك عادت إلى طبيعتها بعد الإصلاح السابق. لذا شكرًا لكم أيها الرفاق على رد الفعل السريع.
إعجابَين (2)