Module: Sequel::Plugins::Pgvector::InstanceMethods

Defined in:
lib/sequel/plugins/pgvector/instance_methods.rb

Instance Method Summary collapse

Instance Method Details

#[](k) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/sequel/plugins/pgvector/instance_methods.rb', line 23

def [](k)
  if self.class.vector_columns.key?(k.to_sym)
    ::Pgvector.decode(super)
  else
    super
  end
end

#[]=(k, v) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/sequel/plugins/pgvector/instance_methods.rb', line 15

def []=(k, v)
  if self.class.vector_columns.key?(k.to_sym) && !v.is_a?(String)
    super(k, ::Pgvector.encode(v))
  else
    super
  end
end

#nearest_neighbors(column, **options) ⇒ Object

Raises:

  • (ArgumentError)


5
6
7
8
9
10
11
12
13
# File 'lib/sequel/plugins/pgvector/instance_methods.rb', line 5

def nearest_neighbors(column, **options)
  column = column.to_sym
  # important! check if neighbor attribute before calling send
  raise ArgumentError, "Invalid column" unless self.class.vector_columns[column]
  
  self.class
    .nearest_neighbors(column, self[column], **options)
    .exclude(primary_key => self[primary_key])
end