Class: Engram::Adapters::NullEmbedder

Inherits:
Object
  • Object
show all
Includes:
Ports::Embedder
Defined in:
lib/engram/adapters/null_embedder.rb

Overview

Deterministic, network-free embedder for tests and the zero-config default. NOT semantic — equal text yields equal vectors, but unrelated text is not meaningfully close. Good enough to exercise the pipeline; useless for quality.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dimensions: 16) ⇒ NullEmbedder

Returns a new instance of NullEmbedder.



13
14
15
# File 'lib/engram/adapters/null_embedder.rb', line 13

def initialize(dimensions: 16)
  @dimensions = dimensions
end

Instance Attribute Details

#dimensionsObject (readonly)

Returns the value of attribute dimensions.



17
18
19
# File 'lib/engram/adapters/null_embedder.rb', line 17

def dimensions
  @dimensions
end

Instance Method Details

#embed(text) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/engram/adapters/null_embedder.rb', line 19

def embed(text)
  seed = Digest::SHA256.hexdigest(text.to_s)
  Array.new(@dimensions) do |i|
    byte = seed[(i * 2) % seed.length, 2].to_i(16)
    (byte / 255.0) * 2 - 1 # map 0..255 -> -1.0..1.0
  end
end