Sha256: 15ea32405301cbc85e68f234c6b5c28bbde8e7e6e7db928c2b89dcb01f8a8757

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require "dry-struct"
require "dry-validation"

require "roseflow/pinecone/object"
require "roseflow/pinecone/vectors/sparse_vector"
require "roseflow/pinecone/vectors/common"

module Types
  include Dry.Types()

  Number = Types::Coercible::Float
  # SparseVector = Roseflow::Pinecone::Vector::SparseVector
end

module Roseflow
  module Pinecone
    class Vector
      class VectorObject < PineconeObject
        include Roseflow::Pinecone::Vectors::Common
        transform_keys(&:to_sym)

        class VectorObjectContract < Dry::Validation::Contract
          params do
            required(:id).filled(:string)
            required(:values).filled(:array)
            optional(:sparse_values).filled
            optional(:metadata).filled(:hash)
          end
        end
        
        contract_object VectorObjectContract

        attribute :id, Dry::Types['string']
        attribute :values, Dry::Types['array'].of(Types::Number)
        attribute? :score, Types::Number.optional
        attribute? :sparse_values, SparseVector.optional
        attribute? :metadata, Dry::Types['hash'].optional
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
roseflow-pinecone-0.1.0 lib/roseflow/pinecone/vectors/vector_object.rb