我试图在我的 Milvus 集合中创建索引,但我不断收到下面的错误,我很困惑为什么会出现这种情况。
pymilvus.exceptions.MilvusException: <MilvusException: (code=65535, message=invalid index type: IVF_FLAT, local mode only support FLAT HNSW AUTOINDEX: )>
这是我一直在执行的代码。该脚本适用于 Milvus 2.3.15 和 pymilvus 2.3.7,但是,我在 pymilvus 2.4.4 和 milvus 2.4.0 中没有得到相同的结果。
from pymilvus import (Collection, CollectionSchema, DataType, utility, FieldSchema,connections)
connections.connect(alias='default', uri='localhost', port=19530)
fields = [
FieldSchema(name='id', dtype=DataType.VARCHAR, max_length=50, is_primary=True),
FieldSchema(name='community_id', dtype=DataType.INT64),
FieldSchema(name='content', dtype=DataType.VARCHAR, max_length=65535),
FieldSchema(name='dense_embedding', dtype=DataType.FLOAT_VECTOR, dim=3072),
]
schema = CollectionSchema(
fields=fields,
description='docs schema',
auto_id=False,
enable_dynamic_field=True
)
dense_index = {
"index_type": "IVF_FLAT",
"metric_type": "L2",
"params": {"nlist": 500},
}
collection = Collection(
name='docs',
schema=schema,
num_shards=2,
consistency_level='Strong'
)
collection.create_index("dense_embedding", dense_index)
根本原因是:连接参数不正确。
connections.connect(uri='localhost', port=19530)
应该
connections.connect(host='localhost', port=19530)
uri='localhost' 将启动 milvus lite,这是一个本地轻量级服务器。通过连接,所有 API 都将重定向到精简版服务器,而不是独立容器。