# エンベディングで何か問題（関連トピックが高価になりすぎている）

**URL:** https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345
**Category:** Bug
**Tags:** ai, related-topics
**Created:** [2024 年 12 月 4 日午前 11:40 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345 "2024-12-04T11:40:26Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [2024 年 12 月 4 日午前 11:40 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/1 "2024-12-04T11:40:26Z")

</div>

こんにちは 👋

`ai embeddings model` に `text-embedding-3-large` を使用していますが、何か問題があるようです。 (11月30日) からすでに2回もOpenAIアカウントにチャージしなければならず、これは数ヶ月分のはずなので信じられません… 関連トピックで何か変更がありましたか？ 既に完了したトピックを常にバックフィルしているのでしょうか、それとも分かりません。 🤔

1日あたり約2400万トークンが生成されます。

 ![Screenshot 2024-12-04 at 12.45.37](https://global.discourse-cdn.com/meta/original/4X/7/4/f/74f1422f9b9a06858c87dc62cab9dd903ebadd90.png)  
 ![Screenshot 2024-12-04 at 12.45.44](https://global.discourse-cdn.com/meta/original/4X/2/f/5/2f51e561c160fe6d5a38170b460bf311ef8eac17.png)  
 ![Screenshot 2024-12-04 at 12.45.52](https://global.discourse-cdn.com/meta/original/4X/7/7/b/77b4d1365a077adf111c3d08dfc33c23c08aee56.png)

以前 (11月30日) は約6万〜22万トークンでした。

 ![Screenshot 2024-12-04 at 16.25.14](https://global.discourse-cdn.com/meta/original/4X/4/8/f/48f75b54c8eb105212e7a05d1c40a96ae79624e7.png)

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2024 年 12 月 4 日午後 3:40 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/2 "2024-12-04T15:40:08Z")

</div>

すべての埋め込み設定の値をお知らせください。

```plaintext
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

```

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [2024 年 12 月 4 日午後 3:51 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/3 "2024-12-04T15:51:01Z")

</div>

```plaintext
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

```

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2024 年 12 月 4 日午後 3:55 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/4 "2024-12-04T15:55:17Z")

</div>

埋め込みは何個ありますか？

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

トピックは何個ありますか？

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

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [2024 年 12 月 4 日午後 4:14 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/5 "2024-12-04T16:14:52Z")

</div>

埋め込みは何個ありますか？  
5964

トピックは何個ありますか？  
5563

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [2024 年 12 月 4 日午後 4:22 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/6 "2024-12-04T16:22:03Z")

</div>

私のを確認しました。27.11に爆発し、それ以前は1日あたり10万トークン未満でしたが、その後700万に増加し、毎日増加しており、昨日は2000万近くでした。

編集：10月、埋め込みのコストは46セントでした。現在、12月は4日近くで6ドル近くです。

はい。埋め込みを無効にしました。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2024 年 12 月 4 日午後 6:57 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/7 "2024-12-04T18:57:10Z")

</div>

1日あたり24Mというのは、あなたのフォーラム全体ですか？バグがあるように見えます。毎日すべてのトピックで更新が行われない限り、それは間違いなくバグです。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2024 年 12 月 4 日午後 7:44 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/8 "2024-12-04T19:44:14Z")

</div>

トピックダイジェストが変わらない場合は、embeddings APIの呼び出しをスキップしていましたが、`gen_bulk_reprensentations`でこれを後退させてしまいました。@Roman。

@Donは、1日に何件のembeddingsリクエストを行っているかご存知ですか？

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [2024 年 12 月 4 日午後 8:05 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/10 "2024-12-04T20:05:09Z")

</div>

ドンではありませんが、APIリクエストが80〜100から3825に増加しました。

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [2024 年 12 月 4 日午後 8:15 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/11 "2024-12-04T20:15:47Z")

</div>

通常、1日のリクエストは150〜200件です。

 ![Screenshot 2024-12-04 at 21.11.57](https://global.discourse-cdn.com/meta/original/4X/0/1/4/01417f57c66dbe0eeb8153fcaab6c62be80b6373.png)

しかし、11月末に増加しました。

 ![Screenshot 2024-12-04 at 21.13.41](https://global.discourse-cdn.com/meta/original/4X/6/d/1/6d1cd59621536a515eb0179ce45f4cd75a784661.png)

 ![Screenshot 2024-12-04 at 21.14.46](https://global.discourse-cdn.com/meta/original/4X/f/7/7/f77cbc8ea2c61d5068d0d4ea2d96b1e431b0c194.png)

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2024 年 12 月 4 日午後 8:51 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/12 "2024-12-04T20:51:53Z")

</div>

申し訳ありません。これは、埋め込みをより高速にバックフィルするために追加した新しいコードのバグでした。これは以下で修正されるはずです。

> <https://github.com/discourse/discourse-ai/pull/1001>

状況が正常に戻らない場合は、お知らせください。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2024 年 12 月 4 日午後 8:59 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/13 "2024-12-04T20:59:31Z")

</div>

> [@Don](#):
>
> ![Screenshot 2024-12-04 at 21.14.46](https://global.discourse-cdn.com/meta/original/4X/f/7/7/f77cbc8ea2c61d5068d0d4ea2d96b1e431b0c194.png)

> [@Jagster](#):
>
> 私はDonではありませんが、APIリクエストが80〜100から3825に増加しました。

1時間あたり250件なので、1日あたり6,000件のハードリミットがあります。これらの数値はまだ制限内です。

しかし、トピックの「ランダムサンプルの更新」によってのみトリガーされている場合、それはその10%に制限されるはずであり、最悪の場合でも600リクエストになります。

@Roman、この制限は適用されていないのでしょうか？それとも問題は別の場所にあるのでしょうか？

> <https://github.com/discourse/discourse-ai/blob/main/app/jobs/scheduled/embeddings_backfill.rb#L52-L58>

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2024 年 12 月 4 日午後 9:09 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/14 "2024-12-04T21:09:56Z")

</div>

はい、修正したバグが、ダイジェストチェックが隠していた別のバグを明らかにしたと思います。

バグはここにあると思います。

> <https://github.com/discourse/discourse-ai/blob/main/app/jobs/scheduled/embeddings_backfill.rb#L79>

先週、`find_each` を `find_in_batches` に変更しました（前者は内部でバッチを使用します）。どちらもバッチサイズを指定するために limit を使用しているため、元の `limit - rebaked` の limit は無視されます。代わりに `pluck` + `each_slice` を使用する必要があります。

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [2024 年 12 月 4 日午後 11:37 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/15 "2024-12-04T23:37:41Z")

</div>

修正ありがとうございます 🤗

サイトを更新しましたが、`/logs` に問題があるようです。これに関連しているかどうかわかりません…

```plaintext
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'

```

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2024 年 12 月 4 日午後 11:51 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/16 "2024-12-04T23:51:11Z")

</div>

一見すると、関連がないように見えます。埋め込みの生成に失敗し、`NULL` を挿入しようとしているようです。OpenAI がエラーを返しているのでしょうか？割り当てに関連する何かでしょうか？

コンソールからこれを実行していただけますか？

```plaintext
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` が発生するとログに記録されるはずです。

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [2024 年 12 月 5 日午前 12:02 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/17 "2024-12-05T00:02:56Z")

</div>

コンソールで `truet?` と入力しましたが、`/logs` には何も表示されませんでした。

おそらく、OpenAIからの遅延でしょう。1時間前にアカウントにチャージしたばかりで、この処理は即時ではないと思われます…

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2024 年 12 月 5 日午前 1:00 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/18 "2024-12-05T01:00:09Z")

</div>

つまり、埋め込みを生成できるということですね。これらのエラーは継続していますか？もしそうなら、5分ごとにこれらのエラーが表示されるはずです。

ローカルインスタンスでセルフホストの埋め込みサービスに対してテストを実行し、バックフィリングが以下の条件下で機能することを確認しました。

- 埋め込みが存在しない。
- ダイジェストが古い場合、および埋め込みの `updated_at` が6時間より古い場合。
- ダイジェストが古くない場合、および埋め込みの `updated_at` が6時間より古い場合（この場合は更新されません）。

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [2024 年 12 月 5 日午前 6:21 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/19 "2024-12-05T06:21:13Z")

</div>

> [@Roman](#):
>
> これらのエラーはまだ発生していますか？

いいえ、/logs でこれらのエラーはもう表示されず、すべて正常に動作しています。ありがとうございます 🙂

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2024 年 12 月 5 日午後 7:12 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/21 "2024-12-05T19:12:04Z")

</div>

> [@Don](#):
>
> サイトを更新しました

5時間前に別の修正をマージしました。再度更新してください。

> <https://github.com/discourse/discourse-ai/pull/1002>
>
> 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.

その後、レートがどうなっているか教えてください。

cc @Jagster。

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [2024 年 12 月 5 日午後 7:16 UTC](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345/22 "2024-12-05T19:16:12Z")

</div>

APIリクエスト数などの制限については何も知りませんが、以前の修正後、通常に戻りました。迅速な対応をありがとうございました。

[Next page](https://meta.discourse.org/t/something-bad-with-embeddings-related-topics-getting-too-costly/340345.md?page=2)
