Module: VectorAmp::Embedding

Defined in:
lib/vector_amp/embedding.rb

Overview

Embedding configuration defaults and helpers.

SDK callers rarely need to specify an embedding model. By default datasets use the managed VectorAmp embedding model and the SDK infers the vector dimension.

Constant Summary collapse

DEFAULT_PROVIDER =

Default embedding provider used when none is supplied.

"vectoramp"
DEFAULT_MODEL =

Default embedding model used when none is supplied.

"VectorAmp-Embedding-4B"
DIM_TABLE =

Built-in dimension inference for known provider/model pairs.

{
  ["vectoramp", "VectorAmp-Embedding-4B"] => 2560,
  ["openai", "text-embedding-3-small"] => 1536,
  ["openai", "text-embedding-3-large"] => 3072,
}.freeze

Class Method Summary collapse

Class Method Details

.default_embeddingHash

The fully managed default embedding configuration.

Returns:

  • (Hash)

    { provider:, model: }



25
26
27
# File 'lib/vector_amp/embedding.rb', line 25

def default_embedding
  { provider: DEFAULT_PROVIDER, model: DEFAULT_MODEL }
end

.infer_dim(embedding) ⇒ Integer?

Infer the vector dimension for an embedding config, or nil when unknown.

Parameters:

  • embedding (Hash)

    normalized embedding config.

Returns:

  • (Integer, nil)

    inferred dimension or nil for custom/unknown models.



61
62
63
64
65
# File 'lib/vector_amp/embedding.rb', line 61

def infer_dim(embedding)
  provider = embedding[:provider] || embedding["provider"]
  model = embedding[:model] || embedding["model"]
  DIM_TABLE[[provider.to_s, model.to_s]]
end

.normalize(embedding) ⇒ Hash

Normalize a user-supplied embedding value into a config hash. Accepts a Hash ({ provider:, model:, secret_ref? }) or a String model name (assumed to use the default provider).

Parameters:

  • embedding (Hash, String, nil)

Returns:

  • (Hash)

    normalized embedding config with string keys for provider/model lookups.



48
49
50
51
52
53
54
55
56
# File 'lib/vector_amp/embedding.rb', line 48

def normalize(embedding)
  case embedding
  when nil then default_embedding
  when String then { provider: DEFAULT_PROVIDER, model: embedding }
  when Hash then embedding
  else
    raise ArgumentError, "embedding must be a Hash or String"
  end
end

.openai(size = "small") ⇒ Hash

Build an OpenAI embedding configuration.

Parameters:

  • size (String, Symbol) (defaults to: "small")

    "small" (text-embedding-3-small) or "large" (text-embedding-3-large).

Returns:

  • (Hash)

    { provider: "openai", model: ... }

Raises:

  • (ArgumentError)

    when size is not "small" or "large".



33
34
35
36
37
38
39
40
41
# File 'lib/vector_amp/embedding.rb', line 33

def openai(size = "small")
  model = case size.to_s
          when "small" then "text-embedding-3-small"
          when "large" then "text-embedding-3-large"
          else
            raise ArgumentError, %(openai size must be "small" or "large", got #{size.inspect})
          end
  { provider: "openai", model: model }
end