Skip to content

Commit 3dc6dc7

Browse files
feat(oss-opensearch): Add memory-optimized search configuration support
1 parent 21eafc1 commit 3dc6dc7

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

vectordb_bench/backend/clients/oss_opensearch/config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class OSSOpenSearchIndexConfig(BaseModel, DBCaseConfig):
7878
quantization_type: OSSOpenSearchQuantization = OSSOpenSearchQuantization.fp32
7979
replication_type: str | None = "DOCUMENT"
8080
knn_derived_source_enabled: bool = False
81+
memory_optimized_search: bool = False
8182

8283
@root_validator
8384
def validate_engine_name(cls, values: dict):
@@ -105,6 +106,7 @@ def __eq__(self, obj: any):
105106
and self.quantization_type == obj.quantization_type
106107
and self.replication_type == obj.replication_type
107108
and self.knn_derived_source_enabled == obj.knn_derived_source_enabled
109+
and self.memory_optimized_search == obj.memory_optimized_search
108110
)
109111

110112
def __hash__(self) -> int:
@@ -120,6 +122,7 @@ def __hash__(self) -> int:
120122
self.quantization_type,
121123
self.replication_type,
122124
self.knn_derived_source_enabled,
125+
self.memory_optimized_search,
123126
)
124127
)
125128

vectordb_bench/backend/clients/oss_opensearch/oss_opensearch.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@
3232
"applies": lambda version, _: version >= Version("3.0"),
3333
"value": lambda case_config: case_config.knn_derived_source_enabled,
3434
},
35+
{
36+
"name": "knn.memory_optimized_search",
37+
"applies": lambda version, case_config: (
38+
version >= Version("3.1")
39+
and case_config.engine == OSSOS_Engine.faiss
40+
and case_config.memory_optimized_search
41+
),
42+
"value": lambda case_config: case_config.memory_optimized_search,
43+
},
3544
]
3645

3746

@@ -278,6 +287,7 @@ def _create_index(self, client: OpenSearch) -> None:
278287
log.info(f"Creating index with knn_derived_source_enabled: {self.case_config.knn_derived_source_enabled}")
279288
log.info(f"Creating index with engine: {self.case_config.engine}")
280289
log.info(f"Creating index with metric type: {self.case_config.metric_type_name}")
290+
log.info(f"Creating index with memory_optimized_search: {self.case_config.memory_optimized_search}")
281291
log.info(f"All case_config parameters: {self.case_config.__dict__}")
282292

283293
settings_manager = self._get_settings_manager(client)

vectordb_bench/frontend/config/dbCaseConfigs.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1892,6 +1892,17 @@ class CaseConfigInput(BaseModel):
18921892
},
18931893
)
18941894

1895+
CaseConfigParamInput_MEMORY_OPTIMIZED_SEARCH_AWSOpensearch = CaseConfigInput(
1896+
label=CaseConfigParamType.memory_optimized_search,
1897+
displayLabel="Memory Optimized Search",
1898+
inputHelp="Enable memory-optimized search (OpenSearch 3.1+ and FAISS engine only).",
1899+
inputType=InputType.Bool,
1900+
inputConfig={
1901+
"value": False,
1902+
},
1903+
isDisplayed=lambda config: (config.get(CaseConfigParamType.engine_name, "").lower() == "faiss"),
1904+
)
1905+
18951906
MilvusLoadConfig = [
18961907
CaseConfigParamInput_IndexType,
18971908
CaseConfigParamInput_M,
@@ -2324,6 +2335,7 @@ class CaseConfigInput(BaseModel):
23242335
CaseConfigParamInput_NUMBER_OF_INDEXING_CLIENTS_AWSOpensearch,
23252336
CaseConfigParamInput_INDEX_THREAD_QTY_AWSOpensearch,
23262337
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
2338+
CaseConfigParamInput_MEMORY_OPTIMIZED_SEARCH_AWSOpensearch,
23272339
CaseConfigParamInput_INDEX_THREAD_QTY_DURING_FORCE_MERGE_AWSOpensearch,
23282340
]
23292341

@@ -2340,6 +2352,7 @@ class CaseConfigInput(BaseModel):
23402352
CaseConfigParamInput_NUMBER_OF_INDEXING_CLIENTS_AWSOpensearch,
23412353
CaseConfigParamInput_INDEX_THREAD_QTY_AWSOpensearch,
23422354
CaseConfigParamInput_REPLICATION_TYPE_AWSOpensearch,
2355+
CaseConfigParamInput_MEMORY_OPTIMIZED_SEARCH_AWSOpensearch,
23432356
CaseConfigParamInput_INDEX_THREAD_QTY_DURING_FORCE_MERGE_AWSOpensearch,
23442357
]
23452358

vectordb_bench/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ class CaseConfigParamType(Enum):
128128
use_routing = "use_routing"
129129
replication_type = "replication_type"
130130
knn_derived_source_enabled = "knn_derived_source_enabled"
131+
memory_optimized_search = "memory_optimized_search"
131132

132133
# CockroachDB parameters
133134
min_partition_size = "min_partition_size"

0 commit comments

Comments
 (0)