Class: HTM::Jobs::GenerateEmbeddingJob
- Inherits:
-
Object
- Object
- HTM::Jobs::GenerateEmbeddingJob
- Defined in:
- lib/htm/jobs/generate_embedding_job.rb
Overview
Background job to generate and store vector embeddings for nodes
Class Method Summary collapse
-
.perform(node_id:) ⇒ Object
Generate embedding for a node.
Class Method Details
.perform(node_id:) ⇒ Object
Generate embedding for a node
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/htm/jobs/generate_embedding_job.rb', line 17 def self.perform(node_id:) node = find_node(node_id) or return return if node. provider = HTM.configuration..to_s start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) begin result = HTM::EmbeddingService.generate(node.content) node.update(embedding: result[:storage_embedding]) record_telemetry(provider, start_time, 'success', :embedding) HTM.logger.info "GenerateEmbeddingJob: Generated embedding for node #{node_id} (#{result[:dimension]} dimensions)" rescue HTM::CircuitBreakerOpenError HTM::Telemetry.job_counter.add(1, attributes: { 'job' => 'embedding', 'status' => 'circuit_open' }) HTM.logger.warn "GenerateEmbeddingJob: Circuit breaker open for node #{node_id}" rescue HTM::EmbeddingError => e record_telemetry(provider, start_time, 'error', :embedding) HTM.logger.error "GenerateEmbeddingJob: Embedding failed for node #{node_id}: #{e.}" rescue StandardError => e record_telemetry(provider, start_time, 'error', :embedding) HTM.logger.error "GenerateEmbeddingJob: Unexpected error for node #{node_id}: #{e.class.name} - #{e.}" end end |