Class: Noiseless::AST::Vector

Inherits:
Node
  • Object
show all
Defined in:
lib/noiseless/ast/vector.rb

Overview

Vector search node for semantic/embedding-based search Used with pgvector in PostgreSQL or knn in OpenSearch

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Node

#to_h

Constructor Details

#initialize(field, embedding, k: 10, distance_metric: :cosine) ⇒ Vector

Returns a new instance of Vector.

Parameters:

  • field (Symbol, String)

    The embedding column/field

  • embedding (Array<Float>)

    The query embedding vector

  • k (Integer) (defaults to: 10)

    Number of nearest neighbors (default: 10)

  • distance_metric (Symbol) (defaults to: :cosine)

    :cosine, :l2, or :inner_product (default: :cosine)



14
15
16
17
18
19
20
# File 'lib/noiseless/ast/vector.rb', line 14

def initialize(field, embedding, k: 10, distance_metric: :cosine)
  super()
  @field = field
  @embedding = embedding
  @k = k
  @distance_metric = distance_metric
end

Instance Attribute Details

#distance_metricObject (readonly)

Returns the value of attribute distance_metric.



8
9
10
# File 'lib/noiseless/ast/vector.rb', line 8

def distance_metric
  @distance_metric
end

#embeddingObject (readonly)

Returns the value of attribute embedding.



8
9
10
# File 'lib/noiseless/ast/vector.rb', line 8

def embedding
  @embedding
end

#fieldObject (readonly)

Returns the value of attribute field.



8
9
10
# File 'lib/noiseless/ast/vector.rb', line 8

def field
  @field
end

#kObject (readonly)

Returns the value of attribute k.



8
9
10
# File 'lib/noiseless/ast/vector.rb', line 8

def k
  @k
end

Instance Method Details

#dimensionObject



22
23
24
# File 'lib/noiseless/ast/vector.rb', line 22

def dimension
  @embedding&.size || 0
end