Skip to content

Class HTM::EmbeddingService

Inherits Object
Defined in lib/htm/embedding_service.rb

Embedding Service - Processes and validates vector embeddings

This service wraps the configured embedding generator and provides: * Response validation * Dimension handling (padding/truncation) * Error handling and logging * Storage formatting * Circuit breaker protection for external LLM failures

The actual LLM call is delegated to HTM.configuration.embedding_generator

Public Class Methods

circuit_breaker()

Get or create the circuit breaker for embedding service - @return [HTM::CircuitBreaker] The circuit breaker instance

format_for_storage(embedding)

Format embedding for database storage - @param embedding [Array] Padded embedding - @return [String] PostgreSQL array format

generate(text)

Generate embedding with validation and processing - @param text [String] Text to embed - @raise [CircuitBreakerOpenError] If circuit breaker is open - @return [Hash] Processed embedding with metadata { embedding: Array, # Original embedding dimension: Integer, # Original dimension storage_embedding: String, # Formatted for database storage storage_dimension: Integer # Padded dimension (2000) }

max_dimension()

Maximum embedding dimension (configurable, default 2000) - @return [Integer] Max dimensions for pgvector HNSW index

pad_embedding(embedding)

Pad embedding to max_dimension with zeros - @param embedding [Array] Original embedding - @return [Array] Padded embedding

reset_circuit_breaker!()

Reset the circuit breaker (useful for testing) - @return [void]

validate_embedding!(embedding)

Validate embedding response format - @param embedding [Object] Raw embedding from generator - @raise [HTM::EmbeddingError] if invalid