Class: Phronomy::Agent::Context::Knowledge::Embeddings::RubyLLMEmbeddings

Inherits:
Base
  • Object
show all
Defined in:
lib/phronomy/agent/context/knowledge/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::Agent::Context::Knowledge::Embeddings::RubyLLMEmbeddings.new
vector = embeddings.embed("Hello, world!")

Explicit model

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

Instance Method Summary collapse

Methods inherited from Base

#embed_async

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)



26
27
28
29
30
# File 'lib/phronomy/agent/context/knowledge/embeddings/ruby_llm_embeddings.rb', line 26

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, cancellation_token = nil) ⇒ Array<Float>

Embed text via RubyLLM.

Parameters:

Returns:

  • (Array<Float>)


38
39
40
41
42
43
44
45
# File 'lib/phronomy/agent/context/knowledge/embeddings/ruby_llm_embeddings.rb', line 38

def embed(text, cancellation_token = nil)
  cancellation_token&.raise_if_cancelled!
  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