Class: EmbeddingRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/kotoshu/embeddings/registry.rb

Overview

Registry - Plugin system for embeddings components

Provides a centralized registry for embedding models, similarity engines, and vocabularies. Allows registering and retrieving custom implementations.

Examples:

Registering a custom model

Registry.register_model(:my_model, MyCustomModel)

Creating from registry

model = Registry.create_model(:my_model, vectors: my_vectors)

Listing available implementations

Registry.models.keys  # => [:onnx, :my_model]

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.enginesHash{Symbol => Class} (readonly)

Returns Registered engines.

Returns:

  • (Hash{Symbol => Class})

    Registered engines



23
24
25
# File 'lib/kotoshu/embeddings/registry.rb', line 23

def engines
  @engines
end

.modelsHash{Symbol => Class} (readonly)

Returns Registered models.

Returns:

  • (Hash{Symbol => Class})

    Registered models



20
21
22
# File 'lib/kotoshu/embeddings/registry.rb', line 20

def models
  @models
end

.vocabulariesHash{Symbol => Class} (readonly)

Returns Registered vocabularies.

Returns:

  • (Hash{Symbol => Class})

    Registered vocabularies



26
27
28
# File 'lib/kotoshu/embeddings/registry.rb', line 26

def vocabularies
  @vocabularies
end

Class Method Details

.create_engine(name, **kwargs) ⇒ SimilarityEngine

Create an engine instance

Parameters:

  • name (Symbol)

    Engine identifier

  • kwargs (Hash)

    Engine constructor arguments

Returns:

Raises:

  • (ArgumentError)


118
119
120
121
122
123
# File 'lib/kotoshu/embeddings/registry.rb', line 118

def create_engine(name, **kwargs)
  klass = engine(name)
  raise ArgumentError, "Unknown engine: #{name}" unless klass

  klass.new(**kwargs)
end

.create_model(name, **kwargs) ⇒ EmbeddingModel

Create a model instance

Parameters:

  • name (Symbol)

    Model identifier

  • kwargs (Hash)

    Model constructor arguments

Returns:

  • (EmbeddingModel)

Raises:

  • (ArgumentError)


105
106
107
108
109
110
# File 'lib/kotoshu/embeddings/registry.rb', line 105

def create_model(name, **kwargs)
  klass = model(name)
  raise ArgumentError, "Unknown model: #{name}" unless klass

  klass.new(**kwargs)
end

.create_vocabulary(name, **kwargs) ⇒ Vocabulary

Create a vocabulary instance

Parameters:

  • name (Symbol)

    Vocabulary identifier

  • kwargs (Hash)

    Vocabulary constructor arguments

Returns:

Raises:

  • (ArgumentError)


131
132
133
134
135
136
# File 'lib/kotoshu/embeddings/registry.rb', line 131

def create_vocabulary(name, **kwargs)
  klass = vocabulary(name)
  raise ArgumentError, "Unknown vocabulary: #{name}" unless klass

  klass.new(**kwargs)
end

.engine(name) ⇒ Class?

Get registered engine class

Parameters:

  • name (Symbol)

    Engine identifier

Returns:

  • (Class, nil)


84
85
86
87
# File 'lib/kotoshu/embeddings/registry.rb', line 84

def engine(name)
  init
  @engines[name]
end

.engine_namesArray<Symbol>

List all registered engines

Returns:

  • (Array<Symbol>)


151
152
153
154
# File 'lib/kotoshu/embeddings/registry.rb', line 151

def engine_names
  init
  @engines.keys
end

.initObject

Initialize registry



30
31
32
33
34
# File 'lib/kotoshu/embeddings/registry.rb', line 30

def init
  @models ||= {}
  @engines ||= {}
  @vocabularies ||= {}
end

.model(name) ⇒ Class?

Get registered model class

Parameters:

  • name (Symbol)

    Model identifier

Returns:

  • (Class, nil)


74
75
76
77
# File 'lib/kotoshu/embeddings/registry.rb', line 74

def model(name)
  init
  @models[name]
end

.model_namesArray<Symbol>

List all registered models

Returns:

  • (Array<Symbol>)


142
143
144
145
# File 'lib/kotoshu/embeddings/registry.rb', line 142

def model_names
  init
  @models.keys
end

.register_engine(name, klass) ⇒ Object

Register a similarity engine

Parameters:

  • name (Symbol)

    Engine identifier

  • klass (Class)

    Engine class (must implement SimilarityEngine protocol)



52
53
54
55
56
# File 'lib/kotoshu/embeddings/registry.rb', line 52

def register_engine(name, klass)
  init
  @engines[name] = klass
  klass
end

.register_model(name, klass) ⇒ Object

Register an embedding model

Parameters:

  • name (Symbol)

    Model identifier

  • klass (Class)

    Model class (must implement EmbeddingModel protocol)



41
42
43
44
45
# File 'lib/kotoshu/embeddings/registry.rb', line 41

def register_model(name, klass)
  init
  @models[name] = klass
  klass
end

.register_vocabulary(name, klass) ⇒ Object

Register a vocabulary

Parameters:

  • name (Symbol)

    Vocabulary identifier

  • klass (Class)

    Vocabulary class (must implement Vocabulary protocol)



63
64
65
66
67
# File 'lib/kotoshu/embeddings/registry.rb', line 63

def register_vocabulary(name, klass)
  init
  @vocabularies[name] = klass
  klass
end

.reset!Object

Clear all registrations



167
168
169
170
171
# File 'lib/kotoshu/embeddings/registry.rb', line 167

def reset!
  @models = {}
  @engines = {}
  @vocabularies = {}
end

.vocabulary(name) ⇒ Class?

Get registered vocabulary class

Parameters:

  • name (Symbol)

    Vocabulary identifier

Returns:

  • (Class, nil)


94
95
96
97
# File 'lib/kotoshu/embeddings/registry.rb', line 94

def vocabulary(name)
  init
  @vocabularies[name]
end

.vocabulary_namesArray<Symbol>

List all registered vocabularies

Returns:

  • (Array<Symbol>)


160
161
162
163
# File 'lib/kotoshu/embeddings/registry.rb', line 160

def vocabulary_names
  init
  @vocabularies.keys
end