Class: DSPy::Memory::EmbeddingEngine

Inherits:
Object
  • Object
show all
Extended by:
T::Helpers, T::Sig
Defined in:
lib/dspy/memory/embedding_engine.rb

Overview

Abstract base class for embedding engines

Direct Known Subclasses

LocalEmbeddingEngine, NoOpEmbeddingEngine

Instance Method Summary collapse

Instance Method Details

#cosine_similarity(a, b) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/dspy/memory/embedding_engine.rb', line 55

def cosine_similarity(a, b)
  return 0.0 if a.empty? || b.empty? || a.size != b.size
  
  dot_product = a.zip(b).sum { |x, y| x * y }
  magnitude_a = Math.sqrt(a.sum { |x| x * x })
  magnitude_b = Math.sqrt(b.sum { |x| x * x })
  
  return 0.0 if magnitude_a == 0.0 || magnitude_b == 0.0
  
  dot_product / (magnitude_a * magnitude_b)
end

#embed(text) ⇒ Object



15
# File 'lib/dspy/memory/embedding_engine.rb', line 15

def embed(text); end

#embed_batch(texts) ⇒ Object



19
# File 'lib/dspy/memory/embedding_engine.rb', line 19

def embed_batch(texts); end

#embedding_dimensionObject



23
# File 'lib/dspy/memory/embedding_engine.rb', line 23

def embedding_dimension; end

#model_nameObject



27
# File 'lib/dspy/memory/embedding_engine.rb', line 27

def model_name; end

#normalize_vector(vector) ⇒ Object



47
48
49
50
51
# File 'lib/dspy/memory/embedding_engine.rb', line 47

def normalize_vector(vector)
  magnitude = Math.sqrt(vector.sum { |x| x * x })
  return vector if magnitude == 0.0
  vector.map { |x| x / magnitude }
end

#ready?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/dspy/memory/embedding_engine.rb', line 31

def ready?
  true
end

#statsObject



37
38
39
40
41
42
43
# File 'lib/dspy/memory/embedding_engine.rb', line 37

def stats
  {
    model_name: model_name,
    embedding_dimension: embedding_dimension,
    ready: ready?
  }
end