Class: Kotoshu::Embeddings::Registry

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

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.enginesHash{Symbol => Class} (readonly)

Returns Registered engines.

Returns:

  • (Hash{Symbol => Class})

    Registered engines



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

def engines
  @engines
end

.modelsHash{Symbol => Class} (readonly)

Returns Registered models.

Returns:

  • (Hash{Symbol => Class})

    Registered models



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

def models
  @models
end

.vocabulariesHash{Symbol => Class} (readonly)

Returns Registered vocabularies.

Returns:

  • (Hash{Symbol => Class})

    Registered vocabularies



28
29
30
# File 'lib/kotoshu/embeddings/registry.rb', line 28

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)


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

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)


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

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)


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

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)


86
87
88
89
# File 'lib/kotoshu/embeddings/registry.rb', line 86

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

.engine_namesArray<Symbol>

List all registered engines

Returns:

  • (Array<Symbol>)


153
154
155
156
# File 'lib/kotoshu/embeddings/registry.rb', line 153

def engine_names
  init
  @engines.keys
end

.initObject

Initialize registry



32
33
34
35
36
# File 'lib/kotoshu/embeddings/registry.rb', line 32

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

.model(name) ⇒ Class?

Get registered model class

Parameters:

  • name (Symbol)

    Model identifier

Returns:

  • (Class, nil)


76
77
78
79
# File 'lib/kotoshu/embeddings/registry.rb', line 76

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

.model_namesArray<Symbol>

List all registered models

Returns:

  • (Array<Symbol>)


144
145
146
147
# File 'lib/kotoshu/embeddings/registry.rb', line 144

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)



54
55
56
57
58
# File 'lib/kotoshu/embeddings/registry.rb', line 54

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)



43
44
45
46
47
# File 'lib/kotoshu/embeddings/registry.rb', line 43

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)



65
66
67
68
69
# File 'lib/kotoshu/embeddings/registry.rb', line 65

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

.reset!Object

Clear all registrations



169
170
171
172
173
# File 'lib/kotoshu/embeddings/registry.rb', line 169

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

.vocabulary(name) ⇒ Class?

Get registered vocabulary class

Parameters:

  • name (Symbol)

    Vocabulary identifier

Returns:

  • (Class, nil)


96
97
98
99
# File 'lib/kotoshu/embeddings/registry.rb', line 96

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

.vocabulary_namesArray<Symbol>

List all registered vocabularies

Returns:

  • (Array<Symbol>)


162
163
164
165
# File 'lib/kotoshu/embeddings/registry.rb', line 162

def vocabulary_names
  init
  @vocabularies.keys
end