Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit e52045e

Browse files
authored
DEV: Robust check for embeddings enabled (#1116)
1 parent 83c7919 commit e52045e

File tree

13 files changed

+32
-23
lines changed

13 files changed

+32
-23
lines changed

app/controllers/discourse_ai/admin/rag_document_fragments_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def indexing_status_check
2020
def upload_file
2121
file = params[:file] || params[:files].first
2222

23-
if !SiteSetting.ai_embeddings_enabled?
23+
if !DiscourseAi::Embeddings.enabled?
2424
raise Discourse::InvalidAccess.new("Embeddings not enabled")
2525
end
2626

app/jobs/regular/generate_embeddings.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class GenerateEmbeddings < ::Jobs::Base
55
sidekiq_options queue: "low"
66

77
def execute(args)
8-
return unless SiteSetting.ai_embeddings_enabled
8+
return unless DiscourseAi::Embeddings.enabled?
99
return if args[:target_type].blank? || args[:target_id].blank?
1010
target = args[:target_type].constantize.find_by_id(args[:target_id])
1111
return if target.nil? || target.deleted_at.present?

app/jobs/scheduled/embeddings_backfill.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class EmbeddingsBackfill < ::Jobs::Scheduled
77
cluster_concurrency 1
88

99
def execute(args)
10-
return unless SiteSetting.ai_embeddings_enabled
10+
return unless DiscourseAi::Embeddings.enabled?
1111

1212
limit = SiteSetting.ai_embeddings_backfill_batch_size
1313

app/models/rag_document_fragment.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class << self
1111
def link_target_and_uploads(target, upload_ids)
1212
return if target.blank?
1313
return if upload_ids.blank?
14-
return if !SiteSetting.ai_embeddings_enabled?
14+
return if !DiscourseAi::Embeddings.enabled?
1515

1616
UploadReference.ensure_exist!(upload_ids: upload_ids, target: target)
1717

@@ -27,7 +27,7 @@ def link_target_and_uploads(target, upload_ids)
2727

2828
def update_target_uploads(target, upload_ids)
2929
return if target.blank?
30-
return if !SiteSetting.ai_embeddings_enabled?
30+
return if !DiscourseAi::Embeddings.enabled?
3131

3232
if upload_ids.blank?
3333
RagDocumentFragment.where(target: target).destroy_all

lib/ai_bot/entry_point.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ def inject_into(plugin)
196196
)
197197

198198
plugin.on(:site_setting_changed) do |name, old_value, new_value|
199-
if name == :ai_embeddings_selected_model && SiteSetting.ai_embeddings_enabled? &&
199+
if name == :ai_embeddings_selected_model && DiscourseAi::Embeddings.enabled? &&
200200
new_value != old_value
201201
RagDocumentFragment.delete_all
202202
UploadReference

lib/ai_bot/personas/persona.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ def rag_fragments_prompt(conversation_context, llm:, user:)
295295
upload_refs =
296296
UploadReference.where(target_id: id, target_type: "AiPersona").pluck(:upload_id)
297297

298-
return nil if !SiteSetting.ai_embeddings_enabled?
298+
return nil if !DiscourseAi::Embeddings.enabled?
299299
return nil if conversation_context.blank? || upload_refs.blank?
300300

301301
latest_interactions =

lib/ai_helper/semantic_categorizer.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def initialize(input, user)
99

1010
def categories
1111
return [] if @text.blank?
12-
return [] unless SiteSetting.ai_embeddings_enabled
12+
return [] if !DiscourseAi::Embeddings.enabled?
1313

1414
candidates = nearest_neighbors(limit: 100)
1515
return [] if candidates.empty?
@@ -51,7 +51,7 @@ def categories
5151

5252
def tags
5353
return [] if @text.blank?
54-
return [] unless SiteSetting.ai_embeddings_enabled
54+
return [] if !DiscourseAi::Embeddings.enabled?
5555

5656
candidates = nearest_neighbors(limit: 100)
5757
return [] if candidates.empty?

lib/configuration/embedding_defs_validator.rb

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,11 @@ def initialize(opts = {})
88
end
99

1010
def valid_value?(val)
11-
if val.blank?
12-
@module_enabled = SiteSetting.ai_embeddings_enabled
13-
14-
!@module_enabled
15-
else
16-
EmbeddingDefinition.exists?(id: val).tap { |def_exists| @invalid_option = !def_exists }
17-
end
11+
val.present? || !SiteSetting.ai_embeddings_enabled
1812
end
1913

2014
def error_message
21-
return I18n.t("discourse_ai.embeddings.configuration.disable_embeddings") if @module_enabled
22-
return I18n.t("discourse_ai.embeddings.configuration.invalid_config") if @invalid_option
23-
24-
""
15+
I18n.t("discourse_ai.embeddings.configuration.disable_embeddings")
2516
end
2617
end
2718
end

lib/embeddings.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# frozen_string_literal: true
2+
3+
module DiscourseAi
4+
module Embeddings
5+
def self.enabled?
6+
SiteSetting.ai_embeddings_enabled && SiteSetting.ai_embeddings_selected_model.present? &&
7+
EmbeddingDefinition.exists?(id: SiteSetting.ai_embeddings_selected_model)
8+
end
9+
end
10+
end

lib/embeddings/entry_point.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def inject_into(plugin)
5656
# embeddings generation.
5757
callback =
5858
Proc.new do |target|
59-
if SiteSetting.ai_embeddings_enabled &&
59+
if DiscourseAi::Embeddings.enabled? &&
6060
(target.is_a?(Topic) || SiteSetting.ai_embeddings_per_post_enabled)
6161
Jobs.enqueue(
6262
:generate_embeddings,

0 commit comments

Comments
 (0)