Module: Woods::Embedding::Provider::Interface

Included in:
Cache::CachedEmbeddingProvider, Ollama, OpenAI, Resilience::RetryableProvider
Defined in:
lib/woods/embedding/provider.rb

Overview

Interface that all embedding providers must implement.

Defines the contract for embedding text into vector representations. Implementations must provide single-text embedding, batch embedding, dimension reporting, and model identification.

Instance Method Summary collapse

Instance Method Details

#dimensionsInteger

Return the dimensionality of the embedding vectors.

Returns:

  • (Integer)

    number of dimensions

Raises:

  • (NotImplementedError)

    if not implemented by the provider



41
42
43
# File 'lib/woods/embedding/provider.rb', line 41

def dimensions
  raise NotImplementedError
end

#embed(text) ⇒ Array<Float>

Embed a single text string into a vector.

Parameters:

  • text (String)

    the text to embed

Returns:

  • (Array<Float>)

    the embedding vector

Raises:

  • (NotImplementedError)

    if not implemented by the provider



24
25
26
# File 'lib/woods/embedding/provider.rb', line 24

def embed(text)
  raise NotImplementedError
end

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

Embed multiple texts into vectors in a single request.

Parameters:

  • texts (Array<String>)

    the texts to embed

Returns:

  • (Array<Array<Float>>)

    array of embedding vectors

Raises:

  • (NotImplementedError)

    if not implemented by the provider



33
34
35
# File 'lib/woods/embedding/provider.rb', line 33

def embed_batch(texts)
  raise NotImplementedError
end

#max_input_tokensInteger?

Return the maximum input length the provider will accept for a single text, in tokens. Used by the indexer to decide when a unit must be chunked before embedding.

Returns:

  • (Integer, nil)

    token budget, or nil if the provider has no hard cap

Raises:

  • (NotImplementedError)

    if not implemented by the provider



59
60
61
# File 'lib/woods/embedding/provider.rb', line 59

def max_input_tokens
  raise NotImplementedError
end

#model_nameString

Return the name of the embedding model.

Returns:

  • (String)

    model name

Raises:

  • (NotImplementedError)

    if not implemented by the provider



49
50
51
# File 'lib/woods/embedding/provider.rb', line 49

def model_name
  raise NotImplementedError
end