Skip to content

Commit 1f0e299

Browse files
feat(oss-opensearch): Add KNN derived source configuration option (zilliztech#632)
1 parent 9091e46 commit 1f0e299

4 files changed

Lines changed: 24 additions & 0 deletions

File tree

vectordb_bench/backend/clients/oss_opensearch/config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ class OSSOpenSearchIndexConfig(BaseModel, DBCaseConfig):
7777
oversample_factor: float = 1.0
7878
quantization_type: OSSOpenSearchQuantization = OSSOpenSearchQuantization.fp32
7979
replication_type: str | None = "DOCUMENT"
80+
knn_derived_source_enabled: bool = False
8081

8182
@root_validator
8283
def validate_engine_name(cls, values: dict):
@@ -103,6 +104,7 @@ def __eq__(self, obj: any):
103104
and self.use_routing == obj.use_routing
104105
and self.quantization_type == obj.quantization_type
105106
and self.replication_type == obj.replication_type
107+
and self.knn_derived_source_enabled == obj.knn_derived_source_enabled
106108
)
107109

108110
def __hash__(self) -> int:
@@ -117,6 +119,7 @@ def __hash__(self) -> int:
117119
self.use_routing,
118120
self.quantization_type,
119121
self.replication_type,
122+
self.knn_derived_source_enabled,
120123
)
121124
)
122125

vectordb_bench/backend/clients/oss_opensearch/oss_opensearch.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
"applies": lambda version, _: version >= Version("3.0"),
2828
"value": lambda _: "-1",
2929
},
30+
{
31+
"name": "knn.derived_source.enabled",
32+
"applies": lambda version, _: version >= Version("3.0"),
33+
"value": lambda case_config: case_config.knn_derived_source_enabled,
34+
},
3035
]
3136

3237

@@ -275,6 +280,7 @@ def _create_index(self, client: OpenSearch) -> None:
275280
log.info(f"Creating index with ef_search: {ef_search_value}")
276281
log.info(f"Creating index with number_of_replicas: {self.case_config.number_of_replicas}")
277282
log.info(f"Creating index with replication_type: {self.case_config.replication_type}")
283+
log.info(f"Creating index with knn_derived_source_enabled: {self.case_config.knn_derived_source_enabled}")
278284
log.info(f"Creating index with engine: {self.case_config.engine}")
279285
log.info(f"Creating index with metric type: {self.case_config.metric_type_name}")
280286
log.info(f"All case_config parameters: {self.case_config.__dict__}")

vectordb_bench/frontend/config/dbCaseConfigs.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1882,6 +1882,16 @@ class CaseConfigInput(BaseModel):
18821882
},
18831883
)
18841884

1885+
CaseConfigParamInput_KNN_DERIVED_SOURCE_ENABLED_AWSOpensearch = CaseConfigInput(
1886+
label=CaseConfigParamType.knn_derived_source_enabled,
1887+
displayLabel="KNN Derived Source Enabled",
1888+
inputHelp="Enable KNN derived source (OpenSearch 3.x+ only). Ignored for 2.x versions.",
1889+
inputType=InputType.Bool,
1890+
inputConfig={
1891+
"value": False,
1892+
},
1893+
)
1894+
18851895
MilvusLoadConfig = [
18861896
CaseConfigParamInput_IndexType,
18871897
CaseConfigParamInput_M,
@@ -1963,12 +1973,14 @@ class CaseConfigInput(BaseModel):
19631973
CaseConfigParamInput_EFConstruction_AWSOpensearch,
19641974
CaseConfigParamInput_M_AWSOpensearch,
19651975
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
1976+
CaseConfigParamInput_KNN_DERIVED_SOURCE_ENABLED_AWSOpensearch,
19661977
]
19671978
AWSOpenSearchPerformanceConfig = [
19681979
CaseConfigParamInput_EFConstruction_AWSOpensearch,
19691980
CaseConfigParamInput_M_AWSOpensearch,
19701981
CaseConfigParamInput_EF_SEARCH_AWSOpensearch,
19711982
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
1983+
CaseConfigParamInput_KNN_DERIVED_SOURCE_ENABLED_AWSOpensearch,
19721984
]
19731985

19741986
AliyunOpensearchLoadingConfig = []
@@ -2308,6 +2320,7 @@ class CaseConfigInput(BaseModel):
23082320
CaseConfigParamInput_EFConstruction_AWSOpensearch,
23092321
CaseConfigParamInput_NUMBER_OF_SHARDS_AWSOpensearch,
23102322
CaseConfigParamInput_NUMBER_OF_REPLICAS_AWSOpensearch,
2323+
CaseConfigParamInput_KNN_DERIVED_SOURCE_ENABLED_AWSOpensearch,
23112324
CaseConfigParamInput_NUMBER_OF_INDEXING_CLIENTS_AWSOpensearch,
23122325
CaseConfigParamInput_INDEX_THREAD_QTY_AWSOpensearch,
23132326
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
@@ -2323,6 +2336,7 @@ class CaseConfigInput(BaseModel):
23232336
CaseConfigParamInput_EFConstruction_AWSOpensearch,
23242337
CaseConfigParamInput_NUMBER_OF_SHARDS_AWSOpensearch,
23252338
CaseConfigParamInput_NUMBER_OF_REPLICAS_AWSOpensearch,
2339+
CaseConfigParamInput_KNN_DERIVED_SOURCE_ENABLED_AWSOpensearch,
23262340
CaseConfigParamInput_NUMBER_OF_INDEXING_CLIENTS_AWSOpensearch,
23272341
CaseConfigParamInput_INDEX_THREAD_QTY_AWSOpensearch,
23282342
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,

vectordb_bench/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class CaseConfigParamType(Enum):
127127
oversample_ratio = "oversample_ratio"
128128
use_routing = "use_routing"
129129
replication_type = "replication_type"
130+
knn_derived_source_enabled = "knn_derived_source_enabled"
130131

131132
# CockroachDB parameters
132133
min_partition_size = "min_partition_size"

0 commit comments

Comments
 (0)