From 5d6299bc56824fdfa435a08e594e157733191bce Mon Sep 17 00:00:00 2001
From: Ivan Despot <66276597+g-despot@users.noreply.github.com>
Date: Wed, 15 Jul 2026 12:28:20 +0200
Subject: [PATCH 1/5] feat: add Boost query API (soft-ranking rescorer) to
search and generate methods
Weaviate 1.38 Preview, gRPC-only. Adds the Boost model (filter, time_decay,
numeric_decay, numeric_property conditions plus weighted blend), the Boost
proto message + optional SearchRequest.boost field 62 (from the v1.38.4
server proto), request serialization in BuildBoost, and an optional boost
parameter on every BM25/Hybrid/NearText/NearVector/NearObject/NearMedia
overload of QueryClient, GenerateClient and the typed clients (FetchObjects
excluded, matching python client PR #2030).
All server defaults (weight 0.5, depth 100, curve exponential, decay 0.5)
are left to the server via proto field presence; the only client-side
default is time_decay origin=now.
---
.../Integration/TestBoost.cs | 233 ++++++++++
.../Unit/TestBoostSyntax.cs | 412 ++++++++++++++++++
src/Weaviate.Client/GenerateClient.BM25.cs | 6 +
src/Weaviate.Client/GenerateClient.Hybrid.cs | 12 +
.../GenerateClient.NearMedia.cs | 6 +
.../GenerateClient.NearObject.cs | 6 +
.../GenerateClient.NearText.cs | 18 +
.../GenerateClient.NearVector.cs | 20 +
src/Weaviate.Client/Models/Boost.cs | 334 ++++++++++++++
src/Weaviate.Client/PublicAPI.Unshipped.txt | 233 ++++++++++
src/Weaviate.Client/QueryClient.BM25.cs | 6 +
src/Weaviate.Client/QueryClient.Hybrid.cs | 12 +
src/Weaviate.Client/QueryClient.NearMedia.cs | 12 +
src/Weaviate.Client/QueryClient.NearObject.cs | 6 +
src/Weaviate.Client/QueryClient.NearText.cs | 18 +
src/Weaviate.Client/QueryClient.NearVector.cs | 24 +
.../Typed/TypedGenerateClient.BM25.cs | 6 +
.../Typed/TypedGenerateClient.Hybrid.cs | 12 +
.../Typed/TypedGenerateClient.NearMedia.cs | 6 +
.../Typed/TypedGenerateClient.NearObject.cs | 6 +
.../Typed/TypedGenerateClient.NearText.cs | 18 +
.../Typed/TypedGenerateClient.NearVector.cs | 24 +
.../Typed/TypedQueryClient.BM25.cs | 6 +
.../Typed/TypedQueryClient.Hybrid.cs | 12 +
.../Typed/TypedQueryClient.NearMedia.cs | 6 +
.../Typed/TypedQueryClient.NearObject.cs | 6 +
.../Typed/TypedQueryClient.NearText.cs | 18 +
.../Typed/TypedQueryClient.NearVector.cs | 24 +
src/Weaviate.Client/gRPC/Search.Builders.cs | 98 +++++
src/Weaviate.Client/gRPC/Search.cs | 19 +
.../gRPC/proto/v1/search_get.proto | 48 ++
31 files changed, 1667 insertions(+)
create mode 100644 src/Weaviate.Client.Tests/Integration/TestBoost.cs
create mode 100644 src/Weaviate.Client.Tests/Unit/TestBoostSyntax.cs
create mode 100644 src/Weaviate.Client/Models/Boost.cs
diff --git a/src/Weaviate.Client.Tests/Integration/TestBoost.cs b/src/Weaviate.Client.Tests/Integration/TestBoost.cs
new file mode 100644
index 00000000..598d5c9e
--- /dev/null
+++ b/src/Weaviate.Client.Tests/Integration/TestBoost.cs
@@ -0,0 +1,233 @@
+using Weaviate.Client.Models;
+
+namespace Weaviate.Client.Tests.Integration;
+
+///
+/// Integration tests for the Boost query parameter (soft-ranking, Weaviate 1.38+ Preview).
+///
+public partial class SearchTests
+{
+ ///
+ /// The boost test document class
+ ///
+ private class BoostDoc
+ {
+ ///
+ /// Gets or sets the value of the name
+ ///
+ public string Name { get; set; } = string.Empty;
+
+ ///
+ /// Gets or sets the value of the label
+ ///
+ public string Label { get; set; } = string.Empty;
+
+ ///
+ /// Gets or sets the value of the category
+ ///
+ public string Category { get; set; } = string.Empty;
+
+ ///
+ /// Gets or sets the value of the view count
+ ///
+ public int ViewCount { get; set; }
+
+ ///
+ /// Gets or sets the value of the price
+ ///
+ public double Price { get; set; }
+
+ ///
+ /// Gets or sets the value of the published at
+ ///
+ public DateTime PublishedAt { get; set; }
+ }
+
+ ///
+ /// Creates a boost test collection with three documents that tie on BM25 relevance
+ ///
+ /// The collection client
+ private async Task BoostCollectionFactory()
+ {
+ var collection = await CollectionFactory(
+ properties: Property.FromClass(),
+ vectorConfig: Configure.Vector(v => v.SelfProvided())
+ );
+
+ // All docs share the same name so BM25 scores tie and the boost alone decides the order.
+ var now = DateTime.UtcNow;
+ await collection.Data.InsertMany(
+ new[]
+ {
+ new BoostDoc
+ {
+ Name = "banana",
+ Label = "A",
+ Category = "promoted",
+ ViewCount = 5,
+ Price = 100,
+ PublishedAt = now.AddDays(-400),
+ },
+ new BoostDoc
+ {
+ Name = "banana",
+ Label = "B",
+ Category = "regular",
+ ViewCount = 500,
+ Price = 50,
+ PublishedAt = now.AddHours(-1),
+ },
+ new BoostDoc
+ {
+ Name = "banana",
+ Label = "C",
+ Category = "regular",
+ ViewCount = 50,
+ Price = 60,
+ PublishedAt = now.AddDays(-60),
+ },
+ },
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ return collection;
+ }
+
+ ///
+ /// Extracts the label ordering from a search result
+ ///
+ /// The result
+ /// The labels in result order
+ private static List Labels(WeaviateResult result) =>
+ result.Objects.Select(o => o.As()!.Label).ToList();
+
+ ///
+ /// Tests that a filter boost promotes matching objects without excluding the rest
+ ///
+ [Fact]
+ public async Task Test_Boost_Filter_PromotesMatchingObjects()
+ {
+ var collection = await BoostCollectionFactory();
+
+ var result = await collection.Query.BM25(
+ "banana",
+ searchFields: ["name"],
+ boost: Boost.Filter(
+ Filter.Property("category").IsEqual("promoted"),
+ weight: 0.9f
+ ),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var labels = Labels(result);
+ Assert.Equal(3, labels.Count);
+ Assert.Equal("A", labels[0]);
+ }
+
+ ///
+ /// Tests that a numeric property boost ranks higher values first
+ ///
+ [Fact]
+ public async Task Test_Boost_NumericProperty_RanksByValue()
+ {
+ var collection = await BoostCollectionFactory();
+
+ var result = await collection.Query.BM25(
+ "banana",
+ searchFields: ["name"],
+ boost: Boost.NumericProperty("viewCount", weight: 0.9f),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ Assert.Equal(["B", "C", "A"], Labels(result));
+ }
+
+ ///
+ /// Tests that a time decay boost prefers recent objects
+ ///
+ [Fact]
+ public async Task Test_Boost_TimeDecay_PrefersRecentObjects()
+ {
+ var collection = await BoostCollectionFactory();
+
+ var result = await collection.Query.BM25(
+ "banana",
+ searchFields: ["name"],
+ boost: Boost.TimeDecay(
+ "publishedAt",
+ scale: TimeSpan.FromDays(30),
+ weight: 0.9f
+ ),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ Assert.Equal(["B", "C", "A"], Labels(result));
+ }
+
+ ///
+ /// Tests that a numeric decay boost prefers values closest to the origin on a near-vector search
+ ///
+ [Fact]
+ public async Task Test_Boost_NumericDecay_OnNearVector_PrefersClosestToOrigin()
+ {
+ var collection = await CollectionFactory(
+ properties: Property.FromClass(),
+ vectorConfig: Configure.Vector(v => v.SelfProvided())
+ );
+
+ // Identical vectors so the primary vector search ties and the boost alone decides the order.
+ var vector = new[] { 1f, 0f, 0f };
+ foreach (
+ var doc in new[]
+ {
+ new BoostDoc { Label = "A", Price = 100 },
+ new BoostDoc { Label = "B", Price = 50 },
+ new BoostDoc { Label = "C", Price = 60 },
+ }
+ )
+ {
+ await collection.Data.Insert(
+ doc,
+ vectors: vector,
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+ }
+
+ var result = await collection.Query.NearVector(
+ vector,
+ boost: Boost.NumericDecay("price", origin: 50, scale: 10, weight: 0.9f),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ Assert.Equal(["B", "C", "A"], Labels(result));
+ }
+
+ ///
+ /// Tests that a blended boost weighs its conditions against each other
+ ///
+ [Fact]
+ public async Task Test_Boost_Blend_WeighsConditions()
+ {
+ var collection = await BoostCollectionFactory();
+
+ // The promoted-filter condition carries twice the weight of the view-count condition,
+ // so A (promoted, 5 views) must outrank B (regular, 500 views).
+ var result = await collection.Query.BM25(
+ "banana",
+ searchFields: ["name"],
+ boost: Boost.Blend(
+ [
+ Boost.Filter(
+ Filter.Property("category").IsEqual("promoted"),
+ weight: 2f
+ ),
+ Boost.NumericProperty("viewCount", weight: 1f),
+ ],
+ weight: 0.9f
+ ),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ Assert.Equal(["A", "B", "C"], Labels(result));
+ }
+}
diff --git a/src/Weaviate.Client.Tests/Unit/TestBoostSyntax.cs b/src/Weaviate.Client.Tests/Unit/TestBoostSyntax.cs
new file mode 100644
index 00000000..dbc6b274
--- /dev/null
+++ b/src/Weaviate.Client.Tests/Unit/TestBoostSyntax.cs
@@ -0,0 +1,412 @@
+using Weaviate.Client.Models;
+using Weaviate.Client.Tests.Unit.Mocks;
+using Weaviate.Client.Typed;
+using V1 = Weaviate.Client.Grpc.Protobuf.V1;
+
+namespace Weaviate.Client.Tests.Unit;
+
+///
+/// Unit tests verifying that the Boost query parameter serializes to the expected
+/// SearchRequest proto across the query, generate, and typed surfaces.
+///
+[Collection("Unit Tests")]
+public class TestBoostSyntax : IAsyncLifetime
+{
+ ///
+ /// The collection name
+ ///
+ private const string CollectionName = "TestCollection";
+
+ ///
+ /// The test media bytes
+ ///
+ private static readonly byte[] TestMediaBytes = [1, 2, 3, 4];
+
+ ///
+ /// The get request
+ ///
+ private Func _getRequest = null!;
+
+ ///
+ /// The collection
+ ///
+ private CollectionClient _collection = null!;
+
+ ///
+ /// Initializes this instance
+ ///
+ /// The value task
+ public ValueTask InitializeAsync()
+ {
+ var (client, getRequest) = MockGrpcClient.CreateWithSearchCapture();
+ _getRequest = getRequest;
+ _collection = client.Collections.Use(CollectionName);
+ return ValueTask.CompletedTask;
+ }
+
+ ///
+ /// Disposes this instance
+ ///
+ /// The value task
+ public ValueTask DisposeAsync()
+ {
+ GC.SuppressFinalize(this);
+ return ValueTask.CompletedTask;
+ }
+
+ ///
+ /// Tests that a query without a boost leaves the boost proto field unset
+ ///
+ [Fact]
+ public async Task BM25_WithoutBoost_OmitsBoost()
+ {
+ await _collection.Query.BM25(
+ "banana",
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.Null(request.Boost);
+ }
+
+ ///
+ /// Tests that a filter boost with weight and depth serializes all fields
+ ///
+ [Fact]
+ public async Task BM25_FilterBoost_SerializesFilterWeightAndDepth()
+ {
+ await _collection.Query.BM25(
+ "banana",
+ boost: Boost.Filter(Filter.Property("category").IsEqual("fruit"), weight: 0.7f, depth: 200),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ Assert.True(request.Boost.HasWeight);
+ Assert.Equal(0.7f, request.Boost.Weight);
+ Assert.True(request.Boost.HasDepth);
+ Assert.Equal(200u, request.Boost.Depth);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.False(condition.HasWeight);
+ Assert.NotNull(condition.Filter);
+ Assert.Equal("category", condition.Filter.Target.Property);
+ Assert.Equal(V1.Filters.Types.Operator.Equal, condition.Filter.Operator);
+ }
+
+ ///
+ /// Tests that server-side defaults are not re-encoded client-side
+ ///
+ [Fact]
+ public async Task Hybrid_FilterBoost_LeavesDefaultsToServer()
+ {
+ await _collection.Query.Hybrid(
+ "banana",
+ boost: Boost.Filter(Filter.Property("category").IsEqual("fruit")),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ Assert.False(request.Boost.HasWeight);
+ Assert.False(request.Boost.HasDepth);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.False(condition.HasWeight);
+ }
+
+ ///
+ /// Tests that a fully-specified time decay boost serializes all fields
+ ///
+ [Fact]
+ public async Task NearText_TimeDecayBoost_SerializesAllValues()
+ {
+ await _collection.Query.NearText(
+ "banana",
+ boost: Boost.TimeDecay(
+ "publishedAt",
+ scale: "7d",
+ origin: "2024-01-01T00:00:00Z",
+ offset: "1d",
+ curve: Boost.Curve.Gaussian,
+ decay: 0.4f,
+ weight: 0.6f,
+ depth: 150
+ ),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ Assert.Equal(0.6f, request.Boost.Weight);
+ Assert.Equal(150u, request.Boost.Depth);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.TimeDecay);
+ Assert.Equal("publishedAt", condition.TimeDecay.Property);
+ Assert.Equal("2024-01-01T00:00:00Z", condition.TimeDecay.Origin);
+ Assert.Equal("7d", condition.TimeDecay.Scale);
+ Assert.Equal("1d", condition.TimeDecay.Offset);
+ Assert.Equal(V1.Boost.Types.DecayCurve.Gauss, condition.TimeDecay.Curve);
+ Assert.Equal(0.4f, condition.TimeDecay.DecayValue);
+ }
+
+ ///
+ /// Tests that a minimal time decay boost defaults the origin to "now" and leaves the rest unset
+ ///
+ [Fact]
+ public async Task NearText_TimeDecayBoost_DefaultsOriginToNow()
+ {
+ await _collection.Query.NearText(
+ "banana",
+ boost: Boost.TimeDecay("publishedAt", scale: "7d"),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.TimeDecay);
+ Assert.Equal("now", condition.TimeDecay.Origin);
+ Assert.False(condition.TimeDecay.HasOffset);
+ Assert.False(condition.TimeDecay.HasCurve);
+ Assert.False(condition.TimeDecay.HasDecayValue);
+ Assert.False(request.Boost.HasWeight);
+ Assert.False(request.Boost.HasDepth);
+ }
+
+ ///
+ /// Tests that the TimeSpan and DateTimeOffset overload converts to duration and RFC3339 strings
+ ///
+ [Fact]
+ public async Task NearText_TimeDecayBoost_ConvertsTimeSpanAndDateTimeOffset()
+ {
+ await _collection.Query.NearText(
+ "banana",
+ boost: Boost.TimeDecay(
+ "publishedAt",
+ scale: TimeSpan.FromDays(7),
+ origin: new DateTimeOffset(2024, 5, 1, 12, 0, 0, TimeSpan.Zero),
+ offset: TimeSpan.FromHours(36)
+ ),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.TimeDecay);
+ Assert.Equal("7d", condition.TimeDecay.Scale);
+ Assert.Equal("36h", condition.TimeDecay.Offset);
+ Assert.Equal("2024-05-01T12:00:00.0000000+00:00", condition.TimeDecay.Origin);
+ }
+
+ ///
+ /// Tests that a numeric decay boost serializes its fields
+ ///
+ [Fact]
+ public async Task NearVector_NumericDecayBoost_SerializesAllValues()
+ {
+ await _collection.Query.NearVector(
+ new float[] { 1f, 2f, 3f },
+ boost: Boost.NumericDecay(
+ "price",
+ origin: 50,
+ scale: 10,
+ offset: 5,
+ curve: Boost.Curve.Linear,
+ decay: 0.3f
+ ),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.NumericDecay);
+ Assert.Equal("price", condition.NumericDecay.Property);
+ Assert.Equal(50d, condition.NumericDecay.Origin);
+ Assert.Equal(10d, condition.NumericDecay.Scale);
+ Assert.Equal(5d, condition.NumericDecay.Offset);
+ Assert.Equal(V1.Boost.Types.DecayCurve.Linear, condition.NumericDecay.Curve);
+ Assert.Equal(0.3f, condition.NumericDecay.DecayValue);
+ }
+
+ ///
+ /// Tests that the exponential curve maps to the proto exponential value
+ ///
+ [Fact]
+ public async Task NearVector_NumericDecayBoost_MapsExponentialCurve()
+ {
+ await _collection.Query.NearVector(
+ new float[] { 1f, 2f, 3f },
+ boost: Boost.NumericDecay("price", origin: 50, scale: 10, curve: Boost.Curve.Exponential),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.NumericDecay);
+ Assert.Equal(V1.Boost.Types.DecayCurve.Exponential, condition.NumericDecay.Curve);
+ Assert.False(condition.NumericDecay.HasOffset);
+ Assert.False(condition.NumericDecay.HasDecayValue);
+ }
+
+ ///
+ /// Tests that a numeric property boost with a modifier serializes it
+ ///
+ [Fact]
+ public async Task NearObject_NumericPropertyBoost_SerializesModifier()
+ {
+ await _collection.Query.NearObject(
+ Guid.NewGuid(),
+ boost: Boost.NumericProperty("viewCount", modifier: Boost.Modifier.Log1P),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.PropertyValue);
+ Assert.Equal("viewCount", condition.PropertyValue.Property);
+ Assert.Equal(V1.Boost.Types.PropertyValueModifier.Log1P, condition.PropertyValue.Modifier);
+ }
+
+ ///
+ /// Tests that a numeric property boost without a modifier leaves the field unset
+ ///
+ [Fact]
+ public async Task NearMedia_NumericPropertyBoost_OmitsModifierWhenUnset()
+ {
+ await _collection.Query.NearMedia(
+ m => m.Image(TestMediaBytes).Build(),
+ boost: Boost.NumericProperty("viewCount"),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.NearImage);
+ Assert.NotNull(request.Boost);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.PropertyValue);
+ Assert.False(condition.PropertyValue.HasModifier);
+ }
+
+ ///
+ /// Tests that blend turns sub-boost weights into per-condition weights
+ ///
+ [Fact]
+ public async Task BM25_BlendBoost_CombinesConditionsAndWeights()
+ {
+ var blended = Boost.Blend(
+ [
+ Boost.TimeDecay("publishedAt", scale: "7d", weight: 2f),
+ Boost.NumericProperty("viewCount"),
+ Boost.NumericProperty("spamScore", weight: -1f),
+ ],
+ weight: 0.8f,
+ depth: 300
+ );
+
+ await _collection.Query.BM25(
+ "banana",
+ boost: blended,
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ Assert.Equal(0.8f, request.Boost.Weight);
+ Assert.Equal(300u, request.Boost.Depth);
+ Assert.Equal(3, request.Boost.Conditions.Count);
+ Assert.True(request.Boost.Conditions[0].HasWeight);
+ Assert.Equal(2f, request.Boost.Conditions[0].Weight);
+ Assert.NotNull(request.Boost.Conditions[0].TimeDecay);
+ Assert.False(request.Boost.Conditions[1].HasWeight);
+ Assert.NotNull(request.Boost.Conditions[1].PropertyValue);
+ Assert.True(request.Boost.Conditions[2].HasWeight);
+ Assert.Equal(-1f, request.Boost.Conditions[2].Weight);
+ }
+
+ ///
+ /// Tests that blend rejects an empty input
+ ///
+ [Fact]
+ public void Blend_Throws_OnEmptyInput()
+ {
+ Assert.Throws(() => Boost.Blend([]));
+ }
+
+ ///
+ /// Tests that blend rejects sub-boosts carrying their own depth
+ ///
+ [Fact]
+ public void Blend_Throws_OnSubBoostDepth()
+ {
+ Assert.Throws(() =>
+ Boost.Blend([Boost.NumericProperty("viewCount", depth: 10)])
+ );
+ }
+
+ ///
+ /// Tests that the generate surface threads the boost into the request
+ ///
+ [Fact]
+ public async Task Generate_BM25_WithBoost_SerializesBoost()
+ {
+ await _collection.Generate.BM25(
+ "banana",
+ boost: Boost.NumericProperty("viewCount", modifier: Boost.Modifier.Sqrt),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ var condition = Assert.Single(request.Boost.Conditions);
+ Assert.NotNull(condition.PropertyValue);
+ Assert.Equal(V1.Boost.Types.PropertyValueModifier.Sqrt, condition.PropertyValue.Modifier);
+ }
+
+ ///
+ /// Tests that the typed query surface threads the boost into the request
+ ///
+ [Fact]
+ public async Task TypedQuery_BM25_WithBoost_SerializesBoost()
+ {
+ var typed = new TypedQueryClient(_collection.Query);
+
+ await typed.BM25(
+ "banana",
+ boost: Boost.Filter(Filter.Property("category").IsEqual("fruit"), weight: 0.5f),
+ cancellationToken: TestContext.Current.CancellationToken
+ );
+
+ var request = _getRequest();
+ Assert.NotNull(request);
+ Assert.NotNull(request.Boost);
+ Assert.True(request.Boost.HasWeight);
+ Assert.Equal(0.5f, request.Boost.Weight);
+ }
+
+ ///
+ /// The test document class used for typed client tests
+ ///
+ private class TestDocument
+ {
+ ///
+ /// Gets or sets the value of the category
+ ///
+ public string Category { get; set; } = string.Empty;
+ }
+}
diff --git a/src/Weaviate.Client/GenerateClient.BM25.cs b/src/Weaviate.Client/GenerateClient.BM25.cs
index e199cc24..bed1a8ba 100644
--- a/src/Weaviate.Client/GenerateClient.BM25.cs
+++ b/src/Weaviate.Client/GenerateClient.BM25.cs
@@ -19,6 +19,7 @@ public partial class GenerateClient
/// Maximum number of results
/// Offset for pagination
/// Rerank configuration
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generation
/// Grouped prompt for generation
/// Optional generative provider to enrich prompts that don't have a provider set. If the prompt already has a provider, it will not be overridden.
@@ -39,6 +40,7 @@ public async Task BM25(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -61,6 +63,7 @@ public async Task BM25(
offset: offset,
groupBy: groupBy,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
after: after,
@@ -85,6 +88,7 @@ public async Task BM25(
/// Maximum number of results
/// Offset for pagination
/// Rerank configuration
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generation
/// Grouped prompt for generation
/// Optional generative provider to enrich prompts that don't have a provider set. If the prompt already has a provider, it will not be overridden.
@@ -104,6 +108,7 @@ public async Task BM25(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -126,6 +131,7 @@ public async Task BM25(
offset: offset,
groupBy: null,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
after: after,
diff --git a/src/Weaviate.Client/GenerateClient.Hybrid.cs b/src/Weaviate.Client/GenerateClient.Hybrid.cs
index 9dcd8d1d..100ff4bd 100644
--- a/src/Weaviate.Client/GenerateClient.Hybrid.cs
+++ b/src/Weaviate.Client/GenerateClient.Hybrid.cs
@@ -23,6 +23,7 @@ public Task Hybrid(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -45,6 +46,7 @@ public Task Hybrid(
autoLimit: autoLimit,
filters: filters,
rerank: rerank,
+ boost: boost,
singlePrompt: singlePrompt,
groupedTask: groupedTask,
provider: provider,
@@ -71,6 +73,7 @@ public async Task Hybrid(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -102,6 +105,7 @@ public async Task Hybrid(
autoLimit: autoLimit,
filters: filters,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
tenant: _collectionClient.Tenant,
@@ -132,6 +136,7 @@ public Task Hybrid(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -155,6 +160,7 @@ public Task Hybrid(
autoLimit: autoLimit,
filters: filters,
rerank: rerank,
+ boost: boost,
singlePrompt: singlePrompt,
groupedTask: groupedTask,
provider: provider,
@@ -182,6 +188,7 @@ public async Task Hybrid(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -214,6 +221,7 @@ public async Task Hybrid(
filters: filters,
groupBy: groupBy,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
tenant: _collectionClient.Tenant,
@@ -262,6 +270,7 @@ public static async Task Hybrid(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -284,6 +293,7 @@ await client.Hybrid(
autoLimit: autoLimit,
filters: filters,
rerank: rerank,
+ boost: boost,
singlePrompt: singlePrompt,
groupedTask: groupedTask,
provider: provider,
@@ -313,6 +323,7 @@ public static async Task Hybrid(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -336,6 +347,7 @@ await client.Hybrid(
autoLimit: autoLimit,
filters: filters,
rerank: rerank,
+ boost: boost,
singlePrompt: singlePrompt,
groupedTask: groupedTask,
provider: provider,
diff --git a/src/Weaviate.Client/GenerateClient.NearMedia.cs b/src/Weaviate.Client/GenerateClient.NearMedia.cs
index 607f663d..f266b431 100644
--- a/src/Weaviate.Client/GenerateClient.NearMedia.cs
+++ b/src/Weaviate.Client/GenerateClient.NearMedia.cs
@@ -30,6 +30,7 @@ public partial class GenerateClient
/// Number of results to skip.
/// Automatic result cutoff threshold.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -46,6 +47,7 @@ public async Task NearMedia(
uint? offset = null,
uint? autoLimit = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -69,6 +71,7 @@ public async Task NearMedia(
filters: filters,
groupBy: null,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
tenant: _collectionClient.Tenant,
@@ -102,6 +105,7 @@ public async Task NearMedia(
/// Number of results to skip.
/// Automatic result cutoff threshold.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -119,6 +123,7 @@ public async Task NearMedia(
uint? offset = null,
uint? autoLimit = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -142,6 +147,7 @@ public async Task NearMedia(
filters: filters,
groupBy: groupBy,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
tenant: _collectionClient.Tenant,
diff --git a/src/Weaviate.Client/GenerateClient.NearObject.cs b/src/Weaviate.Client/GenerateClient.NearObject.cs
index e1035d82..0a8b7349 100644
--- a/src/Weaviate.Client/GenerateClient.NearObject.cs
+++ b/src/Weaviate.Client/GenerateClient.NearObject.cs
@@ -19,6 +19,7 @@ public partial class GenerateClient
/// Auto-limit threshold
/// Filters to apply
/// Rerank configuration
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generation
/// Grouped prompt for generation
/// Optional generative provider to enrich prompts that don't have a provider set. If the prompt already has a provider, it will not be overridden.
@@ -38,6 +39,7 @@ public async Task NearObject(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -60,6 +62,7 @@ public async Task NearObject(
filters: filters,
groupBy: null,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
targetVector: targetVectors?.Invoke(new TargetVectors.Builder()),
@@ -87,6 +90,7 @@ public async Task NearObject(
/// Auto-limit threshold
/// Filters to apply
/// Rerank configuration
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generation
/// Grouped prompt for generation
/// Optional generative provider to enrich prompts that don't have a provider set. If the prompt already has a provider, it will not be overridden.
@@ -107,6 +111,7 @@ public async Task NearObject(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -129,6 +134,7 @@ public async Task NearObject(
filters: filters,
groupBy: groupBy,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
targetVector: targetVectors?.Invoke(new TargetVectors.Builder()),
diff --git a/src/Weaviate.Client/GenerateClient.NearText.cs b/src/Weaviate.Client/GenerateClient.NearText.cs
index 544f0603..07d9c1d1 100644
--- a/src/Weaviate.Client/GenerateClient.NearText.cs
+++ b/src/Weaviate.Client/GenerateClient.NearText.cs
@@ -21,6 +21,7 @@ public partial class GenerateClient
/// Auto-cut threshold
/// Filters to apply
/// Rerank configuration
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generation
/// Grouped prompt for generation
/// Optional generative provider to enrich prompts that don't have a provider set. If the prompt already has a provider, it will not be overridden.
@@ -41,6 +42,7 @@ public async Task NearText(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -65,6 +67,7 @@ public async Task NearText(
filters: filters,
tenant: _collectionClient.Tenant,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
consistencyLevel: _collectionClient.ConsistencyLevel,
@@ -91,6 +94,7 @@ public async Task NearText(
/// Auto-cut threshold
/// Filters to apply
/// Rerank configuration
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generation
/// Grouped prompt for generation
/// Optional generative provider to enrich prompts that don't have a provider set. If the prompt already has a provider, it will not be overridden.
@@ -112,6 +116,7 @@ public async Task NearText(
uint? autoLimit = null,
Filter? filters = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -136,6 +141,7 @@ public async Task NearText(
filters: filters,
tenant: _collectionClient.Tenant,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
targetVector: null,
@@ -158,6 +164,7 @@ public async Task NearText(
/// Number of results to skip.
/// Automatic result cutoff threshold.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -174,6 +181,7 @@ public async Task NearText(
uint? offset = null,
uint? autoLimit = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -198,6 +206,7 @@ public async Task NearText(
filters: filters,
tenant: _collectionClient.Tenant,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
consistencyLevel: _collectionClient.ConsistencyLevel,
@@ -220,6 +229,7 @@ public async Task NearText(
/// Number of results to skip.
/// Automatic result cutoff threshold.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -237,6 +247,7 @@ public async Task NearText(
uint? offset = null,
uint? autoLimit = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -261,6 +272,7 @@ public async Task NearText(
filters: filters,
tenant: _collectionClient.Tenant,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
targetVector: query.TargetVectors,
@@ -283,6 +295,7 @@ public async Task NearText(
/// Number of results to skip.
/// Automatic result cutoff threshold.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -299,6 +312,7 @@ public async Task NearText(
uint? offset = null,
uint? autoLimit = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -315,6 +329,7 @@ await NearText(
offset,
autoLimit,
rerank,
+ boost,
singlePrompt,
groupedTask,
provider,
@@ -335,6 +350,7 @@ await NearText(
/// Number of results to skip.
/// Automatic result cutoff threshold.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -352,6 +368,7 @@ public async Task NearText(
uint? offset = null,
uint? autoLimit = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -369,6 +386,7 @@ await NearText(
offset,
autoLimit,
rerank,
+ boost,
singlePrompt,
groupedTask,
provider,
diff --git a/src/Weaviate.Client/GenerateClient.NearVector.cs b/src/Weaviate.Client/GenerateClient.NearVector.cs
index d68013af..74bac5ab 100644
--- a/src/Weaviate.Client/GenerateClient.NearVector.cs
+++ b/src/Weaviate.Client/GenerateClient.NearVector.cs
@@ -20,6 +20,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -40,6 +41,7 @@ await _client.GrpcClient.SearchNearVector(
filters: filters,
tenant: _collectionClient.Tenant,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
consistencyLevel: _collectionClient.ConsistencyLevel,
@@ -63,6 +65,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -84,6 +87,7 @@ await _client.GrpcClient.SearchNearVector(
limit: limit,
tenant: _collectionClient.Tenant,
rerank: rerank,
+ boost: boost,
singlePrompt: EnrichPrompt(singlePrompt, provider) as SinglePrompt,
groupedTask: EnrichPrompt(groupedTask, provider) as GroupedTask,
consistencyLevel: _collectionClient.ConsistencyLevel,
@@ -106,6 +110,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -124,6 +129,7 @@ await NearVector(
limit,
offset,
rerank,
+ boost,
singlePrompt,
groupedTask,
provider,
@@ -147,6 +153,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -166,6 +173,7 @@ await NearVector(
limit,
offset,
rerank,
+ boost,
singlePrompt,
groupedTask,
provider,
@@ -185,6 +193,7 @@ await NearVector(
/// Maximum number of results to return.
/// Number of results to skip.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -201,6 +210,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -219,6 +229,7 @@ await NearVector(
limit: limit,
offset: offset,
rerank: rerank,
+ boost: boost,
singlePrompt: singlePrompt,
groupedTask: groupedTask,
provider: provider,
@@ -239,6 +250,7 @@ await NearVector(
/// Maximum number of results to return.
/// Number of results to skip.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -256,6 +268,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -275,6 +288,7 @@ await NearVector(
limit: limit,
offset: offset,
rerank: rerank,
+ boost: boost,
singlePrompt: singlePrompt,
groupedTask: groupedTask,
provider: provider,
@@ -294,6 +308,7 @@ await NearVector(
/// Maximum number of results to return.
/// Number of results to skip.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -310,6 +325,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -326,6 +342,7 @@ await NearVector(
limit,
offset,
rerank,
+ boost,
singlePrompt,
groupedTask,
provider,
@@ -346,6 +363,7 @@ await NearVector(
/// Maximum number of results to return.
/// Number of results to skip.
/// Re-ranking configuration.
+ /// The boost for soft-ranking results. Preview: requires Weaviate 1.38+ (older servers silently ignore it)
/// Single prompt for generative AI.
/// Grouped task for generative AI.
/// Generative AI provider configuration.
@@ -363,6 +381,7 @@ public async Task NearVector(
uint? limit = null,
uint? offset = null,
Rerank? rerank = null,
+ Boost? boost = null,
SinglePrompt? singlePrompt = null,
GroupedTask? groupedTask = null,
GenerativeProvider? provider = null,
@@ -380,6 +399,7 @@ await NearVector(
limit,
offset,
rerank,
+ boost,
singlePrompt,
groupedTask,
provider,
diff --git a/src/Weaviate.Client/Models/Boost.cs b/src/Weaviate.Client/Models/Boost.cs
new file mode 100644
index 00000000..2f2e8461
--- /dev/null
+++ b/src/Weaviate.Client/Models/Boost.cs
@@ -0,0 +1,334 @@
+using System.Globalization;
+
+namespace Weaviate.Client.Models;
+
+///
+/// Soft-rank search results: promote or demote objects without removing them from the result set.
+///
+/// A boost is a query-time rescorer. The primary search (vector, hybrid, or BM25) fetches a pool of
+/// candidates, the boost re-scores them against its conditions, and the results are re-sorted. Unlike
+/// a filter, a boost never excludes objects: non-matching objects stay in the result set but rank lower.
+///
+/// Use the static factory methods to build a boost, then pass it to a query or generate method via
+/// the boost parameter:
+///
+/// - : promote or demote objects matching a filter condition.
+/// - : rank by recency, decaying with distance from an origin date.
+/// - : rank by closeness to a target numeric value.
+/// - : rank by a numeric property's raw value.
+/// - : combine several of the above, each with its own weight.
+///
+///
+/// Preview feature: requires Weaviate 1.38 or later. Older servers silently ignore the boost.
+///
+public sealed record Boost
+{
+ ///
+ /// The decay curve used by a distance-based boost (TimeDecay, NumericDecay).
+ /// Each curve scores 1 at the origin and falls to the decay value at scale distance.
+ ///
+ public enum Curve
+ {
+ /// Heavy-tailed decay that halves geometrically. The server default if no curve is set.
+ Exponential,
+
+ /// Bell-shaped decay with a sharp falloff once past scale.
+ Gaussian,
+
+ /// Straight-line decay that reaches zero beyond scale.
+ Linear,
+ }
+
+ ///
+ /// The transform applied to a numeric property's value in before
+ /// normalization. Use a modifier to reduce the impact of large property values. If no modifier
+ /// is set, the raw value is used.
+ ///
+ public enum Modifier
+ {
+ /// Apply log(1 + value) to strongly reduce the impact of large values.
+ Log1P,
+
+ /// Apply sqrt(value) to mildly reduce the impact of large values.
+ Sqrt,
+ }
+
+ internal sealed record TimeDecayFunction(
+ string Property,
+ string Origin,
+ string Scale,
+ string? Offset,
+ Curve? DecayCurve,
+ float? DecayValue
+ );
+
+ internal sealed record NumericDecayFunction(
+ string Property,
+ double Origin,
+ double Scale,
+ double? Offset,
+ Curve? DecayCurve,
+ float? DecayValue
+ );
+
+ internal sealed record PropertyValueFunction(string Property, Modifier? ValueModifier);
+
+ internal sealed record Condition
+ {
+ internal Filter? Filter { get; init; }
+ internal TimeDecayFunction? TimeDecay { get; init; }
+ internal NumericDecayFunction? NumericDecay { get; init; }
+ internal PropertyValueFunction? PropertyValue { get; init; }
+ internal float? Weight { get; init; }
+ }
+
+ internal IReadOnlyList Conditions { get; }
+ internal float? Weight { get; }
+ internal uint? Depth { get; }
+
+ private Boost(IReadOnlyList conditions, float? weight, uint? depth)
+ {
+ Conditions = conditions;
+ Weight = weight;
+ Depth = depth;
+ }
+
+ ///
+ /// Promote or demote objects that match a filter condition.
+ ///
+ /// Matching objects score 1 and non-matching objects score 0, so this acts as a soft where-filter:
+ /// non-matching objects are demoted but stay in the result set.
+ ///
+ /// The filter condition, built the same way as for the filters parameter.
+ /// Only equality/comparison operators and And/Or/Not are supported.
+ /// How much the boost influences the final score, in [0, 1]: the result is
+ /// (1 - weight) of the primary score plus weight of the boost score. 0 is a no-op.
+ /// If not set, the server default of 0.5 is used.
+ /// How many candidates the primary search fetches for the boost to re-score.
+ /// If not set, the server default (100) is used.
+ /// The boost
+ public static Boost Filter(Filter filter, float? weight = null, uint? depth = null) =>
+ new([new Condition { Filter = filter }], weight, depth);
+
+ ///
+ /// Rank objects by recency: the score decays with distance from an origin date.
+ ///
+ /// Objects at the origin score 1; the score falls along the chosen curve as the property
+ /// value moves away from the origin. Use this to favour more recent (or near-a-date) objects.
+ ///
+ /// The name of the date property to measure distance from.
+ /// The distance from the origin at which the score equals .
+ /// The reference point. If not set, the current time ("now") is used.
+ /// Objects within this distance from the origin keep the full score of 1;
+ /// decay starts beyond it. If not set, no offset is applied.
+ /// The decay curve. If not set, the server default () is used.
+ /// The score at distance from the origin, in (0, 1].
+ /// If not set, the server default of 0.5 is used.
+ /// How much the boost influences the final score, in [0, 1]: the result is
+ /// (1 - weight) of the primary score plus weight of the boost score. 0 is a no-op.
+ /// If not set, the server default of 0.5 is used.
+ /// How many candidates the primary search fetches for the boost to re-score.
+ /// If not set, the server default (100) is used.
+ /// The boost
+ public static Boost TimeDecay(
+ string property,
+ TimeSpan scale,
+ DateTimeOffset? origin = null,
+ TimeSpan? offset = null,
+ Curve? curve = null,
+ float? decay = null,
+ float? weight = null,
+ uint? depth = null
+ ) =>
+ TimeDecay(
+ property,
+ ToDurationString(scale),
+ origin?.ToString("o", CultureInfo.InvariantCulture),
+ offset is not null ? ToDurationString(offset.Value) : null,
+ curve,
+ decay,
+ weight,
+ depth
+ );
+
+ ///
+ /// Rank objects by recency, with the origin and distances given as strings.
+ ///
+ /// The name of the date property to measure distance from.
+ /// The distance from the origin at which the score equals ,
+ /// as a duration string such as "7d", "24h", "30m".
+ /// The reference point: "now" or an RFC3339 timestamp. If not set, "now" is used.
+ /// Objects within this distance from the origin keep the full score of 1;
+ /// decay starts beyond it. Accepts the same format as . If not set, no offset is applied.
+ /// The decay curve. If not set, the server default () is used.
+ /// The score at distance from the origin, in (0, 1].
+ /// If not set, the server default of 0.5 is used.
+ /// How much the boost influences the final score, in [0, 1]: the result is
+ /// (1 - weight) of the primary score plus weight of the boost score. 0 is a no-op.
+ /// If not set, the server default of 0.5 is used.
+ /// How many candidates the primary search fetches for the boost to re-score.
+ /// If not set, the server default (100) is used.
+ /// The boost
+ public static Boost TimeDecay(
+ string property,
+ string scale,
+ string? origin = null,
+ string? offset = null,
+ Curve? curve = null,
+ float? decay = null,
+ float? weight = null,
+ uint? depth = null
+ ) =>
+ new(
+ [
+ new Condition
+ {
+ TimeDecay = new TimeDecayFunction(
+ property,
+ origin ?? "now",
+ scale,
+ offset,
+ curve,
+ decay
+ ),
+ },
+ ],
+ weight,
+ depth
+ );
+
+ ///
+ /// Rank objects by closeness to a target numeric value: the score decays with distance from it.
+ ///
+ /// Use this when "closer to X is better" (e.g. prefer prices near 50). For simple
+ /// "higher is better" ranking without an origin, use instead.
+ ///
+ /// The name of the numeric (int/number) property to measure distance from.
+ /// The target value; objects closest to it score highest.
+ /// The distance from the origin at which the score equals .
+ /// Objects within this distance from the origin keep the full score of 1;
+ /// decay starts beyond it. If not set, no offset is applied.
+ /// The decay curve. If not set, the server default () is used.
+ /// The score at distance from the origin, in (0, 1].
+ /// If not set, the server default of 0.5 is used.
+ /// How much the boost influences the final score, in [0, 1]: the result is
+ /// (1 - weight) of the primary score plus weight of the boost score. 0 is a no-op.
+ /// If not set, the server default of 0.5 is used.
+ /// How many candidates the primary search fetches for the boost to re-score.
+ /// If not set, the server default (100) is used.
+ /// The boost
+ public static Boost NumericDecay(
+ string property,
+ double origin,
+ double scale,
+ double? offset = null,
+ Curve? curve = null,
+ float? decay = null,
+ float? weight = null,
+ uint? depth = null
+ ) =>
+ new(
+ [
+ new Condition
+ {
+ NumericDecay = new NumericDecayFunction(
+ property,
+ origin,
+ scale,
+ offset,
+ curve,
+ decay
+ ),
+ },
+ ],
+ weight,
+ depth
+ );
+
+ ///
+ /// Rank objects by a numeric property's raw value: higher values rank higher.
+ ///
+ /// Use this for simple proportional ranking (e.g. popularity count, review score). For
+ /// distance-based decay from a target value, use instead.
+ ///
+ /// The name of the numeric (int/number) property to use as a ranking signal.
+ /// A transform applied to the value before normalization:
+ /// or . If not set, the raw value is used.
+ /// How much the boost influences the final score, in [0, 1]: the result is
+ /// (1 - weight) of the primary score plus weight of the boost score. 0 is a no-op.
+ /// If not set, the server default of 0.5 is used.
+ /// How many candidates the primary search fetches for the boost to re-score.
+ /// If not set, the server default (100) is used.
+ /// The boost
+ public static Boost NumericProperty(
+ string name,
+ Modifier? modifier = null,
+ float? weight = null,
+ uint? depth = null
+ ) => new([new Condition { PropertyValue = new PropertyValueFunction(name, modifier) }], weight, depth);
+
+ ///
+ /// Combine several boosts into one, each weighted relative to the others.
+ ///
+ /// Each input boost's weight becomes a per-condition weight, balancing the conditions against
+ /// each other (e.g. recency twice as important as popularity). A per-condition weight defaults
+ /// to 1.0 and may be negative to actively demote matching objects. The
+ /// argument here is separate: it sets the overall strength of the combined boost. A boost may
+ /// carry at most 20 conditions in total.
+ ///
+ /// The boosts to combine, created via the other factory methods.
+ /// How much the combined boost influences the final score, in [0, 1]: the
+ /// result is (1 - weight) of the primary score plus weight of the boost score. 0 is a no-op.
+ /// If not set, the server default of 0.5 is used.
+ /// How many candidates the primary search fetches for the boost to re-score.
+ /// If not set, the server default (100) is used.
+ /// No boosts are provided, or an input boost has its own
+ /// depth set (set here on Blend instead).
+ /// The boost
+ public static Boost Blend(IEnumerable boosts, float? weight = null, uint? depth = null)
+ {
+ var inputs = boosts.ToList();
+ if (inputs.Count == 0)
+ {
+ throw new ArgumentException("Boost.Blend requires at least one boost.", nameof(boosts));
+ }
+ if (inputs.Any(b => b.Depth is not null))
+ {
+ throw new ArgumentException(
+ "Cannot set depth on sub-boosts passed to Boost.Blend. Use the top-level depth parameter instead.",
+ nameof(boosts)
+ );
+ }
+ var conditions = new List();
+ foreach (var input in inputs)
+ {
+ foreach (var condition in input.Conditions)
+ {
+ conditions.Add(
+ condition.Weight is null && input.Weight is not null
+ ? condition with { Weight = input.Weight }
+ : condition
+ );
+ }
+ }
+ return new Boost(conditions, weight, depth);
+ }
+
+ private static string ToDurationString(TimeSpan value)
+ {
+ var totalSeconds = value.TotalSeconds;
+ if (totalSeconds >= 86400 && totalSeconds % 86400 == 0)
+ {
+ return $"{(long)(totalSeconds / 86400)}d";
+ }
+ if (totalSeconds >= 3600 && totalSeconds % 3600 == 0)
+ {
+ return $"{(long)(totalSeconds / 3600)}h";
+ }
+ if (totalSeconds >= 60 && totalSeconds % 60 == 0)
+ {
+ return $"{(long)(totalSeconds / 60)}m";
+ }
+ return string.Create(CultureInfo.InvariantCulture, $"{totalSeconds}s");
+ }
+}
diff --git a/src/Weaviate.Client/PublicAPI.Unshipped.txt b/src/Weaviate.Client/PublicAPI.Unshipped.txt
index 09359d23..f760ad11 100644
--- a/src/Weaviate.Client/PublicAPI.Unshipped.txt
+++ b/src/Weaviate.Client/PublicAPI.Unshipped.txt
@@ -9,3 +9,236 @@ Weaviate.Client.Models.Vectorizer.Text2VecGoogle.Location.set -> void
Weaviate.Client.VectorizerFactory.Text2VecAWSBedrock(string! region, string! model, int? dimensions = null, bool? vectorizeCollectionName = null) -> Weaviate.Client.Models.VectorizerConfig!
Weaviate.Client.VectorizerFactory.Text2VecAWSSagemaker(string! region, string! endpoint, string? targetModel = null, string? targetVariant = null, int? dimensions = null, bool? vectorizeCollectionName = null) -> Weaviate.Client.Models.VectorizerConfig!
Weaviate.Client.VectorizerFactory.Text2VecGoogleVertex(string? apiEndpoint = null, string? model = null, string? projectId = null, string? titleProperty = null, int? dimensions = null, string? taskType = null, bool? vectorizeCollectionName = null, string? location = null) -> Weaviate.Client.Models.VectorizerConfig!
+*REMOVED*Weaviate.Client.GenerateClient.BM25(string! query, Weaviate.Client.Models.GroupByRequest! groupBy, string![]? searchFields = null, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, System.Guid? after = null, Weaviate.Client.ConsistencyLevels? consistencyLevel = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Collections.Generic.IList? returnReferences = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.BM25(string! query, string![]? searchFields = null, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, System.Guid? after = null, Weaviate.Client.ConsistencyLevels? consistencyLevel = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Collections.Generic.IList? returnReferences = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.Hybrid(string! query, Weaviate.Client.Models.GroupByRequest! groupBy, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.Hybrid(string! query, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.Hybrid(string? query, Weaviate.Client.Models.HybridVectorInput? vectors, Weaviate.Client.Models.GroupByRequest! groupBy, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.Hybrid(string? query, Weaviate.Client.Models.HybridVectorInput? vectors, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearMedia(Weaviate.Client.NearMediaInput.FactoryFn! media, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearMedia(Weaviate.Client.NearMediaInput.FactoryFn! media, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearObject(System.Guid nearObject, Weaviate.Client.Models.GroupByRequest! groupBy, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targetVectors = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearObject(System.Guid nearObject, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targetVectors = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearText(Weaviate.Client.Internal.AutoArray! query, Weaviate.Client.Models.GroupByRequest! groupBy, float? certainty = null, float? distance = null, Weaviate.Client.Models.Move? moveTo = null, Weaviate.Client.Models.Move? moveAway = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearText(Weaviate.Client.Internal.AutoArray! query, float? certainty = null, float? distance = null, Weaviate.Client.Models.Move? moveTo = null, Weaviate.Client.Models.Move? moveAway = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearText(Weaviate.Client.Models.NearTextInput! query, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearText(Weaviate.Client.Models.NearTextInput! query, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearText(Weaviate.Client.Models.NearTextInput.FactoryFn! query, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearText(Weaviate.Client.Models.NearTextInput.FactoryFn! query, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.NearVectorInput! query, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.NearVectorInput! query, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.NearVectorInput.FactoryFn! vectors, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.NearVectorInput.FactoryFn! vectors, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.VectorSearchInput! vectors, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.VectorSearchInput! vectors, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.VectorSearchInput.FactoryFn! vectors, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.GenerateClient.NearVector(Weaviate.Client.Models.VectorSearchInput.FactoryFn! vectors, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.BM25(string! query, Weaviate.Client.Models.GroupByRequest! groupBy, string![]? searchFields = null, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? searchOperator = null, Weaviate.Client.Models.Rerank? rerank = null, System.Guid? after = null, Weaviate.Client.ConsistencyLevels? consistencyLevel = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Collections.Generic.IList? returnReferences = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.BM25(string! query, string![]? searchFields = null, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? searchOperator = null, Weaviate.Client.Models.Rerank? rerank = null, System.Guid? after = null, Weaviate.Client.ConsistencyLevels? consistencyLevel = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Collections.Generic.IList? returnReferences = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.Hybrid(string! query, Weaviate.Client.Models.GroupByRequest! groupBy, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.Hybrid(string! query, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.Hybrid(string? query, Weaviate.Client.Models.HybridVectorInput? vectors, Weaviate.Client.Models.GroupByRequest! groupBy, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.Hybrid(string? query, Weaviate.Client.Models.HybridVectorInput? vectors, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearMedia(Weaviate.Client.NearMediaInput.FactoryFn! query, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearMedia(Weaviate.Client.NearMediaInput.FactoryFn! query, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearMedia(byte[]! media, Weaviate.Client.Models.NearMediaType mediaType, Weaviate.Client.Models.GroupByRequest! groupBy, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targets = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearMedia(byte[]! media, Weaviate.Client.Models.NearMediaType mediaType, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targets = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearObject(System.Guid nearObject, Weaviate.Client.Models.GroupByRequest! groupBy, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targets = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearObject(System.Guid nearObject, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targets = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearText(Weaviate.Client.Internal.AutoArray! query, Weaviate.Client.Models.GroupByRequest! groupBy, float? certainty = null, float? distance = null, Weaviate.Client.Models.Move? moveTo = null, Weaviate.Client.Models.Move? moveAway = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearText(Weaviate.Client.Internal.AutoArray! query, float? certainty = null, float? distance = null, Weaviate.Client.Models.Move? moveTo = null, Weaviate.Client.Models.Move? moveAway = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearText(Weaviate.Client.Models.NearTextInput.FactoryFn! query, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearText(Weaviate.Client.Models.NearTextInput.FactoryFn! query, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.NearVectorInput! query, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.NearVectorInput! query, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.NearVectorInput.FactoryFn! vectors, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.NearVectorInput.FactoryFn! vectors, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.VectorSearchInput! vectors, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.VectorSearchInput! vectors, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.VectorSearchInput.FactoryFn! vectors, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.QueryClient.NearVector(Weaviate.Client.Models.VectorSearchInput.FactoryFn! vectors, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, float? certainty = null, float? distance = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.BM25(string! query, Weaviate.Client.Models.GroupByRequest! groupBy, string![]? searchFields = null, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, System.Guid? after = null, Weaviate.Client.ConsistencyLevels? consistencyLevel = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Collections.Generic.IList? returnReferences = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.BM25(string! query, string![]? searchFields = null, Weaviate.Client.Models.Filter? filters = null, uint? autoLimit = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, System.Guid? after = null, Weaviate.Client.ConsistencyLevels? consistencyLevel = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Collections.Generic.IList? returnReferences = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.Hybrid(string! query, Weaviate.Client.Models.GroupByRequest! groupBy, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.Hybrid(string! query, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.Hybrid(string? query, Weaviate.Client.Models.HybridVectorInput? vectors, Weaviate.Client.Models.GroupByRequest! groupBy, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.Hybrid(string? query, Weaviate.Client.Models.HybridVectorInput? vectors, float? alpha = null, string![]? queryProperties = null, Weaviate.Client.Models.HybridFusion? fusionType = null, float? maxVectorDistance = null, uint? limit = null, uint? offset = null, Weaviate.Client.Models.BM25Operator? bm25Operator = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.NearMedia(Weaviate.Client.NearMediaInput.FactoryFn! media, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.NearMedia(Weaviate.Client.NearMediaInput.FactoryFn! media, Weaviate.Client.Models.GroupByRequest! groupBy, Weaviate.Client.Models.Filter? filters = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.NearObject(System.Guid nearObject, Weaviate.Client.Models.GroupByRequest! groupBy, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targetVectors = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.NearObject(System.Guid nearObject, double? certainty = null, double? distance = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Models.TargetVectors.FactoryFn? targetVectors = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!>!
+*REMOVED*Weaviate.Client.Typed.TypedGenerateClient.NearText(Weaviate.Client.Internal.AutoArray! query, Weaviate.Client.Models.GroupByRequest! groupBy, float? certainty = null, float? distance = null, Weaviate.Client.Models.Move? moveTo = null, Weaviate.Client.Models.Move? moveAway = null, uint? limit = null, uint? offset = null, uint? autoLimit = null, Weaviate.Client.Models.Filter? filters = null, Weaviate.Client.Models.Rerank? rerank = null, Weaviate.Client.Models.SinglePrompt? singlePrompt = null, Weaviate.Client.Models.GroupedTask? groupedTask = null, Weaviate.Client.Models.GenerativeProvider? provider = null, Weaviate.Client.Internal.AutoArray? returnProperties = null, System.Collections.Generic.IList? returnReferences = null, Weaviate.Client.Models.MetadataQuery? returnMetadata = null, Weaviate.Client.Models.VectorQuery? includeVectors = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task