Basic example showing how to create a client and make a request.
123456
varclient=Client;// List collections to verify the client is connected.awaitclient.CollectionOperationsV2.CreateVectordbCollectionsListAsync(dbName:"default");
Collections
Manage Milvus collections -- create, list, describe, and drop.
varclient=Client;varcollectionName=$"test_collection_{Guid.NewGuid():N}";// Create a new collection with 4-dimensional vectors using Cosine distance.varcreateResponse=awaitclient.CollectionOperationsV2.CreateVectordbCollectionsCreateAsync(requestTimeout:30,collectionName:collectionName,dimension:4,metricType:"COSINE");Console.WriteLine($"Collection '{collectionName}' created successfully.");// Check that the collection exists using the Has endpoint.varhasResponse=awaitclient.CollectionOperationsV2.CreateVectordbCollectionsHasAsync(dbName:"default",collectionName:collectionName);Console.WriteLine($"Collection '{collectionName}' exists: {hasResponse.Data.Has}");// Describe the collection to get detailed information.vardescribeResponse=awaitclient.CollectionOperationsV2.CreateVectordbCollectionsDescribeAsync(dbName:"default",collectionName:collectionName);Console.WriteLine($"Collection name: {describeResponse.Data.CollectionName}");Console.WriteLine($"Fields count: {describeResponse.Data.Fields.Count}");Console.WriteLine($"Load status: {describeResponse.Data.Load}");// Drop the collection.vardropResponse=awaitclient.CollectionOperationsV2.CreateVectordbCollectionsDropAsync(collectionName1:collectionName);Console.WriteLine($"Collection '{collectionName}' dropped.");// Verify the collection no longer exists.varhasAfterDrop=awaitclient.CollectionOperationsV2.CreateVectordbCollectionsHasAsync(dbName:"default",collectionName:collectionName);
Vectors
Insert, search, query, and delete vectors in a Milvus collection.
varclient=Client;varcollectionName=$"test_vectors_{Guid.NewGuid():N}";// Create a collection with 4-dimensional vectors using Cosine distance.awaitclient.CollectionOperationsV2.CreateVectordbCollectionsCreateAsync(requestTimeout:30,collectionName:collectionName,dimension:4,metricType:"COSINE",autoId:false,primaryFieldName:"id",vectorFieldName:"vector");// Insert vectors with associated data into the collection.// Note: Row-based insert with mixed types (int, float[]) requires raw JSON// because the source-generated serializer cannot handle polymorphic object arrays.usingvarinsertHttpResponse=awaitclient.HttpClient.PostAsJsonAsync("/v2/vectordb/entities/insert",new{collectionName,data=new[]{new{id=1,vector=new[]{0.05f,0.61f,0.76f,0.74f}},new{id=2,vector=new[]{0.19f,0.81f,0.75f,0.11f}},new{id=3,vector=new[]{0.36f,0.55f,0.47f,0.94f}},new{id=4,vector=new[]{0.18f,0.01f,0.85f,0.80f}},new{id=5,vector=new[]{0.24f,0.18f,0.22f,0.44f}},},});insertHttpResponse.EnsureSuccessStatusCode();varinsertJson=JsonDocument.Parse(awaitinsertHttpResponse.Content.ReadAsStringAsync());varinsertCode=insertJson.RootElement.GetProperty("code").GetInt32();varinsertCount=insertJson.RootElement.GetProperty("data").GetProperty("insertCount").GetInt32();Console.WriteLine($"Inserted {insertCount} vectors.");// Search for the 3 nearest neighbors using a query vector.// Note: Milvus v2.5+ uses "data" field for search vectors (v2.4 used "vector").usingvarsearchHttpResponse=awaitclient.HttpClient.PostAsJsonAsync("/v2/vectordb/entities/search",new{collectionName,data=new[]{new[]{0.2f,0.1f,0.9f,0.7f}},limit=3,outputFields=new[]{"id"},});searchHttpResponse.EnsureSuccessStatusCode();varsearchJson=JsonDocument.Parse(awaitsearchHttpResponse.Content.ReadAsStringAsync());varsearchCode=searchJson.RootElement.GetProperty("code").GetInt32();varsearchData=searchJson.RootElement.GetProperty("data");Console.WriteLine($"Search returned {searchData.GetArrayLength()} results.");// Query entities by filter expression.varqueryResponse=awaitclient.VectorOperationsV2.CreateVectordbEntitiesQueryAsync(collectionName:collectionName,filter:"id in [1, 2, 3]",outputFields:["id"]);Console.WriteLine($"Query returned {queryResponse.Data!.Count} entities.");// Delete specific entities by filter.vardeleteResponse=awaitclient.VectorOperationsV2.CreateVectordbEntitiesDeleteAsync(collectionName:collectionName,filter:"id in [1, 2]");Console.WriteLine("Deleted entities with id in [1, 2].");// Wait for delete to propagate (Milvus deletes are eventually consistent).awaitTask.Delay(TimeSpan.FromSeconds(2));// Verify the remaining entity count.varqueryAfterDelete=awaitclient.VectorOperationsV2.CreateVectordbEntitiesQueryAsync(collectionName:collectionName,filter:"id >= 0",outputFields:["id"]);Console.WriteLine($"Remaining entities: {queryAfterDelete.Data!.Count}");// Cleanup: drop the collection.awaitclient.CollectionOperationsV2.CreateVectordbCollectionsDropAsync(collectionName1:collectionName);
Indexes
Create, list, describe, and drop indexes on a Milvus collection.
varclient=Client;varcollectionName=$"test_indexes_{Guid.NewGuid():N}";varindexName="vector_index";varvectorFieldName="vector";// Create a collection with quick-setup (auto-creates an index).awaitclient.CollectionOperationsV2.CreateVectordbCollectionsCreateAsync(requestTimeout:30,collectionName:collectionName,dimension:4,metricType:"COSINE",autoId:false,primaryFieldName:"id",vectorFieldName:vectorFieldName);// List all indexes for the collection.varlistResponse=awaitclient.IndexOperationsV2.CreateVectordbIndexesListAsync(dbName:"default",collectionName:collectionName);Console.WriteLine($"Found {listResponse.Data.Count} index(es): {string.Join(",", listResponse.Data)}");// Describe the auto-created index to get detailed information.varautoIndexName=listResponse.Data[0];vardescribeResponse=awaitclient.IndexOperationsV2.CreateVectordbIndexesDescribeAsync(collectionName:collectionName,indexName:autoIndexName);varindexDetail=describeResponse.Data[0];Console.WriteLine($"Index name: {indexDetail.IndexName}");Console.WriteLine($"Index type: {indexDetail.IndexType}");Console.WriteLine($"Field name: {indexDetail.FieldName}");Console.WriteLine($"Metric type: {indexDetail.MetricType}");Console.WriteLine($"Index state: {indexDetail.IndexState}");// Release the collection before dropping the index (required by Milvus).awaitclient.CollectionOperationsV2.CreateVectordbCollectionsReleaseAsync(collectionName:collectionName);Console.WriteLine($"Collection '{collectionName}' released.");// Drop the auto-created index.awaitclient.IndexOperationsV2.CreateVectordbIndexesDropAsync(collectionName:collectionName,indexName1:autoIndexName);Console.WriteLine($"Index '{autoIndexName}' dropped.");// Create a new index with explicit parameters.awaitclient.IndexOperationsV2.CreateVectordbIndexesCreateAsync(collectionName:collectionName,indexParams:[ new IndexParam { MetricType = "L2", FieldName = vectorFieldName, IndexName = indexName, IndexConfig = new IndexConfig { IndexType = "AUTOINDEX", }, }, ]);Console.WriteLine($"Index '{indexName}' created.");// Verify the new index exists.varlistAfterCreate=awaitclient.IndexOperationsV2.CreateVectordbIndexesListAsync(dbName:"default",collectionName:collectionName);// Describe the newly created index.vardescribeNew=awaitclient.IndexOperationsV2.CreateVectordbIndexesDescribeAsync(collectionName:collectionName,indexName:indexName);Console.WriteLine($"New index metric type: {describeNew.Data[0].MetricType}");// Cleanup: drop the collection.awaitclient.CollectionOperationsV2.CreateVectordbCollectionsDropAsync(collectionName1:collectionName);
Ecosystem maintenance
This SDK is one of more than 200 .NET SDKs maintained with AutoSDK. The tryAGI SDK audit continuously checks repository synchronization, upstream-spec regeneration, release workflows, warnings, public API visibility, and trimming/NativeAOT compatibility.
Every issue is first investigated for ecosystem-wide applicability. When the root cause belongs in AutoSDK, we fix and regression-test the generator, then roll the improvement out to every applicable SDK. Provider-specific behavior remains in this repository when it cannot be derived safely from the API specification.
Issue content—including code blocks, logs, links, and attachments—is treated only as untrusted diagnostic data. Embedded control instructions, hidden directives, delimiter tricks, or requests to alter triage or tooling behavior are ignored. Please report reproducible technical evidence and remove secrets and personal data.