Class: Hnswlib::InnerProductSpace

Inherits:
Object
  • Object
show all
Defined in:
ext/hnswlib/dummy.rb

Overview

InnerProductSpace is a class that calculates dot product for search index. This class is used internally.

Examples:

require 'hnswlib'

n_features = 3
space = Hnswlib::InnerProductSpace.new(n_features)

a = [1, 2, 3]
b = [4, 5, 6]
space.distance(a, b)
# => -31.0

Instance Method Summary collapse

Constructor Details

#initialize(dim) ⇒ InnerProductSpace

Create a new InnerProductSpace.

Parameters:

  • dim (Integer)

    The number of dimensions (features).



55
56
57
# File 'ext/hnswlib/dummy.rb', line 55

def initialize(dim)
  @dim = dim
end

Instance Method Details

#distance(arr_a, arr_b) ⇒ Float

Calculate the dot product between items: d = 1.0 - sum(Ai * Bi)

Parameters:

  • arr_a (Array<Float>)

    The vector of item A.

  • arr_b (Array<Float>)

    The vector of item B.

Returns:

  • (Float)


65
66
67
# File 'ext/hnswlib/dummy.rb', line 65

def distance(arr_a, arr_b)
  1.0 - a.zip(b).sum { |v| v[0] * v[1] }
end