Class: Phronomy::Embeddings::RubyLLMEmbeddings

Inherits:
Base
  • Object
show all
Defined in:
lib/phronomy/embeddings/ruby_llm_embeddings.rb

Overview

Embeddings adapter backed by RubyLLM.

Delegates to +RubyLLM.embed+ and returns the resulting vector as an +Array+.

Examples:

Default model

embeddings = Phronomy::Embeddings::RubyLLMEmbeddings.new
vector = embeddings.embed("Hello, world!")

Explicit model

embeddings = Phronomy::Embeddings::RubyLLMEmbeddings.new(model: "text-embedding-3-small")
vector = embeddings.embed("Hello, world!")

Instance Method Summary collapse

Constructor Details

#initialize(model: nil, provider: nil, assume_model_exists: false) ⇒ RubyLLMEmbeddings

Returns a new instance of RubyLLMEmbeddings.

Parameters:

  • model (String, nil) (defaults to: nil)

    embedding model identifier; nil uses the RubyLLM default

  • provider (Symbol, nil) (defaults to: nil)

    provider override (e.g. :openai); nil uses the RubyLLM default

  • assume_model_exists (Boolean) (defaults to: false)

    when true, skips RubyLLM model-registry validation (useful for locally hosted models not in the registry)



22
23
24
25
26
# File 'lib/phronomy/embeddings/ruby_llm_embeddings.rb', line 22

def initialize(model: nil, provider: nil, assume_model_exists: false)
  @model = model
  @provider = provider
  @assume_model_exists = assume_model_exists
end

Instance Method Details

#embed(text) ⇒ Array<Float>

Embed text via RubyLLM.

Parameters:

  • text (String)

Returns:

  • (Array<Float>)


32
33
34
35
36
37
38
# File 'lib/phronomy/embeddings/ruby_llm_embeddings.rb', line 32

def embed(text)
  opts = {}
  opts[:model] = @model if @model
  opts[:provider] = @provider if @provider
  opts[:assume_model_exists] = true if @assume_model_exists
  RubyLLM.embed(text, **opts).vectors
end