Skip to content

Conversation

@mpartipilo
Copy link
Collaborator

@mpartipilo mpartipilo commented Dec 28, 2025

Overview

This PR significantly enhances the vector search API by introducing flexible syntax patterns, comprehensive builder interfaces, and improved type safety for multi-target vector operations.

Key Improvements

1. Flexible Vector Input Syntax 🎯

Introduced multiple ways to specify vectors in searches, supporting various coding styles:

// Simple float array (implicit conversion)
await collection.Query.NearVector(new[] { 1f, 2f, 3f });

// Named vectors
await collection.Query.NearVector(new Vectors {
    { "title", new[] { 1f, 2f } },
    { "description", new[] { 3f, 4f } }
});

// Lambda builder with combinations
await collection.Query.NearVector(
    v => v.Sum(
        ("title", new[] { 1f, 2f }),
        ("description", new[] { 3f, 4f })
    )
);

2. Multi-Target Vector Combinations 🔄

Added support for multiple combination strategies:

  • Sum - Combine vectors via addition
  • Average - Average multiple target vectors
  • Minimum - Use minimum values across vectors
  • ManualWeights - Custom weights for each target
  • RelativeScore - Relative score-based weighting
  • Vectors - Direct vector input without combination

3. Hybrid Search Enhancements 🔀

Simplified hybrid search with flexible input options:

// Text + vectors
await collection.Query.Hybrid(null, ("search", new[] { 1f, 2f, 3f }));

// NearText with target vectors
await collection.Query.Hybrid(
    new NearTextInput("banana",
        TargetVectors: TargetVectors.Sum("title", "description"))
);

// Lambda builder
await collection.Query.Hybrid(
    "search",
    v => v.NearText().Average("title", "desc")
);

4. Improved Type Safety

  • Changed builder methods from float[] to Vector type
  • Benefits from implicit conversions (float[], double[], int[], etc.)
  • Cleaner implementation without explicit casts
  • Better IntelliSense and type inference

5. Comprehensive Test Coverage 🧪

Added 126 new unit tests covering all syntax patterns:

  • QueryClient.NearVector (11 tests)
  • QueryClient.NearText (13 tests)
  • QueryClient.Hybrid (86 tests)
  • GenerateClient methods (8 tests)
  • AggregateClient methods (8 tests)

All tests validate request structure and ensure API consistency.

6. Enhanced Mock Infrastructure 🔧

  • Added CreateWithSearchCapture() for capturing Search requests
  • Added CreateWithAggregateCapture() for capturing Aggregate requests
  • Support for testing gRPC-based clients in unit tests

API Changes

Builder Interfaces

INearVectorBuilder:

NearVectorInput Sum(params (string Name, Vector Vector)[] targets);
NearVectorInput Average(params (string Name, Vector Vector)[] targets);
NearVectorInput Minimum(params (string Name, Vector Vector)[] targets);
NearVectorInput ManualWeights(params (string Name, double Weight, Vector Vector)[] targets);
NearVectorInput RelativeScore(params (string Name, double Weight, Vector Vector)[] targets);

IHybridNearVectorBuilder: (same methods for hybrid searches)

Backward Compatibility

✅ All existing code continues to work unchanged
✅ 1017 tests passing (0 failures)
Vector implicit conversions maintain compatibility with float[] and double[]

Documentation

  • Updated VECTOR_API_OVERVIEW.md with comprehensive examples
  • All documented patterns have corresponding unit tests
  • Clear examples for each syntax variation

Testing

dotnet test --filter "Category!=Slow"
# Result: Passed! - Failed: 0, Passed: 1017, Skipped: 7

Files Changed

  • VectorInputBuilders.cs - Builder interfaces and implementations
  • VectorSearchInput.cs - Core vector search types
  • QueryClient.*.cs - Query method overloads
  • GenerateClient.*.cs - Generate method overloads
  • AggregateClient.*.cs - Aggregate method overloads
  • HybridVectorInput.cs - Hybrid search input types
  • Test files - 126 new unit tests
  • Mock helpers - Enhanced gRPC mocking support

Copy link

