WeaviateEx.Query.TargetVectors (WeaviateEx v0.7.4)

View Source

Target 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

combination()

@type combination() ::
  {:sum | :average | :minimum | :manual_weights | :relative_score, term()}

single()

@type single() :: String.t()

t()

Functions

average(vectors)

@spec average([String.t()]) :: combination()

Combine vectors by averaging their scores.

Examples

TargetVectors.average(["title_vector", "content_vector"])

combine(vectors, opts \\ [])

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)

manual_weights(weights)

@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
})

minimum(vectors)

@spec minimum([String.t()]) :: combination()

Combine vectors by taking the minimum score.

Examples

TargetVectors.minimum(["title_vector", "content_vector"])

normalize(target)

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}

relative_score(weights)

@spec relative_score(map()) :: combination()

Combine vectors using relative score weighting.

Examples

TargetVectors.relative_score(%{
  "title_vector" => 0.6,
  "content_vector" => 0.4
})

single(name)

@spec single(String.t()) :: String.t()

Use a single target vector.

Examples

TargetVectors.single("content_vector")

sum(vectors)

@spec sum([String.t()]) :: combination()

Combine vectors by summing their scores.

Examples

TargetVectors.sum(["title_vector", "content_vector"])

to_graphql(target)

@spec to_graphql(t()) :: String.t()

Convert target vectors configuration to GraphQL format.

Examples

target = TargetVectors.average(["title_vector", "content_vector"])
TargetVectors.to_graphql(target)

to_grpc(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}

weighted(weights)

@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
})