Class: Leann::Embedding::RubyLLM
- Defined in:
- lib/leann/embedding/ruby_llm.rb
Overview
RubyLLM embedding provider
Uses RubyLLM’s unified embedding API which supports multiple providers (OpenAI, Ollama, etc.) through a single interface.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#compute(texts) ⇒ Array<Array<Float>>
Compute embeddings for texts.
-
#dimensions ⇒ Integer
Embedding dimensions (model-dependent).
-
#initialize(model: nil) ⇒ RubyLLM
constructor
A new instance of RubyLLM.
-
#provider_name ⇒ String
Provider name.
Methods inherited from Base
Constructor Details
#initialize(model: nil) ⇒ RubyLLM
Returns a new instance of RubyLLM.
18 19 20 21 22 23 24 |
# File 'lib/leann/embedding/ruby_llm.rb', line 18 def initialize(model: nil) super(model: model) unless defined?(::RubyLLM) raise ConfigurationError, "RubyLLM gem is required. Add 'ruby_llm' to your Gemfile." end end |
Instance Method Details
#compute(texts) ⇒ Array<Array<Float>>
Compute embeddings for texts
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/leann/embedding/ruby_llm.rb', line 29 def compute(texts) texts = Array(texts) return [] if texts.empty? = {} [:model] = @model if @model result = ::RubyLLM.(texts, **) result.vectors rescue ::RubyLLM::Error => e raise EmbeddingError, "RubyLLM embedding failed: #{e.}" end |
#dimensions ⇒ Integer
Returns Embedding dimensions (model-dependent).
43 44 45 46 47 48 49 |
# File 'lib/leann/embedding/ruby_llm.rb', line 43 def dimensions # Get dimensions by computing a test embedding @dimensions ||= begin test = compute(["test"]) test.first&.size || 1536 end end |
#provider_name ⇒ String
Returns Provider name.
52 53 54 |
# File 'lib/leann/embedding/ruby_llm.rb', line 52 def provider_name :ruby_llm end |