@orca-security-eu orca-security-eu bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Orca Security Scan Summary

Status Check Issues by priority
Passed Passed Infrastructure as Code high 0   medium 0   low 0   info 0 View in Orca
Passed Passed SAST high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Secrets high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Vulnerabilities high 0   medium 0   low 0   info 0 View in Orca

…capabilities

- Updated `BaseAggregateRequest` to streamline NearText and NearVector handling by introducing helper methods.
- Enhanced `ToGrpcTargets` to differentiate between simple and weighted target vectors.
- Simplified vector deserialization in `Result` class.
- Refactored `BuildTargetVector` to support NamedVector and VectorSearchInput, improving target vector creation logic.
- Modified `Search` methods to accept VectorSearchInput, consolidating vector and target configurations.
- Improved hybrid search handling by integrating vector search input and refining target vector logic.
- Ensured consistent handling of target vectors across various search types, including NearText and NearVector.
@mpartipilo mpartipilo force-pushed the feat/improved-multi-target-vector-input branch from d238cbd to aa9ce0f Compare December 28, 2025 19:00
@github-actions
Copy link

github-actions bot commented Dec 28, 2025

Summary - Weaviate C# Client Coverage

Summary
Generated on: 01/05/2026 - 10:20:54
Coverage date: 01/03/2026 - 00:28:23 - 01/05/2026 - 10:20:16
Parser: MultiReport (51x Cobertura)
Assemblies: 2
Classes: 302
Files: 205
Line coverage: 57.7% (10511 of 18188)
Covered lines: 10511
Uncovered lines: 7677
Coverable lines: 18188
Total lines: 36335
Branch coverage: 49% (2166 of 4412)
Covered branches: 2166
Total branches: 4412
Method coverage: Feature is only available for sponsors

Coverage

