Module: Legion::Extensions::Apollo::Helpers::Embedding

Defined in:
lib/legion/extensions/apollo/helpers/embedding.rb

Constant Summary collapse

DEFAULT_DIMENSION =
1536

Class Method Summary collapse

Class Method Details

.configured_dimensionObject



33
34
35
36
37
38
39
# File 'lib/legion/extensions/apollo/helpers/embedding.rb', line 33

def configured_dimension
  return DEFAULT_DIMENSION unless defined?(Legion::Settings) && !Legion::Settings[:apollo].nil?

  Legion::Settings[:apollo].dig(:embedding, :dimension) || DEFAULT_DIMENSION
rescue StandardError
  DEFAULT_DIMENSION
end

.dimensionObject



29
30
31
# File 'lib/legion/extensions/apollo/helpers/embedding.rb', line 29

def dimension
  @dimension || configured_dimension
end

.generate(text:) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/legion/extensions/apollo/helpers/embedding.rb', line 12

def generate(text:, **)
  unless defined?(Legion::LLM) && Legion::LLM.started?
    Legion::Logging.debug('[apollo] embedding fallback: LLM not started') if defined?(Legion::Logging)
    return zero_vector
  end

  result = Legion::LLM.embed(text)
  vector = result.is_a?(Hash) ? result[:vector] : result
  if vector.is_a?(Array) && vector.any?
    @dimension = vector.size
    vector
  else
    Legion::Logging.warn('[apollo] embedding fallback: LLM returned no vector') if defined?(Legion::Logging)
    zero_vector
  end
end

.zero_vectorObject



41
42
43
# File 'lib/legion/extensions/apollo/helpers/embedding.rb', line 41

def zero_vector
  Array.new(dimension, 0.0)
end