Releases: milvus-io/milvus-sdk-node
Release v2.6.0
Milvus Node.js SDK v2.6.0 Release Notes
Release Date: July 15, 2025
Overview
The Milvus Node.js SDK v2.6.0 officially supports all new features in Milvus 2.6.0, including enhanced JSON handling, text embedding functions, schema evolution, and new vector types.
Compatibility
- Milvus Version: 2.6.0
- Node.js Version: 14.x or later
New Features
🚀 JSON Path Index Support
- Create inverted indexes on specific JSON paths (e.g.,
meta.user.location
) - Accelerate filtering on nested JSON fields without full document scans
await milvusClient.createIndex({
index_name: 'json',
collection_name: COLLECTION_NAME,
field_name: 'json',
index_type: IndexType.INVERTED,
params: {
json_path: `json[\"static\"][\"string_key\"]`,
json_cast_type: 'varchar',
},
});
🎯 INT8 Vector Support
- Native support for 8-bit integer vectors
- Direct ingestion of quantized embeddings (no de-quantization needed)
- Reduces storage and improves performance
✨ Text Embedding Functions
- Automatic text-to-vector conversion
- Integration with OpenAI, AWS Bedrock, Google Vertex AI, and Hugging Face
- "Data-in, data-out" simplicity for AI applications
const params = {
collection_name: "my-collection",
fields: [
{
name: "text",
description: "text field",
data_type: DataType.VarChar,
max_length: 20,
is_partition_key: false,
enable_analyzer: true,
},
{
name: "dense",
description: "dense field",
dim: 1536,
data_type: DataType.FloatVector,
is_function_output: true,
},
],
functions: [
{
name: "openai",
description: "openai text embedding function",
type: FunctionType.TEXTEMBEDDING,
input_field_names: ["text"],
output_field_names: ["dense"],
params: {
"provider": "openai", // Embedding model provider
"model_name": "text-embedding-3-small", // Embedding model
// "credential": "apikey1", // Optional: Credential label
// Optional parameters:
// "dim": "1536", // Optionally shorten the vector dimension
// "user": "user123" // Optional: identifier for API tracking
},
},
],
};
await client.createCollection(params);
🔄 Schema Evolution
- Add new scalar/vector fields to existing collections
- New
addCollectionFields
method
await milvusClient.addCollectionField({
collection_name: COLLECTION_NAME,
field: {
name: 'new_varChar',
description: 'new VarChar field',
data_type: DataType.VarChar,
max_length: 128,
is_partition_key: false,
nullable: true, // required to be set true
default_value: 'default',
}
});
await milvusClient.addCollectionFields({
collection_name: COLLECTION_NAME,
fields: fieldsToAdd, // array of fields
});
📝 Analyzer/Tokenizer Enhancements
runAnalyzer
method for tokenizer validation- Row-level tokenizer selection
- Improved multilingual text processing
const runAnalyzer = await milvusClient.runAnalyzer({
analyzer_params: {
tokenizer: 'standard',
filter: ['lowercase'],
},
text: 'Would you like to eat an apple?',
with_detail: true,
with_hash: true,
});
Improvements
- Proto-json support for better protocol buffer handling
- Downgraded
@grpc/grpc-js
to 1.7.3 for stability - Internal optimizations and bug fixes
Upgrade Instructions
npm install @milvus-io/[email protected]
Release v2.5.12
What's Changed
- [Cherry-Pick] fix: search result types by @zhanshuyou in #457
Full Changelog: v2.5.11...v2.5.12
release v2.6.0-rc2
What's Changed
- feat: support function as rerank by @shanghaikid in #455
Full Changelog: v2.6.0-rc1...v2.6.0-rc2
v2.6.0-rc1
What's Changed
- feat: support runAnalyzer by @shanghaikid in #423
- feat: support int8 vector by @shanghaikid in #424
- feat: add json path index by @shanghaikid in #425
- feat: sparse index params update by @shanghaikid in #426
- feat: add text embedding function by @shanghaikid in #427
- feat: proto-json by @zhanshuyou in #433
- feat: support add field by @shanghaikid in #445
- feat: support addCollectionFields by @shanghaikid in #449
- feat: cherry-pick downgrade @grpc/grpc-js to 1.7.3 (#451) by @shanghaikid in #452
Full Changelog: v2.5.7...v2.6.0-rc1
Release v2.5.11
What's Changed
Versions >= 1.8.0 of @grpc/grpc-js trigger intermittent INTERNAL: Received RST_STREAM with code 0 errors when retry logic is enabled and Envoy (e.g., Istio sidecar) is in the path. This was reported in grpc/grpc-node#2569, where large concurrent calls routed through Envoy consistently resulted in RST_STREAM resets and failed retries.
Until the upstream issue is resolved, we are locking the version at 1.7.3, the last known stable release for our use case.
- pref: modify response info after retried by @shanghaikid in #450
- feat: downgrade @grpc/grpc-js to 1.7.3 by @shanghaikid in #451
Full Changelog: v2.5.10...v2.5.11
Replease v2.5.10
What's Changed
- perf: better GRPC retry logger and fix retry timeout logic by @shanghaikid in #446
- chore: update 2.5 proto by @shanghaikid in #447
Full Changelog: v2.5.9...v2.5.10
Release v2.5.9
-
Use JSON proto instead of proto files (No more proto files)
Introduced proto-json functionality that eliminates proto file dependency (#437)
→ Solves import failures in serverless platforms like Vercel and Cloudflare or AWS lambda
→ No more need to manage proto files manually
issues: (#326 #276) -
Milvus Lite 2.5 RC Support
Now compatible with Milvus Lite version 2.5 (#434)
→ only supprt 2.5 RC1 https://pypi.org/project/milvus-lite/2.5.0rc1/
Example:
import { MilvusLiteClient } from '@zilliz/milvus2-sdk-node';
const milvusClient = await MilvusLiteClient({
address: path.resolve(__dirname, 'test.db')
});
// create
await milvusClient.createCollection({
collection_name: COLLECTION_NAME,
fields: schema,
});
// describe
await milvusClient.describeCollection({
collection_name: COLLECTION_NAME,
});
// create index
await milvusClient.createIndex({
collection_name: COLLECTION_NAME,
field_name: 'vector',
extra_params: {
index_type: 'IVF_FLAT',
metric_type: 'L2',
params: JSON.stringify({ nlist: 1024 }),
},
});
// load
await milvusClient.loadCollection({
collection_name: COLLECTION_NAME,
});
// insert
await milvusClient.insert({
collection_name: COLLECTION_NAME,
data,
});
// query
await milvusClient.query({
collection_name: COLLECTION_NAME,
expr: `id > 0`,
});
// search
await milvusClient.search({
collection_name: COLLECTION_NAME,
data: [1, 2, 3, 4],
});
- Schema Flexibility
Added option to ignore schema check during insertion and use string key for validation (#438)
if you have trouble to insert data on AWS lambda, you can skip check schema like below or upgrade your milvus to v2.5.12
await milvusClient.insert({
collection_name: 'my-collection',
skip_check_schema: true
});
- Grpc API Enhancement
- Added support for specifying partition type (
load
/all
) inshowPartitions
API (#431) - New runAnalyzer API
const runAnalyzer = await milvusClient.runAnalyzer({ analyzer_params: { tokenizer: 'standard', filter: ['lowercase'], }, text: 'Would you like to eat an apple?', with_detail: true, with_hash: true, });
- Added support for specifying partition type (
- REST API Enhancement
Added consistency level support for RESTful query API (#440)
Full Changelog
For complete details, see:
v2.5.8...v2.5.9
release v2.5.8
What's Changed
- fix: Search output on multiple vector search returning values of the first record by @shanghaikid in #429
- feat: split search results if nq >2 for HttpClient by @shanghaikid in #430
Full Changelog: v2.5.7...v2.5.8
Release v2.5.7
What's Changed
- fix: the search result is formatted incorrectly if nq > 1 with some filters by @zhanshuyou in #420
Full Changelog: v2.5.6...v2.5.7
Release v2.5.6
What's Changed
- feat: support external_filter_fn for searchIterator by @shanghaikid in #415
- feat: add describeReplicas, alias for getReplicas by @shanghaikid in #416
- feat: update 2.5 proto by @shanghaikid in #417
- feat: use server side schema cache for the insert/upsert request by @shanghaikid in #418
Full Changelog: v2.5.5...v2.5.6