WeaviateEx.API.MultiVector.Encoding (WeaviateEx v0.7.4)

View Source

Multi-vector encoding configurations.

Provides configuration builders for multi-vector encoding strategies, particularly for ColBERT-style multi-vector representations.

Muvera Encoding

Muvera is an efficient encoding scheme for multi-vector search that projects multiple vectors into a compressed representation.

Example

alias WeaviateEx.API.MultiVector.Encoding

# Default Muvera encoding
encoding = Encoding.muvera()

# Custom Muvera parameters
encoding = Encoding.muvera(
  ksim: 15,
  dprojections: 512,
  repetitions: 8
)

# Use in vector index config
VectorConfig.hnsw_index(
  multi_vector: %{
    aggregation: :max_sim,
    encoding: encoding
  }
)

Summary

Functions

Parse encoding configuration from API response.

Create a Muvera encoding configuration.

Create a no-encoding configuration (raw multi-vectors).

Convert encoding configuration to API format.

Types

encoding_type()

@type encoding_type() :: :muvera | :none

t()

@type t() :: %WeaviateEx.API.MultiVector.Encoding{
  dprojections: non_neg_integer() | nil,
  ksim: non_neg_integer() | nil,
  repetitions: non_neg_integer() | nil,
  type: encoding_type()
}

Functions

from_api(data)

@spec from_api(map()) :: t()

Parse encoding configuration from API response.

Examples

Encoding.from_api(%{"type" => "muvera", "ksim" => 10})

muvera(opts \\ [])

@spec muvera(keyword()) :: t()

Create a Muvera encoding configuration.

Muvera encoding is used for efficient multi-vector search, particularly with ColBERT-style token embeddings.

Options

  • :ksim - Number of similar vectors to consider (default: 10)
  • :dprojections - Dimensionality of projections (default: 256)
  • :repetitions - Number of repetitions for hashing (default: 4)

Examples

# Default settings
Encoding.muvera()
# => %Encoding{type: :muvera, ksim: 10, dprojections: 256, repetitions: 4}

# Custom settings
Encoding.muvera(ksim: 15, dprojections: 512)

none()

@spec none() :: t()

Create a no-encoding configuration (raw multi-vectors).

Use this when you want to store multi-vectors without any encoding compression. This preserves full precision but uses more memory.

Examples

Encoding.none()
# => %Encoding{type: :none}

to_api(config)

@spec to_api(t()) :: map()

Convert encoding configuration to API format.

Examples

encoding = Encoding.muvera(ksim: 15)
Encoding.to_api(encoding)
# => %{
#   "type" => "muvera",
#   "ksim" => 15,
#   "dProjections" => 256,
#   "repetitions" => 4
# }