Class: RCrewAI::Knowledge::Embedder
- Inherits:
-
Object
- Object
- RCrewAI::Knowledge::Embedder
- 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
-
#model ⇒ Object
readonly
Returns the value of attribute model.
-
#provider ⇒ Object
readonly
Returns the value of attribute provider.
Instance Method Summary collapse
- #embed(texts) ⇒ Object
-
#initialize(provider: :openai, model: nil, api_key: nil, config: RCrewAI.configuration) ⇒ Embedder
constructor
A new instance of Embedder.
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
#model ⇒ Object (readonly)
Returns the value of attribute model.
25 26 27 |
# File 'lib/rcrewai/knowledge/embedder.rb', line 25 def model @model end |
#provider ⇒ Object (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 (texts) texts = Array(texts) return [] if texts.empty? send("embed_#{@provider}", texts) end |