Weaviate.Client - 58.4%
Name Line Branch
Weaviate.Client 58.4% 50%
Weaviate.Client.AggregateClient 47% 31.8%
Weaviate.Client.AggregateClientHybridExtensions 0%
Weaviate.Client.AliasClient 100% 62.5%
Weaviate.Client.ApiKeyTokenService 100% 50%
Weaviate.Client.Auth 9.5%
Weaviate.Client.AuthenticatedHttpHandler 71.7% 60%
Weaviate.Client.BackupClient 85.9% 44.4%
Weaviate.Client.BaseCollectionClient 0% 0%
Weaviate.Client.Cache.SchemaCache 69.4% 60%
Weaviate.Client.ClientConfiguration 100% 100%
Weaviate.Client.ClusterClient 86.2% 64.2%
Weaviate.Client.CollectionClient 98.7% 87.5%
Weaviate.Client.CollectionClientExtensions 100% 100%
Weaviate.Client.CollectionConfigClient 100% 66.6%
Weaviate.Client.CollectionsClient 32.3% 35%
Weaviate.Client.Configure 65.7% 65.7%
Weaviate.Client.Connect 25.5% 0%
Weaviate.Client.DataClient 91.4% 79.6%
Weaviate.Client.DefaultTokenServiceFactory 5.7% 6.8%
Weaviate.Client.DependencyInjection.WeaviateClientFactory 0% 0%
Weaviate.Client.DependencyInjection.WeaviateInitializationService 0%
Weaviate.Client.DependencyInjection.WeaviateOptions 0%
Weaviate.Client.DependencyInjection.WeaviateServiceCollectionExtensions 0% 0%
Weaviate.Client.ExceptionHelper 89.6% 86.5%
Weaviate.Client.Factory 100%
Weaviate.Client.Generate 100%
Weaviate.Client.GenerateClient 35.9% 50%
Weaviate.Client.GenerateClientHybridExtensions 48.8%
Weaviate.Client.GenerativeConfigFactory 5.2% 100%
Weaviate.Client.GenerativeProviderFactory 1%
Weaviate.Client.GroupsClient 100%
Weaviate.Client.GroupsOidcClient 47.8%
Weaviate.Client.Grpc.RetryInterceptor 41.6% 37.5%
Weaviate.Client.Grpc.WeaviateGrpcClient 71.3% 55.8%
Weaviate.Client.Grpc.WeaviateGrpcServerException 0%
Weaviate.Client.Internal.KeySortedList`2 43.7%
Weaviate.Client.Internal.MultiKeySortedList`2 85.3% 87.5%
Weaviate.Client.Models.Aggregate 100%
Weaviate.Client.Models.AggregateGroupByResult 64.7% 45%
Weaviate.Client.Models.AggregateResult 96.1% 60.8%
Weaviate.Client.Models.Alias 100%
Weaviate.Client.Models.AliasesResource 100%
Weaviate.Client.Models.AndNestedFilter 50%
Weaviate.Client.Models.AutoArray`1 100% 100%
Weaviate.Client.Models.AutoArrayBuilder 100% 100%
Weaviate.Client.Models.Backup 60%
Weaviate.Client.Models.BackupBackend 20%
Weaviate.Client.Models.BackupClientConfig 100%
Weaviate.Client.Models.BackupCreateOperation 100%
Weaviate.Client.Models.BackupCreateRequest 100%
Weaviate.Client.Models.BackupOperationBase 63.9% 65.3%
Weaviate.Client.Models.BackupRestoreOperation 100%
Weaviate.Client.Models.BackupRestoreRequest 100%
Weaviate.Client.Models.BackupsResource 100%
Weaviate.Client.Models.BackupStatusExtensions 75% 71.4%
Weaviate.Client.Models.BatchInsertRequest 52.1%
Weaviate.Client.Models.BatchInsertResponse 80%
Weaviate.Client.Models.BatchInsertResponseEntry 100%
Weaviate.Client.Models.BatchReferenceReturn 29% 0%
Weaviate.Client.Models.BM25Config 66.6% 83.3%
Weaviate.Client.Models.Bm25ConfigUpdate 60% 50%
Weaviate.Client.Models.BM25Operator 66.6%
Weaviate.Client.Models.ClusterNode 38.4%
Weaviate.Client.Models.ClusterNodeVerbose 23% 0%
Weaviate.Client.Models.CollectionConfig 91.1% 57.1%
Weaviate.Client.Models.CollectionConfigCommon 85.5% 57.6%
Weaviate.Client.Models.CollectionConfigExport 100% 100%
Weaviate.Client.Models.CollectionsResource 100%
Weaviate.Client.Models.CollectionUpdate 40.9% 50%
Weaviate.Client.Models.CurrentUserInfo 80%
Weaviate.Client.Models.DatabaseUser 66.6%
Weaviate.Client.Models.DataReference 100%
Weaviate.Client.Models.DataResource 100%
Weaviate.Client.Models.DataTypeExtensions 0% 0%
Weaviate.Client.Models.DeleteManyObjectResult 100%
Weaviate.Client.Models.DeleteManyResult 100%
Weaviate.Client.Models.DynamicDto 0%
Weaviate.Client.Models.EmptyBackend 33.3%
Weaviate.Client.Models.FilesystemBackend 100%
Weaviate.Client.Models.Filter 67% 50%
Weaviate.Client.Models.Filter`1 50% 50%
Weaviate.Client.Models.FlatDto 100%
Weaviate.Client.Models.FlexibleConverter`1 11.3% 3.4%
Weaviate.Client.Models.FlexibleStringConverter 38.4% 25%
Weaviate.Client.Models.Generative.Providers 28.2%
Weaviate.Client.Models.GenerativeConfig 7.5%
Weaviate.Client.Models.GenerativeConfigSerialization 46.8% 55.4%
Weaviate.Client.Models.GenerativeDebug 0%
Weaviate.Client.Models.GenerativeGroupByObject 100%
Weaviate.Client.Models.GenerativeGroupByResult 100%
Weaviate.Client.Models.GenerativePrompt 100%
Weaviate.Client.Models.GenerativeProvider 83.3%
Weaviate.Client.Models.GenerativeReply 100%
Weaviate.Client.Models.GenerativeResult 20% 0%
Weaviate.Client.Models.GenerativeWeaviateGroup 100%
Weaviate.Client.Models.GenerativeWeaviateObject 100%
Weaviate.Client.Models.GenerativeWeaviateResult 100%
Weaviate.Client.Models.GeoCoordinate 100%
Weaviate.Client.Models.GeoCoordinateConstraint 0%
Weaviate.Client.Models.GroupByObject 100%
Weaviate.Client.Models.GroupByRequest 100%
Weaviate.Client.Models.GroupByResult 100%
Weaviate.Client.Models.GroupByResult`2 100%
Weaviate.Client.Models.GroupedTask 100%
Weaviate.Client.Models.GroupRoleAssignment 0%
Weaviate.Client.Models.GroupsResource 100%
Weaviate.Client.Models.HnswDto 100%
Weaviate.Client.Models.HybridNearTextBuilder 67.5%
Weaviate.Client.Models.HybridNearVectorBuilder 64.1%
Weaviate.Client.Models.HybridVectorInput 91% 85.7%
Weaviate.Client.Models.HybridVectorInputBuilder 100%
Weaviate.Client.Models.InvertedIndexConfig 69% 72.7%
Weaviate.Client.Models.InvertedIndexConfigUpdate 80% 50%
Weaviate.Client.Models.JsonConverterEmptyCollectionAsNull 73.6% 50%
Weaviate.Client.Models.Metadata 100%
Weaviate.Client.Models.MetadataQuery 80.9%
Weaviate.Client.Models.MetaInfo 90.9% 50%
Weaviate.Client.Models.Metrics 84.8% 60%
Weaviate.Client.Models.ModelsToDtoExtensions 100% 85%
Weaviate.Client.Models.ModuleConfigList 16.6% 7.1%
Weaviate.Client.Models.Move 100%
Weaviate.Client.Models.MultiTenancyConfig 100%
Weaviate.Client.Models.MultiTenancyConfigUpdate 60%
Weaviate.Client.Models.MultiVectorDto 100%
Weaviate.Client.Models.MultiVectorEncodingDto 100%
Weaviate.Client.Models.MuveraDto 100% 100%
Weaviate.Client.Models.NamedVector 100% 100%
Weaviate.Client.Models.NearTextBuilder 100%
Weaviate.Client.Models.NearTextInput 100%
Weaviate.Client.Models.NearVectorBuilder 100%
Weaviate.Client.Models.NearVectorInput 54.5%
Weaviate.Client.Models.NestedFilter 100%
Weaviate.Client.Models.NodesResource 100%
Weaviate.Client.Models.NodeStatusExtensions 60% 20%
Weaviate.Client.Models.NotNestedFilter 100%
Weaviate.Client.Models.ObjectReference 80%
Weaviate.Client.Models.ObjectStorageBackend 0%
Weaviate.Client.Models.OrNestedFilter 100%
Weaviate.Client.Models.PermissionResourceExtensions 79.7% 33.3%
Weaviate.Client.Models.Permissions 66.5% 50%
Weaviate.Client.Models.PermissionScope 100%
Weaviate.Client.Models.PhoneNumber 88.8%
Weaviate.Client.Models.Property 98.4% 79.6%
Weaviate.Client.Models.Property`1 100%
Weaviate.Client.Models.PropertyFilter 81.3% 75%
Weaviate.Client.Models.PropertyHelper 69.8% 56.9%
Weaviate.Client.Models.PropertyUpdate 25%
Weaviate.Client.Models.QueryReference 100%
Weaviate.Client.Models.Reference 100%
Weaviate.Client.Models.ReferenceFilter 100%
Weaviate.Client.Models.ReferenceUpdate 0%
Weaviate.Client.Models.ReplicateRequest 100%
Weaviate.Client.Models.ReplicateResource 100%
Weaviate.Client.Models.ReplicationClientConfig 100%
Weaviate.Client.Models.ReplicationConfig 100%
Weaviate.Client.Models.ReplicationConfigUpdate 57.1%
Weaviate.Client.Models.ReplicationOperation 87.5% 50%
Weaviate.Client.Models.ReplicationOperationError 0%
Weaviate.Client.Models.ReplicationOperationStatus 70.5% 0%
Weaviate.Client.Models.ReplicationOperationTracker 64% 54.5%
Weaviate.Client.Models.Rerank 100%
Weaviate.Client.Models.Reranker 16%
Weaviate.Client.Models.RerankerConfigSerialization 56.8% 55%
Weaviate.Client.Models.RoleInfo 100%
Weaviate.Client.Models.RolesResource 100%
Weaviate.Client.Models.ShardInfo 100%
Weaviate.Client.Models.ShardingConfig 100%
Weaviate.Client.Models.ShardStatusExtensions 100% 50%
Weaviate.Client.Models.SimpleTargetVectors 100%
Weaviate.Client.Models.SinglePrompt 100%
Weaviate.Client.Models.Sort 100% 50%
Weaviate.Client.Models.SortExtensions 100%
Weaviate.Client.Models.StopwordConfig 69.5% 75%
Weaviate.Client.Models.StopwordsConfigUpdate 57.1% 50%
Weaviate.Client.Models.TargetVectors 78% 0%
Weaviate.Client.Models.Tenant 38.8% 13.3%
Weaviate.Client.Models.TenantsResource 100%
Weaviate.Client.Models.TimeFilter 75% 25%
Weaviate.Client.Models.Typed.GenerativeGroupByObject`1 0%
Weaviate.Client.Models.Typed.GenerativeGroupByResult`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateGroup`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateObject`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateResult`1 0%
Weaviate.Client.Models.Typed.GroupByObject`1 0%
Weaviate.Client.Models.Typed.GroupByResult`1 0%
Weaviate.Client.Models.Typed.TypedResultConverter 13% 7.6%
Weaviate.Client.Models.Typed.WeaviateGroup`2 0%
Weaviate.Client.Models.Typed.WeaviateObject`1 47.3% 37.5%
Weaviate.Client.Models.TypedBase`1 70.5%
Weaviate.Client.Models.TypedGuid 66.6%
Weaviate.Client.Models.TypedValue`1 80%
Weaviate.Client.Models.User 0%
Weaviate.Client.Models.UserMetadata 0%
Weaviate.Client.Models.UserRoleAssignment 100%
Weaviate.Client.Models.UsersResource 100%
Weaviate.Client.Models.Vector 45.3% 28.1%
Weaviate.Client.Models.VectorBuilder 30% 27.7%
Weaviate.Client.Models.VectorConfig 82.7% 50%
Weaviate.Client.Models.VectorConfigList 59.3% 60%
Weaviate.Client.Models.VectorConfigUpdate 50%
Weaviate.Client.Models.VectorIndex 88.6%
Weaviate.Client.Models.VectorIndexConfig 100%
Weaviate.Client.Models.VectorIndexConfigUpdate 68.4% 33.3%
Weaviate.Client.Models.VectorIndexConfigUpdateDynamic 0% 0%
Weaviate.Client.Models.VectorIndexConfigUpdateFlat 40%
Weaviate.Client.Models.VectorIndexConfigUpdateHNSW 52.9%
Weaviate.Client.Models.VectorIndexMappingExtensions 86.5% 71.7%
Weaviate.Client.Models.VectorIndexSerialization 56.3% 42.3%
Weaviate.Client.Models.VectorInputBuilderFactories 100% 100%
Weaviate.Client.Models.Vectorizer 10.8% 0%
Weaviate.Client.Models.VectorizerAttribute 100%
Weaviate.Client.Models.VectorizerConfig 64.1% 56.2%
Weaviate.Client.Models.VectorizerRegistry 68.9% 71.4%
Weaviate.Client.Models.Vectorizers.VectorizerConfigFactory 58% 62.5%
Weaviate.Client.Models.VectorMulti`1 40.7% 23%
Weaviate.Client.Models.VectorQuery 45% 50%
Weaviate.Client.Models.Vectors 37.5% 100%
Weaviate.Client.Models.VectorSearchInput 86.3% 16.6%
Weaviate.Client.Models.VectorSingle`1 22.7% 0%
Weaviate.Client.Models.WeaviateGroup`1 80%
Weaviate.Client.Models.WeaviateObject 88.8%
Weaviate.Client.Models.WeaviateObjectExtensions 95.6% 75%
Weaviate.Client.Models.WeaviateResult 100%
Weaviate.Client.Models.WeaviateResult`1 100%
Weaviate.Client.Models.WeightedField 0%
Weaviate.Client.Models.WeightedFields 0% 0%
Weaviate.Client.Models.WeightedTargetVectors 100% 100%
Weaviate.Client.NodesClient 87.5% 50%
Weaviate.Client.OAuthConfig 0%
Weaviate.Client.OAuthTokenService 0% 0%
Weaviate.Client.ObjectHelper 54.6% 38.2%
Weaviate.Client.QueryClient 59.7% 46.8%
Weaviate.Client.QueryClientHybridExtensions 48.8% 25%
Weaviate.Client.QueryClientNearTextExtensions 74.2% 75%
Weaviate.Client.ReplicationsClient 87% 51.7%
Weaviate.Client.RerankerConfigFactory 14.2% 100%
Weaviate.Client.Rest.EnumMemberJsonConverter`1 100% 78.5%
Weaviate.Client.Rest.EnumMemberJsonConverterFactory 100%
Weaviate.Client.Rest.HttpResponseMessageExtensions 87.5% 62.5%
Weaviate.Client.Rest.InvalidEnumWireFormatException 0%
Weaviate.Client.Rest.WeaviateEndpoints 78.5% 75.8%
Weaviate.Client.Rest.WeaviateRestClient 89.5% 53.3%
Weaviate.Client.Rest.WeaviateRestClientException 0% 0%
Weaviate.Client.Rest.WeaviateRestServerException 0% 0%
Weaviate.Client.Rest.WeaviateUnexpectedStatusCodeException 100%
Weaviate.Client.RetryHandler 98.1% 83.3%
Weaviate.Client.RetryPolicy 81.2% 50%
Weaviate.Client.RolesClient 90.3% 50%
Weaviate.Client.Serialization.Converters.BlobPropertyConverter 58.8% 37.5%
Weaviate.Client.Serialization.Converters.BoolPropertyConverter 80% 50%
Weaviate.Client.Serialization.Converters.DatePropertyConverter 51.3% 36.8%
Weaviate.Client.Serialization.Converters.GeoPropertyConverter 52.2% 23.6%
Weaviate.Client.Serialization.Converters.IntPropertyConverter 66.6% 50%
Weaviate.Client.Serialization.Converters.NumberPropertyConverter 64.7% 47%
Weaviate.Client.Serialization.Converters.ObjectPropertyConverter 18% 7.3%
Weaviate.Client.Serialization.Converters.PhonePropertyConverter 51.8% 33.3%
Weaviate.Client.Serialization.Converters.TextPropertyConverter 75% 75%
Weaviate.Client.Serialization.Converters.UuidPropertyConverter 61.1% 37.5%
Weaviate.Client.Serialization.PropertyBag 28.9% 20.7%
Weaviate.Client.Serialization.PropertyConverterBase 65.3% 50%
Weaviate.Client.Serialization.PropertyConverterRegistry 78.1% 70.1%
Weaviate.Client.TenantsClient 84.5% 37.5%
Weaviate.Client.TimeoutHelper 100% 100%
Weaviate.Client.Typed.TypedCollectionClient`1 95.5% 50%
Weaviate.Client.Typed.TypedDataClient`1 49%
Weaviate.Client.Typed.TypedGenerateClient`1 0.8% 0%
Weaviate.Client.Typed.TypedGenerateClientHybridExtensions 0%
Weaviate.Client.Typed.TypedQueryClient`1 9.7% 100%
Weaviate.Client.Typed.TypedQueryClientHybridExtensions 0%
Weaviate.Client.UsersClient 89.4% 66.6%
Weaviate.Client.UsersDatabaseClient 100% 62.5%
Weaviate.Client.UsersOidcClient 4.5%
Weaviate.Client.Validation.TypeValidationException 55.5%
Weaviate.Client.Validation.TypeValidator 75.7% 75%
Weaviate.Client.Validation.ValidationError 83.3%
Weaviate.Client.Validation.ValidationResult 100% 100%
Weaviate.Client.Validation.ValidationWarning 75%
Weaviate.Client.ValidationExtensions 80% 100%
Weaviate.Client.VectorizerFactory 6.1%
Weaviate.Client.VectorizerFactoryMulti 7.6%
Weaviate.Client.WeaviateAuthenticationException 100% 100%
Weaviate.Client.WeaviateAuthorizationException 100% 100%
Weaviate.Client.WeaviateBackupConflictException 100%
Weaviate.Client.WeaviateBadRequestException 100% 100%
Weaviate.Client.WeaviateClient 80.2% 57.9%
Weaviate.Client.WeaviateClientBuilder 59.3% 53.8%
Weaviate.Client.WeaviateClientBuilderExtensions 0%
Weaviate.Client.WeaviateClientException 66.6%
Weaviate.Client.WeaviateCollectionLimitReachedException 100% 100%
Weaviate.Client.WeaviateConflictException 100%
Weaviate.Client.WeaviateDefaults 100%
Weaviate.Client.WeaviateException 66.6%
Weaviate.Client.WeaviateExtensions 77.6% 54%
Weaviate.Client.WeaviateExternalModuleProblemException 100% 100%
Weaviate.Client.WeaviateFeatureNotSupportedException 100% 100%
Weaviate.Client.WeaviateModuleNotAvailableException 100% 100%
Weaviate.Client.WeaviateNotFoundException 14.8% 0%
Weaviate.Client.WeaviateServerException 66.6%
Weaviate.Client.WeaviateTimeoutException 100% 100%
Weaviate.Client.WeaviateUnprocessableEntityException 100% 100%
Weaviate.Client.Analyzers - 0%
Name Line Branch
Weaviate.Client.Analyzers 0% 0%
Weaviate.Client.Analyzers.AutoArrayUsageAnalyzer 0% 0%
Weaviate.Client.Analyzers.HybridSearchNullParametersAnalyzer 0% 0%

- Updated various methods in AggregateClient, GenerateClient, and QueryClient to replace Func<TargetVectorsBuilder, TargetVectors> with TargetVectors.FactoryFn for improved clarity and usability.
- Introduced a new Builder class for TargetVectors to facilitate the creation of target vectors using a more intuitive lambda syntax.
- Enhanced VectorSearchInput to support implicit conversion from FactoryFn, allowing for seamless integration with the new builder pattern.
- Added extension methods for hybrid search in GenerateClient and QueryClient, enabling the use of lambda expressions for vector creation.
- Removed the obsolete TargetVectorsBuilder class to streamline the codebase and reduce complexity.
…uce FactoryFn for streamlined vector input creation
…ative capabilities

- Added optional generative provider parameter to various methods in TypedGenerateClient for enriching prompts.
- Introduced after cursor for pagination in FetchObjects methods across TypedGenerateClient and TypedQueryClient.
- Implemented hybrid search methods in TypedQueryClient to support keyword and vector searches with grouping.
- Enhanced NearVector methods in TypedQueryClient to utilize lambda functions for vector building.
- Updated documentation to reflect new parameters and functionalities.
…, and enhance documentation

- Consolidated NearText API overloads across QueryClient, GenerateClient, AggregateClient, and Typed clients.
- Introduced convenience overloads for text-only Hybrid search and NearText target vectors.
- Updated method signatures to accept TargetVectors directly instead of using FactoryFn.
- Enhanced documentation for NearText methods, including examples for new usage patterns.
- Added extension methods for NearText search with lambda target vector builders in Typed clients.
- Updated tests to validate new NearText functionality with multiple target vectors.
- Introduced new methods for searching near vectors using NearVectorInput records in TypedGenerateClient.
- Added overloads for NearVector methods to support lambda builders for NearVectorInput.
- Updated TypedQueryClient to handle HybridVectorInput and improve hybrid search functionality.
- Refactored NearText methods to utilize NearTextInput records and support lambda builders.
- Improved documentation for new and existing methods to clarify usage and parameters.
@mpartipilo mpartipilo changed the title Refactor gRPC client for enhanced vector handling and search Refactor vector search API with flexible syntax and enhanced type safety Jan 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants