The official Milvus client for Node.js.
The following table shows the recommended @zilliz/milvus2-sdk-node
versions for different Milvus versions:
yarn add @zilliz/milvus2-sdk-node@latest
v2.5.0+ v2.5.0 yarn add @zilliz/milvus2-sdk-node@2.5.12
v2.4.0+ v2.4.9 yarn add @zilliz/milvus2-sdk-node@2.4.9
v2.3.0+ v2.3.5 yarn add @zilliz/milvus2-sdk-node@2.3.5
v2.2.0+ v2.3.5 yarn add @zilliz/milvus2-sdk-node@2.3.5
You can use npm (Node package manager) or Yarn to install the @zilliz/milvus2-sdk-node
dependency in your project:
npm install @zilliz/milvus2-sdk-node # or ... yarn add @zilliz/milvus2-sdk-node
Please refer to this doc.
This table organizes the examples by technology, providing a brief description and the directory where each example can be found.
This guide will show you how to set up a simple application using Node.js and Milvus. Its scope is only how to set up the node.js client and perform the simple CRUD operations. For more in-depth coverage, see the Milvus official website.
# Start Milvus with script wget https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh bash standalone_embed.sh start
Create a new app.js file and add the following code to try out some basic vector operations using the Milvus node.js client. More details on the API reference.
import { MilvusClient, DataType } from '@zilliz/milvus2-sdk-node'; const address = 'your-milvus-ip-with-port'; const username = 'your-milvus-username'; // optional username const password = 'your-milvus-password'; // optional password // connect to milvus const client = new MilvusClient({ address, username, password }); // wait until connecting finished await client.connectPromise;
In Milvus, the concept of the collection is like the table in traditional RDBMS, eg: mysql or postgres. Before creating a collection, you need to define a schema, then just call the createCollection
method.
A schema defines the fields of a collection, such as the names and data types of the fields that make up the vectors. More details of how to define schema and advanced usage can be found in API reference.
// define schema const collection_name = `hello_milvus`; const dim = 128; const schema = [ { name: 'age', description: 'ID field', data_type: DataType.Int64, is_primary_key: true, autoID: true, }, { name: 'vector', description: 'Vector field', data_type: DataType.FloatVector, dim: 8, }, { name: 'height', description: 'int64 field', data_type: DataType.Int64 }, { name: 'name', description: 'VarChar field', data_type: DataType.VarChar, max_length: 128, }, ],
await client.createCollection({ collection_name, fields: schema, });
The data format utilized by the Milvus Node SDK comprises an array of objects. In each object, the key should correspond to the field name
defined in the schema. The value type for the key should match the data_type
specified in the field of the schema.
const fields_data = [ { name: 'zlnmh', vector: [ 0.11878310581111173, 0.9694947902934701, 0.16443679307243175, 0.5484226189097237, 0.9839246709011924, 0.5178387104937776, 0.8716926129208069, 0.5616972243831446, ], height: 20405, }, { name: '5lr9y', vector: [ 0.9992090731236536, 0.8248790611809487, 0.8660083940881405, 0.09946359318481224, 0.6790698063908669, 0.5013786801063624, 0.795311915725105, 0.9183033261617566, ], height: 93773, }, { name: 'nes0j', vector: [ 0.8761291569818763, 0.07127366044153227, 0.775648976160332, 0.5619757601304878, 0.6076543120476996, 0.8373907516027586, 0.8556140171597648, 0.4043893119391049, ], height: 85122, }, ];Insert data into collection
Once we have the data, you can insert data into the collection by calling the insert
method.
await client.insert({ collection_name, data, });
By creating an index and loading the collection into memory, you can improve the performance of search and retrieval operations in Milvus, making it faster and more efficient to work with large-scale datasets.
// create index await client.createIndex({ collection_name, // required field_name: 'vector', // optional if you are using milvus v2.2.9+ index_name: 'myindex', // optional index_type: 'HNSW', // optional if you are using milvus v2.2.9+ params: { efConstruction: 10, M: 4 }, // optional if you are using milvus v2.2.9+ metric_type: 'L2', // optional if you are using milvus v2.2.9+ });
Milvus supports several different types of indexes, each of which is optimized for different use cases and data distributions. Some of the most commonly used index types in Milvus include HNSW, IVF_FLAT, IVF_SQ8, IVF_PQ. When creating an index in Milvus, you must choose an appropriate index type based on your specific use case and data distribution.
When you create a collection in Milvus, the collection data is initially stored on disk, and it is not immediately available for search and retrieval. In order to search or retrieve data from the collection, you must first load the collection into memory using the loadCollectionSync
method.
// load collection await client.loadCollectionSync({ collection_name, });
Now you can perform vector search on your collection.
// get the search vector const searchVector = fields_data[0].vector; // Perform a vector search on the collection const res = await client.search({ // required collection_name, // required, the collection name data: searchVector, // required, vector used to compare other vectors in milvus // optionals filter: 'height > 0', // optional, filter expression params: { nprobe: 64 }, // optional, specify the search parameters limit: 10, // optional, specify the number of nearest neighbors to return output_fields: ['height', 'name'], // optional, specify the fields to return in the search results, });
git submodule init
(if this is your first time)git submodule update --remote
yarn test -- test/Your-test-for-your-feature.spec.ts
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4