Class: RCrewAI::Knowledge::Embedder

Inherits:
Object
  • Object
show all
Defined in:
lib/rcrewai/knowledge/embedder.rb

Overview

Turns text into embedding vectors. Supports multiple providers (OpenAI [default], Azure OpenAI, Google Gemini, Ollama); Anthropic has no first-party embeddings API and raises a clear error. #embed takes an array of strings and returns an array of vectors. Any object responding to #embed can be substituted.

Constant Summary collapse

DEFAULT_MODELS =
{
  openai: 'text-embedding-3-small',
  azure: 'text-embedding-3-small',
  google: 'text-embedding-004',
  ollama: 'nomic-embed-text'
}.freeze
OPENAI_URL =
'https://api.openai.com/v1/embeddings'
GOOGLE_BASE =
'https://generativelanguage.googleapis.com/v1beta'
OLLAMA_DEFAULT_URL =
'http://localhost:11434'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provider: :openai, model: nil, api_key: nil, config: RCrewAI.configuration) ⇒ Embedder

Returns a new instance of Embedder.



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/rcrewai/knowledge/embedder.rb', line 27

def initialize(provider: :openai, model: nil, api_key: nil, config: RCrewAI.configuration)
  @provider = provider.to_sym
  if @provider == :anthropic
    raise EmbeddingError,
          'anthropic does not provide an embeddings API; use :openai, :azure, :google, or :ollama'
  end

  @config = config
  @model = model || DEFAULT_MODELS[@provider] || DEFAULT_MODELS[:openai]
  @api_key = api_key
end

Instance Attribute Details

#modelObject (readonly)

Returns the value of attribute model.



25
26
27
# File 'lib/rcrewai/knowledge/embedder.rb', line 25

def model
  @model
end

#providerObject (readonly)

Returns the value of attribute provider.



25
26
27
# File 'lib/rcrewai/knowledge/embedder.rb', line 25

def provider
  @provider
end

Instance Method Details

#embed(texts) ⇒ Object



39
40
41
42
43
44
# File 'lib/rcrewai/knowledge/embedder.rb', line 39

def embed(texts)
  texts = Array(texts)
  return [] if texts.empty?

  send("embed_#{@provider}", texts)
end