210 lines
5.2 KiB
Python
210 lines
5.2 KiB
Python
from zvec import (
|
|
CollectionOption,
|
|
IndexOption,
|
|
OptimizeOption,
|
|
InvertIndexParam,
|
|
HnswIndexParam,
|
|
IVFIndexParam,
|
|
FlatIndexParam,
|
|
AlterColumnOption,
|
|
AddColumnOption,
|
|
DataType,
|
|
MetricType,
|
|
QuantizeType,
|
|
)
|
|
|
|
|
|
VALID_VECTOR_DATA_TYPE_INDEX_PARAM_MAP = {
|
|
DataType.VECTOR_FP32: [
|
|
HnswIndexParam(),
|
|
HnswIndexParam(
|
|
metric_type=MetricType.IP,
|
|
m=16,
|
|
ef_construction=100,
|
|
quantize_type=QuantizeType.INT8,
|
|
),
|
|
HnswIndexParam(
|
|
metric_type=MetricType.COSINE,
|
|
m=24,
|
|
ef_construction=150,
|
|
quantize_type=QuantizeType.INT4,
|
|
),
|
|
HnswIndexParam(
|
|
metric_type=MetricType.L2,
|
|
m=32,
|
|
ef_construction=200,
|
|
quantize_type=QuantizeType.FP16,
|
|
),
|
|
FlatIndexParam(),
|
|
FlatIndexParam(metric_type=MetricType.IP, quantize_type=QuantizeType.INT4),
|
|
FlatIndexParam(metric_type=MetricType.L2, quantize_type=QuantizeType.INT8),
|
|
FlatIndexParam(metric_type=MetricType.COSINE, quantize_type=QuantizeType.FP16),
|
|
IVFIndexParam(),
|
|
IVFIndexParam(
|
|
metric_type=MetricType.IP,
|
|
quantize_type=QuantizeType.INT4,
|
|
n_list=100,
|
|
n_iters=10,
|
|
use_soar=False,
|
|
),
|
|
IVFIndexParam(
|
|
metric_type=MetricType.L2,
|
|
quantize_type=QuantizeType.INT8,
|
|
n_list=200,
|
|
n_iters=20,
|
|
use_soar=True,
|
|
),
|
|
IVFIndexParam(
|
|
metric_type=MetricType.COSINE,
|
|
quantize_type=QuantizeType.FP16,
|
|
n_list=150,
|
|
n_iters=15,
|
|
use_soar=False,
|
|
),
|
|
],
|
|
DataType.VECTOR_FP16: [
|
|
HnswIndexParam(),
|
|
FlatIndexParam(),
|
|
# IVFIndexParam(),
|
|
],
|
|
DataType.VECTOR_INT8: [
|
|
HnswIndexParam(),
|
|
FlatIndexParam(),
|
|
# IVFIndexParam(),
|
|
],
|
|
DataType.SPARSE_VECTOR_FP32: [
|
|
HnswIndexParam(),
|
|
FlatIndexParam(),
|
|
HnswIndexParam(
|
|
metric_type=MetricType.IP,
|
|
m=16,
|
|
ef_construction=100,
|
|
quantize_type=QuantizeType.FP16,
|
|
),
|
|
],
|
|
DataType.SPARSE_VECTOR_FP16: [
|
|
HnswIndexParam(),
|
|
FlatIndexParam(),
|
|
HnswIndexParam(
|
|
metric_type=MetricType.IP,
|
|
m=16,
|
|
ef_construction=100,
|
|
),
|
|
],
|
|
}
|
|
|
|
VALID_VECTOR_DATA_TYPE_INDEX_PARAM_MAP_PARAMS = [
|
|
(data_type, param)
|
|
for data_type, params in VALID_VECTOR_DATA_TYPE_INDEX_PARAM_MAP.items()
|
|
for param in params
|
|
]
|
|
|
|
INVALID_VECTOR_DATA_TYPE_INDEX_PARAM_MAP = {
|
|
DataType.VECTOR_FP32: [
|
|
InvertIndexParam(),
|
|
],
|
|
DataType.VECTOR_FP16: [
|
|
InvertIndexParam(),
|
|
],
|
|
DataType.VECTOR_INT8: [
|
|
InvertIndexParam(),
|
|
],
|
|
DataType.SPARSE_VECTOR_FP32: [
|
|
HnswIndexParam(metric_type=MetricType.L2),
|
|
FlatIndexParam(metric_type=MetricType.COSINE),
|
|
IVFIndexParam(),
|
|
InvertIndexParam(),
|
|
],
|
|
DataType.SPARSE_VECTOR_FP16: [
|
|
HnswIndexParam(metric_type=MetricType.L2),
|
|
FlatIndexParam(metric_type=MetricType.COSINE),
|
|
IVFIndexParam(),
|
|
InvertIndexParam(),
|
|
],
|
|
}
|
|
|
|
INVALID_VECTOR_DATA_TYPE_INDEX_PARAM_MAP_PARAMS = [
|
|
(data_type, param)
|
|
for data_type, params in INVALID_VECTOR_DATA_TYPE_INDEX_PARAM_MAP.items()
|
|
for param in params
|
|
]
|
|
|
|
COLLECTION_NAME_MAX_LENGTH = 64
|
|
|
|
COLLECTION_NAME_VALID_LIST = [
|
|
"col",
|
|
"C0llECTION",
|
|
"Collection1",
|
|
"collection_2",
|
|
"123collection-",
|
|
"a" * COLLECTION_NAME_MAX_LENGTH,
|
|
]
|
|
|
|
COLLECTION_NAME_INVALID_LIST = [
|
|
"l",
|
|
"1C",
|
|
"",
|
|
" ",
|
|
None,
|
|
"abcdefghijklmnopqrstuvwxzy123456abcdefghijklmnopqrstuvwxzy1234561",
|
|
"test/",
|
|
"!@#$%^&*()test",
|
|
]
|
|
|
|
FIELD_NAME_VALID_LIST = [
|
|
"1",
|
|
"12",
|
|
"col",
|
|
"ID",
|
|
"name1",
|
|
"Weigt_12-",
|
|
"123age",
|
|
"name_with_underscores",
|
|
"123numeric_start",
|
|
"name-with-dashes",
|
|
]
|
|
|
|
FIELD_NAME_INVALID_LIST = [
|
|
"",
|
|
" ",
|
|
None,
|
|
"abcdefghijklmnopqrstuvwxzy1234561",
|
|
"test/",
|
|
"!@#$%^&*()test",
|
|
"name@with#special$chars",
|
|
"name with spaces",
|
|
]
|
|
|
|
FIELD_LIST_MAX_LENGTH = 1024
|
|
VECTOR_LIST_MAX_LENGTH = 5
|
|
DENSE_VECTOR_MAX_DIMENSION = 20000
|
|
SPARSE_VECTOR_MAX_DIMENSION = 4096
|
|
|
|
FIELD_VECTOR_LIST_DIMENSION_VALID_LIST = [
|
|
# field_list_len, vector_list_len, dimension
|
|
(1, 1, 1),
|
|
(2, 2, 512),
|
|
(512, 3, 1024),
|
|
(1024, 4, 20000),
|
|
]
|
|
|
|
FIELD_VECTOR_LIST_DIMENSION_INVALID_LIST = [
|
|
# field_list_len, vector_list_len, dimension
|
|
(1, 1, 0),
|
|
(1, 1, -1),
|
|
(1, 1, "1"),
|
|
(1, 1, 20001),
|
|
]
|
|
|
|
|
|
INCOMPATIBLE_CONSTRUCTOR_ERROR_MSG = "incompatible constructor arguments"
|
|
SCHEMA_VALIDATE_ERROR_MSG = "schema validate failed"
|
|
CREATE_READ_ONLY_ERROR_MSG = "Unable to create collection with read-only mode"
|
|
INCOMPATIBLE_FUNCTION_ERROR_MSG = "incompatible function arguments"
|
|
INVALID_PATH_ERROR_MSG = "path validate failed"
|
|
INDEX_NON_EXISTENT_COLUMN_ERROR_MSG = "not found in schema"
|
|
ACCESS_DESTROYED_COLLECTION_ERROR_MSG = "is already destroyed"
|
|
COLLECTION_PATH_NOT_EXIST_ERROR_MSG = "not exist"
|
|
NOT_SUPPORT_ADD_COLUMN_ERROR_MSG = "Only support basic numeric data type"
|
|
NOT_EXIST_COLUMN_TO_DROP_ERROR_MSG = "Column not exists"
|