lib/pgvector.rb



# modules
require_relative "pgvector/bit"
require_relative "pgvector/half_vector"
require_relative "pgvector/sparse_vector"
require_relative "pgvector/vector"
require_relative "pgvector/version"

module Pgvector
  autoload :PG, "pgvector/pg"

  def self.encode(data)
    if data.is_a?(Vector) || data.is_a?(HalfVector) || data.is_a?(SparseVector)
      data.to_s
    else
      Vector.new(data).to_s
    end
  end

  def self.decode(string)
    if string[0] == "["
      Vector.from_text(string).to_a
    elsif string[0] == "{"
      SparseVector.from_text(string)
    else
      string
    end
  end
end