createIndexes
On this page
Creates indexes on MongoDB® collections.kaiIndexOptions
parameter.
To create multikey indexes (GIN Index), refer to Multikey Indexes.
Syntax
{"createIndexes": "<collection_name>","indexes": [{ "name": "<index_name>","key": { "<path_to_property>": "vector" },"kaiIndexOptions": {"index_type": "string""dimensions": <integer_value>,// other fields relevant to each index type }} ] }
Arguments
Field |
Type |
Requirement |
Description |
---|---|---|---|
|
String |
Required |
The collection for which the index is created. |
|
JSON array |
Required |
An array that specifies the index to create. |
|
String |
Required |
A name for the vector index. |
|
JSON object |
Required |
Specifies index options for the vector index. |
Remarks
-
The
createIndexes
command creates an index on the specified field in a collection using a persisted computed column within the same collection. -
SingleStore recommends creating collections (or tables) before creating a vector index.
You must specify the field that holds the vector embeddings while creating the collection. Here's a sample syntax: db.createCollection("<collection_name>",columns= [{'id': '<vector_field_name>', 'type': "VECTOR(<vector_dimension>, <type>) NOT NULL"}])Refer to createCollection for more information.
-
If the specified collection does not exist, it is created along with the required structures.
For example: db.runCommand({createIndexes: "sampleCollection",indexes: [{ key: { "sampleCollection.vectorField": "vector" },name: "searchVector_IVF_EUC",kaiIndexOptions:{ "index_type":"IVF_FLAT","nlist":5,"nprobe":1,"metric_type": "EUCLIDEAN_DISTANCE","dimensions": 2 } }]} )DESC sampleCollection;+-------------------------------+----------------+------+-----+---------+----------+ | Field | Type | Null | Key | Default | Extra | +-------------------------------+----------------+------+-----+---------+----------+ | _id | bson | NO | | NULL | | | _more | bson | NO | | NULL | | | $_id | longblob | YES | UNI | NULL | computed | | $sampleCollection.vectorField | vector(2, F32) | NO | MUL | NULL | computed | +-------------------------------+----------------+------+-----+---------+----------+
-
Use the
index_
andtype dimensions
fields in thekaiIndexOptions
parameter to specify the type of vector index and the dimension of the vector, respectively. -
You can specify supported Index Options in the
kaiIndexOptions
parameter for each index type.The specified values are set as defaults for the respective index search parameters.
Multikey Indexes (GIN Index)
SingleStore implements multikey indexes as GIN Index.
To create a GIN index, use the createIndex
command as:
db.<collection>.createIndex({"<path>":"gin"})
where path
is the path to a property in the BSON document to index.
db.users.createIndex({"addresses.city":"gin"})
Remarks
-
GIN index (multikey index) is supported with
$eq
and$in
withinfind
or$match
, and optionally within a tree of$and
,$or
, or$elemMatch
operation. -
A GIN index can neither be a unique index nor have a compound key.
Example
The following example shows how to create a vector index using the createIndexes
command.
db.runCommand({createIndexes: "exampleCollection",indexes: [{ key: { "exampleCollection.vectorField": "vector" },name: "searchVector_IVF_EUC",kaiIndexOptions:{ "index_type":"IVF_FLAT","nlist":5,"nprobe":1,"metric_type": "EUCLIDEAN_DISTANCE","dimensions": 2 } }]} )
Use the db.
command to view existing indexes on a collection.
db.exampleCollection.getIndexes()
[ { v: 2, key: { _id: 1 }, name: '_id_' },
{ v: 2,
key: { 'exampleCollection.vectorField': 'vector' },
name: 'searchVector_IVF_EUC',
kaiSearchSpec:
{ nlist: 5,
nprobe: 1,
index_type: 'IVF_FLAT',
metric_type: 'EUCLIDEAN_DISTANCE',
dimensions: 2 } } ]
References
Last modified: April 9, 2025