Module: ActiveRecordVector

Defined in:
lib/active_record_vector.rb,
lib/active_record_vector/model.rb,
lib/active_record_vector/chunker.rb,
lib/active_record_vector/version.rb,
lib/active_record_vector/distance.rb,
lib/active_record_vector/providers/base.rb,
lib/active_record_vector/migration_helper.rb,
lib/active_record_vector/providers/cohere.rb,
lib/active_record_vector/providers/custom.rb,
lib/active_record_vector/providers/ollama.rb,
lib/active_record_vector/providers/openai.rb

Defined Under Namespace

Modules: Distance, MigrationHelper, Model, Providers Classes: Chunker, Error

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.provider_for(provider_name, options = {}) ⇒ Object

Provider registry lookup



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/active_record_vector.rb', line 19

def provider_for(provider_name, options = {})
  case provider_name.to_sym
  when :openai
    Providers::Openai.new(options)
  when :ollama
    Providers::Ollama.new(options)
  when :cohere
    Providers::Cohere.new(options)
  when :custom
    Providers::Custom.new(options)
  else
    if provider_name.is_a?(Class) && provider_name < Providers::Base
      provider_name.new(options)
    elsif provider_name.respond_to?(:call) || provider_name.respond_to?(:embed)
      Providers::Custom.new(options.merge(with: provider_name))
    else
      raise Error, "Unknown embedding provider: #{provider_name.inspect}"
    end
  end
end