WeaviateEx.Query.TargetVectors (WeaviateEx v0.7.4)
View SourceTarget vector configuration for named vector collections.
When a collection has multiple named vectors, you can specify which vector(s) to use for a search and how to combine them.
Combination Methods
:sum- Sum of distances/similarities:average- Average of distances/similarities:minimum- Minimum distance (closest match):manual_weights- Weighted combination with custom weights:relative_score- Relative score weighting
Examples
# Single target vector
Query.near_vector(query, vector, target_vectors: "title_vector")
# Multiple vectors with sum combination
target = TargetVectors.combine(["title_vector", "content_vector"], method: :sum)
Query.near_vector(query, vector, target_vectors: target)
# Manual weights
target = TargetVectors.weighted(%{
"title_vector" => 0.7,
"content_vector" => 0.3
})
Query.near_text(query, "search term", target_vectors: target)
Summary
Functions
Combine vectors by averaging their scores.
Create a combined target vector configuration.
Combine vectors with manual weights.
Combine vectors by taking the minimum score.
Normalize target_vectors option to consistent format.
Combine vectors using relative score weighting.
Use a single target vector.
Combine vectors by summing their scores.
Convert target vectors configuration to GraphQL format.
Convert to gRPC format for query execution.
Create a manually weighted target vector configuration.
Types
@type combination() :: {:sum | :average | :minimum | :manual_weights | :relative_score, term()}
@type single() :: String.t()
@type t() :: single() | combination() | WeaviateEx.Query.TargetVectors.Config.t()
Functions
@spec average([String.t()]) :: combination()
Combine vectors by averaging their scores.
Examples
TargetVectors.average(["title_vector", "content_vector"])
@spec combine( [String.t()], keyword() ) :: WeaviateEx.Query.TargetVectors.Config.t()
Create a combined target vector configuration.
Options
:method- Combination method::sum,:average, or:minimum(default::sum)
Examples
TargetVectors.combine(["title_vector", "content_vector"], method: :average)
@spec manual_weights(map()) :: combination()
Combine vectors with manual weights.
Weights should sum to 1.0 for best results.
Examples
TargetVectors.manual_weights(%{
"title_vector" => 0.7,
"content_vector" => 0.3
})
@spec minimum([String.t()]) :: combination()
Combine vectors by taking the minimum score.
Examples
TargetVectors.minimum(["title_vector", "content_vector"])
@spec normalize( String.t() | [String.t()] | WeaviateEx.Query.TargetVectors.Config.t() | nil ) :: WeaviateEx.Query.TargetVectors.Config.t() | nil
Normalize target_vectors option to consistent format.
Accepts:
nil- returns nil- String - single target vector name
- List of strings - multiple target vectors (uses sum)
- Config.t() - full configuration struct
Examples
TargetVectors.normalize("content_vector")
# => %Config{vectors: ["content_vector"], method: :sum}
TargetVectors.normalize(["vec1", "vec2"])
# => %Config{vectors: ["vec1", "vec2"], method: :sum}
@spec relative_score(map()) :: combination()
Combine vectors using relative score weighting.
Examples
TargetVectors.relative_score(%{
"title_vector" => 0.6,
"content_vector" => 0.4
})
Use a single target vector.
Examples
TargetVectors.single("content_vector")
@spec sum([String.t()]) :: combination()
Combine vectors by summing their scores.
Examples
TargetVectors.sum(["title_vector", "content_vector"])
Convert target vectors configuration to GraphQL format.
Examples
target = TargetVectors.average(["title_vector", "content_vector"])
TargetVectors.to_graphql(target)
@spec to_grpc( String.t() | [String.t()] | WeaviateEx.Query.TargetVectors.Config.t() | nil ) :: struct() | nil
Convert to gRPC format for query execution.
Examples
target = TargetVectors.combine(["vec1", "vec2"], method: :average)
TargetVectors.to_grpc(target)
# => %Weaviate.V1.Targets{target_vectors: ["vec1", "vec2"], combination: :COMBINATION_METHOD_TYPE_AVERAGE}
@spec weighted(%{required(String.t()) => float()}) :: WeaviateEx.Query.TargetVectors.Config.t()
Create a manually weighted target vector configuration.
Examples
TargetVectors.weighted(%{
"title_vector" => 0.7,
"content_vector" => 0.3
})