Class: Mxrb::Semantic::OnnxEmbedder

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/semantic/onnx_embedder.rb

Overview

Optional sentence-transformer backend powered by the informers gem.

Constant Summary collapse

MODEL =
'sentence-transformers/all-MiniLM-L6-v2'
MODEL_REVISION =
'1110a243fdf4706b3f48f1d95db1a4f5529b4d41'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pipeline: nil) ⇒ OnnxEmbedder

Returns a new instance of OnnxEmbedder.



17
18
19
20
21
22
23
# File 'lib/mxrb/semantic/onnx_embedder.rb', line 17

def initialize(pipeline: nil)
  require 'informers' unless pipeline
  @pipeline = pipeline || Informers.pipeline(
    'embedding', MODEL, revision: MODEL_REVISION
  )
  @dimension = nil
end

Class Method Details

.available?Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
# File 'lib/mxrb/semantic/onnx_embedder.rb', line 10

def self.available?
  require 'informers'
  true
rescue LoadError
  false
end

Instance Method Details

#backendObject



25
# File 'lib/mxrb/semantic/onnx_embedder.rb', line 25

def backend = :onnx

#dimensionObject



26
# File 'lib/mxrb/semantic/onnx_embedder.rb', line 26

def dimension = (@dimension ||= embed('warmup').size)

#embed(text) ⇒ Object



28
29
30
31
# File 'lib/mxrb/semantic/onnx_embedder.rb', line 28

def embed(text)
  vector = @pipeline.call(text)
  vector.first.is_a?(Array) ? vector.first : vector
end