I am following this tutorial about taking advantage of Azure Cosmos DB for Mongo DB vCore's vector similarity search functionality. To do so, I created a Cosmos DB resource using "Try Azure Cosmos DB" with a resource group located in East US.
I connected to the database using this connection string:
import urllib
import pymongo
COSMOS_MONGO_USER = 'cosmosrgeastus3xxxxxxxxxxxxxxxxxxxxxb'
COSMOS_MONGO_PWD = 'zxxxxxxxxxxxxxxxxxxxxxxxxxxxxx='
COSMOS_MONGO_SERVER = 'cosmosrgeastus318282c5-ac03-48af-82f4db.mongo.cosmos.azure.com'
COSMOS_MONGO_PORT = '10255'
mongo_conn = "mongodb://"+urllib.parse.quote(COSMOS_MONGO_USER)+":"+urllib.parse.quote(COSMOS_MONGO_PWD)+"@"+COSMOS_MONGO_SERVER+':'+COSMOS_MONGO_PORT+"?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@cosmosrgeastus318282c5-ac03-48af-82f4db@"
mongo_client = pymongo.MongoClient(mongo_conn)
Despite a warning ("You appear to be connected to a CosmosDB cluster"), the client seems to be created successfully.
Then I created a database and a collection
# create a database called TutorialDB
db = mongo_client['TutorialDB']
# Create collection if it doesn't exist
COLLECTION_NAME = "CarrierManualCollection"
collection = db[COLLECTION_NAME]
if COLLECTION_NAME not in db.list_collection_names():
# Creates a unsharded collection that uses the DBs shared throughput
db.create_collection(COLLECTION_NAME)
print("Created collection '{}'.\n".format(COLLECTION_NAME))
else:
print("Using collection: '{}'.\n".format(COLLECTION_NAME))
Which results as expected printing Created collection 'CarrierManualCollection'.
Then, I try to create an IVF index, since "IVF is supported on all cluster tiers, including the free tier".
db.command({
'createIndexes': COLLECTION_NAME,
'indexes': [
{
'name': 'VectorSearchIndex',
'key': {
"contentVector": "cosmosSearch"
},
'cosmosSearchOptions': {
'kind': 'vector-ivf',
'numLists': 1,
'similarity': 'COS',
'dimensions': 1536
}
}
]
})
But I got this error message:
OperationFailure: cosmosSearchOptions, full error: {'ok': 0.0, 'errmsg': 'cosmosSearchOptions', 'code': 197, 'codeName': 'InvalidIndexSpecificationOption'}
The expected behavior is to get a success message that allows me to continue with the tutorial adding data to the collection.
What am I missing?