WeaviateEx.API.MultiVector.Encoding (WeaviateEx v0.7.4)
View SourceMulti-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
@type encoding_type() :: :muvera | :none
@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
Parse encoding configuration from API response.
Examples
Encoding.from_api(%{"type" => "muvera", "ksim" => 10})
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)
@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}
Convert encoding configuration to API format.
Examples
encoding = Encoding.muvera(ksim: 15)
Encoding.to_api(encoding)
# => %{
# "type" => "muvera",
# "ksim" => 15,
# "dProjections" => 256,
# "repetitions" => 4
# }