Class: Leann::Embedding::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/leann/embedding/base.rb

Overview

Base class for embedding providers

Subclasses must implement:

  • #compute(texts) -> Array<Array<Float>>

Direct Known Subclasses

FastEmbed, Ollama, OpenAI, RubyLLM

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model:) ⇒ Base

Returns a new instance of Base.

Parameters:

  • model (String)

    Embedding model name



18
19
20
21
# File 'lib/leann/embedding/base.rb', line 18

def initialize(model:)
  @model = model
  @dimensions = nil
end

Instance Attribute Details

#dimensionsInteger? (readonly)

Returns Embedding dimensions.

Returns:

  • (Integer, nil)

    Embedding dimensions



15
16
17
# File 'lib/leann/embedding/base.rb', line 15

def dimensions
  @dimensions
end

#modelString (readonly)

Returns Model name.

Returns:

  • (String)

    Model name



12
13
14
# File 'lib/leann/embedding/base.rb', line 12

def model
  @model
end

Instance Method Details

#compute(texts) ⇒ Array<Array<Float>>

Compute embeddings for a list of texts

Parameters:

  • texts (Array<String>)

    Texts to embed

Returns:

  • (Array<Array<Float>>)

    Embeddings (one per text)

Raises:

  • (NotImplementedError)

    if not overridden



28
29
30
# File 'lib/leann/embedding/base.rb', line 28

def compute(texts)
  raise NotImplementedError, "Subclasses must implement #compute"
end

#compute_one(text) ⇒ Array<Float>

Compute embedding for a single text

Parameters:

  • text (String)

Returns:

  • (Array<Float>)


36
37
38
# File 'lib/leann/embedding/base.rb', line 36

def compute_one(text)
  compute([text]).first
end