diff --git a/.gitignore b/.gitignore index e21c3643d..2e741a466 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ NOTES.md results/* tools/custom/data.json + +*.png +venv/ diff --git a/Dockerfile b/Dockerfile index 227ed4360..fbec113f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,9 @@ ENV PYTHONFAULTHANDLER=1 \ PIP_DEFAULT_TIMEOUT=100 \ POETRY_VERSION=2.1.2 +RUN apt update +RUN apt install -y wget + RUN pip install "poetry==$POETRY_VERSION" # Copy only requirements to cache them in docker layer @@ -21,5 +24,7 @@ RUN poetry config virtualenvs.create false \ # Creating folders, and files for a project: COPY . /code +RUN pip install "boto3" + CMD ["python"] diff --git a/README.md b/README.md index bb79a7dab..cc66f3861 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,21 @@ scenario against which it should be tested. A specific scenario may assume running the server in a single or distributed mode, a different client implementation and the number of client instances. +## Data sets + +We have a number of precomputed data sets. All data sets have been pre-split into train/test and include ground truth data for the top-100 nearest neighbors. + +| Dataset | Dimensions | Train size | Test size | Neighbors | Distance | +| ----------------------------------------------------------------------------------------------------------- | ---------: | ---------: | --------: | --------: | --------- | +| [LAION-1M: subset of LAION 400M English (image embedings)](https://laion.ai/blog/laion-400-open-dataset/) | 512 | 1,000,000 | 10,000 | 100 | Angular | +| [LAION-10M: subset of LAION 400M English (image embedings)](https://laion.ai/blog/laion-400-open-dataset/) | 512 | 10,000,000 | 10,000 | 100 | Angular | +| [LAION-20M: subset of LAION 400M English (image embedings)](https://laion.ai/blog/laion-400-open-dataset/) | 512 | 20,000,000 | 10,000 | 100 | Angular | +| [LAION-40M: subset of LAION 400M English (image embedings)](https://laion.ai/blog/laion-400-open-dataset/) | 512 | 40,000,000 | 10,000 | 100 | Angular | +| [LAION-100M: subset of LAION 400M English (image embedings)](https://laion.ai/blog/laion-400-open-dataset/) | 512 | 100,000,000 | 10,000 | 100 | Angular | +| [LAION-200M: subset of LAION 400M English (image embedings)](https://laion.ai/blog/laion-400-open-dataset/) | 512 | 200,000,000 | 10,000 | 100 | Angular | +| [LAION-400M: from LAION 400M English (image embedings)](https://laion.ai/blog/laion-400-open-dataset/) | 512 | 400,000,000 | 10,000 | 100 | Angular | + + ## How to run a benchmark? Benchmarks are implemented in server-client mode, meaning that the server is diff --git a/benchmark/dataset.py b/benchmark/dataset.py index 76bdad993..bbbaa0952 100644 --- a/benchmark/dataset.py +++ b/benchmark/dataset.py @@ -3,15 +3,18 @@ import tarfile import urllib.request from dataclasses import dataclass, field -from typing import Dict, Optional +from typing import Dict, List, Optional, Union from urllib.request import build_opener, install_opener - +import boto3 +import botocore.exceptions from benchmark import DATASETS_DIR from dataset_reader.ann_compound_reader import AnnCompoundReader from dataset_reader.ann_h5_reader import AnnH5Reader +from dataset_reader.ann_h5_multi_reader import AnnH5MultiReader from dataset_reader.base_reader import BaseReader from dataset_reader.json_reader import JSONReader -from dataset_reader.sparse_reader import SparseReader +from tqdm import tqdm +from pathlib import Path # Needed for Cloudflare's firewall in ann-benchmarks # See https://github.com/erikbern/ann-benchmarks/pull/561 @@ -24,9 +27,8 @@ class DatasetConfig: name: str type: str - path: str - - link: Optional[str] = None + path: Union[str, Dict[str, List[Dict[str, str]]]] # Can be a string or a dict for multi-file structure + link: Optional[Union[str, Dict[str, List[Dict[str, str]]]]] = None schema: Optional[Dict[str, str]] = field(default_factory=dict) # None in case of sparse vectors: vector_size: Optional[int] = None @@ -35,57 +37,227 @@ class DatasetConfig: READER_TYPE = { "h5": AnnH5Reader, + "h5-multi": AnnH5MultiReader, "jsonl": JSONReader, "tar": AnnCompoundReader, - "sparse": SparseReader, } +# Progress bar for urllib downloads +def show_progress(block_num, block_size, total_size): + percent = round(block_num * block_size / total_size * 100, 2) + print(f"{percent} %", end="\r") + + +# Progress handler for S3 downloads +class S3Progress(tqdm): + def __init__(self, total_size): + super().__init__( + total=total_size, unit="B", unit_scale=True, desc="Downloading from S3" + ) + + def __call__(self, bytes_amount): + self.update(bytes_amount) + + class Dataset: - def __init__(self, config: dict): + def __init__( + self, + config: dict, + skip_upload: bool, + skip_search: bool, + upload_start_idx: int, + upload_end_idx: int, + ): self.config = DatasetConfig(**config) + self.skip_upload = skip_upload + self.skip_search = skip_search + self.upload_start_idx = upload_start_idx + self.upload_end_idx = upload_end_idx def download(self): - target_path = DATASETS_DIR / self.config.path + if isinstance(self.config.path, dict): # Handle multi-file datasets + if self.skip_search is False: + # Download query files + for query in self.config.path.get("queries", []): + self._download_file(query["path"], query["link"]) + else: + print( + f"skipping to download query file given skip_search={self.skip_search}" + ) + if self.skip_upload is False: + # Download data files + for data in self.config.path.get("data", []): + start_idx = data["start_idx"] + end_idx = data["end_idx"] + data_path = data["path"] + data_link = data["link"] + if self.upload_start_idx >= end_idx: + print( + f"skipping downloading {data_path} from {data_link} given {self.upload_start_idx}>{end_idx}" + ) + continue + if self.upload_end_idx < start_idx: + print( + f"skipping downloading {data_path} from {data_link} given {self.upload_end_idx}<{start_idx}" + ) + continue + self._download_file(data["path"], data["link"]) + else: + print( + f"skipping to download data/upload files given skip_upload={self.skip_upload}" + ) + + else: # Handle single-file datasets + target_path = DATASETS_DIR / self.config.path + + if target_path.exists(): + print(f"{target_path} already exists") + return + + if self.config.link: + downloaded_withboto = False + if is_s3_link(self.config.link): + print("Use boto3 to download from S3. Faster!") + try: + self._download_from_s3(self.config.link, target_path) + downloaded_withboto = True + except botocore.exceptions.NoCredentialsError: + print("Credentials not found, downloading without boto3") + if not downloaded_withboto: + print(f"Downloading from URL {self.config.link}...") + tmp_path, _ = urllib.request.urlretrieve( + self.config.link, None, show_progress + ) + self._extract_or_move_file(tmp_path, target_path) + def _download_file(self, relative_path: str, url: str): + target_path = DATASETS_DIR / relative_path if target_path.exists(): print(f"{target_path} already exists") return - if self.config.link: - print(f"Downloading {self.config.link}...") - tmp_path, _ = urllib.request.urlretrieve(self.config.link) + print(f"Downloading from {url} to {target_path}") + tmp_path, _ = urllib.request.urlretrieve(url, None, show_progress) + self._extract_or_move_file(tmp_path, target_path) - if self.config.link.endswith(".tgz") or self.config.link.endswith( - ".tar.gz" - ): - print(f"Extracting: {tmp_path} -> {target_path}") - (DATASETS_DIR / self.config.path).mkdir(exist_ok=True, parents=True) - file = tarfile.open(tmp_path) + def _extract_or_move_file(self, tmp_path, target_path): + if tmp_path.endswith(".tgz") or tmp_path.endswith(".tar.gz"): + print(f"Extracting: {tmp_path} -> {target_path}") + (DATASETS_DIR / self.config.path).mkdir(exist_ok=True, parents=True) + with tarfile.open(tmp_path) as file: file.extractall(target_path) - file.close() - os.remove(tmp_path) - else: - print(f"Moving: {tmp_path} -> {target_path}") - (DATASETS_DIR / self.config.path).parent.mkdir(exist_ok=True) - shutil.copy2(tmp_path, target_path) - os.remove(tmp_path) + os.remove(tmp_path) + else: + print(f"Moving: {tmp_path} -> {target_path}") + Path(target_path).parent.mkdir(exist_ok=True) + shutil.copy2(tmp_path, target_path) + os.remove(tmp_path) + + def _download_from_s3(self, link, target_path): + s3 = boto3.client("s3") + bucket_name, s3_key = parse_s3_url(link) + tmp_path = f"/tmp/{os.path.basename(s3_key)}" + + print( + f"Downloading from S3: {link}... bucket_name={bucket_name}, s3_key={s3_key}" + ) + object_info = s3.head_object(Bucket=bucket_name, Key=s3_key) + total_size = object_info["ContentLength"] + + with open(tmp_path, "wb") as f: + progress = S3Progress(total_size) + s3.download_fileobj(bucket_name, s3_key, f, Callback=progress) + + self._extract_or_move_file(tmp_path, target_path) def get_reader(self, normalize: bool) -> BaseReader: reader_class = READER_TYPE[self.config.type] - return reader_class(DATASETS_DIR / self.config.path, normalize=normalize) + + if self.config.type == "h5-multi": + # For h5-multi, we need to pass both data files and query file + data_files = self.config.path["data"] + for data_file_dict in data_files: + data_file_dict["path"] = DATASETS_DIR / data_file_dict["path"] + query_file = DATASETS_DIR / self.config.path["queries"][0]["path"] + return reader_class( + data_files=data_files, + query_file=query_file, + normalize=normalize, + skip_upload=self.skip_upload, + skip_search=self.skip_search, + ) + else: + # For single-file datasets + return reader_class(DATASETS_DIR / self.config.path, normalize=normalize) + + +def is_s3_link(link): + return link.startswith("s3://") or "s3.amazonaws.com" in link + + +def parse_s3_url(s3_url): + if s3_url.startswith("s3://"): + s3_parts = s3_url.replace("s3://", "").split("/", 1) + bucket_name = s3_parts[0] + s3_key = s3_parts[1] if len(s3_parts) > 1 else "" + else: + s3_parts = s3_url.replace("http://", "").replace("https://", "").split("/", 1) + + if ".s3.amazonaws.com" in s3_parts[0]: + bucket_name = s3_parts[0].split(".s3.amazonaws.com")[0] + s3_key = s3_parts[1] if len(s3_parts) > 1 else "" + else: + bucket_name = s3_parts[0] + s3_key = s3_parts[1] if len(s3_parts) > 1 else "" + + return bucket_name, s3_key if __name__ == "__main__": - dataset = Dataset( + dataset_s3_split = Dataset( { - "name": "glove-25-angular", - "vector_size": 25, - "distance": "Cosine", - "type": "h5", - "path": "glove-25-angular/glove-25-angular.hdf5", - "link": "http://ann-benchmarks.com/glove-25-angular.hdf5", - } + "name": "laion-img-emb-768d-1Billion-cosine", + "vector_size": 768, + "distance": "cosine", + "type": "h5-multi", + "path": { + "data": [ + { + "file_number": 1, + "path": "laion-1b/data/laion-img-emb-768d-1Billion-cosine-data-part1-0_to_10000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part1-0_to_10000000.hdf5", + "vector_range": "0-10000000", + "file_size": "30.7 GB", + }, + { + "file_number": 2, + "path": "laion-1b/data/laion-img-emb-768d-1Billion-cosine-data-part10-90000000_to_100000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part10-90000000_to_100000000.hdf5", + "vector_range": "90000000-100000000", + "file_size": "30.7 GB", + }, + { + "file_number": 3, + "path": "laion-1b/data/laion-img-emb-768d-1Billion-cosine-data-part100-990000000_to_1000000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part100-990000000_to_1000000000.hdf5", + "vector_range": "990000000-1000000000", + "file_size": "30.7 GB", + }, + ], + "queries": [ + { + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-queries.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-queries.hdf5", + "file_size": "38.7 MB", + }, + ], + }, + }, + skip_upload=True, + skip_search=False, ) - dataset.download() + dataset_s3_split.download() + reader = dataset_s3_split.get_reader(normalize=False) + print(reader) # Outputs the AnnH5MultiReader instance diff --git a/chart.py b/chart.py new file mode 100644 index 000000000..c23461471 --- /dev/null +++ b/chart.py @@ -0,0 +1,178 @@ +import json +import os + +import matplotlib.pyplot as plt +import argparse + + +x_metrics = {"mean_precisions": {"human_label": "Precision"}} +y_metrics = { + "rps": {"mode": "higher-better", "human_label": "Search Queries per second"}, + "mean_time": { + "mode": "lower-better", + "human_label": "Search avg. latency including RTT (seconds)", + }, + "p50_time": { + "mode": "lower-better", + "human_label": "Search p50 latency including RTT (seconds)", + }, + "p99_time": { + "mode": "lower-better", + "human_label": "Search p99 latency including RTT (seconds)", + }, +} + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--dataset", default="glove-100-angular") + parser.add_argument("-o", "--output", default=None) + parser.add_argument( + "-x", + "--x-axis", + help="Which metric to use on the X-axis", + choices=x_metrics.keys(), + default="mean_precisions", + ) + parser.add_argument( + "--x-axis-left", + default=None, + ) + parser.add_argument( + "--x-axis-right", + default=None, + ) + parser.add_argument( + "--x-axis-label", + default=None, + ) + + parser.add_argument( + "-y", + "--y-axis", + help="Which metric to use on the Y-axis", + choices=y_metrics.keys(), + default="rps", + ) + parser.add_argument( + "--y-axis-label", + default=None, + ) + + parser.add_argument( + "--y-axis-bottom", + default=None, + ) + parser.add_argument( + "--y-axis-top", + default=None, + ) + + parser.add_argument( + "--legend", + default="Redis", + ) + + parser.add_argument( + "--results", type=str, help="results folder to process", default="results" + ) + parser.add_argument( + "--clients", type=int, help="consider results from this client count", default=1 + ) + args = parser.parse_args() + final_results_map = {} + x_axis = [] + y_axis = [] + fig, ax = plt.subplots() + + if os.path.exists(args.results): + print(f"working on dir: {args.results}") + print("reading first the upload data") + for filename in os.listdir(args.results): + f = os.path.join(args.results, filename) + setup_name = filename.split(args.dataset)[0] + setup_name = setup_name[0 : len(setup_name) - 1] + + with open(f, "r") as fd: + try: + json_res = json.load(fd) + except json.decoder.JSONDecodeError as e: + error_str = e.__str__() + print( + f"skipping {filename} given here as an error while processing the file {error_str})" + ) + continue + parallel = 1 + if "parallel" in json_res["params"]: + parallel = json_res["params"]["parallel"] + + if args.clients != parallel: + print( + f"skipping {filename} given the client count ({parallel}) is different than the one we wish to plot ({args.clients})" + ) + continue + # query + if ( + args.x_axis in json_res["results"] + and args.y_axis in json_res["results"] + ): + x_val = json_res["results"][args.x_axis] + y_val = json_res["results"][args.y_axis] + x_axis.append(x_val) + y_axis.append(y_val) + + color = "tab:red" + ax.scatter( + x_axis, y_axis, c=color, label=args.legend, marker="^", edgecolors="none" + ) + + ax.legend() + ax.grid(True) + + x_axis_label = args.x_axis + if args.x_axis in x_metrics: + if "human_label" in x_metrics[args.x_axis]: + x_axis_label = x_metrics[args.x_axis]["human_label"] + if args.x_axis_label is not None: + x_axis_label = args.x_axis_label + plt.xlabel(x_axis_label) + + y_axis_label = args.y_axis + y_axis_mode = "higher-better" + if args.y_axis in y_metrics: + if "human_label" in y_metrics[args.y_axis]: + y_axis_label = y_metrics[args.y_axis]["human_label"] + if "mode" in y_metrics[args.y_axis]: + y_axis_mode = y_metrics[args.y_axis]["mode"] + if args.y_axis_label is not None: + y_axis_label = args.y_axis_label + plt.ylabel(y_axis_label) + title_string = ( + f"{x_axis_label} vs {y_axis_label} ({y_axis_mode}).\nclients={args.clients}" + ) + plt.title(title_string) + + x_axis_left, x_axis_right = plt.xlim() + _, y_axis_top = plt.ylim() + y_axis_bottom = 0 + if args.y_axis_bottom is not None: + y_axis_bottom = float(args.y_axis_bottom) + if args.y_axis_top is not None: + y_axis_top = float(args.y_axis_top) + + plt.ylim(y_axis_bottom, y_axis_top) + + if args.x_axis_left is not None: + x_axis_left = float(args.x_axis_left) + if args.x_axis_right is not None: + x_axis_right = float(args.x_axis_right) + + plt.xlim(x_axis_left, x_axis_right) + + output_file = f"{args.y_axis}.png" + + if args.output is not None: + output_file = args.output + + print(f"writing output to {output_file}") + + plt.savefig(output_file) diff --git a/dataset_reader/ann_h5_multi_reader.py b/dataset_reader/ann_h5_multi_reader.py new file mode 100644 index 000000000..64dfd7f95 --- /dev/null +++ b/dataset_reader/ann_h5_multi_reader.py @@ -0,0 +1,140 @@ +from typing import Iterator, List +import h5py +import numpy as np +import os +from benchmark import DATASETS_DIR +from dataset_reader.base_reader import BaseReader, Query, Record + + +class AnnH5MultiReader(BaseReader): + def __init__( + self, + data_files: str, + query_file: str, + normalize: bool = False, + skip_upload: bool = False, + skip_search: bool = False, + ): + """ + Args: + data_dir (str): Directory containing the HDF5 data files. + query_file (str): Path to the HDF5 query file. + normalize (bool): Whether to normalize the vectors. + """ + self.data_files = data_files + self.query_file = query_file + self.normalize = normalize + self.skip_upload = skip_upload + self.skip_search = skip_search + + # # Load the list of data files (assumes they're named in a consistent format) + # self.data_files = sorted( + # [ + # os.path.join(self.data_dir, f) + # for f in os.listdir(self.data_dir) + # if f.endswith(".hdf5") + # ] + # ) + + def read_queries(self) -> Iterator[Query]: + """Reads the queries from the query file.""" + with h5py.File(self.query_file, "r") as data: + for vector, expected_result, expected_scores in zip( + data["test"], data["neighbors"], data["distances"] + ): + if self.normalize: + vector /= np.linalg.norm(vector) + yield Query( + vector=vector.tolist(), + meta_conditions=None, + expected_result=expected_result.tolist(), + expected_scores=expected_scores.tolist(), + ) + + def read_data( + self, start_idx: int = 0, end_idx: int = None, chunk_size: int = 10_000, *args, **kwargs + ) -> Iterator[Record]: + """ + Reads the 'train' data vectors from multiple HDF5 files based on the specified range. + + Args: + start_idx (int): Start index for the range of vectors. + end_idx (int): End index for the range of vectors. + + Yields: + Record: A Record object for each vector in the specified range. + """ + if end_idx is None: + raise ValueError("You must specify an end index.") + + current_idx = start_idx + vectors_yielded = 0 + + for data_file in self.data_files: + # Extract the range of vectors covered by this file from the filename + file_start = data_file["start_idx"] + file_end = data_file["end_idx"] + path = data_file["path"] + + if current_idx >= end_idx: + break + + # Only read the file if it overlaps with the requested range + if file_start < end_idx and file_end > start_idx: + with h5py.File(path, "r") as data: + train_vectors = data["train"] + # Determine the slice to read from the current file + file_data_start = max(file_start, start_idx) - file_start + file_data_end = min(file_end, end_idx) - file_start + + # Read in chunks instead of the whole slice + for chunk_start in range( + file_data_start, file_data_end, chunk_size + ): + chunk_end = min(chunk_start + chunk_size, file_data_end) + vectors_chunk = train_vectors[chunk_start:chunk_end] + + for vector in vectors_chunk: + if self.normalize: + vector /= np.linalg.norm(vector) + yield Record( + id=current_idx + vectors_yielded, + vector=vector.tolist(), + metadata=None, + ) + vectors_yielded += 1 + + +if __name__ == "__main__": + # Directory containing the data split into multiple parts + data_dir = os.path.join(DATASETS_DIR, "laion-1b", "data") + + data_files = sorted( + [os.path.join(data_dir, f) for f in os.listdir(data_dir) if f.endswith(".hdf5")] + ) + + # Path to the query file + query_file = os.path.join( + DATASETS_DIR, "laion-1b", "laion-img-emb-768d-1Billion-cosine-queries.hdf5" + ) + + reader = AnnH5MultiReader(data_dir, query_file, normalize=False) + + # Example of reading queries and counting them + print("Reading queries...") + query_count = sum(1 for _ in reader.read_queries()) + print(f"Number of queries: {query_count}") + + # Example of reading vectors from 10M to 30M and asserting the length + start_idx = 15_000_000 + end_idx = 16_000_001 + print(f"Reading vectors from {start_idx} to {end_idx}...") + data_vectors = list(reader.read_data(start_idx, end_idx)) + + # Assert the length matches the expected range + expected_length = end_idx - start_idx + actual_length = len(data_vectors) + assert ( + actual_length == expected_length + ), f"Expected {expected_length} vectors, but got {actual_length}" + print(f"Successfully read {actual_length} vectors.") diff --git a/dataset_reader/ann_h5_reader.py b/dataset_reader/ann_h5_reader.py index f87271a1a..fd392cfd4 100644 --- a/dataset_reader/ann_h5_reader.py +++ b/dataset_reader/ann_h5_reader.py @@ -28,7 +28,7 @@ def read_queries(self) -> Iterator[Query]: expected_scores=expected_scores.tolist(), ) - def read_data(self) -> Iterator[Record]: + def read_data(self, *args, **kwargs) -> Iterator[Record]: data = h5py.File(self.path) for idx, vector in enumerate(data["train"]): diff --git a/dataset_reader/base_reader.py b/dataset_reader/base_reader.py index 3861c0f35..6eb1de2dd 100644 --- a/dataset_reader/base_reader.py +++ b/dataset_reader/base_reader.py @@ -26,7 +26,7 @@ class Query: class BaseReader: - def read_data(self) -> Iterator[Record]: + def read_data(self, *args, **kwargs) -> Iterator[Record]: raise NotImplementedError() def read_queries(self) -> Iterator[Query]: diff --git a/dataset_reader/json_reader.py b/dataset_reader/json_reader.py index 3df49a8f4..f1ccf16ee 100644 --- a/dataset_reader/json_reader.py +++ b/dataset_reader/json_reader.py @@ -65,7 +65,7 @@ def read_queries(self) -> Iterator[Query]: expected_result=neighbours, ) - def read_data(self) -> Iterator[Record]: + def read_data(self, *args, **kwargs) -> Iterator[Record]: for idx, (vector, payload) in enumerate( zip(self.read_vectors(), self.read_payloads()) ): diff --git a/dataset_reader/splitter.py b/dataset_reader/splitter.py new file mode 100644 index 000000000..6df622578 --- /dev/null +++ b/dataset_reader/splitter.py @@ -0,0 +1,94 @@ +import os +import h5py +import numpy as np +from tqdm import tqdm +import argparse + +CHUNK_SIZE = 20000 # Number of records to process at a time + + +def split_hdf5_file( + input_path, data_output_dir, start_idx, end_idx, part, normalize=False +): + """ + Split a specified range of the 'train' dataset from the HDF5 file into a single file. + + Args: + input_path (str): Path to the input HDF5 file. + data_output_dir (str): Directory where the output file will be saved. + start_idx (int): Start index of the dataset. + end_idx (int): End index of the dataset. + part (int): Part number for the output file naming. + normalize (bool): Whether to normalize the dataset or not. + """ + with h5py.File(input_path, "r") as data_file: + train_shape = data_file["train"].shape + print(f"Processing train data part {part}: elements {start_idx} to {end_idx}") + + # Define the output path for this part + data_output_path = os.path.join( + data_output_dir, + f"laion-img-emb-768d-1Billion-cosine-data-part{part}-{start_idx}_to_{end_idx}.hdf5", + ) + + with h5py.File(data_output_path, "w") as data_output: + train_dset = data_output.create_dataset( + "train", + shape=(end_idx - start_idx, train_shape[1]), + dtype=data_file["train"].dtype, + ) + + # Create a progress bar for the data splitting process + with tqdm( + total=end_idx - start_idx, + unit="vectors", + desc=f"Processing train data part {part}", + ) as pbar: + for i in range(start_idx, end_idx, CHUNK_SIZE): + chunk_end = min(i + CHUNK_SIZE, end_idx) + train_dset[i - start_idx : chunk_end - start_idx] = data_file[ + "train" + ][i:chunk_end] + pbar.update(chunk_end - i) + + print( + f"Train data part {part} (elements {start_idx} to {end_idx}) saved to {data_output_path}" + ) + + +if __name__ == "__main__": + # Parse command-line arguments + parser = argparse.ArgumentParser( + description="Split HDF5 train dataset into specified parts." + ) + parser.add_argument( + "--input_path", + required=False, + type=str, + default="laion-img-emb-768d-1Billion-cosine.hdf5", + help="Path to the input HDF5 file", + ) + parser.add_argument( + "--data_output_dir", + type=str, + required=False, + default="data", + help="Directory where the split dataset will be saved", + ) + parser.add_argument( + "--start_idx", type=int, help="Start index for the dataset range to process" + ) + parser.add_argument( + "--end_idx", type=int, help="End index for the dataset range to process" + ) + parser.add_argument("--part", type=int, help="Part number for the output file") + + args = parser.parse_args() + + # Ensure the output directory exists + os.makedirs(args.data_output_dir, exist_ok=True) + + # Split the dataset into the specified range + split_hdf5_file( + args.input_path, args.data_output_dir, args.start_idx, args.end_idx, args.part + ) diff --git a/dataset_reader/verify.py b/dataset_reader/verify.py new file mode 100644 index 000000000..805556998 --- /dev/null +++ b/dataset_reader/verify.py @@ -0,0 +1,53 @@ +import os +import h5py + +EXPECTED_VECTORS = 10_000_000 # Expected number of vectors per file + + +def verify_hdf5_files(directory): + """ + Verifies that each HDF5 file in the given directory contains 10 million vectors in the 'train' dataset. + + Args: + directory (str): Directory containing the HDF5 files to check. + """ + hdf_files = [f for f in os.listdir(directory) if f.endswith(".hdf5")] + + if not hdf_files: + print("No HDF5 files found in the directory.") + return + + all_verified = True + + for hdf_file in sorted(hdf_files): + file_path = os.path.join(directory, hdf_file) + + with h5py.File(file_path, "r") as data_file: + if "train" in data_file: + train_shape = data_file["train"].shape + num_vectors = train_shape[0] + print(f"Checking {hdf_file}: contains {num_vectors} vectors.") + + if num_vectors != EXPECTED_VECTORS: + print( + f"ERROR: {hdf_file} contains {num_vectors} vectors, expected {EXPECTED_VECTORS}." + ) + all_verified = False + else: + print(f"ERROR: 'train' dataset not found in {hdf_file}.") + all_verified = False + + if all_verified: + print( + "All HDF5 files verified successfully, each containing 10 million vectors." + ) + else: + print("Some files contain discrepancies. Please check the log above.") + + +if __name__ == "__main__": + # Define the path to the directory containing the HDF5 files + directory = "./data" # Replace with your actual directory + + # Verify the HDF5 files + verify_hdf5_files(directory) diff --git a/datasets/datasets.json b/datasets/datasets.json index 66a1d0cb1..bb404cf33 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -39,6 +39,887 @@ "path": "gist-960-euclidean/gist-960-euclidean.hdf5", "link": "http://ann-benchmarks.com/gist-960-euclidean.hdf5" }, + { + "name": "laion-img-emb-512-1M-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-1M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-1M-cosine.hdf5" + }, + { + "name": "laion-img-emb-512-10M-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-10M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-10M-cosine.hdf5" + }, + { + "name": "laion-img-emb-512-20M-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-20M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-20M-cosine.hdf5" + }, + { + "name": "laion-img-emb-512-40M-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-40M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-40M-cosine.hdf5" + }, + { + "name": "laion-img-emb-512-100M-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-100M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100M-cosine.hdf5" + }, + { + "name": "laion-img-emb-512-200M-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-200M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-200M-cosine.hdf5" + }, + { + "name": "laion-img-emb-512-400M-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-400M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-400M-cosine.hdf5" + }, + { + "name": "laion-img-emb-768-1G-cosine", + "vector_size": 768, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-768/laion-img-emb-768-1G-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-768-1G-cosine.hdf5" + }, + { + "name": "laion-img-emb-768d-1Billion-cosine", + "vector_size": 768, + "distance": "cosine", + "type": "h5-multi", + "path": { + "data": [ + { + "file_number": "1", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part1-0_to_10000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part1-0_to_10000000.hdf5", + "start_idx": 0, + "end_idx": 10000000, + "file_size": "30.7 GB" + }, + { + "file_number": "10", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part10-90000000_to_100000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part10-90000000_to_100000000.hdf5", + "start_idx": 90000000, + "end_idx": 100000000, + "file_size": "30.7 GB" + }, + { + "file_number": "100", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part100-990000000_to_1000000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part100-990000000_to_1000000000.hdf5", + "start_idx": 990000000, + "end_idx": 1000000000, + "file_size": "30.7 GB" + }, + { + "file_number": "11", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part11-100000000_to_110000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part11-100000000_to_110000000.hdf5", + "start_idx": 100000000, + "end_idx": 110000000, + "file_size": "30.7 GB" + }, + { + "file_number": "12", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part12-110000000_to_120000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part12-110000000_to_120000000.hdf5", + "start_idx": 110000000, + "end_idx": 120000000, + "file_size": "30.7 GB" + }, + { + "file_number": "13", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part13-120000000_to_130000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part13-120000000_to_130000000.hdf5", + "start_idx": 120000000, + "end_idx": 130000000, + "file_size": "30.7 GB" + }, + { + "file_number": "14", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part14-130000000_to_140000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part14-130000000_to_140000000.hdf5", + "start_idx": 130000000, + "end_idx": 140000000, + "file_size": "30.7 GB" + }, + { + "file_number": "15", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part15-140000000_to_150000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part15-140000000_to_150000000.hdf5", + "start_idx": 140000000, + "end_idx": 150000000, + "file_size": "30.7 GB" + }, + { + "file_number": "16", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part16-150000000_to_160000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part16-150000000_to_160000000.hdf5", + "start_idx": 150000000, + "end_idx": 160000000, + "file_size": "30.7 GB" + }, + { + "file_number": "17", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part17-160000000_to_170000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part17-160000000_to_170000000.hdf5", + "start_idx": 160000000, + "end_idx": 170000000, + "file_size": "30.7 GB" + }, + { + "file_number": "18", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part18-170000000_to_180000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part18-170000000_to_180000000.hdf5", + "start_idx": 170000000, + "end_idx": 180000000, + "file_size": "30.7 GB" + }, + { + "file_number": "19", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part19-180000000_to_190000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part19-180000000_to_190000000.hdf5", + "start_idx": 180000000, + "end_idx": 190000000, + "file_size": "30.7 GB" + }, + { + "file_number": "2", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part2-10000000_to_20000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part2-10000000_to_20000000.hdf5", + "start_idx": 10000000, + "end_idx": 20000000, + "file_size": "30.7 GB" + }, + { + "file_number": "20", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part20-190000000_to_200000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part20-190000000_to_200000000.hdf5", + "start_idx": 190000000, + "end_idx": 200000000, + "file_size": "30.7 GB" + }, + { + "file_number": "21", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part21-200000000_to_210000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part21-200000000_to_210000000.hdf5", + "start_idx": 200000000, + "end_idx": 210000000, + "file_size": "30.7 GB" + }, + { + "file_number": "22", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part22-210000000_to_220000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part22-210000000_to_220000000.hdf5", + "start_idx": 210000000, + "end_idx": 220000000, + "file_size": "30.7 GB" + }, + { + "file_number": "23", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part23-220000000_to_230000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part23-220000000_to_230000000.hdf5", + "start_idx": 220000000, + "end_idx": 230000000, + "file_size": "30.7 GB" + }, + { + "file_number": "24", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part24-230000000_to_240000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part24-230000000_to_240000000.hdf5", + "start_idx": 230000000, + "end_idx": 240000000, + "file_size": "30.7 GB" + }, + { + "file_number": "25", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part25-240000000_to_250000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part25-240000000_to_250000000.hdf5", + "start_idx": 240000000, + "end_idx": 250000000, + "file_size": "30.7 GB" + }, + { + "file_number": "26", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part26-250000000_to_260000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part26-250000000_to_260000000.hdf5", + "start_idx": 250000000, + "end_idx": 260000000, + "file_size": "30.7 GB" + }, + { + "file_number": "27", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part27-260000000_to_270000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part27-260000000_to_270000000.hdf5", + "start_idx": 260000000, + "end_idx": 270000000, + "file_size": "30.7 GB" + }, + { + "file_number": "28", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part28-270000000_to_280000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part28-270000000_to_280000000.hdf5", + "start_idx": 270000000, + "end_idx": 280000000, + "file_size": "30.7 GB" + }, + { + "file_number": "29", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part29-280000000_to_290000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part29-280000000_to_290000000.hdf5", + "start_idx": 280000000, + "end_idx": 290000000, + "file_size": "30.7 GB" + }, + { + "file_number": "3", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part3-20000000_to_30000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part3-20000000_to_30000000.hdf5", + "start_idx": 20000000, + "end_idx": 30000000, + "file_size": "30.7 GB" + }, + { + "file_number": "30", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part30-290000000_to_300000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part30-290000000_to_300000000.hdf5", + "start_idx": 290000000, + "end_idx": 300000000, + "file_size": "30.7 GB" + }, + { + "file_number": "31", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part31-300000000_to_310000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part31-300000000_to_310000000.hdf5", + "start_idx": 300000000, + "end_idx": 310000000, + "file_size": "30.7 GB" + }, + { + "file_number": "32", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part32-310000000_to_320000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part32-310000000_to_320000000.hdf5", + "start_idx": 310000000, + "end_idx": 320000000, + "file_size": "30.7 GB" + }, + { + "file_number": "33", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part33-320000000_to_330000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part33-320000000_to_330000000.hdf5", + "start_idx": 320000000, + "end_idx": 330000000, + "file_size": "30.7 GB" + }, + { + "file_number": "34", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part34-330000000_to_340000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part34-330000000_to_340000000.hdf5", + "start_idx": 330000000, + "end_idx": 340000000, + "file_size": "30.7 GB" + }, + { + "file_number": "35", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part35-340000000_to_350000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part35-340000000_to_350000000.hdf5", + "start_idx": 340000000, + "end_idx": 350000000, + "file_size": "30.7 GB" + }, + { + "file_number": "36", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part36-350000000_to_360000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part36-350000000_to_360000000.hdf5", + "start_idx": 350000000, + "end_idx": 360000000, + "file_size": "30.7 GB" + }, + { + "file_number": "37", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part37-360000000_to_370000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part37-360000000_to_370000000.hdf5", + "start_idx": 360000000, + "end_idx": 370000000, + "file_size": "30.7 GB" + }, + { + "file_number": "38", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part38-370000000_to_380000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part38-370000000_to_380000000.hdf5", + "start_idx": 370000000, + "end_idx": 380000000, + "file_size": "30.7 GB" + }, + { + "file_number": "39", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part39-380000000_to_390000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part39-380000000_to_390000000.hdf5", + "start_idx": 380000000, + "end_idx": 390000000, + "file_size": "30.7 GB" + }, + { + "file_number": "4", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part4-30000000_to_40000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part4-30000000_to_40000000.hdf5", + "start_idx": 30000000, + "end_idx": 40000000, + "file_size": "30.7 GB" + }, + { + "file_number": "40", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part40-390000000_to_400000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part40-390000000_to_400000000.hdf5", + "start_idx": 390000000, + "end_idx": 400000000, + "file_size": "30.7 GB" + }, + { + "file_number": "41", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part41-400000000_to_410000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part41-400000000_to_410000000.hdf5", + "start_idx": 400000000, + "end_idx": 410000000, + "file_size": "30.7 GB" + }, + { + "file_number": "42", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part42-410000000_to_420000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part42-410000000_to_420000000.hdf5", + "start_idx": 410000000, + "end_idx": 420000000, + "file_size": "30.7 GB" + }, + { + "file_number": "43", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part43-420000000_to_430000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part43-420000000_to_430000000.hdf5", + "start_idx": 420000000, + "end_idx": 430000000, + "file_size": "30.7 GB" + }, + { + "file_number": "44", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part44-430000000_to_440000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part44-430000000_to_440000000.hdf5", + "start_idx": 430000000, + "end_idx": 440000000, + "file_size": "30.7 GB" + }, + { + "file_number": "45", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part45-440000000_to_450000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part45-440000000_to_450000000.hdf5", + "start_idx": 440000000, + "end_idx": 450000000, + "file_size": "30.7 GB" + }, + { + "file_number": "46", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part46-450000000_to_460000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part46-450000000_to_460000000.hdf5", + "start_idx": 450000000, + "end_idx": 460000000, + "file_size": "30.7 GB" + }, + { + "file_number": "47", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part47-460000000_to_470000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part47-460000000_to_470000000.hdf5", + "start_idx": 460000000, + "end_idx": 470000000, + "file_size": "30.7 GB" + }, + { + "file_number": "48", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part48-470000000_to_480000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part48-470000000_to_480000000.hdf5", + "start_idx": 470000000, + "end_idx": 480000000, + "file_size": "30.7 GB" + }, + { + "file_number": "49", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part49-480000000_to_490000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part49-480000000_to_490000000.hdf5", + "start_idx": 480000000, + "end_idx": 490000000, + "file_size": "30.7 GB" + }, + { + "file_number": "5", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part5-40000000_to_50000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part5-40000000_to_50000000.hdf5", + "start_idx": 40000000, + "end_idx": 50000000, + "file_size": "30.7 GB" + }, + { + "file_number": "50", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part50-490000000_to_500000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part50-490000000_to_500000000.hdf5", + "start_idx": 490000000, + "end_idx": 500000000, + "file_size": "30.7 GB" + }, + { + "file_number": "51", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part51-500000000_to_510000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part51-500000000_to_510000000.hdf5", + "start_idx": 500000000, + "end_idx": 510000000, + "file_size": "30.7 GB" + }, + { + "file_number": "52", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part52-510000000_to_520000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part52-510000000_to_520000000.hdf5", + "start_idx": 510000000, + "end_idx": 520000000, + "file_size": "30.7 GB" + }, + { + "file_number": "53", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part53-520000000_to_530000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part53-520000000_to_530000000.hdf5", + "start_idx": 520000000, + "end_idx": 530000000, + "file_size": "30.7 GB" + }, + { + "file_number": "54", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part54-530000000_to_540000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part54-530000000_to_540000000.hdf5", + "start_idx": 530000000, + "end_idx": 540000000, + "file_size": "30.7 GB" + }, + { + "file_number": "55", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part55-540000000_to_550000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part55-540000000_to_550000000.hdf5", + "start_idx": 540000000, + "end_idx": 550000000, + "file_size": "30.7 GB" + }, + { + "file_number": "56", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part56-550000000_to_560000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part56-550000000_to_560000000.hdf5", + "start_idx": 550000000, + "end_idx": 560000000, + "file_size": "30.7 GB" + }, + { + "file_number": "57", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part57-560000000_to_570000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part57-560000000_to_570000000.hdf5", + "start_idx": 560000000, + "end_idx": 570000000, + "file_size": "30.7 GB" + }, + { + "file_number": "58", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part58-570000000_to_580000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part58-570000000_to_580000000.hdf5", + "start_idx": 570000000, + "end_idx": 580000000, + "file_size": "30.7 GB" + }, + { + "file_number": "59", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part59-580000000_to_590000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part59-580000000_to_590000000.hdf5", + "start_idx": 580000000, + "end_idx": 590000000, + "file_size": "30.7 GB" + }, + { + "file_number": "6", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part6-50000000_to_60000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part6-50000000_to_60000000.hdf5", + "start_idx": 50000000, + "end_idx": 60000000, + "file_size": "30.7 GB" + }, + { + "file_number": "60", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part60-590000000_to_600000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part60-590000000_to_600000000.hdf5", + "start_idx": 590000000, + "end_idx": 600000000, + "file_size": "30.7 GB" + }, + { + "file_number": "61", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part61-600000000_to_610000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part61-600000000_to_610000000.hdf5", + "start_idx": 600000000, + "end_idx": 610000000, + "file_size": "30.7 GB" + }, + { + "file_number": "62", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part62-610000000_to_620000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part62-610000000_to_620000000.hdf5", + "start_idx": 610000000, + "end_idx": 620000000, + "file_size": "30.7 GB" + }, + { + "file_number": "63", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part63-620000000_to_630000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part63-620000000_to_630000000.hdf5", + "start_idx": 620000000, + "end_idx": 630000000, + "file_size": "30.7 GB" + }, + { + "file_number": "64", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part64-630000000_to_640000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part64-630000000_to_640000000.hdf5", + "start_idx": 630000000, + "end_idx": 640000000, + "file_size": "30.7 GB" + }, + { + "file_number": "65", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part65-640000000_to_650000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part65-640000000_to_650000000.hdf5", + "start_idx": 640000000, + "end_idx": 650000000, + "file_size": "30.7 GB" + }, + { + "file_number": "66", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part66-650000000_to_660000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part66-650000000_to_660000000.hdf5", + "start_idx": 650000000, + "end_idx": 660000000, + "file_size": "30.7 GB" + }, + { + "file_number": "67", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part67-660000000_to_670000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part67-660000000_to_670000000.hdf5", + "start_idx": 660000000, + "end_idx": 670000000, + "file_size": "30.7 GB" + }, + { + "file_number": "68", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part68-670000000_to_680000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part68-670000000_to_680000000.hdf5", + "start_idx": 670000000, + "end_idx": 680000000, + "file_size": "30.7 GB" + }, + { + "file_number": "69", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part69-680000000_to_690000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part69-680000000_to_690000000.hdf5", + "start_idx": 680000000, + "end_idx": 690000000, + "file_size": "30.7 GB" + }, + { + "file_number": "7", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part7-60000000_to_70000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part7-60000000_to_70000000.hdf5", + "start_idx": 60000000, + "end_idx": 70000000, + "file_size": "30.7 GB" + }, + { + "file_number": "70", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part70-690000000_to_700000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part70-690000000_to_700000000.hdf5", + "start_idx": 690000000, + "end_idx": 700000000, + "file_size": "30.7 GB" + }, + { + "file_number": "71", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part71-700000000_to_710000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part71-700000000_to_710000000.hdf5", + "start_idx": 700000000, + "end_idx": 710000000, + "file_size": "30.7 GB" + }, + { + "file_number": "72", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part72-710000000_to_720000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part72-710000000_to_720000000.hdf5", + "start_idx": 710000000, + "end_idx": 720000000, + "file_size": "30.7 GB" + }, + { + "file_number": "73", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part73-720000000_to_730000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part73-720000000_to_730000000.hdf5", + "start_idx": 720000000, + "end_idx": 730000000, + "file_size": "30.7 GB" + }, + { + "file_number": "74", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part74-730000000_to_740000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part74-730000000_to_740000000.hdf5", + "start_idx": 730000000, + "end_idx": 740000000, + "file_size": "30.7 GB" + }, + { + "file_number": "75", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part75-740000000_to_750000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part75-740000000_to_750000000.hdf5", + "start_idx": 740000000, + "end_idx": 750000000, + "file_size": "30.7 GB" + }, + { + "file_number": "76", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part76-750000000_to_760000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part76-750000000_to_760000000.hdf5", + "start_idx": 750000000, + "end_idx": 760000000, + "file_size": "30.7 GB" + }, + { + "file_number": "77", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part77-760000000_to_770000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part77-760000000_to_770000000.hdf5", + "start_idx": 760000000, + "end_idx": 770000000, + "file_size": "30.7 GB" + }, + { + "file_number": "78", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part78-770000000_to_780000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part78-770000000_to_780000000.hdf5", + "start_idx": 770000000, + "end_idx": 780000000, + "file_size": "30.7 GB" + }, + { + "file_number": "79", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part79-780000000_to_790000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part79-780000000_to_790000000.hdf5", + "start_idx": 780000000, + "end_idx": 790000000, + "file_size": "30.7 GB" + }, + { + "file_number": "8", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part8-70000000_to_80000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part8-70000000_to_80000000.hdf5", + "start_idx": 70000000, + "end_idx": 80000000, + "file_size": "30.7 GB" + }, + { + "file_number": "80", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part80-790000000_to_800000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part80-790000000_to_800000000.hdf5", + "start_idx": 790000000, + "end_idx": 800000000, + "file_size": "30.7 GB" + }, + { + "file_number": "81", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part81-800000000_to_810000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part81-800000000_to_810000000.hdf5", + "start_idx": 800000000, + "end_idx": 810000000, + "file_size": "30.7 GB" + }, + { + "file_number": "82", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part82-810000000_to_820000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part82-810000000_to_820000000.hdf5", + "start_idx": 810000000, + "end_idx": 820000000, + "file_size": "30.7 GB" + }, + { + "file_number": "83", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part83-820000000_to_830000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part83-820000000_to_830000000.hdf5", + "start_idx": 820000000, + "end_idx": 830000000, + "file_size": "30.7 GB" + }, + { + "file_number": "84", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part84-830000000_to_840000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part84-830000000_to_840000000.hdf5", + "start_idx": 830000000, + "end_idx": 840000000, + "file_size": "30.7 GB" + }, + { + "file_number": "85", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part85-840000000_to_850000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part85-840000000_to_850000000.hdf5", + "start_idx": 840000000, + "end_idx": 850000000, + "file_size": "30.7 GB" + }, + { + "file_number": "86", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part86-850000000_to_860000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part86-850000000_to_860000000.hdf5", + "start_idx": 850000000, + "end_idx": 860000000, + "file_size": "30.7 GB" + }, + { + "file_number": "87", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part87-860000000_to_870000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part87-860000000_to_870000000.hdf5", + "start_idx": 860000000, + "end_idx": 870000000, + "file_size": "30.7 GB" + }, + { + "file_number": "88", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part88-870000000_to_880000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part88-870000000_to_880000000.hdf5", + "start_idx": 870000000, + "end_idx": 880000000, + "file_size": "30.7 GB" + }, + { + "file_number": "89", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part89-880000000_to_890000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part89-880000000_to_890000000.hdf5", + "start_idx": 880000000, + "end_idx": 890000000, + "file_size": "30.7 GB" + }, + { + "file_number": "9", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part9-80000000_to_90000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part9-80000000_to_90000000.hdf5", + "start_idx": 80000000, + "end_idx": 90000000, + "file_size": "30.7 GB" + }, + { + "file_number": "90", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part90-890000000_to_900000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part90-890000000_to_900000000.hdf5", + "start_idx": 890000000, + "end_idx": 900000000, + "file_size": "30.7 GB" + }, + { + "file_number": "91", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part91-900000000_to_910000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part91-900000000_to_910000000.hdf5", + "start_idx": 900000000, + "end_idx": 910000000, + "file_size": "30.7 GB" + }, + { + "file_number": "92", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part92-910000000_to_920000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part92-910000000_to_920000000.hdf5", + "start_idx": 910000000, + "end_idx": 920000000, + "file_size": "30.7 GB" + }, + { + "file_number": "93", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part93-920000000_to_930000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part93-920000000_to_930000000.hdf5", + "start_idx": 920000000, + "end_idx": 930000000, + "file_size": "30.7 GB" + }, + { + "file_number": "94", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part94-930000000_to_940000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part94-930000000_to_940000000.hdf5", + "start_idx": 930000000, + "end_idx": 940000000, + "file_size": "30.7 GB" + }, + { + "file_number": "95", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part95-940000000_to_950000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part95-940000000_to_950000000.hdf5", + "start_idx": 940000000, + "end_idx": 950000000, + "file_size": "30.7 GB" + }, + { + "file_number": "96", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part96-950000000_to_960000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part96-950000000_to_960000000.hdf5", + "start_idx": 950000000, + "end_idx": 960000000, + "file_size": "30.7 GB" + }, + { + "file_number": "97", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part97-960000000_to_970000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part97-960000000_to_970000000.hdf5", + "start_idx": 960000000, + "end_idx": 970000000, + "file_size": "30.7 GB" + }, + { + "file_number": "98", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part98-970000000_to_980000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part98-970000000_to_980000000.hdf5", + "start_idx": 970000000, + "end_idx": 980000000, + "file_size": "30.7 GB" + }, + { + "file_number": "99", + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-data-part99-980000000_to_990000000.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-data-part99-980000000_to_990000000.hdf5", + "start_idx": 980000000, + "end_idx": 990000000, + "file_size": "30.7 GB" + } + ], + "queries": [ + { + "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-queries.hdf5", + "link": "https://s3.amazonaws.com/benchmarks.redislabs/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-queries.hdf5", + "file_size": "38.7 MB" + } + ] + } +}, { "name": "gist-960-angular", "vector_size": 960, diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 670768a97..0ff001d26 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -1,7 +1,9 @@ import json import os from datetime import datetime +from pathlib import Path from typing import List, Optional +import warnings from benchmark import ROOT_DIR from benchmark.dataset import Dataset @@ -13,6 +15,9 @@ RESULTS_DIR.mkdir(exist_ok=True) DETAILED_RESULTS = bool(int(os.getenv("DETAILED_RESULTS", False))) +REPETITIONS = int(os.getenv("REPETITIONS", 3)) + +warnings.filterwarnings("ignore", category=DeprecationWarning) class BaseClient: @@ -61,17 +66,19 @@ def save_search_results( return result_path def save_upload_results( - self, dataset_name: str, results: dict, upload_params: dict + self, dataset_name: str, results: dict, upload_params: dict,upload_start_idx:int,upload_end_idx:int, ): now = datetime.now() timestamp = now.strftime("%Y-%m-%d-%H-%M-%S") - experiments_file = f"{self.name}-{dataset_name}-upload-{timestamp}.json" + experiments_file = f"{self.name}-{dataset_name}-upload-{upload_start_idx}-{upload_end_idx}-{timestamp}.json" with open(RESULTS_DIR / experiments_file, "w") as out: upload_stats = { "params": { "experiment": self.name, "engine": self.engine, "dataset": dataset_name, + "start_idx": upload_start_idx, + "end_idx": upload_end_idx, **upload_params, }, "results": results, @@ -85,11 +92,15 @@ def run_experiment( skip_search: bool = False, skip_if_exists: bool = True, skip_configure: Optional[bool] = False, + parallels: List[int] = [], + upload_start_idx: int = 0, + upload_end_idx: int = -1, + num_queries: int = -1, + ef_runtime: List[int] = [], ): execution_params = self.configurator.execution_params( distance=dataset.config.distance, vector_size=dataset.config.vector_size ) - reader = dataset.get_reader(execution_params.get("normalize", False)) if skip_if_exists: @@ -105,10 +116,13 @@ def run_experiment( if not skip_configure: print("Experiment stage: Configure") self.configurator.configure(dataset) - - print("Experiment stage: Upload") + else: + range_max_str = ":" + if upload_end_idx > 0: + range_max_str += f"{upload_end_idx}" + print(f"Experiment stage: Upload. Vector range [{upload_start_idx}{range_max_str}]") upload_stats = self.uploader.upload( - distance=dataset.config.distance, records=reader.read_data() + distance=dataset.config.distance, records=reader.read_data(upload_start_idx,upload_end_idx) ) if not DETAILED_RESULTS: @@ -122,12 +136,13 @@ def run_experiment( **self.uploader.upload_params, **self.configurator.collection_params, }, + upload_start_idx=upload_start_idx, + upload_end_idx=upload_end_idx, ) if not skip_search: print("Experiment stage: Search") for search_id, searcher in enumerate(self.searchers): - if skip_if_exists: glob_pattern = ( f"{self.name}-{dataset.config.name}-search-{search_id}-*.json" @@ -141,17 +156,41 @@ def run_experiment( continue search_params = {**searcher.search_params} - search_stats = searcher.search_all( - dataset.config.distance, reader.read_queries() - ) - if not DETAILED_RESULTS: - # Remove verbose stats from search results - search_stats.pop("latencies", None) - search_stats.pop("precisions", None) + ef = "default" + if "search_params" in search_params: + ef = search_params["search_params"].get("ef", "default") + client_count = search_params.get("parallel", 1) + + # Filter by client count if parallels is specified + filter_client_count = len(parallels) > 0 + if filter_client_count and (client_count not in parallels): + print(f"\tSkipping ef runtime: {ef}; #clients {client_count}") + continue + + # Filter by ef runtime if ef_runtime is specified + filter_ef_runtime = len(ef_runtime) > 0 + if filter_ef_runtime and isinstance(ef, int) and (ef not in ef_runtime): + print(f"\tSkipping ef runtime: {ef}; #clients {client_count} (not in ef_runtime filter)") + continue + for repetition in range(1, REPETITIONS + 1): + print( + f"\tRunning repetition {repetition} ef runtime: {ef}; #clients {client_count}" + ) + + search_stats = searcher.search_all( + dataset.config.distance, reader.read_queries(), num_queries + ) + # ensure we specify the client count in the results + search_params["parallel"] = client_count + if not DETAILED_RESULTS: + # Remove verbose stats from search results + search_stats.pop("latencies", None) + search_stats.pop("precisions", None) + + self.save_search_results( + dataset.config.name, search_stats, search_id, search_params + ) - self.save_search_results( - dataset.config.name, search_stats, search_id, search_params - ) print("Experiment stage: Done") print("Results saved to: ", RESULTS_DIR) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 3626191e0..466201c65 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -5,10 +5,13 @@ import numpy as np import tqdm +import os from dataset_reader.base_reader import Query DEFAULT_TOP = 10 +MAX_QUERIES = int(os.getenv("MAX_QUERIES", -1)) + class BaseSearcher: @@ -50,17 +53,16 @@ def _search_one(cls, query: Query, top: Optional[int] = None): if query.expected_result: ids = set(x[0] for x in search_res) precision = len(ids.intersection(query.expected_result[:top])) / top - return precision, end - start def search_all( self, distance, queries: Iterable[Query], + num_queries: int = -1, ): parallel = self.search_params.get("parallel", 1) top = self.search_params.get("top", None) - # setup_search may require initialized client self.init_client( self.host, distance, self.connection_params, self.search_params @@ -69,10 +71,41 @@ def search_all( search_one = functools.partial(self.__class__._search_one, top=top) + # Convert queries to a list for potential reuse + queries_list = list(queries) + + # Handle MAX_QUERIES environment variable + if MAX_QUERIES > 0: + queries_list = queries_list[:MAX_QUERIES] + print(f"Limiting queries to [0:{MAX_QUERIES-1}]") + + # Handle num_queries parameter + if num_queries > 0: + # If we need more queries than available, cycle through the list + if num_queries > len(queries_list) and len(queries_list) > 0: + print(f"Requested {num_queries} queries but only {len(queries_list)} are available.") + print(f"Extending queries by cycling through the available ones.") + # Calculate how many complete cycles and remaining items we need + complete_cycles = num_queries // len(queries_list) + remaining = num_queries % len(queries_list) + + # Create the extended list + extended_queries = [] + for _ in range(complete_cycles): + extended_queries.extend(queries_list) + extended_queries.extend(queries_list[:remaining]) + + used_queries = extended_queries + else: + used_queries = queries_list[:num_queries] + print(f"Using {num_queries} queries") + else: + used_queries = queries_list + if parallel == 1: start = time.perf_counter() precisions, latencies = list( - zip(*[search_one(query) for query in tqdm.tqdm(queries)]) + zip(*[search_one(query) for query in tqdm.tqdm(used_queries)]) ) else: ctx = get_context(self.get_mp_start_method()) @@ -91,7 +124,7 @@ def search_all( time.sleep(15) # Wait for all processes to start start = time.perf_counter() precisions, latencies = list( - zip(*pool.imap_unordered(search_one, iterable=tqdm.tqdm(queries))) + zip(*pool.imap_unordered(search_one, iterable=tqdm.tqdm(used_queries))) ) total_time = time.perf_counter() - start @@ -106,6 +139,7 @@ def search_all( "min_time": np.min(latencies), "max_time": np.max(latencies), "rps": len(latencies) / total_time, + "p50_time": np.percentile(latencies, 50), "p95_time": np.percentile(latencies, 95), "p99_time": np.percentile(latencies, 99), "precisions": precisions, diff --git a/engine/base_client/upload.py b/engine/base_client/upload.py index 55ee4055d..29280ce8f 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -1,6 +1,6 @@ import time from multiprocessing import get_context -from typing import Iterable, List +from typing import Iterable, List, Optional import tqdm @@ -53,12 +53,15 @@ def upload( self.upload_params, ), ) as pool: - latencies = list( - pool.imap( - self.__class__._upload_batch, - iter_batches(tqdm.tqdm(records), batch_size), + try: + latencies = list( + pool.imap( + self.__class__._upload_batch, + iter_batches(tqdm.tqdm(records), batch_size), + ) ) - ) + except Exception as e: + raise e upload_time = time.perf_counter() - start @@ -70,6 +73,7 @@ def upload( print(f"Total import time: {total_time}") + memory_usage = self.get_memory_usage() self.delete_client() return { @@ -77,6 +81,9 @@ def upload( "upload_time": upload_time, "total_time": total_time, "latencies": latencies, + "parallel": parallel, + "batch_size": batch_size, + "memory_usage": memory_usage, } @classmethod @@ -89,6 +96,10 @@ def _upload_batch(cls, batch: List[Record]) -> float: def post_upload(cls, distance): return {} + @classmethod + def get_memory_usage(cls): + return {} + @classmethod def upload_batch(cls, batch: List[Record]): raise NotImplementedError() diff --git a/engine/clients/client_factory.py b/engine/clients/client_factory.py index a74df2ab4..e92bd7af5 100644 --- a/engine/clients/client_factory.py +++ b/engine/clients/client_factory.py @@ -1,5 +1,6 @@ from abc import ABC -from typing import List, Type +import importlib +from typing import Dict, List, Type from engine.base_client.client import ( BaseClient, @@ -7,59 +8,52 @@ BaseSearcher, BaseUploader, ) -from engine.clients.elasticsearch import ( - ElasticConfigurator, - ElasticSearcher, - ElasticUploader, -) -from engine.clients.milvus import MilvusConfigurator, MilvusSearcher, MilvusUploader -from engine.clients.opensearch import ( - OpenSearchConfigurator, - OpenSearchSearcher, - OpenSearchUploader, -) -from engine.clients.pgvector import ( - PgVectorConfigurator, - PgVectorSearcher, - PgVectorUploader, -) -from engine.clients.qdrant import QdrantConfigurator, QdrantSearcher, QdrantUploader -from engine.clients.redis import RedisConfigurator, RedisSearcher, RedisUploader -from engine.clients.weaviate import ( - WeaviateConfigurator, - WeaviateSearcher, - WeaviateUploader, -) -ENGINE_CONFIGURATORS = { - "qdrant": QdrantConfigurator, - "weaviate": WeaviateConfigurator, - "milvus": MilvusConfigurator, - "elasticsearch": ElasticConfigurator, - "opensearch": OpenSearchConfigurator, - "redis": RedisConfigurator, - "pgvector": PgVectorConfigurator, -} - -ENGINE_UPLOADERS = { - "qdrant": QdrantUploader, - "weaviate": WeaviateUploader, - "milvus": MilvusUploader, - "elasticsearch": ElasticUploader, - "opensearch": OpenSearchUploader, - "redis": RedisUploader, - "pgvector": PgVectorUploader, -} - -ENGINE_SEARCHERS = { - "qdrant": QdrantSearcher, - "weaviate": WeaviateSearcher, - "milvus": MilvusSearcher, - "elasticsearch": ElasticSearcher, - "opensearch": OpenSearchSearcher, - "redis": RedisSearcher, - "pgvector": PgVectorSearcher, -} +# Dictionary to store dynamically imported client classes +_engine_classes = {} + +def _import_engine_classes(engine_name: str) -> Dict[str, Type]: + """ + Dynamically import client classes for a specific engine. + + Args: + engine_name: The name of the engine (e.g., 'redis', 'qdrant') + + Returns: + Dictionary with configurator, uploader, and searcher classes + """ + if engine_name in _engine_classes: + return _engine_classes[engine_name] + + # Handle special case for vectorsets which uses redis prefix + if engine_name == "vectorsets": + module_name = f"engine.clients.vectorsets" + class_prefix = "RedisVset" + else: + module_name = f"engine.clients.{engine_name}" + # Convert first letter to uppercase for class name + class_prefix = engine_name[0].upper() + engine_name[1:] + + try: + module = importlib.import_module(module_name) + configurator_class = getattr(module, f"{class_prefix}Configurator") + uploader_class = getattr(module, f"{class_prefix}Uploader") + searcher_class = getattr(module, f"{class_prefix}Searcher") + + _engine_classes[engine_name] = { + "configurator": configurator_class, + "uploader": uploader_class, + "searcher": searcher_class + } + + return _engine_classes[engine_name] + except (ImportError, AttributeError) as e: + raise ImportError(f"Failed to import classes for engine '{engine_name}': {e}") + +# Empty dictionaries that will be populated on demand +ENGINE_CONFIGURATORS = {} +ENGINE_UPLOADERS = {} +ENGINE_SEARCHERS = {} class ClientFactory(ABC): @@ -69,7 +63,17 @@ def __init__(self, host): def _create_configurator(self, experiment) -> BaseConfigurator: self.engine = experiment["engine"] - engine_configurator_class = ENGINE_CONFIGURATORS[experiment["engine"]] + engine_name = experiment["engine"] + + # Dynamically import engine classes if not already imported + if engine_name not in _engine_classes: + _import_engine_classes(engine_name) + # Add to the global dictionaries for compatibility + ENGINE_CONFIGURATORS[engine_name] = _engine_classes[engine_name]["configurator"] + ENGINE_UPLOADERS[engine_name] = _engine_classes[engine_name]["uploader"] + ENGINE_SEARCHERS[engine_name] = _engine_classes[engine_name]["searcher"] + + engine_configurator_class = _engine_classes[engine_name]["configurator"] engine_configurator = engine_configurator_class( self.host, collection_params={**experiment.get("collection_params", {})}, @@ -78,7 +82,8 @@ def _create_configurator(self, experiment) -> BaseConfigurator: return engine_configurator def _create_uploader(self, experiment) -> BaseUploader: - engine_uploader_class = ENGINE_UPLOADERS[experiment["engine"]] + engine_name = experiment["engine"] + engine_uploader_class = _engine_classes[engine_name]["uploader"] engine_uploader = engine_uploader_class( self.host, connection_params={**experiment.get("connection_params", {})}, @@ -87,9 +92,8 @@ def _create_uploader(self, experiment) -> BaseUploader: return engine_uploader def _create_searchers(self, experiment) -> List[BaseSearcher]: - engine_searcher_class: Type[BaseSearcher] = ENGINE_SEARCHERS[ - experiment["engine"] - ] + engine_name = experiment["engine"] + engine_searcher_class: Type[BaseSearcher] = _engine_classes[engine_name]["searcher"] engine_searchers = [ engine_searcher_class( diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 2ecd5ee90..183284d26 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -1,24 +1,59 @@ import os - +import urllib3 +import time from elasticsearch import Elasticsearch ELASTIC_PORT = int(os.getenv("ELASTIC_PORT", 9200)) ELASTIC_INDEX = os.getenv("ELASTIC_INDEX", "bench") ELASTIC_USER = os.getenv("ELASTIC_USER", "elastic") ELASTIC_PASSWORD = os.getenv("ELASTIC_PASSWORD", "passwd") +ELASTIC_API_KEY = os.getenv("ELASTIC_API_KEY", None) +ELASTIC_TIMEOUT = int(os.getenv("ELASTIC_TIMEOUT", 300)) +ELASTIC_INDEX_TIMEOUT = os.getenv("ELASTIC_INDEX_TIMEOUT", "30m") +ELASTIC_INDEX_REFRESH_INTERVAL = os.getenv("ELASTIC_INDEX_REFRESH_INTERVAL", "10s") +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) def get_es_client(host, connection_params): + client: Elasticsearch = None init_params = { - "verify_certs": False, - "retry_on_timeout": True, - "ssl_show_warn": False, + **{ + "verify_certs": False, + "request_timeout": ELASTIC_TIMEOUT, + "retry_on_timeout": True, + "ssl_show_warn": False, + }, **connection_params, } - client = Elasticsearch( - f"http://{host}:{ELASTIC_PORT}", - basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), - **init_params, - ) + if host.startswith("http"): + url = "" + else: + url = "http://" + url += f"{host}:{ELASTIC_PORT}" + if ELASTIC_API_KEY is None: + client = Elasticsearch( + url, + basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), + **init_params, + ) + else: + client = Elasticsearch( + url, + api_key=ELASTIC_API_KEY, + **init_params, + ) assert client.ping() return client + + +def _wait_for_es_status(client, status="yellow"): + print(f"waiting for ES {status} status...") + for _ in range(100): + try: + client.cluster.health(wait_for_status=status) + return client + except ConnectionError: + time.sleep(0.1) + else: + # timeout + raise Exception("Elasticsearch failed to start.") diff --git a/engine/clients/elasticsearch/configure.py b/engine/clients/elasticsearch/configure.py index 446fe7c14..18a02d552 100644 --- a/engine/clients/elasticsearch/configure.py +++ b/engine/clients/elasticsearch/configure.py @@ -4,7 +4,13 @@ from engine.base_client import IncompatibilityError from engine.base_client.configure import BaseConfigurator from engine.base_client.distances import Distance -from engine.clients.elasticsearch.config import ELASTIC_INDEX, get_es_client +from engine.clients.elasticsearch.config import ( + ELASTIC_INDEX, + get_es_client, + ELASTIC_TIMEOUT, + ELASTIC_INDEX_TIMEOUT, + ELASTIC_INDEX_REFRESH_INTERVAL, +) class ElasticConfigurator(BaseConfigurator): @@ -26,12 +32,16 @@ def __init__(self, host, collection_params: dict, connection_params: dict): self.client = get_es_client(host, connection_params) def clean(self): + print("Ensuring the index does not exist...") try: self.client.indices.delete( - index=ELASTIC_INDEX, timeout="5m", master_timeout="5m" + index=ELASTIC_INDEX, + timeout=ELASTIC_INDEX_TIMEOUT, + master_timeout=ELASTIC_INDEX_TIMEOUT, ) except NotFoundError: pass + print("Finished ensuring the index does not exist...") def recreate(self, dataset: Dataset, collection_params): if dataset.config.distance == Distance.DOT: @@ -42,11 +52,14 @@ def recreate(self, dataset: Dataset, collection_params): self.client.indices.create( index=ELASTIC_INDEX, + timeout=ELASTIC_INDEX_TIMEOUT, + master_timeout=ELASTIC_INDEX_TIMEOUT, + wait_for_active_shards="all", settings={ "index": { "number_of_shards": 1, "number_of_replicas": 0, - "refresh_interval": -1, # no refresh is required because we index all the data at once + "refresh_interval": ELASTIC_INDEX_REFRESH_INTERVAL, } }, mappings={ diff --git a/engine/clients/elasticsearch/search.py b/engine/clients/elasticsearch/search.py index 4a1ee9818..96ab6b262 100644 --- a/engine/clients/elasticsearch/search.py +++ b/engine/clients/elasticsearch/search.py @@ -1,3 +1,4 @@ +import copy import multiprocessing as mp import uuid from typing import List, Tuple @@ -25,9 +26,19 @@ def get_mp_start_method(cls): return "forkserver" if "forkserver" in mp.get_all_start_methods() else "spawn" @classmethod - def init_client(cls, host, _distance, connection_params: dict, search_params: dict): + def init_client(cls, host, distance, connection_params: dict, search_params: dict): + init_params = { + **{ + "verify_certs": False, + "request_timeout": 90, + "retry_on_timeout": True, + }, + **connection_params, + } cls.client = get_es_client(host, connection_params) - cls.search_params = search_params + cls.search_params = copy.deepcopy(search_params) + # pop parallel + cls.search_params.pop("parallel", "1") @classmethod def search_one(cls, query: Query, top: int) -> List[Tuple[int, float]]: diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index efe249d61..ef57601a8 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -2,11 +2,16 @@ import uuid from typing import List -from elasticsearch import Elasticsearch +import elastic_transport +from elasticsearch import Elasticsearch, ApiError from dataset_reader.base_reader import Record from engine.base_client.upload import BaseUploader -from engine.clients.elasticsearch.config import ELASTIC_INDEX, get_es_client +from engine.clients.elasticsearch.config import ( + ELASTIC_INDEX, + get_es_client, + _wait_for_es_status, +) class ClosableElastic(Elasticsearch): @@ -23,7 +28,7 @@ def get_mp_start_method(cls): return "forkserver" if "forkserver" in mp.get_all_start_methods() else "spawn" @classmethod - def init_client(cls, host, _distance, connection_params, upload_params): + def init_client(cls, host, distance, connection_params, upload_params): cls.client = get_es_client(host, connection_params) cls.upload_params = upload_params @@ -42,7 +47,23 @@ def upload_batch(cls, batch: List[Record]): @classmethod def post_upload(cls, _distance): - cls.client.indices.forcemerge( - index=ELASTIC_INDEX, wait_for_completion=True, max_num_segments=1 - ) + print("forcing the merge into 1 segment...") + tries = 30 + for i in range(tries + 1): + try: + cls.client.indices.forcemerge( + index=ELASTIC_INDEX, wait_for_completion=True, max_num_segments=1 + ) + except (elastic_transport.TlsError, ApiError) as e: + if i < tries: # i is zero indexed + print( + "Received the following error during retry {}/{} while waiting for ES index to be ready... {}".format( + i, tries, e.__str__() + ) + ) + continue + else: + raise + _wait_for_es_status(cls.client) + break return {} diff --git a/engine/clients/milvus/config.py b/engine/clients/milvus/config.py index 48d26ed3f..45d772b21 100644 --- a/engine/clients/milvus/config.py +++ b/engine/clients/milvus/config.py @@ -1,10 +1,13 @@ -from pymilvus import DataType - +from pymilvus import DataType, connections +import os from engine.base_client.distances import Distance MILVUS_COLLECTION_NAME = "Benchmark" MILVUS_DEFAULT_ALIAS = "bench" MILVUS_DEFAULT_PORT = "19530" +MILVUS_PASS = os.getenv("MILVUS_PASS", "") +MILVUS_USER = os.getenv("MILVUS_USER", "") +MILVUS_PORT = os.getenv("MILVUS_PORT", MILVUS_DEFAULT_PORT) DISTANCE_MAPPING = { Distance.L2: "L2", @@ -25,3 +28,22 @@ DataType.FLOAT: 0.0, DataType.DOUBLE: 0.0, } + + +def get_milvus_client(connection_params: dict, host: str, alias: str): + h = "" + uri = "" + if host.startswith("http"): + uri = host + else: + h = host + client = connections.connect( + alias=alias, + host=h, + uri=uri, + port=MILVUS_PORT, + user=MILVUS_USER, + password=MILVUS_PASS, + **connection_params + ) + return client diff --git a/engine/clients/milvus/configure.py b/engine/clients/milvus/configure.py index 85f2c7749..b8fea5719 100644 --- a/engine/clients/milvus/configure.py +++ b/engine/clients/milvus/configure.py @@ -17,7 +17,7 @@ DTYPE_EXTRAS, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, + get_milvus_client, ) @@ -32,20 +32,18 @@ class MilvusConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - self.client = connections.connect( - alias=MILVUS_DEFAULT_ALIAS, - host=host, - port=str(connection_params.get("port", MILVUS_DEFAULT_PORT)), - **connection_params, - ) + self.client = get_milvus_client(connection_params, host, MILVUS_DEFAULT_ALIAS) print("established connection") def clean(self): - try: + if utility.has_collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS): + print("dropping collection named {MILVUS_COLLECTION_NAME}...") utility.drop_collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) + print("dropped collection named {MILVUS_COLLECTION_NAME}...") + assert ( utility.has_collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) - except MilvusException: - pass + is False + ) def recreate(self, dataset: Dataset, collection_params): idx = FieldSchema( diff --git a/engine/clients/milvus/search.py b/engine/clients/milvus/search.py index 1694fc377..a42041460 100644 --- a/engine/clients/milvus/search.py +++ b/engine/clients/milvus/search.py @@ -9,7 +9,7 @@ DISTANCE_MAPPING, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, + get_milvus_client, ) from engine.clients.milvus.parser import MilvusConditionParser @@ -23,12 +23,7 @@ class MilvusSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - cls.client = connections.connect( - alias=MILVUS_DEFAULT_ALIAS, - host=host, - port=str(connection_params.get("port", MILVUS_DEFAULT_PORT)), - **connection_params - ) + cls.client = get_milvus_client(connection_params, host, MILVUS_DEFAULT_ALIAS) cls.collection = Collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) cls.search_params = search_params cls.distance = DISTANCE_MAPPING[distance] diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index 8c3768e13..05ac6f575 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -1,5 +1,7 @@ +import logging import multiprocessing as mp -from typing import List +from typing import List, Optional +import backoff from pymilvus import ( Collection, @@ -15,7 +17,7 @@ DTYPE_DEFAULT, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, + get_milvus_client, ) @@ -31,12 +33,7 @@ def get_mp_start_method(cls): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - cls.client = connections.connect( - alias=MILVUS_DEFAULT_ALIAS, - host=host, - port=str(connection_params.get("port", MILVUS_DEFAULT_PORT)), - **connection_params - ) + cls.client = get_milvus_client(connection_params, host, MILVUS_DEFAULT_ALIAS) cls.collection = Collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) cls.upload_params = upload_params cls.distance = DISTANCE_MAPPING[distance] @@ -62,6 +59,13 @@ def upload_batch(cls, batch: List[Record]): ids.append(record.id) vectors.append(record.vector) + cls.upload_with_backoff(field_values, ids, vectors) + + @classmethod + @backoff.on_exception( + backoff.expo, MilvusException, max_time=600, backoff_log_level=logging.WARN + ) + def upload_with_backoff(cls, field_values, ids, vectors): cls.collection.insert([ids, vectors] + field_values) @classmethod diff --git a/engine/clients/opensearch/config.py b/engine/clients/opensearch/config.py index 570018842..85af59592 100644 --- a/engine/clients/opensearch/config.py +++ b/engine/clients/opensearch/config.py @@ -1,4 +1,34 @@ -OPENSEARCH_PORT = 9200 -OPENSEARCH_INDEX = "bench" -OPENSEARCH_USER = "opensearch" -OPENSEARCH_PASSWORD = "passwd" +import os + +from opensearchpy import OpenSearch + +OPENSEARCH_PORT = int(os.getenv("OPENSEARCH_PORT", 9200)) +OPENSEARCH_INDEX = os.getenv("OPENSEARCH_INDEX", "bench") +OPENSEARCH_USER = os.getenv("OPENSEARCH_USER", "opensearch") +OPENSEARCH_PASSWORD = os.getenv("OPENSEARCH_PASSWORD", "passwd") +OPENSEARCH_TIMEOUT = int(os.getenv("OPENSEARCH_TIMEOUT", 300)) +OPENSEARCH_INDEX_TIMEOUT = int(os.getenv("OPENSEARCH_INDEX_TIMEOUT", 300)) + + +def get_opensearch_client(host, connection_params): + init_params = { + **{ + "verify_certs": False, + "request_timeout": OPENSEARCH_TIMEOUT, + "retry_on_timeout": True, + }, + **connection_params, + } + if host.startswith("http"): + url = "" + else: + url = "http://" + url += f"{host}:{OPENSEARCH_PORT}" + + client = OpenSearch( + f"http://{host}:{OPENSEARCH_PORT}", + basic_auth=(OPENSEARCH_USER, OPENSEARCH_PASSWORD), + **init_params, + ) + assert client.ping() + return client diff --git a/engine/clients/opensearch/configure.py b/engine/clients/opensearch/configure.py index bd5509174..d4541e1b3 100644 --- a/engine/clients/opensearch/configure.py +++ b/engine/clients/opensearch/configure.py @@ -6,9 +6,8 @@ from engine.base_client.distances import Distance from engine.clients.opensearch.config import ( OPENSEARCH_INDEX, - OPENSEARCH_PASSWORD, - OPENSEARCH_PORT, - OPENSEARCH_USER, + OPENSEARCH_INDEX_TIMEOUT, + get_opensearch_client, ) @@ -25,26 +24,14 @@ class OpenSearchConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - init_params = { - **{ - "verify_certs": False, - "request_timeout": 90, - "retry_on_timeout": True, - }, - **connection_params, - } - self.client = OpenSearch( - f"http://{host}:{OPENSEARCH_PORT}", - basic_auth=(OPENSEARCH_USER, OPENSEARCH_PASSWORD), - **init_params, - ) + self.client = get_opensearch_client(host, connection_params) def clean(self): try: self.client.indices.delete( index=OPENSEARCH_INDEX, params={ - "timeout": 300, + "timeout": OPENSEARCH_INDEX_TIMEOUT, }, ) except NotFoundError: @@ -53,7 +40,7 @@ def clean(self): def recreate(self, dataset: Dataset, collection_params): if dataset.config.distance == Distance.DOT: raise IncompatibilityError - if dataset.config.vector_size > 1024: + if dataset.config.vector_size > 2048: raise IncompatibilityError self.client.indices.create( diff --git a/engine/clients/opensearch/search.py b/engine/clients/opensearch/search.py index fc7b5cbfb..2113d3164 100644 --- a/engine/clients/opensearch/search.py +++ b/engine/clients/opensearch/search.py @@ -6,12 +6,7 @@ from dataset_reader.base_reader import Query from engine.base_client.search import BaseSearcher -from engine.clients.opensearch.config import ( - OPENSEARCH_INDEX, - OPENSEARCH_PASSWORD, - OPENSEARCH_PORT, - OPENSEARCH_USER, -) +from engine.clients.opensearch.config import OPENSEARCH_INDEX, get_opensearch_client from engine.clients.opensearch.parser import OpenSearchConditionParser @@ -31,19 +26,7 @@ def get_mp_start_method(cls): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - init_params = { - **{ - "verify_certs": False, - "request_timeout": 90, - "retry_on_timeout": True, - }, - **connection_params, - } - cls.client: OpenSearch = OpenSearch( - f"http://{host}:{OPENSEARCH_PORT}", - basic_auth=(OPENSEARCH_USER, OPENSEARCH_PASSWORD), - **init_params, - ) + cls.client = get_opensearch_client(host, connection_params) cls.search_params = search_params @classmethod diff --git a/engine/clients/opensearch/upload.py b/engine/clients/opensearch/upload.py index 0bc2427e7..fb69b59ee 100644 --- a/engine/clients/opensearch/upload.py +++ b/engine/clients/opensearch/upload.py @@ -6,12 +6,7 @@ from dataset_reader.base_reader import Record from engine.base_client.upload import BaseUploader -from engine.clients.opensearch.config import ( - OPENSEARCH_INDEX, - OPENSEARCH_PASSWORD, - OPENSEARCH_PORT, - OPENSEARCH_USER, -) +from engine.clients.opensearch.config import OPENSEARCH_INDEX, get_opensearch_client class ClosableOpenSearch(OpenSearch): @@ -29,19 +24,7 @@ def get_mp_start_method(cls): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - init_params = { - **{ - "verify_certs": False, - "request_timeout": 90, - "retry_on_timeout": True, - }, - **connection_params, - } - cls.client = OpenSearch( - f"http://{host}:{OPENSEARCH_PORT}", - basic_auth=(OPENSEARCH_USER, OPENSEARCH_PASSWORD), - **init_params, - ) + cls.client = get_opensearch_client(host, connection_params) cls.upload_params = upload_params @classmethod diff --git a/engine/clients/qdrant/config.py b/engine/clients/qdrant/config.py index 164613d62..b879b13a4 100644 --- a/engine/clients/qdrant/config.py +++ b/engine/clients/qdrant/config.py @@ -1,4 +1,65 @@ import os +import random +import time + +import requests QDRANT_COLLECTION_NAME = os.getenv("QDRANT_COLLECTION_NAME", "benchmark") QDRANT_API_KEY = os.getenv("QDRANT_API_KEY", None) +QDRANT_URL = os.getenv("QDRANT_URL", None) +QDRANT_ACCOUNT_ID = os.getenv("QDRANT_ACCOUNT_ID", None) +QDRANT_CLUSTER_ID = os.getenv("QDRANT_CLUSTER_ID", None) +QDRANT_AUTH_TOKEN = os.getenv("QDRANT_AUTH_TOKEN", None) +QDRANT_MAX_OPTIMIZATION_THREADS = os.getenv("QDRANT_MAX_OPTIMIZATION_THREADS", None) + + +def get_collection_info(endpoint, collection, api_key): + result = {} + url = f"{endpoint}/collections/{collection}" + headers = {"api-key": f"{api_key}"} + + try: + response = requests.get(url, headers=headers) + # Raise an error for bad status codes + response.raise_for_status() + result = response.json() + except requests.exceptions.RequestException as e: + print(f"An error occurred: {e}") + result = {"error": str(e)} + + return result + + +def get_qdrant_cloud_usage(account_id, cluster_id, token): + result = {} + url = f"https://cloud.qdrant.io/api/v1/accounts/{account_id}/clusters/{cluster_id}/metrics" + headers = {"authorization": f"Bearer {token}"} + + try: + response = requests.get(url, headers=headers) + # Raise an error for bad status codes + response.raise_for_status() + result = response.json() + except requests.exceptions.RequestException as e: + print(f"An error occurred: {e}") + result = {"error": str(e)} + + return result + + +def retry_with_exponential_backoff( + func, *args, max_retries=10, base_delay=1, max_delay=90, **kwargs +): + retries = 0 + while retries < max_retries: + try: + return func(*args, **kwargs) + except Exception as e: + delay = min(base_delay * 2**retries + random.uniform(0, 1), max_delay) + time.sleep(delay) + retries += 1 + print(f"received the following exception on try #{retries}: {e.__str__}") + if retries == max_retries: + raise e + else: + print("retrying...") diff --git a/engine/clients/qdrant/configure.py b/engine/clients/qdrant/configure.py index de716ff97..e32f95ded 100644 --- a/engine/clients/qdrant/configure.py +++ b/engine/clients/qdrant/configure.py @@ -4,7 +4,12 @@ from benchmark.dataset import Dataset from engine.base_client.configure import BaseConfigurator from engine.base_client.distances import Distance -from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY +from engine.clients.qdrant.config import ( + QDRANT_API_KEY, + QDRANT_COLLECTION_NAME, + QDRANT_URL, + retry_with_exponential_backoff, +) class QdrantConfigurator(BaseConfigurator): @@ -31,11 +36,17 @@ class QdrantConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - - self.client = QdrantClient(url=host, api_key=QDRANT_API_KEY, **connection_params) + if QDRANT_URL is None: + self.client = QdrantClient( + host=host, api_key=QDRANT_API_KEY, **connection_params + ) + else: + self.client = QdrantClient( + url=QDRANT_URL, api_key=QDRANT_API_KEY, **connection_params + ) def clean(self): - self.client.delete_collection(collection_name=QDRANT_COLLECTION_NAME) + res = self.client.delete_collection(collection_name=QDRANT_COLLECTION_NAME) def recreate(self, dataset: Dataset, collection_params): if dataset.config.type == "sparse": @@ -73,7 +84,8 @@ def recreate(self, dataset: Dataset, collection_params): # By default, disable index building while uploading optimizers_config.setdefault("max_optimization_threads", 0) - self.client.recreate_collection( + retry_with_exponential_backoff( + self.client.recreate_collection, collection_name=QDRANT_COLLECTION_NAME, **vectors_config, **self.collection_params diff --git a/engine/clients/qdrant/search.py b/engine/clients/qdrant/search.py index b6b009085..b3bae8f80 100644 --- a/engine/clients/qdrant/search.py +++ b/engine/clients/qdrant/search.py @@ -8,7 +8,11 @@ from dataset_reader.base_reader import Query from engine.base_client.search import BaseSearcher -from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY +from engine.clients.qdrant.config import ( + QDRANT_API_KEY, + QDRANT_COLLECTION_NAME, + QDRANT_URL, +) from engine.clients.qdrant.parser import QdrantConditionParser @@ -21,13 +25,22 @@ class QdrantSearcher(BaseSearcher): def init_client(cls, host, distance, connection_params: dict, search_params: dict): os.environ["GRPC_ENABLE_FORK_SUPPORT"] = "true" os.environ["GRPC_POLL_STRATEGY"] = "epoll,poll" - cls.client: QdrantClient = QdrantClient( - url=host, - prefer_grpc=True, - api_key=QDRANT_API_KEY, - limits=httpx.Limits(max_connections=None, max_keepalive_connections=0), - **connection_params, - ) + if QDRANT_URL is None: + cls.client = QdrantClient( + host, + api_key=QDRANT_API_KEY, + prefer_grpc=True, + limits=httpx.Limits(max_connections=None, max_keepalive_connections=0), + **connection_params + ) + else: + cls.client = QdrantClient( + url=QDRANT_URL, + api_key=QDRANT_API_KEY, + prefer_grpc=True, + limits=httpx.Limits(max_connections=None, max_keepalive_connections=0), + **connection_params + ) cls.search_params = search_params # Uncomment for gRPC diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index 18dcedbb5..da99ea454 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -1,3 +1,4 @@ +import json import os import time from typing import List @@ -13,7 +14,17 @@ from dataset_reader.base_reader import Record from engine.base_client.upload import BaseUploader -from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY +from engine.clients.qdrant.config import ( + QDRANT_ACCOUNT_ID, + QDRANT_API_KEY, + QDRANT_AUTH_TOKEN, + QDRANT_CLUSTER_ID, + QDRANT_COLLECTION_NAME, + QDRANT_MAX_OPTIMIZATION_THREADS, + QDRANT_URL, + get_collection_info, + get_qdrant_cloud_usage, +) class QdrantUploader(BaseUploader): @@ -24,7 +35,17 @@ class QdrantUploader(BaseUploader): def init_client(cls, host, distance, connection_params, upload_params): os.environ["GRPC_ENABLE_FORK_SUPPORT"] = "true" os.environ["GRPC_POLL_STRATEGY"] = "epoll,poll" - cls.client = QdrantClient(url=host, prefer_grpc=True, api_key=QDRANT_API_KEY, **connection_params) + if QDRANT_URL is None: + cls.client = QdrantClient( + host=host, api_key=QDRANT_API_KEY, prefer_grpc=True, **connection_params + ) + else: + cls.client = QdrantClient( + url=QDRANT_URL, + api_key=QDRANT_API_KEY, + prefer_grpc=True, + **connection_params, + ) cls.upload_params = upload_params @classmethod @@ -58,17 +79,23 @@ def upload_batch(cls, batch: List[Record]): @classmethod def post_upload(cls, _distance): - # If index building is disabled through the collection settings, enable it - collection = cls.client.get_collection(collection_name=QDRANT_COLLECTION_NAME) - if collection.config.optimizer_config.max_optimization_threads == 0: - cls.client.update_collection( - collection_name=QDRANT_COLLECTION_NAME, - optimizer_config=OptimizersConfigDiff( - # indexing_threshold=10_000, - # Set to a high number to not apply limits, already limited by CPU budget - max_optimization_threads=100_000, - ), - ) + max_optimization_threads = QDRANT_MAX_OPTIMIZATION_THREADS + if max_optimization_threads is not None: + max_optimization_threads = int(max_optimization_threads) + else: + # If index building is disabled through the collection settings, enable it + collection = cls.client.get_collection(collection_name=QDRANT_COLLECTION_NAME) + if collection.config.optimizer_config.max_optimization_threads == 0: + # Set to a high number to not apply limits, already limited by CPU budget + max_optimization_threads = 100_000 + + cls.client.update_collection( + collection_name=QDRANT_COLLECTION_NAME, + optimizer_config=OptimizersConfigDiff( + # indexing_threshold=10_000, + max_optimization_threads=max_optimization_threads, + ), + ) cls.wait_collection_green() return {} @@ -93,3 +120,24 @@ def wait_collection_green(cls): def delete_client(cls): if cls.client is not None: del cls.client + + def get_memory_usage(cls): + collection_info = get_collection_info( + QDRANT_URL, QDRANT_COLLECTION_NAME, QDRANT_API_KEY + ) + used_memory = {} + # Extract memory usage information + if ( + QDRANT_ACCOUNT_ID is not None + and QDRANT_CLUSTER_ID is not None + and QDRANT_AUTH_TOKEN is not None + ): + print(f"Tring to fetch Qdrant cloud usage from Cluster {QDRANT_CLUSTER_ID}") + used_memory = get_qdrant_cloud_usage( + QDRANT_ACCOUNT_ID, QDRANT_CLUSTER_ID, QDRANT_AUTH_TOKEN + ) + + return { + "used_memory": used_memory, + "collection_info": collection_info, + } diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index e9ef60752..2bf68fc22 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -4,6 +4,14 @@ REDIS_AUTH = os.getenv("REDIS_AUTH", None) REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) +# One of BATCHES and ADHOC_BF +# check https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/vectors/#pre-filter-query-attributes-hybrid-approach +REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", "") +REDIS_KEEP_DOCUMENTS = bool(os.getenv("REDIS_KEEP_DOCUMENTS", 0)) +REDIS_JUST_INDEX = bool(os.getenv("REDIS_JUST_INDEX", 0)) +GPU_STATS = bool(int(os.getenv("GPU_STATS", 0))) +GPU_STATS_ENDPOINT = os.getenv("GPU_STATS_ENDPOINT", None) -# 90 seconds timeout + +# 60 seconds timeout REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 90 * 1000)) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index a5e6fe821..86dd46a72 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -1,21 +1,23 @@ import redis +import time from redis import Redis, RedisCluster from redis.commands.search.field import ( GeoField, NumericField, - TagField, TextField, VectorField, + TagField, ) from benchmark.dataset import Dataset from engine.base_client.configure import BaseConfigurator from engine.base_client.distances import Distance from engine.clients.redis.config import ( - REDIS_AUTH, - REDIS_CLUSTER, REDIS_PORT, + REDIS_AUTH, REDIS_USER, + REDIS_CLUSTER, + REDIS_KEEP_DOCUMENTS, ) @@ -51,10 +53,24 @@ def clean(self): for conn in conns: search_namespace = conn.ft() try: - search_namespace.dropindex(delete_documents=True) + search_namespace.dropindex(delete_documents=(not REDIS_KEEP_DOCUMENTS)) except redis.ResponseError as e: - if "Unknown Index name" not in str(e): - print(e) + str_err = e.__str__() + if ( + "Unknown Index name" not in str_err + and "Index does not exist" not in str_err + and "no such index" not in str_err + ): + # google memorystore does not support the DD argument. + # in that case we can flushall + if "wrong number of arguments for FT.DROPINDEX command" in str_err: + print( + "Given the FT.DROPINDEX command failed, we're flushing the entire DB..." + ) + if REDIS_KEEP_DOCUMENTS is False: + conn.flushall() + else: + raise e def recreate(self, dataset: Dataset, collection_params): self.clean() @@ -76,15 +92,21 @@ def recreate(self, dataset: Dataset, collection_params): for field_name, field_type in dataset.config.schema.items() if field_type == "keyword" ] + algorithm_config = {} + # by default we use hnsw + algo = collection_params.get("algorithm", "hnsw") + data_type = collection_params.get("data_type", "float32") + algorithm_config = collection_params.get(f"{algo}_config", {}) + print(f"Using algorithm {algo} with config {algorithm_config}") index_fields = [ VectorField( name="vector", - algorithm="HNSW", + algorithm=algo, attributes={ - "TYPE": "FLOAT32", + "TYPE": data_type, "DIM": dataset.config.vector_size, "DISTANCE_METRIC": self.DISTANCE_MAPPING[dataset.config.distance], - **self.collection_params.get("hnsw_config", {}), + **algorithm_config, }, ) ] + payload_fields diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 1dbb4c66b..61dc78f47 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -1,20 +1,20 @@ import random from typing import List, Tuple, Union - +from ml_dtypes import bfloat16 import numpy as np from redis import Redis, RedisCluster from redis.commands.search import Search as RedisSearchIndex -from redis.commands.search.query import Query as RedisQuery - -from dataset_reader.base_reader import Query as DatasetQuery +from redis.commands.search.query import Query from engine.base_client.search import BaseSearcher from engine.clients.redis.config import ( - REDIS_AUTH, - REDIS_CLUSTER, REDIS_PORT, REDIS_QUERY_TIMEOUT, + REDIS_AUTH, REDIS_USER, + REDIS_CLUSTER, + REDIS_HYBRID_POLICY, ) + from engine.clients.redis.parser import RedisConditionParser @@ -35,6 +35,28 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER ) cls.search_params = search_params + cls.knn_conditions = "EF_RUNTIME $EF" + cls.algorithm = cls.search_params.get("algorithm", "hnsw").upper() + cls.hybrid_policy = REDIS_HYBRID_POLICY + + if cls.algorithm == "HNSW": + # 'EF_RUNTIME' is irrelevant for 'ADHOC_BF' policy + if cls.hybrid_policy != "ADHOC_BF": + cls.knn_conditions = "EF_RUNTIME $EF" + + cls.data_type = "FLOAT32" + if "search_params" in cls.search_params: + cls.data_type = ( + cls.search_params["search_params"].get("data_type", "FLOAT32").upper() + ) + cls.np_data_type = np.float32 + if cls.data_type == "FLOAT64": + cls.np_data_type = np.float64 + if cls.data_type == "FLOAT16": + cls.np_data_type = np.float16 + if cls.data_type == "BFLOAT16": + cls.np_data_type = bfloat16 + cls._is_cluster = True if REDIS_CLUSTER else False # In the case of CLUSTER API enabled we randomly select the starting primary shard # when doing the client initialization to evenly distribute the load among the cluster @@ -50,8 +72,13 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.search_namespace = random.choice(cls.conns).ft() @classmethod - def search_one(cls, query: DatasetQuery, top: int) -> List[Tuple[int, float]]: - conditions = cls.parser.parse(query.meta_conditions) + def search_one(cls, query, meta_conditions, top) -> List[Tuple[int, float]]: + vector = query.vector if hasattr(query, 'vector') else query + meta_conditions = query.meta_conditions if hasattr(query, 'meta_conditions') else meta_conditions + conditions = cls.parser.parse(meta_conditions) + hybrid_policy = "" + if cls.hybrid_policy != "": + hybrid_policy = '=>{$HYBRID_POLICY: '+ cls.hybrid_policy + ' }' if conditions is None: prefilter_condition = "*" params = {} @@ -59,8 +86,8 @@ def search_one(cls, query: DatasetQuery, top: int) -> List[Tuple[int, float]]: prefilter_condition, params = conditions q = ( - RedisQuery( - f"{prefilter_condition}=>[KNN $K @vector $vec_param {cls.knn_conditions} AS vector_score]" + Query( + f"{prefilter_condition}=>[KNN $K @vector $vec_param {cls.knn_conditions} AS vector_score]{hybrid_policy}" ) .sort_by("vector_score", asc=True) .paging(0, top) @@ -71,11 +98,19 @@ def search_one(cls, query: DatasetQuery, top: int) -> List[Tuple[int, float]]: .timeout(REDIS_QUERY_TIMEOUT) ) params_dict = { - "vec_param": np.array(query.vector).astype(np.float32).tobytes(), + "vec_param": np.array(vector).astype(cls.np_data_type).tobytes(), "K": top, - **cls.search_params["config"], **params, } - results = cls.search_namespace.search(q, query_params=params_dict) + if cls.algorithm == "HNSW": + # 'EF_RUNTIME' is irrelevant for 'ADHOC_BF' policy + if cls.hybrid_policy != "ADHOC_BF": + params_dict["EF"] = cls.search_params["search_params"]["ef"] + + # Use the correct search method based on the client + if hasattr(cls, '_ft'): + results = cls._ft.search(q, query_params=params_dict) + else: + results = cls.search_namespace.search(q, query_params=params_dict) return [(int(result.id), float(result.vector_score)) for result in results.docs] diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index cd4b888b1..b5b790c93 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -1,21 +1,30 @@ -from typing import List - +import time +from typing import List, Optional +from ml_dtypes import bfloat16 +import requests +import json +import random import numpy as np from redis import Redis, RedisCluster from dataset_reader.base_reader import Record from engine.base_client.upload import BaseUploader from engine.clients.redis.config import ( - REDIS_AUTH, - REDIS_CLUSTER, REDIS_PORT, + REDIS_AUTH, REDIS_USER, + REDIS_CLUSTER, + GPU_STATS, + GPU_STATS_ENDPOINT, + REDIS_JUST_INDEX, ) from engine.clients.redis.helper import convert_to_redis_coords class RedisUploader(BaseUploader): client = None + host = None + client_decode = None upload_params = {} @classmethod @@ -24,13 +33,34 @@ def init_client(cls, host, distance, connection_params, upload_params): cls.client = redis_constructor( host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER ) + cls.host = host + cls.client_decode = redis_constructor( + host=host, + port=REDIS_PORT, + password=REDIS_AUTH, + username=REDIS_USER, + decode_responses=True, + ) cls.upload_params = upload_params + cls.algorithm = cls.upload_params.get("algorithm", "hnsw").upper() + cls.data_type = cls.upload_params.get("data_type", "FLOAT32").upper() + cls.np_data_type = np.float32 + if cls.data_type == "FLOAT64": + cls.np_data_type = np.float64 + if cls.data_type == "FLOAT16": + cls.np_data_type = np.float16 + if cls.data_type == "BFLOAT16": + cls.np_data_type = bfloat16 + cls._is_cluster = True if REDIS_CLUSTER else False @classmethod def upload_batch(cls, batch: List[Record]): - p = cls.client.pipeline(transaction=False) + if REDIS_JUST_INDEX: + return + for record in batch: idx = record.id + vector_key = str(idx) vec = record.vector meta = record.metadata or {} geopoints = {} @@ -55,15 +85,78 @@ def upload_batch(cls, batch: List[Record]): if isinstance(v, dict) } cls.client.hset( - str(idx), + vector_key, mapping={ - "vector": np.array(vec).astype(np.float32).tobytes(), + "vector": np.array(vec).astype(cls.np_data_type).tobytes(), **payload, **geopoints, }, ) - p.execute() + @classmethod def post_upload(cls, _distance): + if cls.algorithm != "HNSW" and cls.algorithm != "FLAT": + print(f"TODO: FIXME!! Avoiding calling ft.info for {cls.algorithm}...") + return {} + index_info = cls.client.ft().info() + # redisearch / memorystore for redis + if "percent_index" in index_info: + percent_index = float(index_info["percent_index"]) + while percent_index < 1.0: + print( + "waiting for index to be fully processed. current percent index: {}".format( + percent_index * 100.0 + ) + ) + time.sleep(1) + percent_index = float(cls.client.ft().info()["percent_index"]) + # memorydb + if "current_lag" in index_info: + current_lag = float(index_info["current_lag"]) + while current_lag > 0: + print( + "waiting for index to be fully processed. current current_lag: {}".format( + current_lag + ) + ) + time.sleep(1) + current_lag = int(cls.client.ft().info()["current_lag"]) return {} + + def get_memory_usage(cls): + used_memory = [] + conns = [cls.client_decode] + if cls._is_cluster: + conns = [ + cls.client_decode.get_redis_connection(node) + for node in cls.client_decode.get_primaries() + ] + for conn in conns: + used_memory_shard = conn.info("memory")["used_memory"] + used_memory.append(used_memory_shard) + index_info = {} + device_info = {} + if cls.algorithm != "HNSW" and cls.algorithm != "FLAT": + print(f"TODO: FIXME!! Avoiding calling ft.info for {cls.algorithm}...") + else: + index_info = cls.client_decode.ft().info() + if GPU_STATS: + url = f"http://{cls.host}:5000/" + if GPU_STATS_ENDPOINT is not None: + url = GPU_STATS_ENDPOINT + try: + print(f"Quering GPU stats from endpoint {url}...") + # Send GET request to the server + response = requests.get(url) + device_info = json.loads(response.text) + print("Retrieved device info:", device_info) + except requests.exceptions.RequestException as e: + # Handle any exceptions that may occur + print("An error occurred while querying gpu stats:", e) + + return { + "used_memory": used_memory, + "index_info": index_info, + "device_info": device_info, + } diff --git a/engine/clients/vectorsets/__init__.py b/engine/clients/vectorsets/__init__.py new file mode 100644 index 000000000..c21498cb6 --- /dev/null +++ b/engine/clients/vectorsets/__init__.py @@ -0,0 +1,3 @@ +from engine.clients.vectorsets.configure import RedisVsetConfigurator +from engine.clients.vectorsets.search import RedisVsetSearcher +from engine.clients.vectorsets.upload import RedisVsetUploader diff --git a/engine/clients/vectorsets/config.py b/engine/clients/vectorsets/config.py new file mode 100644 index 000000000..e9ef60752 --- /dev/null +++ b/engine/clients/vectorsets/config.py @@ -0,0 +1,9 @@ +import os + +REDIS_PORT = int(os.getenv("REDIS_PORT", 6379)) +REDIS_AUTH = os.getenv("REDIS_AUTH", None) +REDIS_USER = os.getenv("REDIS_USER", None) +REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) + +# 90 seconds timeout +REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 90 * 1000)) diff --git a/engine/clients/vectorsets/configure.py b/engine/clients/vectorsets/configure.py new file mode 100644 index 000000000..5c5a06ae5 --- /dev/null +++ b/engine/clients/vectorsets/configure.py @@ -0,0 +1,44 @@ +import redis +from redis import Redis, RedisCluster + +from benchmark.dataset import Dataset +from engine.base_client.configure import BaseConfigurator +from engine.clients.vectorsets.config import ( + REDIS_AUTH, + REDIS_CLUSTER, + REDIS_PORT, + REDIS_USER, +) + + +class RedisVsetConfigurator(BaseConfigurator): + + def __init__(self, host, collection_params: dict, connection_params: dict): + super().__init__(host, collection_params, connection_params) + redis_constructor = RedisCluster if REDIS_CLUSTER else Redis + self._is_cluster = True if REDIS_CLUSTER else False + self.client = redis_constructor( + host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER + ) + self.client.flushall() + + def clean(self): + conns = [self.client] + if self._is_cluster: + conns = [ + self.client.get_redis_connection(node) + for node in self.client.get_primaries() + ] + for conn in conns: + index = conn.ft() + try: + conn.flushall() + except redis.ResponseError as e: + print(e) + + def recreate(self, dataset: Dataset, collection_params): + pass + + +if __name__ == "__main__": + pass diff --git a/engine/clients/vectorsets/search.py b/engine/clients/vectorsets/search.py new file mode 100644 index 000000000..836a128d8 --- /dev/null +++ b/engine/clients/vectorsets/search.py @@ -0,0 +1,53 @@ +import random +from typing import List, Tuple + +import numpy as np +from redis import Redis, RedisCluster + + +from engine.base_client.search import BaseSearcher +from engine.clients.vectorsets.config import ( + REDIS_AUTH, + REDIS_CLUSTER, + REDIS_PORT, + REDIS_QUERY_TIMEOUT, + REDIS_USER, +) +from engine.clients.redis.parser import RedisConditionParser + + +class RedisVsetSearcher(BaseSearcher): + search_params = {} + client = None + parser = RedisConditionParser() + + @classmethod + def init_client(cls, host, distance, connection_params: dict, search_params: dict): + redis_constructor = RedisCluster if REDIS_CLUSTER else Redis + cls.client = redis_constructor( + host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER + ) + cls.search_params = search_params + cls._is_cluster = True if REDIS_CLUSTER else False + # In the case of CLUSTER API enabled we randomly select the starting primary shard + # when doing the client initialization to evenly distribute the load among the cluster + cls.conns = [cls.client] + if cls._is_cluster: + cls.conns = [ + cls.client.get_redis_connection(node) + for node in cls.client.get_primaries() + ] + cls._ft = cls.conns[random.randint(0, len(cls.conns)) - 1].ft() + + @classmethod + def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: + ef = cls.search_params["search_params"]["ef"] + response = cls.client.execute_command("VSIM", "idx", "FP32", np.array(vector).astype(np.float32).tobytes(), "WITHSCORES", "COUNT", top, "EF", ef) + # decode responses + # every even cell is id, every odd is the score + # scores needs to be 1 - scores since on vector sets 1 is identical, 0 is opposite vector + ids = [int(response[i]) for i in range(0, len(response), 2)] + scores = [1 - float(response[i]) for i in range(1, len(response), 2)] + # we need to return a list of tuples + # where the first element is the id and the second is the score + return list(zip(ids, scores)) diff --git a/engine/clients/vectorsets/upload.py b/engine/clients/vectorsets/upload.py new file mode 100644 index 000000000..ccd16dd9c --- /dev/null +++ b/engine/clients/vectorsets/upload.py @@ -0,0 +1,48 @@ +from typing import List, Optional + +import numpy as np +from redis import Redis, RedisCluster + +from engine.base_client.upload import BaseUploader +from engine.clients.vectorsets.config import ( + REDIS_AUTH, + REDIS_CLUSTER, + REDIS_PORT, + REDIS_USER, +) +from engine.clients.redis.helper import convert_to_redis_coords + + +class RedisVsetUploader(BaseUploader): + client = None + upload_params = {} + + @classmethod + def init_client(cls, host, distance, connection_params, upload_params): + redis_constructor = RedisCluster if REDIS_CLUSTER else Redis + cls.client = redis_constructor( + host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER + ) + cls.upload_params = upload_params + + @classmethod + def upload_batch( + cls, ids: List[int], vectors: List[list], metadata: Optional[List[dict]] + ): + upload_params = cls.upload_params + hnsw_params = upload_params.get("hnsw_config") + M = hnsw_params.get("M", 16) + efc = hnsw_params.get("EF_CONSTRUCTION", 200) + quant = hnsw_params.get("quant") + + p = cls.client.pipeline(transaction=False) + for i in range(len(ids)): + idx = ids[i] + vec = vectors[i] + vec = np.array(vec).astype(np.float32).tobytes() + p.execute_command("VADD", "idx", "FP32", vec, idx, quant, "M", M, "EF", efc, "CAS") + p.execute() + + @classmethod + def post_upload(cls, _distance): + return {} diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index b1192734f..b317fc5b6 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -1,2 +1,25 @@ +import os +from weaviate import WeaviateClient, ConnectionParams + WEAVIATE_CLASS_NAME = "Benchmark" -WEAVIATE_DEFAULT_PORT = 8090 +WEAVIATE_DEFAULT_HTTP_PORT = 8080 +WEAVIATE_DEFAULT_GRPC_PORT = 50051 +WEAVIATE_API_KEY = os.getenv("WEAVIATE_API_KEY", None) +WEAVIATE_HTTP_PORT = os.getenv("WEAVIATE_HTTP_PORT", WEAVIATE_DEFAULT_HTTP_PORT) +WEAVIATE_GRPC_PORT = os.getenv("WEAVIATE_GRPC_PORT", WEAVIATE_DEFAULT_GRPC_PORT) + + +def setup_client(connection_params, host): + port = connection_params.get("port", WEAVIATE_HTTP_PORT) + if host.startswith("http"): + url = "" + else: + url = "http://" + url += f"{host}:{port}" + c = WeaviateClient( + ConnectionParams.from_url(url, WEAVIATE_GRPC_PORT), skip_init_checks=True + ) + c.connect() + # Ping Weaviate's live state. + assert c.is_live() is True + return c diff --git a/engine/clients/weaviate/configure.py b/engine/clients/weaviate/configure.py index 938ad6910..cd2575a4e 100644 --- a/engine/clients/weaviate/configure.py +++ b/engine/clients/weaviate/configure.py @@ -1,13 +1,15 @@ -from weaviate import WeaviateClient -from weaviate.connect import ConnectionParams - from benchmark.dataset import Dataset from engine.base_client.configure import BaseConfigurator from engine.base_client.distances import Distance -from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, WEAVIATE_DEFAULT_PORT +from engine.clients.weaviate.config import ( + WEAVIATE_CLASS_NAME, + setup_client, +) +from weaviate import WeaviateClient class WeaviateConfigurator(BaseConfigurator): + client: WeaviateClient = None DISTANCE_MAPPING = { Distance.L2: "l2-squared", Distance.COSINE: "cosine", @@ -23,12 +25,7 @@ class WeaviateConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - url = f"http://{host}:{connection_params.get('port', WEAVIATE_DEFAULT_PORT)}" - client = WeaviateClient( - ConnectionParams.from_url(url, 50051), skip_init_checks=True - ) - client.connect() - self.client = client + self.client = setup_client(connection_params, host) def clean(self): self.client.collections.delete(WEAVIATE_CLASS_NAME) @@ -60,5 +57,5 @@ def recreate(self, dataset: Dataset, collection_params): self.client.close() def __del__(self): - if self.client.is_connected(): - self.client.close() + if hasattr(self, "client") and self.client.is_connected(): + self.client.close() \ No newline at end of file diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index aa3ac9ceb..e5cd4ddc6 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -8,7 +8,7 @@ from dataset_reader.base_reader import Query from engine.base_client.search import BaseSearcher -from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, WEAVIATE_DEFAULT_PORT +from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client from engine.clients.weaviate.parser import WeaviateConditionParser @@ -20,16 +20,10 @@ class WeaviateSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - url = f"http://{host}:{connection_params.get('port', WEAVIATE_DEFAULT_PORT)}" - client = WeaviateClient( - ConnectionParams.from_url(url, 50051), skip_init_checks=True - ) - client.connect() - cls.collection = client.collections.get( - WEAVIATE_CLASS_NAME, skip_argument_validation=True - ) + cls.client = setup_client(connection_params, host) cls.search_params = search_params - cls.client = client + # Ping Weaviate's ready state + assert cls.client.is_ready() is True @classmethod def search_one(cls, query: Query, top: int) -> List[Tuple[int, float]]: diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index 9715ad1de..e0c80ea79 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -1,14 +1,11 @@ import uuid -from typing import List - +from typing import List, Optional from weaviate import WeaviateClient -from weaviate.classes.data import DataObject -from weaviate.connect import ConnectionParams from dataset_reader.base_reader import Record from engine.base_client.upload import BaseUploader -from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, WEAVIATE_DEFAULT_PORT - +from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client +from weaviate.classes.data import DataObject class WeaviateUploader(BaseUploader): client: WeaviateClient = None @@ -17,11 +14,7 @@ class WeaviateUploader(BaseUploader): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - url = f"http://{host}:{connection_params.get('port', WEAVIATE_DEFAULT_PORT)}" - cls.client = WeaviateClient( - ConnectionParams.from_url(url, 50051), skip_init_checks=True - ) - cls.client.connect() + cls.client = setup_client(connection_params, host) cls.upload_params = upload_params cls.connection_params = connection_params cls.collection = cls.client.collections.get( diff --git a/experiments/configurations/create-intel-ce-edition.py b/experiments/configurations/create-intel-ce-edition.py new file mode 100644 index 000000000..61dcbf2ce --- /dev/null +++ b/experiments/configurations/create-intel-ce-edition.py @@ -0,0 +1,39 @@ +import json + +ms = [4, 8, 16, 32] +ef_constructs = [4, 8, 16, 32] +ef_runtimes = [4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768] +data_type = "FLOAT16" +for algo in ["hnsw"]: + configs = [] + for m in ms: + for ef_construct in ef_constructs: + config = { + "name": f"redis-intel-{data_type.lower()}-{algo}-m-{m}-ef-{ef_construct}", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": algo, + "data_type": data_type, + f"{algo}_config": {"M": m, "EF_CONSTRUCTION": ef_construct}, + }, + "search_params": [], + "upload_params": { + "parallel":10, + "batch_size": 1, + "algorithm": algo, + "data_type": data_type, + }, + } + for client in [1, 50, 100, 200]: + for ef_runtime in ef_runtimes: + test_config = { + "parallel": client, + "search_params": {"ef": ef_runtime, "data_type": data_type}, + } + config["search_params"].append(test_config) + configs.append(config) + fname = f"redis-intel-{algo}-single-node.json" + with open(fname, "w") as json_fd: + json.dump(configs, json_fd, indent=2) + print(f"created {len(configs)} configs for {fname}.") diff --git a/experiments/configurations/create-intel.py b/experiments/configurations/create-intel.py new file mode 100644 index 000000000..d9233f494 --- /dev/null +++ b/experiments/configurations/create-intel.py @@ -0,0 +1,38 @@ +import json + +ms = [4, 8, 16, 32] +ef_constructs = [4, 8, 16, 32] +ef_runtimes = [4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192] +data_type = "FLOAT16" +for algo in ["hnsw"]: + configs = [] + for m in ms: + for ef_construct in ef_constructs: + config = { + "name": f"redis-intel-{data_type.lower()}-{algo}-m-{m}-ef-{ef_construct}", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": algo, + "data_type": data_type, + f"{algo}_config": {"M": m, "EF_CONSTRUCTION": ef_construct}, + }, + "search_params": [], + "upload_params": { + "parallel": 128, + "algorithm": algo, + "data_type": data_type, + }, + } + for client in [1, 50, 100, 200]: + for ef_runtime in ef_runtimes: + test_config = { + "parallel": client, + "search_params": {"ef": ef_runtime, "data_type": data_type}, + } + config["search_params"].append(test_config) + configs.append(config) + fname = f"redis-intel-{algo}-single-node.json" + with open(fname, "w") as json_fd: + json.dump(configs, json_fd, indent=2) + print(f"created {len(configs)} configs for {fname}.") diff --git a/experiments/configurations/create-ivf.py b/experiments/configurations/create-ivf.py new file mode 100644 index 000000000..1b945e016 --- /dev/null +++ b/experiments/configurations/create-ivf.py @@ -0,0 +1,35 @@ +import json + +n_lists = [256, 512, 1024, 1536] +n_probes = [16, 20, 32, 64, 128, 256] + + +for algo in ["raft_ivf_pq", "raft_ivf_flat"]: + configs = [] + for lists in n_lists: + for probes in n_probes: + config = { + "name": f"redis-{algo}-n_lists-{lists}-n_probes-{probes}", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": algo, + f"{algo}_config": {"N_LISTS": lists, "N_PROBES": probes}, + }, + "search_params": [ + { + "parallel": 1, + "algorithm": algo, + }, + { + "parallel": 100, + "algorithm": algo, + }, + ], + "upload_params": {"parallel": 16, "algorithm": algo}, + } + configs.append(config) + fname = f"redis-{algo}-single-node.json" + with open(fname, "w") as json_fd: + json.dump(configs, json_fd, indent=2) + print(f"created {len(configs)} configs for {fname}.") diff --git a/experiments/configurations/create-redis-same-azureai.py b/experiments/configurations/create-redis-same-azureai.py new file mode 100644 index 000000000..0290f5987 --- /dev/null +++ b/experiments/configurations/create-redis-same-azureai.py @@ -0,0 +1,29 @@ +import json + +experiments = [] + +for m in [4, 10]: + for efConstruction in [100, 500, 1000]: + search_params = [] + config = { + "name": f"redis-m-{m}-ef-{efConstruction}", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": {"M": m, "EF_CONSTRUCTION": efConstruction} + }, + "search_params": [], + "upload_params": {"parallel": 16}, + } + + for efSearch in [100, 500, 1000]: + single_client_config = {"parallel": 1, "search_params": {"ef": efSearch}} + multi_client_config = {"parallel": 50, "search_params": {"ef": efSearch}} + search_params.append(single_client_config) + search_params.append(multi_client_config) + config["search_params"] = search_params + + experiments.append(config) + +with open("redis-vs-azure-ai-search.json", "w") as fd: + json.dump(experiments, fd) diff --git a/experiments/configurations/create-redis-vector-types.py b/experiments/configurations/create-redis-vector-types.py new file mode 100644 index 000000000..493ff5f03 --- /dev/null +++ b/experiments/configurations/create-redis-vector-types.py @@ -0,0 +1,38 @@ +import json + +experiments = [] + +for data_type in ["FLOAT16", "BFLOAT16", "FLOAT32", "FLOAT64"]: + for m in [8, 16, 32, 64]: + # for efConstruction in [32, 64]: + for efConstruction in [16, 32, 64, 128, 256, 512]: + search_params = [] + config = { + "name": f"redis-{data_type.lower()}-m-{m}-ef-{efConstruction}", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": data_type, + "hnsw_config": {"M": m, "EF_CONSTRUCTION": efConstruction}, + }, + "search_params": [], + "upload_params": {"parallel": 16, "data_type": data_type}, + } + # for efSearch in [16, 32, 1024]: + for efSearch in [8, 16, 32, 64, 128, 256, 512, 1024]: + single_client_config = { + "parallel": 1, + "search_params": {"ef": efSearch, "data_type": data_type}, + } + multi_client_config = { + "parallel": 100, + "search_params": {"ef": efSearch, "data_type": data_type}, + } + search_params.append(single_client_config) + search_params.append(multi_client_config) + config["search_params"] = search_params + + experiments.append(config) + +with open("redis-vector-types.json", "w") as fd: + json.dump(experiments, fd) diff --git a/experiments/configurations/milvus-single-node.json b/experiments/configurations/milvus-single-node.json index bffc0a1c9..a69c4f622 100644 --- a/experiments/configurations/milvus-single-node.json +++ b/experiments/configurations/milvus-single-node.json @@ -5,8 +5,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "config": { "ef": 128 } }, { "parallel": 1, "config": { "ef": 256 } }, { "parallel": 1, "config": { "ef": 512 } }, - { "parallel": 100, "config": { "ef": 128 } }, { "parallel": 100, "config": { "ef": 256 } }, { "parallel": 100, "config": { "ef": 512 } } + { "parallel": 1, "params": { "ef": 64 } }, { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, + { "parallel": 100, "params": { "ef": 64 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], "upload_params": { "parallel": 16, "index_params": { "efConstruction": 100, "M": 16 } } }, @@ -16,8 +16,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "config": { "ef": 128 } }, { "parallel": 1, "config": { "ef": 256 } }, { "parallel": 1, "config": { "ef": 512 } }, - { "parallel": 100, "config": { "ef": 128 } }, { "parallel": 100, "config": { "ef": 256 } }, { "parallel": 100, "config": { "ef": 512 } } + { "parallel": 1, "params": { "ef": 64 } }, { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, + { "parallel": 100, "params": { "ef": 64 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], "upload_params": { "parallel": 16, "index_params": { "efConstruction": 128, "M": 16 } } }, @@ -27,8 +27,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "config": { "ef": 128 } }, { "parallel": 1, "config": { "ef": 256 } }, { "parallel": 1, "config": { "ef": 512 } }, - { "parallel": 100, "config": { "ef": 128 } }, { "parallel": 100, "config": { "ef": 256 } }, { "parallel": 100, "config": { "ef": 512 } } + { "parallel": 1, "params": { "ef": 64 } }, { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, + { "parallel": 100, "params": { "ef": 64 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], "upload_params": { "parallel": 16, "index_params": { "efConstruction": 128, "M": 32 } } }, @@ -38,8 +38,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "config": { "ef": 128 } }, { "parallel": 1, "config": { "ef": 256 } }, { "parallel": 1, "config": { "ef": 512 } }, - { "parallel": 100, "config": { "ef": 128 } }, { "parallel": 100, "config": { "ef": 256 } }, { "parallel": 100, "config": { "ef": 512 } } + { "parallel": 1, "params": { "ef": 64 } }, { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, + { "parallel": 100, "params": { "ef": 64 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], "upload_params": { "parallel": 16, "index_params": { "efConstruction": 256, "M": 32 } } }, @@ -49,8 +49,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "config": { "ef": 128 } }, { "parallel": 1, "config": { "ef": 256 } }, { "parallel": 1, "config": { "ef": 512 } }, - { "parallel": 100, "config": { "ef": 128 } }, { "parallel": 100, "config": { "ef": 256 } }, { "parallel": 100, "config": { "ef": 512 } } + { "parallel": 1, "params": { "ef": 64 } }, { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, + { "parallel": 100, "params": { "ef": 64 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], "upload_params": { "parallel": 16, "index_params": { "efConstruction": 512, "M": 32 } } }, @@ -60,8 +60,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "config": { "ef": 128 } }, { "parallel": 1, "config": { "ef": 256 } }, { "parallel": 1, "config": { "ef": 512 } }, - { "parallel": 100, "config": { "ef": 128 } }, { "parallel": 100, "config": { "ef": 256 } }, { "parallel": 100, "config": { "ef": 512 } } + { "parallel": 1, "params": { "ef": 64 } }, { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, + { "parallel": 100, "params": { "ef": 64 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], "upload_params": { "parallel": 16, "index_params": { "efConstruction": 256, "M": 64 } } }, @@ -71,8 +71,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "config": { "ef": 128 } }, { "parallel": 1, "config": { "ef": 256 } }, { "parallel": 1, "config": { "ef": 512 } }, - { "parallel": 100, "config": { "ef": 128 } }, { "parallel": 100, "config": { "ef": 256 } }, { "parallel": 100, "config": { "ef": 512 } } + { "parallel": 1, "params": { "ef": 64 } }, { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, + { "parallel": 100, "params": { "ef": 64 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], "upload_params": { "parallel": 16, "index_params": { "efConstruction": 512, "M": 64 } } } diff --git a/experiments/configurations/qdrant-single-node.json b/experiments/configurations/qdrant-single-node.json index 052b08767..f68047979 100644 --- a/experiments/configurations/qdrant-single-node.json +++ b/experiments/configurations/qdrant-single-node.json @@ -2,9 +2,10 @@ { "name": "qdrant-default", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 } + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 } }, "search_params": [ { "parallel": 8, "config": { "hnsw_ef": 128 } } @@ -14,8 +15,9 @@ { "name": "qdrant-continuous-benchmark", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { + "timeout": 300, "hnsw_config": { "m": 32, "ef_construct": 256 @@ -29,7 +31,7 @@ "optimizers_config": { "max_segment_size": 1000000, "default_segment_number": 3, - "memmap_threshold": 10000000, + "memmap_threshold": 25000000, "max_optimization_threads": null } }, @@ -165,7 +167,7 @@ "optimizers_config": { "max_segment_size": 1000000, "default_segment_number": 3, - "memmap_threshold": 10000000 + "memmap_threshold": 25000000 } }, "search_params": [ @@ -201,6 +203,7 @@ "engine": "qdrant", "connection_params": { "timeout": 30 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 10000000 } }, "search_params": [ @@ -213,9 +216,10 @@ { "name": "qdrant-m-16-ef-128", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 16, "ef_construct": 128 } }, "search_params": [ @@ -224,12 +228,43 @@ ], "upload_params": { "parallel": 16 } }, + { + "name": "qdrant-m-16-ef-256", + "engine": "qdrant", + "connection_params": { "timeout": 300 }, + "collection_params": { + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, + "hnsw_config": { "m": 16, "ef_construct": 256 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "hnsw_ef": 64 } }, { "parallel": 1, "search_params": { "hnsw_ef": 128 } }, { "parallel": 1, "search_params": { "hnsw_ef": 256 } }, { "parallel": 1, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 100, "search_params": { "hnsw_ef": 64 } }, { "parallel": 100, "search_params": { "hnsw_ef": 128 } }, { "parallel": 100, "search_params": { "hnsw_ef": 256 } }, { "parallel": 100, "search_params": { "hnsw_ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "qdrant-m-16-ef-512", + "engine": "qdrant", + "connection_params": { "timeout": 300 }, + "collection_params": { + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, + "hnsw_config": { "m": 16, "ef_construct": 512 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "hnsw_ef": 64 } }, { "parallel": 1, "search_params": { "hnsw_ef": 128 } }, { "parallel": 1, "search_params": { "hnsw_ef": 256 } }, { "parallel": 1, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 100, "search_params": { "hnsw_ef": 64 } }, { "parallel": 100, "search_params": { "hnsw_ef": 128 } }, { "parallel": 100, "search_params": { "hnsw_ef": 256 } }, { "parallel": 100, "search_params": { "hnsw_ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, { "name": "qdrant-m-32-ef-128", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 128 } }, "search_params": [ @@ -241,9 +276,10 @@ { "name": "qdrant-m-32-ef-256", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 256 } }, "search_params": [ @@ -255,9 +291,10 @@ { "name": "qdrant-m-32-ef-512", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 512 } }, "search_params": [ @@ -266,12 +303,28 @@ ], "upload_params": { "parallel": 16 } }, + { + "name": "qdrant-m-64-ef-128", + "engine": "qdrant", + "connection_params": { "timeout": 300 }, + "collection_params": { + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, + "hnsw_config": { "m": 64, "ef_construct": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "hnsw_ef": 64 } }, { "parallel": 1, "search_params": { "hnsw_ef": 128 } }, { "parallel": 1, "search_params": { "hnsw_ef": 256 } }, { "parallel": 1, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 100, "search_params": { "hnsw_ef": 64 } }, { "parallel": 100, "search_params": { "hnsw_ef": 128 } }, { "parallel": 100, "search_params": { "hnsw_ef": 256 } }, { "parallel": 100, "search_params": { "hnsw_ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, { "name": "qdrant-m-64-ef-256", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 64, "ef_construct": 256 } }, "search_params": [ @@ -283,9 +336,10 @@ { "name": "qdrant-m-64-ef-512", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "timeout": 300, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 64, "ef_construct": 512 } }, "search_params": [ diff --git a/experiments/configurations/redis-hnsw-single-node.json b/experiments/configurations/redis-hnsw-single-node.json new file mode 100644 index 000000000..9ae5e233f --- /dev/null +++ b/experiments/configurations/redis-hnsw-single-node.json @@ -0,0 +1,99 @@ +[ + { + "name": "redis-test", + "engine": "redis", + "algorithm": "hnsw", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-hnsw-m-16-ef-128", + "engine": "redis", + "algorithm": "hnsw", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-hnsw-m-32-ef-128", + "engine": "redis", + "algorithm": "hnsw", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-hnsw-m-32-ef-256", + "engine": "redis", + "algorithm": "hnsw", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 256 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-hnsw-m-32-ef-512", + "engine": "redis", + "algorithm": "hnsw", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 512 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-hnsw-m-64-ef-256", + "engine": "redis", + "algorithm": "hnsw", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 256 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-hnsw-m-64-ef-512", + "engine": "redis", + "algorithm": "hnsw", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 512 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 16 } + } +] diff --git a/experiments/configurations/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json new file mode 100644 index 000000000..d791e2891 --- /dev/null +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -0,0 +1,6610 @@ +[ + { + "name": "redis-intel-float16-hnsw-m-4-ef-4", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 4 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-4-ef-8", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 8 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-4-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-4-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-8-ef-4", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 4 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-8-ef-8", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 8 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-8-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-8-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-16-ef-4", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 4 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-16-ef-8", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 8 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-16-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-16-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-32-ef-4", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 4 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-32-ef-8", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 8 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-32-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "redis-intel-float16-hnsw-m-32-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16384, + "data_type": "FLOAT16" + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32768, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 10, + "batch_size": 1, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + } +] \ No newline at end of file diff --git a/experiments/configurations/redis-raft_ivf_flat-single-node.json b/experiments/configurations/redis-raft_ivf_flat-single-node.json new file mode 100644 index 000000000..ca05c0423 --- /dev/null +++ b/experiments/configurations/redis-raft_ivf_flat-single-node.json @@ -0,0 +1,626 @@ +[ + { + "name": "redis-raft_ivf_flat-n_lists-256-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-256-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-256-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-256-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-256-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-256-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-512-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-512-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-512-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-512-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-512-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-512-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1024-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1024-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1024-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1024-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1024-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1024-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1536-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1536-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1536-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1536-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1536-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-1536-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_flat" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_flat" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + } +] \ No newline at end of file diff --git a/experiments/configurations/redis-raft_ivf_pq-single-node.json b/experiments/configurations/redis-raft_ivf_pq-single-node.json new file mode 100644 index 000000000..099063db9 --- /dev/null +++ b/experiments/configurations/redis-raft_ivf_pq-single-node.json @@ -0,0 +1,626 @@ +[ + { + "name": "redis-raft_ivf_pq-n_lists-256-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-256-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-256-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-256-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-256-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-256-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-512-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-512-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-512-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-512-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-512-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-512-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1024-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1024-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1024-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1024-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1024-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1024-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1536-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1536-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1536-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1536-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1536-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-1536-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "algorithm": "raft_ivf_pq" + }, + { + "parallel": 100, + "algorithm": "raft_ivf_pq" + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + } +] \ No newline at end of file diff --git a/experiments/configurations/redis-single-node.json b/experiments/configurations/redis-single-node.json index 2807e288e..3ad0238fa 100644 --- a/experiments/configurations/redis-single-node.json +++ b/experiments/configurations/redis-single-node.json @@ -1,15 +1,68 @@ [ { - "name": "redis-default", + "name": "redis-m-16-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { + "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 64 } }, "search_params": [ { "parallel": 1, "config": { "EF": 64 } }, { "parallel": 1, "config": { "EF": 128 } }, { "parallel": 1, "config": { "EF": 256 } }, { "parallel": 1, "config": { "EF": 512 } }, { "parallel": 100, "config": { "EF": 64 } }, { "parallel": 100, "config": { "EF": 128 } }, { "parallel": 100, "config": { "EF": 256 } }, { "parallel": 100, "config": { "EF": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 1024 } + "upload_params": { "parallel": 32 } + }, + { + "name": "redis-m-16-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 32 } + }, + { + "name": "redis-m-16-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 256 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 32 } + }, + { + "name": "redis-m-16-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 512 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 32 } + }, + { + "name": "redis-m-32-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 64 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 32 } }, { "name": "redis-m-16-ef-128", @@ -35,7 +88,7 @@ { "parallel": 1, "config": { "EF": 64 } }, { "parallel": 1, "config": { "EF": 128 } }, { "parallel": 1, "config": { "EF": 256 } }, { "parallel": 1, "config": { "EF": 512 } }, { "parallel": 100, "config": { "EF": 64 } }, { "parallel": 100, "config": { "EF": 128 } }, { "parallel": 100, "config": { "EF": 256 } }, { "parallel": 100, "config": { "EF": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-32-ef-256", @@ -48,7 +101,7 @@ { "parallel": 1, "config": { "EF": 64 } }, { "parallel": 1, "config": { "EF": 128 } }, { "parallel": 1, "config": { "EF": 256 } }, { "parallel": 1, "config": { "EF": 512 } }, { "parallel": 100, "config": { "EF": 64 } }, { "parallel": 100, "config": { "EF": 128 } }, { "parallel": 100, "config": { "EF": 256 } }, { "parallel": 100, "config": { "EF": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-32-ef-512", @@ -61,7 +114,33 @@ { "parallel": 1, "config": { "EF": 64 } }, { "parallel": 1, "config": { "EF": 128 } }, { "parallel": 1, "config": { "EF": 256 } }, { "parallel": 1, "config": { "EF": 512 } }, { "parallel": 100, "config": { "EF": 64 } }, { "parallel": 100, "config": { "EF": 128 } }, { "parallel": 100, "config": { "EF": 256 } }, { "parallel": 100, "config": { "EF": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } + }, + { + "name": "redis-m-64-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 64 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 32 } + }, + { + "name": "redis-m-64-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "ef": 64 } }, { "parallel": 1, "search_params": { "ef": 128 } }, { "parallel": 1, "search_params": { "ef": 256 } }, { "parallel": 1, "search_params": { "ef": 512 } }, + { "parallel": 100, "search_params": { "ef": 64 } }, { "parallel": 100, "search_params": { "ef": 128 } }, { "parallel": 100, "search_params": { "ef": 256 } }, { "parallel": 100, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 32 } }, { "name": "redis-m-64-ef-256", @@ -74,7 +153,7 @@ { "parallel": 1, "config": { "EF": 64 } }, { "parallel": 1, "config": { "EF": 128 } }, { "parallel": 1, "config": { "EF": 256 } }, { "parallel": 1, "config": { "EF": 512 } }, { "parallel": 100, "config": { "EF": 64 } }, { "parallel": 100, "config": { "EF": 128 } }, { "parallel": 100, "config": { "EF": 256 } }, { "parallel": 100, "config": { "EF": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-64-ef-512", @@ -87,6 +166,6 @@ { "parallel": 1, "config": { "EF": 64 } }, { "parallel": 1, "config": { "EF": 128 } }, { "parallel": 1, "config": { "EF": 256 } }, { "parallel": 1, "config": { "EF": 512 } }, { "parallel": 100, "config": { "EF": 64 } }, { "parallel": 100, "config": { "EF": 128 } }, { "parallel": 100, "config": { "EF": 256 } }, { "parallel": 100, "config": { "EF": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } } ] diff --git a/experiments/configurations/redis-vector-types.json b/experiments/configurations/redis-vector-types.json new file mode 100644 index 000000000..92a006048 --- /dev/null +++ b/experiments/configurations/redis-vector-types.json @@ -0,0 +1,12482 @@ +[ + { + "name": "redis-float16-m-8-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-8-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-8-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-8-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-8-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-8-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-16-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-16-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-16-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-16-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-16-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-16-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-32-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-32-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-32-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-32-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-32-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-32-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-64-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-64-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-64-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-64-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-64-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-64-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-bfloat16-m-8-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-8-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-8-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-8-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-8-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-8-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-16-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-16-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-16-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-16-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-16-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-16-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-32-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-32-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-32-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-32-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-32-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-32-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-64-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-64-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-64-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-64-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-64-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-64-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "BFLOAT16" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-float32-m-8-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-8-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-8-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-8-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-8-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-8-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-16-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-16-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-16-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-16-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-16-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-16-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-32-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-32-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-32-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-32-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-32-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-32-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-64-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-64-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-64-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-64-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-64-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-64-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT32" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float64-m-8-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-8-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-8-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-8-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-8-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-8-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 8, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-16-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-16-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-16-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-16-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-16-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-16-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-32-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-32-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-32-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-32-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-32-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-32-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 32, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-64-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-64-ef-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-64-ef-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-64-ef-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-64-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-64-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512, + "data_type": "FLOAT64" + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024, + "data_type": "FLOAT64" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + } +] \ No newline at end of file diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json new file mode 100644 index 000000000..94f6b213b --- /dev/null +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -0,0 +1 @@ +[{"name": "redis-m-16-ef-100", "engine": "redis", "connection_params": {}, "collection_params": {"hnsw_config": {"M": 16, "EF_CONSTRUCTION": 100}}, "search_params": [{"parallel": 1, "search_params": {"ef": 100}}, {"parallel": 50, "search_params": {"ef": 100}}, {"parallel": 1, "search_params": {"ef": 250}}, {"parallel": 50, "search_params": {"ef": 250}}, {"parallel": 1, "search_params": {"ef": 500}}, {"parallel": 50, "search_params": {"ef": 500}}, {"parallel": 1, "search_params": {"ef": 750}}, {"parallel": 50, "search_params": {"ef": 750}}, {"parallel": 1, "search_params": {"ef": 1000}}, {"parallel": 50, "search_params": {"ef": 1000}}], "upload_params": {"parallel": 16}}, {"name": "redis-m-16-ef-500", "engine": "redis", "connection_params": {}, "collection_params": {"hnsw_config": {"M": 16, "EF_CONSTRUCTION": 500}}, "search_params": [{"parallel": 1, "search_params": {"ef": 100}}, {"parallel": 50, "search_params": {"ef": 100}}, {"parallel": 1, "search_params": {"ef": 250}}, {"parallel": 50, "search_params": {"ef": 250}}, {"parallel": 1, "search_params": {"ef": 500}}, {"parallel": 50, "search_params": {"ef": 500}}, {"parallel": 1, "search_params": {"ef": 750}}, {"parallel": 50, "search_params": {"ef": 750}}, {"parallel": 1, "search_params": {"ef": 1000}}, {"parallel": 50, "search_params": {"ef": 1000}}], "upload_params": {"parallel": 16}}, {"name": "redis-m-16-ef-1000", "engine": "redis", "connection_params": {}, "collection_params": {"hnsw_config": {"M": 16, "EF_CONSTRUCTION": 1000}}, "search_params": [{"parallel": 1, "search_params": {"ef": 100}}, {"parallel": 50, "search_params": {"ef": 100}}, {"parallel": 1, "search_params": {"ef": 250}}, {"parallel": 50, "search_params": {"ef": 250}}, {"parallel": 1, "search_params": {"ef": 500}}, {"parallel": 50, "search_params": {"ef": 500}}, {"parallel": 1, "search_params": {"ef": 750}}, {"parallel": 50, "search_params": {"ef": 750}}, {"parallel": 1, "search_params": {"ef": 1000}}, {"parallel": 50, "search_params": {"ef": 1000}}], "upload_params": {"parallel": 16}}, {"name": "redis-m-32-ef-100", "engine": "redis", "connection_params": {}, "collection_params": {"hnsw_config": {"M": 32, "EF_CONSTRUCTION": 100}}, "search_params": [{"parallel": 1, "search_params": {"ef": 100}}, {"parallel": 50, "search_params": {"ef": 100}}, {"parallel": 1, "search_params": {"ef": 250}}, {"parallel": 50, "search_params": {"ef": 250}}, {"parallel": 1, "search_params": {"ef": 500}}, {"parallel": 50, "search_params": {"ef": 500}}, {"parallel": 1, "search_params": {"ef": 750}}, {"parallel": 50, "search_params": {"ef": 750}}, {"parallel": 1, "search_params": {"ef": 1000}}, {"parallel": 50, "search_params": {"ef": 1000}}], "upload_params": {"parallel": 16}}, {"name": "redis-m-32-ef-500", "engine": "redis", "connection_params": {}, "collection_params": {"hnsw_config": {"M": 32, "EF_CONSTRUCTION": 500}}, "search_params": [{"parallel": 1, "search_params": {"ef": 100}}, {"parallel": 50, "search_params": {"ef": 100}}, {"parallel": 1, "search_params": {"ef": 250}}, {"parallel": 50, "search_params": {"ef": 250}}, {"parallel": 1, "search_params": {"ef": 500}}, {"parallel": 50, "search_params": {"ef": 500}}, {"parallel": 1, "search_params": {"ef": 750}}, {"parallel": 50, "search_params": {"ef": 750}}, {"parallel": 1, "search_params": {"ef": 1000}}, {"parallel": 50, "search_params": {"ef": 1000}}], "upload_params": {"parallel": 16}}, {"name": "redis-m-32-ef-1000", "engine": "redis", "connection_params": {}, "collection_params": {"hnsw_config": {"M": 32, "EF_CONSTRUCTION": 1000}}, "search_params": [{"parallel": 1, "search_params": {"ef": 100}}, {"parallel": 50, "search_params": {"ef": 100}}, {"parallel": 1, "search_params": {"ef": 250}}, {"parallel": 50, "search_params": {"ef": 250}}, {"parallel": 1, "search_params": {"ef": 500}}, {"parallel": 50, "search_params": {"ef": 500}}, {"parallel": 1, "search_params": {"ef": 750}}, {"parallel": 50, "search_params": {"ef": 750}}, {"parallel": 1, "search_params": {"ef": 1000}}, {"parallel": 50, "search_params": {"ef": 1000}}], "upload_params": {"parallel": 16}}] \ No newline at end of file diff --git a/experiments/configurations/vectorsets-NOQUANT.json b/experiments/configurations/vectorsets-NOQUANT.json new file mode 100644 index 000000000..31b486767 --- /dev/null +++ b/experiments/configurations/vectorsets-NOQUANT.json @@ -0,0 +1,385 @@ +[ + { + "name": "vectorsets-fp32-default", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "batch_size": 1024, + "hnsw_config": { + "quant": "NOQUANT" + } + } + }, + { + "name": "vectorsets-fp32-m-32-ef-128", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "NOQUANT", + "M": 32, + "EF_CONSTRUCTION": 128 + } + } + }, + { + "name": "vectorsets-fp32-m-32-ef-256", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "NOQUANT", + "M": 32, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-fp32-m-32-ef-512", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "NOQUANT", + "M": 32, + "EF_CONSTRUCTION": 512 + } + } + }, + { + "name": "vectorset-fp32s-m-64-ef-256", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "NOQUANT", + "M": 64, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-fp32-m-64-ef-512", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "NOQUANT", + "M": 64, + "EF_CONSTRUCTION": 512 + } + } + } +] \ No newline at end of file diff --git a/experiments/configurations/vectorsets-Q8.json b/experiments/configurations/vectorsets-Q8.json new file mode 100644 index 000000000..9c19e7fea --- /dev/null +++ b/experiments/configurations/vectorsets-Q8.json @@ -0,0 +1,385 @@ +[ + { + "name": "vectorsets-q8-default", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "batch_size": 1024, + "hnsw_config": { + "quant": "Q8" + } + } + }, + { + "name": "vectorsets-q8-m-32-ef-128", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "Q8", + "M": 32, + "EF_CONSTRUCTION": 128 + } + } + }, + { + "name": "vectorsets-q8-m-32-ef-256", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "Q8", + "M": 32, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-q8-m-32-ef-512", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "Q8", + "M": 32, + "EF_CONSTRUCTION": 512 + } + } + }, + { + "name": "vectorsets-q8-m-64-ef-256", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "Q8", + "M": 64, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-q8-m-64-ef-512", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "Q8", + "M": 64, + "EF_CONSTRUCTION": 512 + } + } + } +] \ No newline at end of file diff --git a/experiments/configurations/vectorsets-bin.json b/experiments/configurations/vectorsets-bin.json new file mode 100644 index 000000000..4638976c4 --- /dev/null +++ b/experiments/configurations/vectorsets-bin.json @@ -0,0 +1,385 @@ +[ + { + "name": "vectorsets-bin-default", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "batch_size": 1024, + "hnsw_config": { + "quant": "BIN" + } + } + }, + { + "name": "vectorsets-bin-m-32-ef-128", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "BIN", + "M": 32, + "EF_CONSTRUCTION": 128 + } + } + }, + { + "name": "vectorsets-bin-m-32-ef-256", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "BIN", + "M": 32, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-bin-m-32-ef-512", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "BIN", + "M": 32, + "EF_CONSTRUCTION": 512 + } + } + }, + { + "name": "vectorsets-bin-m-64-ef-256", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "BIN", + "M": 64, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-bin-m-64-ef-512", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + } + ], + "upload_params": { + "parallel": 32, + "hnsw_config": { + "quant": "BIN", + "M": 64, + "EF_CONSTRUCTION": 512 + } + } + } +] \ No newline at end of file diff --git a/experiments/configurations/weaviate-single-node.json b/experiments/configurations/weaviate-single-node.json index 3a4989cfe..2ddf1e0b6 100644 --- a/experiments/configurations/weaviate-single-node.json +++ b/experiments/configurations/weaviate-single-node.json @@ -3,7 +3,7 @@ "name": "weaviate-default", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "efConstruction": 256, "maxConnections": 16 } }, "search_params": [ @@ -15,7 +15,7 @@ "name": "weaviate-m-16-ef-128", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "efConstruction": 128, "maxConnections": 16 } }, "search_params": [ @@ -28,7 +28,7 @@ "name": "weaviate-m-32-ef-128", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "efConstruction": 128, "maxConnections": 32 } }, "search_params": [ @@ -41,7 +41,7 @@ "name": "weaviate-m-32-ef-256", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "efConstruction": 256, "maxConnections": 32 } }, "search_params": [ @@ -54,7 +54,7 @@ "name": "weaviate-m-32-ef-512", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "efConstruction": 512, "maxConnections": 32 } }, "search_params": [ @@ -67,7 +67,7 @@ "name": "weaviate-m-64-ef-256", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "efConstruction": 256, "maxConnections": 64 } }, "search_params": [ @@ -80,7 +80,7 @@ "name": "weaviate-m-64-ef-512", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "efConstruction": 512, "maxConnections": 64 } }, "search_params": [ diff --git a/monitoring/gpu_wrapper.py b/monitoring/gpu_wrapper.py new file mode 100644 index 000000000..347ac3b04 --- /dev/null +++ b/monitoring/gpu_wrapper.py @@ -0,0 +1,41 @@ +from http.server import BaseHTTPRequestHandler, HTTPServer +import subprocess + + +class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): + def do_GET(self): + # Parse the query string + command = "gpustat --json --no-header" + + try: + # Execute the command + result = subprocess.run( + command, + shell=True, + check=True, + text=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + # Send response status code + self.send_response(200) + # Send headers + self.send_header("Content-type", "text/plain") + self.end_headers() + # Write the output to the response + self.wfile.write(result.stdout.encode()) + except subprocess.CalledProcessError as e: + self.send_response(400) + self.end_headers() + self.wfile.write(e.stderr.encode()) + + +def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler, port=8000): + server_address = ("", port) + httpd = server_class(server_address, handler_class) + print(f"Server running on port {port}...") + httpd.serve_forever() + + +if __name__ == "__main__": + run() diff --git a/poetry.lock b/poetry.lock index 1726ec938..9c08860e2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "annotated-types" @@ -6,47 +6,17 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - -[[package]] -name = "anyio" -version = "4.5.2" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f"}, - {file = "anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21.0b1) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\""] -trio = ["trio (>=0.26.1)"] - [[package]] name = "anyio" version = "4.9.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, @@ -60,29 +30,15 @@ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -groups = ["main"] -markers = "python_version == \"3.8\" and sys_platform == \"darwin\"" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - [[package]] name = "asttokens" version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -98,37 +54,17 @@ version = "5.0.1" description = "Timeout context manager for asyncio programs" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "python_full_version < \"3.11.3\"" files = [ {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, ] -[[package]] -name = "authlib" -version = "1.3.2" -description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "Authlib-1.3.2-py2.py3-none-any.whl", hash = "sha256:ede026a95e9f5cdc2d4364a52103f5405e75aa156357e831ef2bfd0bc5094dfc"}, - {file = "authlib-1.3.2.tar.gz", hash = "sha256:4b16130117f9eb82aa6eec97f6dd4673c3f960ac0283ccdae2897ee4bc030ba2"}, -] - -[package.dependencies] -cryptography = "*" - [[package]] name = "authlib" version = "1.5.2" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "authlib-1.5.2-py2.py3-none-any.whl", hash = "sha256:8804dd4402ac5e4a0435ac49e0b6e19e395357cfa632a3f624dcb4f6df13b4b1"}, {file = "authlib-1.5.2.tar.gz", hash = "sha256:fe85ec7e50c5f86f1e2603518bb3b4f632985eb4a355e52256530790e326c512"}, @@ -138,55 +74,78 @@ files = [ cryptography = "*" [[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" +name = "backoff" +version = "2.2.1" +description = "Function decoration for backoff and retry" optional = false -python-versions = "*" -groups = ["main"] -markers = "python_version == \"3.8\"" +python-versions = ">=3.7,<4.0" files = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, + {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, + {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, ] [[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -optional = false -python-versions = ">=3.6" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, +name = "backports-datetime-fromisoformat" +version = "2.0.3" +description = "Backport of Python 3.11's datetime.fromisoformat" +optional = false +python-versions = ">3" +files = [ + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f681f638f10588fa3c101ee9ae2b63d3734713202ddfcfb6ec6cea0778a29d4"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:cd681460e9142f1249408e5aee6d178c6d89b49e06d44913c8fdfb6defda8d1c"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:ee68bc8735ae5058695b76d3bb2aee1d137c052a11c8303f1e966aa23b72b65b"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8273fe7932db65d952a43e238318966eab9e49e8dd546550a41df12175cc2be4"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39d57ea50aa5a524bb239688adc1d1d824c31b6094ebd39aa164d6cadb85de22"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ac6272f87693e78209dc72e84cf9ab58052027733cd0721c55356d3c881791cf"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:44c497a71f80cd2bcfc26faae8857cf8e79388e3d5fbf79d2354b8c360547d58"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:6335a4c9e8af329cb1ded5ab41a666e1448116161905a94e054f205aa6d263bc"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2e4b66e017253cdbe5a1de49e0eecff3f66cd72bcb1229d7db6e6b1832c0443"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:43e2d648e150777e13bbc2549cc960373e37bf65bd8a5d2e0cef40e16e5d8dd0"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:4ce6326fd86d5bae37813c7bf1543bae9e4c215ec6f5afe4c518be2635e2e005"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7c8fac333bf860208fd522a5394369ee3c790d0aa4311f515fcc4b6c5ef8d75"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4da5ab3aa0cc293dc0662a0c6d1da1a011dc1edcbc3122a288cfed13a0b45"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:58ea11e3bf912bd0a36b0519eae2c5b560b3cb972ea756e66b73fb9be460af01"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8a375c7dbee4734318714a799b6c697223e4bbb57232af37fbfff88fb48a14c6"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:ac677b1664c4585c2e014739f6678137c8336815406052349c85898206ec7061"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66ce47ee1ba91e146149cf40565c3d750ea1be94faf660ca733d8601e0848147"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:8b7e069910a66b3bba61df35b5f879e5253ff0821a70375b9daf06444d046fa4"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:a3b5d1d04a9e0f7b15aa1e647c750631a873b298cdd1255687bb68779fe8eb35"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec1b95986430e789c076610aea704db20874f0781b8624f648ca9fb6ef67c6e1"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffe5f793db59e2f1d45ec35a1cf51404fdd69df9f6952a0c87c3060af4c00e32"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:620e8e73bd2595dfff1b4d256a12b67fce90ece3de87b38e1dde46b910f46f4d"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4cf9c0a985d68476c1cabd6385c691201dda2337d7453fb4da9679ce9f23f4e7"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:d144868a73002e6e2e6fef72333e7b0129cecdd121aa8f1edba7107fd067255d"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e81b26497a17c29595bc7df20bc6a872ceea5f8c9d6537283945d4b6396aec10"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:5ba00ead8d9d82fd6123eb4891c566d30a293454e54e32ff7ead7644f5f7e575"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:24d574cb4072e1640b00864e94c4c89858033936ece3fc0e1c6f7179f120d0a8"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9735695a66aad654500b0193525e590c693ab3368478ce07b34b443a1ea5e824"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63d39709e17eb72685d052ac82acf0763e047f57c86af1b791505b1fec96915d"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:1ea2cc84224937d6b9b4c07f5cb7c667f2bde28c255645ba27f8a675a7af8234"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4024e6d35a9fdc1b3fd6ac7a673bd16cb176c7e0b952af6428b7129a70f72cce"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5e2dcc94dc9c9ab8704409d86fcb5236316e9dcef6feed8162287634e3568f4c"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fa2de871801d824c255fac7e5e7e50f2be6c9c376fd9268b40c54b5e9da91f42"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:1314d4923c1509aa9696712a7bc0c7160d3b7acf72adafbbe6c558d523f5d491"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b750ecba3a8815ad8bc48311552f3f8ab99dd2326d29df7ff670d9c49321f48f"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d5117dce805d8a2f78baeddc8c6127281fa0a5e2c40c6dd992ba6b2b367876"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb35f607bd1cbe37b896379d5f5ed4dc298b536f4b959cb63180e05cacc0539d"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:61c74710900602637d2d145dda9720c94e303380803bf68811b2a151deec75c2"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ece59af54ebf67ecbfbbf3ca9066f5687879e36527ad69d8b6e3ac565d565a62"}, + {file = "backports_datetime_fromisoformat-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:d0a7c5f875068efe106f62233bc712d50db4d07c13c7db570175c7857a7b5dbd"}, + {file = "backports_datetime_fromisoformat-2.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90e202e72a3d5aae673fcc8c9a4267d56b2f532beeb9173361293625fe4d2039"}, + {file = "backports_datetime_fromisoformat-2.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2df98ef1b76f5a58bb493dda552259ba60c3a37557d848e039524203951c9f06"}, + {file = "backports_datetime_fromisoformat-2.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7100adcda5e818b5a894ad0626e38118bb896a347f40ebed8981155675b9ba7b"}, + {file = "backports_datetime_fromisoformat-2.0.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e410383f5d6a449a529d074e88af8bc80020bb42b402265f9c02c8358c11da5"}, + {file = "backports_datetime_fromisoformat-2.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2797593760da6bcc32c4a13fa825af183cd4bfd333c60b3dbf84711afca26ef"}, + {file = "backports_datetime_fromisoformat-2.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35a144fd681a0bea1013ccc4cd3fd4dc758ea17ee23dca019c02b82ec46fc0c4"}, + {file = "backports_datetime_fromisoformat-2.0.3.tar.gz", hash = "sha256:b58edc8f517b66b397abc250ecc737969486703a66eb97e01e6d51291b1a139d"}, ] -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "certifi" version = "2025.4.26" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" -groups = ["main"] files = [ {file = "certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"}, {file = "certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6"}, @@ -198,8 +157,6 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "platform_python_implementation != \"PyPy\"" files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -279,7 +236,6 @@ version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -291,7 +247,6 @@ version = "3.4.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main"] files = [ {file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"}, {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"}, @@ -393,7 +348,6 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" -groups = ["main"] files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -408,12 +362,10 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "sys_platform == \"win32\" or platform_system == \"Windows\"", dev = "sys_platform == \"win32\""} [[package]] name = "cryptography" @@ -421,8 +373,6 @@ version = "43.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "python_version > \"3.8\" and python_version < \"3.10\"" files = [ {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, @@ -466,74 +416,12 @@ ssh = ["bcrypt (>=3.1.5)"] test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] -[[package]] -name = "cryptography" -version = "44.0.3" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = "!=3.9.0,!=3.9.1,>=3.7" -groups = ["main"] -markers = "python_version >= \"3.10\" or python_version == \"3.8\"" -files = [ - {file = "cryptography-44.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:962bc30480a08d133e631e8dfd4783ab71cc9e33d5d7c1e192f0b7c06397bb88"}, - {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffc61e8f3bf5b60346d89cd3d37231019c17a081208dfbbd6e1605ba03fa137"}, - {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58968d331425a6f9eedcee087f77fd3c927c88f55368f43ff7e0a19891f2642c"}, - {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e28d62e59a4dbd1d22e747f57d4f00c459af22181f0b2f787ea83f5a876d7c76"}, - {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af653022a0c25ef2e3ffb2c673a50e5a0d02fecc41608f4954176f1933b12359"}, - {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:157f1f3b8d941c2bd8f3ffee0af9b049c9665c39d3da9db2dc338feca5e98a43"}, - {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:c6cd67722619e4d55fdb42ead64ed8843d64638e9c07f4011163e46bc512cf01"}, - {file = "cryptography-44.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b424563394c369a804ecbee9b06dfb34997f19d00b3518e39f83a5642618397d"}, - {file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c91fc8e8fd78af553f98bc7f2a1d8db977334e4eea302a4bfd75b9461c2d8904"}, - {file = "cryptography-44.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:25cd194c39fa5a0aa4169125ee27d1172097857b27109a45fadc59653ec06f44"}, - {file = "cryptography-44.0.3-cp37-abi3-win32.whl", hash = "sha256:3be3f649d91cb182c3a6bd336de8b61a0a71965bd13d1a04a0e15b39c3d5809d"}, - {file = "cryptography-44.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:3883076d5c4cc56dbef0b898a74eb6992fdac29a7b9013870b34efe4ddb39a0d"}, - {file = "cryptography-44.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:5639c2b16764c6f76eedf722dbad9a0914960d3489c0cc38694ddf9464f1bb2f"}, - {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3ffef566ac88f75967d7abd852ed5f182da252d23fac11b4766da3957766759"}, - {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192ed30fac1728f7587c6f4613c29c584abdc565d7417c13904708db10206645"}, - {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7d5fe7195c27c32a64955740b949070f21cba664604291c298518d2e255931d2"}, - {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3f07943aa4d7dad689e3bb1638ddc4944cc5e0921e3c227486daae0e31a05e54"}, - {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb90f60e03d563ca2445099edf605c16ed1d5b15182d21831f58460c48bffb93"}, - {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ab0b005721cc0039e885ac3503825661bd9810b15d4f374e473f8c89b7d5460c"}, - {file = "cryptography-44.0.3-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3bb0847e6363c037df8f6ede57d88eaf3410ca2267fb12275370a76f85786a6f"}, - {file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b0cc66c74c797e1db750aaa842ad5b8b78e14805a9b5d1348dc603612d3e3ff5"}, - {file = "cryptography-44.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6866df152b581f9429020320e5eb9794c8780e90f7ccb021940d7f50ee00ae0b"}, - {file = "cryptography-44.0.3-cp39-abi3-win32.whl", hash = "sha256:c138abae3a12a94c75c10499f1cbae81294a6f983b3af066390adee73f433028"}, - {file = "cryptography-44.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:5d186f32e52e66994dce4f766884bcb9c68b8da62d61d9d215bfe5fb56d21334"}, - {file = "cryptography-44.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:cad399780053fb383dc067475135e41c9fe7d901a97dd5d9c5dfb5611afc0d7d"}, - {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:21a83f6f35b9cc656d71b5de8d519f566df01e660ac2578805ab245ffd8523f8"}, - {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fc3c9babc1e1faefd62704bb46a69f359a9819eb0292e40df3fb6e3574715cd4"}, - {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:e909df4053064a97f1e6565153ff8bb389af12c5c8d29c343308760890560aff"}, - {file = "cryptography-44.0.3-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:dad80b45c22e05b259e33ddd458e9e2ba099c86ccf4e88db7bbab4b747b18d06"}, - {file = "cryptography-44.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:479d92908277bed6e1a1c69b277734a7771c2b78633c224445b5c60a9f4bc1d9"}, - {file = "cryptography-44.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:896530bc9107b226f265effa7ef3f21270f18a2026bc09fed1ebd7b66ddf6375"}, - {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9b4d4a5dbee05a2c390bf212e78b99434efec37b17a4bff42f50285c5c8c9647"}, - {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02f55fb4f8b79c1221b0961488eaae21015b69b210e18c386b69de182ebb1259"}, - {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:dd3db61b8fe5be220eee484a17233287d0be6932d056cf5738225b9c05ef4fff"}, - {file = "cryptography-44.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:978631ec51a6bbc0b7e58f23b68a8ce9e5f09721940933e9c217068388789fe5"}, - {file = "cryptography-44.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:5d20cc348cca3a8aa7312f42ab953a56e15323800ca3ab0706b8cd452a3a056c"}, - {file = "cryptography-44.0.3.tar.gz", hash = "sha256:fe19d8bc5536a91a24a8133328880a41831b6c5df54599a8417b62fe015d3053"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0) ; python_version >= \"3.8\""] -docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"] -nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2) ; python_version >= \"3.8\""] -pep8test = ["check-sdist ; python_version >= \"3.8\"", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"] -sdist = ["build (>=1.0.0)"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi (>=2024)", "cryptography-vectors (==44.0.3)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] -test-randomorder = ["pytest-randomly"] - [[package]] name = "decorator" version = "5.2.1" description = "Decorators for Humans" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, @@ -545,7 +433,6 @@ version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" -groups = ["dev"] files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, @@ -557,7 +444,6 @@ version = "8.17.1" description = "Transport classes and utilities shared among Python Elastic client libraries" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "elastic_transport-8.17.1-py3-none-any.whl", hash = "sha256:192718f498f1d10c5e9aa8b9cf32aed405e469a7f0e9d6a8923431dbb2c59fb8"}, {file = "elastic_transport-8.17.1.tar.gz", hash = "sha256:5edef32ac864dca8e2f0a613ef63491ee8d6b8cfb52881fa7313ba9290cac6d2"}, @@ -576,7 +462,6 @@ version = "8.18.1" description = "Python client for Elasticsearch" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "elasticsearch-8.18.1-py3-none-any.whl", hash = "sha256:1a8c8b5ec3ce5be88f96d2f898375671648e96272978bce0dee3137d9326aabb"}, {file = "elasticsearch-8.18.1.tar.gz", hash = "sha256:998035f17a8c1fba7ae26b183dca797dcf95db86da6a7ecba56d31afc40f07c7"}, @@ -596,13 +481,33 @@ pyarrow = ["pyarrow (>=1)"] requests = ["requests (>=2.4.0,!=2.32.2,<3.0.0)"] vectorstore-mmr = ["numpy (>=1)", "simsimd (>=3)"] +[[package]] +name = "environs" +version = "9.5.0" +description = "simplified environment variable parsing" +optional = false +python-versions = ">=3.6" +files = [ + {file = "environs-9.5.0-py2.py3-none-any.whl", hash = "sha256:1e549569a3de49c05f856f40bce86979e7d5ffbbc4398e7f338574c220189124"}, + {file = "environs-9.5.0.tar.gz", hash = "sha256:a76307b36fbe856bdca7ee9161e6c466fd7fcffc297109a118c59b54e27e30c9"}, +] + +[package.dependencies] +marshmallow = ">=3.0.0" +python-dotenv = "*" + +[package.extras] +dev = ["dj-database-url", "dj-email-url", "django-cache-url", "flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "mypy (==0.910)", "pre-commit (>=2.4,<3.0)", "pytest", "tox"] +django = ["dj-database-url", "dj-email-url", "django-cache-url"] +lint = ["flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "mypy (==0.910)", "pre-commit (>=2.4,<3.0)"] +tests = ["dj-database-url", "dj-email-url", "django-cache-url", "pytest"] + [[package]] name = "events" version = "0.5" description = "Bringing the elegance of C# EventHandler to Python" optional = false python-versions = "*" -groups = ["main"] files = [ {file = "Events-0.5-py3-none-any.whl", hash = "sha256:a7286af378ba3e46640ac9825156c93bdba7502174dd696090fdfcd4d80a1abd"}, ] @@ -613,8 +518,6 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" -groups = ["main", "dev"] -markers = "python_version <= \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -629,32 +532,13 @@ version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] - -[[package]] -name = "filelock" -version = "3.16.1" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version == \"3.8\"" -files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] [[package]] name = "filelock" @@ -662,8 +546,6 @@ version = "3.18.0" description = "A platform independent file lock." optional = false python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version > \"3.8\"" files = [ {file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de"}, {file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2"}, @@ -672,159 +554,148 @@ files = [ [package.extras] docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "grpcio" -version = "1.67.1" +version = "1.71.0" description = "HTTP/2-based RPC framework" optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "grpcio-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:8b0341d66a57f8a3119b77ab32207072be60c9bf79760fa609c5609f2deb1f3f"}, - {file = "grpcio-1.67.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f5a27dddefe0e2357d3e617b9079b4bfdc91341a91565111a21ed6ebbc51b22d"}, - {file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:43112046864317498a33bdc4797ae6a268c36345a910de9b9c17159d8346602f"}, - {file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9b929f13677b10f63124c1a410994a401cdd85214ad83ab67cc077fc7e480f0"}, - {file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1797a8a3845437d327145959a2c0c47c05947c9eef5ff1a4c80e499dcc6fa"}, - {file = "grpcio-1.67.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0489063974d1452436139501bf6b180f63d4977223ee87488fe36858c5725292"}, - {file = "grpcio-1.67.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9fd042de4a82e3e7aca44008ee2fb5da01b3e5adb316348c21980f7f58adc311"}, - {file = "grpcio-1.67.1-cp310-cp310-win32.whl", hash = "sha256:638354e698fd0c6c76b04540a850bf1db27b4d2515a19fcd5cf645c48d3eb1ed"}, - {file = "grpcio-1.67.1-cp310-cp310-win_amd64.whl", hash = "sha256:608d87d1bdabf9e2868b12338cd38a79969eaf920c89d698ead08f48de9c0f9e"}, - {file = "grpcio-1.67.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:7818c0454027ae3384235a65210bbf5464bd715450e30a3d40385453a85a70cb"}, - {file = "grpcio-1.67.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ea33986b70f83844cd00814cee4451055cd8cab36f00ac64a31f5bb09b31919e"}, - {file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c7a01337407dd89005527623a4a72c5c8e2894d22bead0895306b23c6695698f"}, - {file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b866f73224b0634f4312a4674c1be21b2b4afa73cb20953cbbb73a6b36c3cc"}, - {file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fff78ba10d4250bfc07a01bd6254a6d87dc67f9627adece85c0b2ed754fa96"}, - {file = "grpcio-1.67.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8a23cbcc5bb11ea7dc6163078be36c065db68d915c24f5faa4f872c573bb400f"}, - {file = "grpcio-1.67.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a65b503d008f066e994f34f456e0647e5ceb34cfcec5ad180b1b44020ad4970"}, - {file = "grpcio-1.67.1-cp311-cp311-win32.whl", hash = "sha256:e29ca27bec8e163dca0c98084040edec3bc49afd10f18b412f483cc68c712744"}, - {file = "grpcio-1.67.1-cp311-cp311-win_amd64.whl", hash = "sha256:786a5b18544622bfb1e25cc08402bd44ea83edfb04b93798d85dca4d1a0b5be5"}, - {file = "grpcio-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:267d1745894200e4c604958da5f856da6293f063327cb049a51fe67348e4f953"}, - {file = "grpcio-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:85f69fdc1d28ce7cff8de3f9c67db2b0ca9ba4449644488c1e0303c146135ddb"}, - {file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f26b0b547eb8d00e195274cdfc63ce64c8fc2d3e2d00b12bf468ece41a0423a0"}, - {file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4422581cdc628f77302270ff839a44f4c24fdc57887dc2a45b7e53d8fc2376af"}, - {file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7616d2ded471231c701489190379e0c311ee0a6c756f3c03e6a62b95a7146e"}, - {file = "grpcio-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8a00efecde9d6fcc3ab00c13f816313c040a28450e5e25739c24f432fc6d3c75"}, - {file = "grpcio-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:699e964923b70f3101393710793289e42845791ea07565654ada0969522d0a38"}, - {file = "grpcio-1.67.1-cp312-cp312-win32.whl", hash = "sha256:4e7b904484a634a0fff132958dabdb10d63e0927398273917da3ee103e8d1f78"}, - {file = "grpcio-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:5721e66a594a6c4204458004852719b38f3d5522082be9061d6510b455c90afc"}, - {file = "grpcio-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa0162e56fd10a5547fac8774c4899fc3e18c1aa4a4759d0ce2cd00d3696ea6b"}, - {file = "grpcio-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:beee96c8c0b1a75d556fe57b92b58b4347c77a65781ee2ac749d550f2a365dc1"}, - {file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:a93deda571a1bf94ec1f6fcda2872dad3ae538700d94dc283c672a3b508ba3af"}, - {file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6f255980afef598a9e64a24efce87b625e3e3c80a45162d111a461a9f92955"}, - {file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e838cad2176ebd5d4a8bb03955138d6589ce9e2ce5d51c3ada34396dbd2dba8"}, - {file = "grpcio-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a6703916c43b1d468d0756c8077b12017a9fcb6a1ef13faf49e67d20d7ebda62"}, - {file = "grpcio-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:917e8d8994eed1d86b907ba2a61b9f0aef27a2155bca6cbb322430fc7135b7bb"}, - {file = "grpcio-1.67.1-cp313-cp313-win32.whl", hash = "sha256:e279330bef1744040db8fc432becc8a727b84f456ab62b744d3fdb83f327e121"}, - {file = "grpcio-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:fa0c739ad8b1996bd24823950e3cb5152ae91fca1c09cc791190bf1627ffefba"}, - {file = "grpcio-1.67.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:178f5db771c4f9a9facb2ab37a434c46cb9be1a75e820f187ee3d1e7805c4f65"}, - {file = "grpcio-1.67.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f3e49c738396e93b7ba9016e153eb09e0778e776df6090c1b8c91877cc1c426"}, - {file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:24e8a26dbfc5274d7474c27759b54486b8de23c709d76695237515bc8b5baeab"}, - {file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b6c16489326d79ead41689c4b84bc40d522c9a7617219f4ad94bc7f448c5085"}, - {file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e6a4dcf5af7bbc36fd9f81c9f372e8ae580870a9e4b6eafe948cd334b81cf3"}, - {file = "grpcio-1.67.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:95b5f2b857856ed78d72da93cd7d09b6db8ef30102e5e7fe0961fe4d9f7d48e8"}, - {file = "grpcio-1.67.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b49359977c6ec9f5d0573ea4e0071ad278ef905aa74e420acc73fd28ce39e9ce"}, - {file = "grpcio-1.67.1-cp38-cp38-win32.whl", hash = "sha256:f5b76ff64aaac53fede0cc93abf57894ab2a7362986ba22243d06218b93efe46"}, - {file = "grpcio-1.67.1-cp38-cp38-win_amd64.whl", hash = "sha256:804c6457c3cd3ec04fe6006c739579b8d35c86ae3298ffca8de57b493524b771"}, - {file = "grpcio-1.67.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:a25bdea92b13ff4d7790962190bf6bf5c4639876e01c0f3dda70fc2769616335"}, - {file = "grpcio-1.67.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cdc491ae35a13535fd9196acb5afe1af37c8237df2e54427be3eecda3653127e"}, - {file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:85f862069b86a305497e74d0dc43c02de3d1d184fc2c180993aa8aa86fbd19b8"}, - {file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec74ef02010186185de82cc594058a3ccd8d86821842bbac9873fd4a2cf8be8d"}, - {file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01f616a964e540638af5130469451cf580ba8c7329f45ca998ab66e0c7dcdb04"}, - {file = "grpcio-1.67.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:299b3d8c4f790c6bcca485f9963b4846dd92cf6f1b65d3697145d005c80f9fe8"}, - {file = "grpcio-1.67.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:60336bff760fbb47d7e86165408126f1dded184448e9a4c892189eb7c9d3f90f"}, - {file = "grpcio-1.67.1-cp39-cp39-win32.whl", hash = "sha256:5ed601c4c6008429e3d247ddb367fe8c7259c355757448d7c1ef7bd4a6739e8e"}, - {file = "grpcio-1.67.1-cp39-cp39-win_amd64.whl", hash = "sha256:5db70d32d6703b89912af16d6d45d78406374a8b8ef0d28140351dd0ec610e98"}, - {file = "grpcio-1.67.1.tar.gz", hash = "sha256:3dc2ed4cabea4dc14d5e708c2b426205956077cc5de419b4d4079315017e9732"}, +python-versions = ">=3.9" +files = [ + {file = "grpcio-1.71.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:c200cb6f2393468142eb50ab19613229dcc7829b5ccee8b658a36005f6669fdd"}, + {file = "grpcio-1.71.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b2266862c5ad664a380fbbcdbdb8289d71464c42a8c29053820ee78ba0119e5d"}, + {file = "grpcio-1.71.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:0ab8b2864396663a5b0b0d6d79495657ae85fa37dcb6498a2669d067c65c11ea"}, + {file = "grpcio-1.71.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c30f393f9d5ff00a71bb56de4aa75b8fe91b161aeb61d39528db6b768d7eac69"}, + {file = "grpcio-1.71.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f250ff44843d9a0615e350c77f890082102a0318d66a99540f54769c8766ab73"}, + {file = "grpcio-1.71.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e6d8de076528f7c43a2f576bc311799f89d795aa6c9b637377cc2b1616473804"}, + {file = "grpcio-1.71.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b91879d6da1605811ebc60d21ab6a7e4bae6c35f6b63a061d61eb818c8168f6"}, + {file = "grpcio-1.71.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f71574afdf944e6652203cd1badcda195b2a27d9c83e6d88dc1ce3cfb73b31a5"}, + {file = "grpcio-1.71.0-cp310-cp310-win32.whl", hash = "sha256:8997d6785e93308f277884ee6899ba63baafa0dfb4729748200fcc537858a509"}, + {file = "grpcio-1.71.0-cp310-cp310-win_amd64.whl", hash = "sha256:7d6ac9481d9d0d129224f6d5934d5832c4b1cddb96b59e7eba8416868909786a"}, + {file = "grpcio-1.71.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:d6aa986318c36508dc1d5001a3ff169a15b99b9f96ef5e98e13522c506b37eef"}, + {file = "grpcio-1.71.0-cp311-cp311-macosx_10_14_universal2.whl", hash = "sha256:d2c170247315f2d7e5798a22358e982ad6eeb68fa20cf7a820bb74c11f0736e7"}, + {file = "grpcio-1.71.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:e6f83a583ed0a5b08c5bc7a3fe860bb3c2eac1f03f1f63e0bc2091325605d2b7"}, + {file = "grpcio-1.71.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4be74ddeeb92cc87190e0e376dbc8fc7736dbb6d3d454f2fa1f5be1dee26b9d7"}, + {file = "grpcio-1.71.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd0dfbe4d5eb1fcfec9490ca13f82b089a309dc3678e2edabc144051270a66e"}, + {file = "grpcio-1.71.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a2242d6950dc892afdf9e951ed7ff89473aaf744b7d5727ad56bdaace363722b"}, + {file = "grpcio-1.71.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0fa05ee31a20456b13ae49ad2e5d585265f71dd19fbd9ef983c28f926d45d0a7"}, + {file = "grpcio-1.71.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3d081e859fb1ebe176de33fc3adb26c7d46b8812f906042705346b314bde32c3"}, + {file = "grpcio-1.71.0-cp311-cp311-win32.whl", hash = "sha256:d6de81c9c00c8a23047136b11794b3584cdc1460ed7cbc10eada50614baa1444"}, + {file = "grpcio-1.71.0-cp311-cp311-win_amd64.whl", hash = "sha256:24e867651fc67717b6f896d5f0cac0ec863a8b5fb7d6441c2ab428f52c651c6b"}, + {file = "grpcio-1.71.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:0ff35c8d807c1c7531d3002be03221ff9ae15712b53ab46e2a0b4bb271f38537"}, + {file = "grpcio-1.71.0-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:b78a99cd1ece4be92ab7c07765a0b038194ded2e0a26fd654591ee136088d8d7"}, + {file = "grpcio-1.71.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:dc1a1231ed23caac1de9f943d031f1bc38d0f69d2a3b243ea0d664fc1fbd7fec"}, + {file = "grpcio-1.71.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6beeea5566092c5e3c4896c6d1d307fb46b1d4bdf3e70c8340b190a69198594"}, + {file = "grpcio-1.71.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5170929109450a2c031cfe87d6716f2fae39695ad5335d9106ae88cc32dc84c"}, + {file = "grpcio-1.71.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5b08d03ace7aca7b2fadd4baf291139b4a5f058805a8327bfe9aece7253b6d67"}, + {file = "grpcio-1.71.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f903017db76bf9cc2b2d8bdd37bf04b505bbccad6be8a81e1542206875d0e9db"}, + {file = "grpcio-1.71.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:469f42a0b410883185eab4689060a20488a1a0a00f8bbb3cbc1061197b4c5a79"}, + {file = "grpcio-1.71.0-cp312-cp312-win32.whl", hash = "sha256:ad9f30838550695b5eb302add33f21f7301b882937460dd24f24b3cc5a95067a"}, + {file = "grpcio-1.71.0-cp312-cp312-win_amd64.whl", hash = "sha256:652350609332de6dac4ece254e5d7e1ff834e203d6afb769601f286886f6f3a8"}, + {file = "grpcio-1.71.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:cebc1b34ba40a312ab480ccdb396ff3c529377a2fce72c45a741f7215bfe8379"}, + {file = "grpcio-1.71.0-cp313-cp313-macosx_10_14_universal2.whl", hash = "sha256:85da336e3649a3d2171e82f696b5cad2c6231fdd5bad52616476235681bee5b3"}, + {file = "grpcio-1.71.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:f9a412f55bb6e8f3bb000e020dbc1e709627dcb3a56f6431fa7076b4c1aab0db"}, + {file = "grpcio-1.71.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47be9584729534660416f6d2a3108aaeac1122f6b5bdbf9fd823e11fe6fbaa29"}, + {file = "grpcio-1.71.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c9c80ac6091c916db81131d50926a93ab162a7e97e4428ffc186b6e80d6dda4"}, + {file = "grpcio-1.71.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:789d5e2a3a15419374b7b45cd680b1e83bbc1e52b9086e49308e2c0b5bbae6e3"}, + {file = "grpcio-1.71.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:1be857615e26a86d7363e8a163fade914595c81fec962b3d514a4b1e8760467b"}, + {file = "grpcio-1.71.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a76d39b5fafd79ed604c4be0a869ec3581a172a707e2a8d7a4858cb05a5a7637"}, + {file = "grpcio-1.71.0-cp313-cp313-win32.whl", hash = "sha256:74258dce215cb1995083daa17b379a1a5a87d275387b7ffe137f1d5131e2cfbb"}, + {file = "grpcio-1.71.0-cp313-cp313-win_amd64.whl", hash = "sha256:22c3bc8d488c039a199f7a003a38cb7635db6656fa96437a8accde8322ce2366"}, + {file = "grpcio-1.71.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:c6a0a28450c16809f94e0b5bfe52cabff63e7e4b97b44123ebf77f448534d07d"}, + {file = "grpcio-1.71.0-cp39-cp39-macosx_10_14_universal2.whl", hash = "sha256:a371e6b6a5379d3692cc4ea1cb92754d2a47bdddeee755d3203d1f84ae08e03e"}, + {file = "grpcio-1.71.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:39983a9245d37394fd59de71e88c4b295eb510a3555e0a847d9965088cdbd033"}, + {file = "grpcio-1.71.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9182e0063112e55e74ee7584769ec5a0b4f18252c35787f48738627e23a62b97"}, + {file = "grpcio-1.71.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693bc706c031aeb848849b9d1c6b63ae6bcc64057984bb91a542332b75aa4c3d"}, + {file = "grpcio-1.71.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:20e8f653abd5ec606be69540f57289274c9ca503ed38388481e98fa396ed0b41"}, + {file = "grpcio-1.71.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8700a2a57771cc43ea295296330daaddc0d93c088f0a35cc969292b6db959bf3"}, + {file = "grpcio-1.71.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d35a95f05a8a2cbe8e02be137740138b3b2ea5f80bd004444e4f9a1ffc511e32"}, + {file = "grpcio-1.71.0-cp39-cp39-win32.whl", hash = "sha256:f9c30c464cb2ddfbc2ddf9400287701270fdc0f14be5f08a1e3939f1e749b455"}, + {file = "grpcio-1.71.0-cp39-cp39-win_amd64.whl", hash = "sha256:63e41b91032f298b3e973b3fa4093cbbc620c875e2da7b93e249d4728b54559a"}, + {file = "grpcio-1.71.0.tar.gz", hash = "sha256:2b85f7820475ad3edec209d3d89a7909ada16caab05d3f2e08a7e8ae3200a55c"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.67.1)"] +protobuf = ["grpcio-tools (>=1.71.0)"] [[package]] name = "grpcio-health-checking" -version = "1.67.1" +version = "1.71.0" description = "Standard Health Checking Service for gRPC" optional = false -python-versions = ">=3.8" -groups = ["main"] +python-versions = ">=3.9" files = [ - {file = "grpcio_health_checking-1.67.1-py3-none-any.whl", hash = "sha256:93753da5062152660aef2286c9b261e07dd87124a65e4dc9fbd47d1ce966b39d"}, - {file = "grpcio_health_checking-1.67.1.tar.gz", hash = "sha256:ca90fa76a6afbb4fda71d734cb9767819bba14928b91e308cffbb0c311eb941e"}, + {file = "grpcio_health_checking-1.71.0-py3-none-any.whl", hash = "sha256:b7d9b7a7606ab4cd02d23bd1d3943843f784ffc987c9bfec14c9d058d9e279db"}, + {file = "grpcio_health_checking-1.71.0.tar.gz", hash = "sha256:ff9bd55beb97ce3322fda2ae58781c9d6c6fcca6a35ca3b712975d9f75dd30af"}, ] [package.dependencies] -grpcio = ">=1.67.1" +grpcio = ">=1.71.0" protobuf = ">=5.26.1,<6.0dev" [[package]] name = "grpcio-tools" -version = "1.67.1" +version = "1.71.0" description = "Protobuf code generator for gRPC" optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "grpcio_tools-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:c701aaa51fde1f2644bd94941aa94c337adb86f25cd03cf05e37387aaea25800"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:6a722bba714392de2386569c40942566b83725fa5c5450b8910e3832a5379469"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:0c7415235cb154e40b5ae90e2a172a0eb8c774b6876f53947cf0af05c983d549"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a4c459098c4934f9470280baf9ff8b38c365e147f33c8abc26039a948a664a5"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e89bf53a268f55c16989dab1cf0b32a5bff910762f138136ffad4146129b7a10"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f09cb3e6bcb140f57b878580cf3b848976f67faaf53d850a7da9bfac12437068"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:616dd0c6686212ca90ff899bb37eb774798677e43dc6f78c6954470782d37399"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-win32.whl", hash = "sha256:58a66dbb3f0fef0396737ac09d6571a7f8d96a544ce3ed04c161f3d4fa8d51cc"}, - {file = "grpcio_tools-1.67.1-cp310-cp310-win_amd64.whl", hash = "sha256:89ee7c505bdf152e67c2cced6055aed4c2d4170f53a2b46a7e543d3b90e7b977"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:6d80ddd87a2fb7131d242f7d720222ef4f0f86f53ec87b0a6198c343d8e4a86e"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b655425b82df51f3bd9fd3ba1a6282d5c9ce1937709f059cb3d419b224532d89"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:250241e6f9d20d0910a46887dfcbf2ec9108efd3b48f3fb95bb42d50d09d03f8"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6008f5a5add0b6f03082edb597acf20d5a9e4e7c55ea1edac8296c19e6a0ec8d"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5eff9818c3831fa23735db1fa39aeff65e790044d0a312260a0c41ae29cc2d9e"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:262ab7c40113f8c3c246e28e369661ddf616a351cb34169b8ba470c9a9c3b56f"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1eebd8c746adf5786fa4c3056258c21cc470e1eca51d3ed23a7fb6a697fe4e81"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-win32.whl", hash = "sha256:3eff92fb8ca1dd55e3af0ef02236c648921fb7d0e8ca206b889585804b3659ae"}, - {file = "grpcio_tools-1.67.1-cp311-cp311-win_amd64.whl", hash = "sha256:1ed18281ee17e5e0f9f6ce0c6eb3825ca9b5a0866fc1db2e17fab8aca28b8d9f"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:bd5caef3a484e226d05a3f72b2d69af500dca972cf434bf6b08b150880166f0b"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:48a2d63d1010e5b218e8e758ecb2a8d63c0c6016434e9f973df1c3558917020a"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:baa64a6aa009bffe86309e236c81b02cd4a88c1ebd66f2d92e84e9b97a9ae857"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ab318c40b5e3c097a159035fc3e4ecfbe9b3d2c9de189e55468b2c27639a6ab"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50eba3e31f9ac1149463ad9182a37349850904f142cffbd957cd7f54ec320b8e"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:de6fbc071ecc4fe6e354a7939202191c1f1abffe37fbce9b08e7e9a5b93eba3d"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:db9e87f6ea4b0ce99b2651203480585fd9e8dd0dd122a19e46836e93e3a1b749"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-win32.whl", hash = "sha256:6a595a872fb720dde924c4e8200f41d5418dd6baab8cc1a3c1e540f8f4596351"}, - {file = "grpcio_tools-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:92eebb9b31031604ae97ea7657ae2e43149b0394af7117ad7e15894b6cc136dc"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:9a3b9510cc87b6458b05ad49a6dee38df6af37f9ee6aa027aa086537798c3d4a"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e4c9b9fa9b905f15d414cb7bd007ba7499f8907bdd21231ab287a86b27da81a"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:e11a98b41af4bc88b7a738232b8fa0306ad82c79fa5d7090bb607f183a57856f"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de0fcfe61c26679d64b1710746f2891f359593f76894fcf492c37148d5694f00"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ae3b3e2ee5aad59dece65a613624c46a84c9582fc3642686537c6dfae8e47dc"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:9a630f83505b6471a3094a7a372a1240de18d0cd3e64f4fbf46b361bac2be65b"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d85a1fcbacd3e08dc2b3d1d46b749351a9a50899fa35cf2ff040e1faf7d405ad"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-win32.whl", hash = "sha256:778470f025f25a1fca5a48c93c0a18af395b46b12dd8df7fca63736b85181f41"}, - {file = "grpcio_tools-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:6961da86e9856b4ddee0bf51ef6636b4bf9c29c0715aa71f3c8f027c45d42654"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:c088dfbbe289bb171ca9c98fabbf7ecc8c1c51af2ba384ef32a4fdcb784b17e9"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11ce546daf8f8c04ee8d4a1673b4754cda4a0a9d505d820efd636e37f46b50c5"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:83fecb2f6119ef0eea68a091964898418c1969375d399956ff8d1741beb7b081"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d39c1aa6b26e2602d815b9cfa37faba48b2889680ae6baa002560cf0f0c69fac"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e975dc9fb61a77d88e739eb17b3361f369d03cc754217f02dd83ec7cfac32e38"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6c6e5c5b15f2eedc2a81268d588d14a79a52020383bf87b3c7595df7b571504a"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a974e0ce01806adba718e6eb8c385defe6805b18969b6914da7db55fb055ae45"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-win32.whl", hash = "sha256:35e9b0a82be9f425aa67ee1dc69ba02cf135aeee3f22c0455c5d1b01769bbdb4"}, - {file = "grpcio_tools-1.67.1-cp38-cp38-win_amd64.whl", hash = "sha256:0436c97f29e654d2eccd7419907ee019caf7eea6bdc6ae91d98011f6c5f44f17"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:718fbb6d68a3d000cb3cf381642660eade0e8c1b0bf7472b84b3367f5b56171d"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:062887d2e9cb8bc261c21a2b8da714092893ce62b4e072775eaa9b24dcbf3b31"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:59dbf14a1ce928bf03a58fa157034374411159ab5d32ad83cf146d9400eed618"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac552fc9c76d50408d7141e1fd1eae69d85fbf7ae71da4d8877eaa07127fbe74"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6583773400e441dc62d08b5a32357babef1a9f9f73c3ac328a75af550815a9"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:862108f90f2f6408908e5ea4584c5104f7caf419c6d73aa3ff36bf8284cca224"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:587c6326425f37dca2291f46b93e446c07ee781cea27725865b806b7a049ec56"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-win32.whl", hash = "sha256:d7d46a4405bd763525215b6e073888386587aef9b4a5ec125bf97ba897ac757d"}, - {file = "grpcio_tools-1.67.1-cp39-cp39-win_amd64.whl", hash = "sha256:e2fc7980e8bab3ee5ab98b6fdc2a8fbaa4785f196d897531346176fda49a605c"}, - {file = "grpcio_tools-1.67.1.tar.gz", hash = "sha256:d9657f5ddc62b52f58904e6054b7d8a8909ed08a1e28b734be3a707087bcf004"}, +python-versions = ">=3.9" +files = [ + {file = "grpcio_tools-1.71.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:f4ad7f0d756546902597053d70b3af2606fbd70d7972876cd75c1e241d22ae00"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:64bdb291df61cf570b5256777ad5fe2b1db6d67bc46e55dc56a0a862722ae329"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:8dd9795e982d77a4b496f7278b943c2563d9afde2069cdee78c111a40cc4d675"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1b5860c41a36b26fec4f52998f1a451d0525a5c9a4fb06b6ea3e9211abdb925"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3059c14035e5dc03d462f261e5900b9a077fd1a36976c3865b8507474520bad4"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f360981b215b1d5aff9235b37e7e1826246e35bbac32a53e41d4e990a37b8f4c"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bfe3888c3bbe16a5aa39409bc38744a31c0c3d2daa2b0095978c56e106c85b42"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:145985c0bf12131f0a1503e65763e0f060473f7f3928ed1ff3fb0e8aad5bc8ac"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-win32.whl", hash = "sha256:82c430edd939bb863550ee0fecf067d78feff828908a1b529bbe33cc57f2419c"}, + {file = "grpcio_tools-1.71.0-cp310-cp310-win_amd64.whl", hash = "sha256:83e90724e3f02415c628e4ead1d6ffe063820aaaa078d9a39176793df958cd5a"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:1f19b16b49afa5d21473f49c0966dd430c88d089cd52ac02404d8cef67134efb"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-macosx_10_14_universal2.whl", hash = "sha256:459c8f5e00e390aecd5b89de67deb3ec7188a274bc6cb50e43cef35ab3a3f45d"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:edab7e6518de01196be37f96cb1e138c3819986bf5e2a6c9e1519b4d716b2f5a"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b93b9f6adc7491d4c10144c0643409db298e5e63c997106a804f6f0248dbaf4"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ae5f2efa9e644c10bf1021600bfc099dfbd8e02b184d2d25dc31fcd6c2bc59e"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:65aa082f4435571d65d5ce07fc444f23c3eff4f3e34abef599ef8c9e1f6f360f"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1331e726e08b7bdcbf2075fcf4b47dff07842b04845e6e220a08a4663e232d7f"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6693a7d3ba138b0e693b3d1f687cdd9db9e68976c3fa2b951c17a072fea8b583"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-win32.whl", hash = "sha256:6d11ed3ff7b6023b5c72a8654975324bb98c1092426ba5b481af406ff559df00"}, + {file = "grpcio_tools-1.71.0-cp311-cp311-win_amd64.whl", hash = "sha256:072b2a5805ac97e4623b3aa8f7818275f3fb087f4aa131b0fce00471065f6eaa"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:61c0409d5bdac57a7bd0ce0ab01c1c916728fe4c8a03d77a25135ad481eb505c"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-macosx_10_14_universal2.whl", hash = "sha256:28784f39921d061d2164a9dcda5164a69d07bf29f91f0ea50b505958292312c9"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:192808cf553cedca73f0479cc61d5684ad61f24db7a5f3c4dfe1500342425866"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:989ee9da61098230d3d4c8f8f8e27c2de796f1ff21b1c90110e636d9acd9432b"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:541a756276c8a55dec991f6c0106ae20c8c8f5ce8d0bdbfcb01e2338d1a8192b"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:870c0097700d13c403e5517cb7750ab5b4a791ce3e71791c411a38c5468b64bd"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:abd57f615e88bf93c3c6fd31f923106e3beb12f8cd2df95b0d256fa07a7a0a57"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:753270e2d06d37e6d7af8967d1d059ec635ad215882041a36294f4e2fd502b2e"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-win32.whl", hash = "sha256:0e647794bd7138b8c215e86277a9711a95cf6a03ff6f9e555d54fdf7378b9f9d"}, + {file = "grpcio_tools-1.71.0-cp312-cp312-win_amd64.whl", hash = "sha256:48debc879570972d28bfe98e4970eff25bb26da3f383e0e49829b2d2cd35ad87"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:9a78d07d6c301a25ef5ede962920a522556a1dfee1ccc05795994ceb867f766c"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-macosx_10_14_universal2.whl", hash = "sha256:580ac88141c9815557e63c9c04f5b1cdb19b4db8d0cb792b573354bde1ee8b12"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:f7c678e68ece0ae908ecae1c4314a0c2c7f83e26e281738b9609860cc2c82d96"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56ecd6cc89b5e5eed1de5eb9cafce86c9c9043ee3840888cc464d16200290b53"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e52a041afc20ab2431d756b6295d727bd7adee813b21b06a3483f4a7a15ea15f"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2a1712f12102b60c8d92779b89d0504e0d6f3a59f2b933e5622b8583f5c02992"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:41878cb7a75477e62fdd45e7e9155b3af1b7a5332844021e2511deaf99ac9e6c"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:682e958b476049ccc14c71bedf3f979bced01f6e0c04852efc5887841a32ad6b"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-win32.whl", hash = "sha256:0ccfb837152b7b858b9f26bb110b3ae8c46675d56130f6c2f03605c4f129be13"}, + {file = "grpcio_tools-1.71.0-cp313-cp313-win_amd64.whl", hash = "sha256:ffff9bc5eacb34dd26b487194f7d44a3e64e752fc2cf049d798021bf25053b87"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:834959b6eceb85de5217a411aba1643b5f782798680c122202d6a06177226644"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-macosx_10_14_universal2.whl", hash = "sha256:e3ae9556e2a1cd70e7d7b0e0459c35af71d51a7dae4cf36075068011a69f13ec"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:77fe6db1334e0ce318b2cb4e70afa94e0c173ed1a533d37aea69ad9f61ae8ea9"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57e3e2544c306b60ef2d76570bac4e977be1ad548641c9eec130c3bc47e80141"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af39e245fa56f7f5c2fe86b7d6c1b78f395c07e54d5613cbdbb3c24769a92b6e"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f987d0053351217954543b174b0bddbf51d45b3cfcf8d6de97b0a43d264d753"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8e6cdbba4dae7b37b0d25d074614be9936fb720144420f03d9f142a80be69ba2"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3adc8b229e60c77bab5a5d62b415667133bd5ced7d59b5f71d6317c9143631e"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-win32.whl", hash = "sha256:f68334d28a267fabec6e70cb5986e9999cfbfd14db654094ddf9aedd804a293a"}, + {file = "grpcio_tools-1.71.0-cp39-cp39-win_amd64.whl", hash = "sha256:1291a6136c07a86c3bb09f6c33f5cf227cc14956edd1b85cb572327a36e0aef8"}, + {file = "grpcio_tools-1.71.0.tar.gz", hash = "sha256:38dba8e0d5e0fb23a034e09644fdc6ed862be2371887eee54901999e8f6792a8"}, ] [package.dependencies] -grpcio = ">=1.67.1" +grpcio = ">=1.71.0" protobuf = ">=5.26.1,<6.0dev" setuptools = "*" @@ -834,37 +705,17 @@ version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] -[[package]] -name = "h2" -version = "4.1.0" -description = "HTTP/2 State-Machine based protocol implementation" -optional = false -python-versions = ">=3.6.1" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, - {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, -] - -[package.dependencies] -hpack = ">=4.0,<5" -hyperframe = ">=6.0,<7" - [[package]] name = "h2" version = "4.2.0" description = "Pure-Python HTTP/2 protocol implementation" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "h2-4.2.0-py3-none-any.whl", hash = "sha256:479a53ad425bb29af087f3458a61d30780bc818e4ebcf01f0b536ba916462ed0"}, {file = "h2-4.2.0.tar.gz", hash = "sha256:c8a52129695e88b1a0578d8d2cc6842bbd79128ac685463b887ee278126ad01f"}, @@ -874,49 +725,12 @@ files = [ hpack = ">=4.1,<5" hyperframe = ">=6.1,<7" -[[package]] -name = "h5py" -version = "3.11.0" -description = "Read and write HDF5 files from Python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "h5py-3.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1625fd24ad6cfc9c1ccd44a66dac2396e7ee74940776792772819fc69f3a3731"}, - {file = "h5py-3.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c072655ad1d5fe9ef462445d3e77a8166cbfa5e599045f8aa3c19b75315f10e5"}, - {file = "h5py-3.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77b19a40788e3e362b54af4dcf9e6fde59ca016db2c61360aa30b47c7b7cef00"}, - {file = "h5py-3.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:ef4e2f338fc763f50a8113890f455e1a70acd42a4d083370ceb80c463d803972"}, - {file = "h5py-3.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbd732a08187a9e2a6ecf9e8af713f1d68256ee0f7c8b652a32795670fb481ba"}, - {file = "h5py-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75bd7b3d93fbeee40860fd70cdc88df4464e06b70a5ad9ce1446f5f32eb84007"}, - {file = "h5py-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52c416f8eb0daae39dabe71415cb531f95dce2d81e1f61a74537a50c63b28ab3"}, - {file = "h5py-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:083e0329ae534a264940d6513f47f5ada617da536d8dccbafc3026aefc33c90e"}, - {file = "h5py-3.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a76cae64080210389a571c7d13c94a1a6cf8cb75153044fd1f822a962c97aeab"}, - {file = "h5py-3.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3736fe21da2b7d8a13fe8fe415f1272d2a1ccdeff4849c1421d2fb30fd533bc"}, - {file = "h5py-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa6ae84a14103e8dc19266ef4c3e5d7c00b68f21d07f2966f0ca7bdb6c2761fb"}, - {file = "h5py-3.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:21dbdc5343f53b2e25404673c4f00a3335aef25521bd5fa8c707ec3833934892"}, - {file = "h5py-3.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:754c0c2e373d13d6309f408325343b642eb0f40f1a6ad21779cfa9502209e150"}, - {file = "h5py-3.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:731839240c59ba219d4cb3bc5880d438248533366f102402cfa0621b71796b62"}, - {file = "h5py-3.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ec9df3dd2018904c4cc06331951e274f3f3fd091e6d6cc350aaa90fa9b42a76"}, - {file = "h5py-3.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:55106b04e2c83dfb73dc8732e9abad69d83a436b5b82b773481d95d17b9685e1"}, - {file = "h5py-3.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f4e025e852754ca833401777c25888acb96889ee2c27e7e629a19aee288833f0"}, - {file = "h5py-3.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c4b760082626120031d7902cd983d8c1f424cdba2809f1067511ef283629d4b"}, - {file = "h5py-3.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67462d0669f8f5459529de179f7771bd697389fcb3faab54d63bf788599a48ea"}, - {file = "h5py-3.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:d9c944d364688f827dc889cf83f1fca311caf4fa50b19f009d1f2b525edd33a3"}, - {file = "h5py-3.11.0.tar.gz", hash = "sha256:7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9"}, -] - -[package.dependencies] -numpy = ">=1.17.3" - [[package]] name = "h5py" version = "3.13.0" description = "Read and write HDF5 files from Python" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "h5py-3.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5540daee2b236d9569c950b417f13fd112d51d78b4c43012de05774908dff3f5"}, {file = "h5py-3.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:10894c55d46df502d82a7a4ed38f9c3fdbcb93efb42e25d275193e093071fade"}, @@ -949,27 +763,12 @@ files = [ [package.dependencies] numpy = ">=1.19.3" -[[package]] -name = "hpack" -version = "4.0.0" -description = "Pure-Python HPACK header compression" -optional = false -python-versions = ">=3.6.1" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, - {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, -] - [[package]] name = "hpack" version = "4.1.0" description = "Pure-Python HPACK header encoding" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496"}, {file = "hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca"}, @@ -981,7 +780,6 @@ version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, @@ -1003,7 +801,6 @@ version = "0.27.0" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, @@ -1018,61 +815,28 @@ idna = "*" sniffio = "*" [package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +brotli = ["brotli", "brotlicffi"] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -[[package]] -name = "hyperframe" -version = "6.0.1" -description = "HTTP/2 framing layer for Python" -optional = false -python-versions = ">=3.6.1" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, - {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, -] - [[package]] name = "hyperframe" version = "6.1.0" description = "Pure-Python HTTP/2 framing" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5"}, {file = "hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08"}, ] -[[package]] -name = "identify" -version = "2.6.1" -description = "File identification library for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version == \"3.8\"" -files = [ - {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, - {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, -] - -[package.extras] -license = ["ukkonen"] - [[package]] name = "identify" version = "2.6.10" description = "File identification library for Python" optional = false python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version > \"3.8\"" files = [ {file = "identify-2.6.10-py2.py3-none-any.whl", hash = "sha256:5f34248f54136beed1a7ba6a6b5c4b6cf21ff495aac7c359e1ef831ae3b8ab25"}, {file = "identify-2.6.10.tar.gz", hash = "sha256:45e92fd704f3da71cc3880036633f48b4b7265fd4de2b57627cb157216eb7eb8"}, @@ -1087,7 +851,6 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1102,7 +865,6 @@ version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, @@ -1114,7 +876,6 @@ version = "0.13.13" description = "IPython-enabled pdb" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["main"] files = [ {file = "ipdb-0.13.13-py3-none-any.whl", hash = "sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4"}, {file = "ipdb-0.13.13.tar.gz", hash = "sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726"}, @@ -1125,55 +886,12 @@ decorator = {version = "*", markers = "python_version > \"3.6\""} ipython = {version = ">=7.31.1", markers = "python_version > \"3.6\""} tomli = {version = "*", markers = "python_version > \"3.6\" and python_version < \"3.11\""} -[[package]] -name = "ipython" -version = "8.12.3" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, - {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" -prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" -pygments = ">=2.4.0" -stack-data = "*" -traitlets = ">=5" -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} - -[package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] -black = ["black"] -doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] -kernel = ["ipykernel"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] - [[package]] name = "ipython" version = "8.18.1" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\" and python_version < \"3.10\"" files = [ {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, @@ -1205,103 +923,12 @@ qtconsole = ["qtconsole"] test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"] -[[package]] -name = "ipython" -version = "8.36.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.10" -groups = ["main"] -markers = "python_version == \"3.10\"" -files = [ - {file = "ipython-8.36.0-py3-none-any.whl", hash = "sha256:12b913914d010dcffa2711505ec8be4bf0180742d97f1e5175e51f22086428c1"}, - {file = "ipython-8.36.0.tar.gz", hash = "sha256:24658e9fe5c5c819455043235ba59cfffded4a35936eefceceab6b192f7092ff"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" -typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} - -[package.extras] -all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli ; python_version < \"3.11\"", "typing_extensions"] -kernel = ["ipykernel"] -matplotlib = ["matplotlib"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "ipython" -version = "9.2.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.11" -groups = ["main"] -markers = "python_version >= \"3.11\"" -files = [ - {file = "ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6"}, - {file = "ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -ipython-pygments-lexers = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" -typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} - -[package.extras] -all = ["ipython[doc,matplotlib,test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] -matplotlib = ["matplotlib"] -test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -description = "Defines a variety of Pygments lexers for highlighting IPython code." -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version >= \"3.11\"" -files = [ - {file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c"}, - {file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81"}, -] - -[package.dependencies] -pygments = "*" - [[package]] name = "jedi" version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" -groups = ["main"] files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -1321,7 +948,6 @@ version = "1.6.3" description = "For serializing Python objects to JSON (dicts) and back" optional = false python-versions = ">=3.5" -groups = ["main"] files = [ {file = "jsons-1.6.3-py3-none-any.whl", hash = "sha256:f07f8919316f72a3843c7ca6cc6c900513089f10092626934d1bfe4b5cf15401"}, {file = "jsons-1.6.3.tar.gz", hash = "sha256:cd5815c7c6790ae11c70ad9978e0aa850d0d08a643a5105cc604eac8b29a30d7"}, @@ -1331,7 +957,27 @@ files = [ typish = ">=1.9.2" [package.extras] -test = ["attrs", "codecov", "coverage", "dataclasses ; python_version == \"3.6\"", "pytest", "scons", "tzdata ; python_version >= \"3.9\""] +test = ["attrs", "codecov", "coverage", "dataclasses", "pytest", "scons", "tzdata"] + +[[package]] +name = "marshmallow" +version = "4.0.0" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +optional = false +python-versions = ">=3.9" +files = [ + {file = "marshmallow-4.0.0-py3-none-any.whl", hash = "sha256:e7b0528337e9990fd64950f8a6b3a1baabed09ad17a0dfb844d701151f92d203"}, + {file = "marshmallow-4.0.0.tar.gz", hash = "sha256:3b6e80aac299a7935cfb97ed01d1854fb90b5079430969af92118ea1b12a8d55"}, +] + +[package.dependencies] +backports-datetime-fromisoformat = {version = "*", markers = "python_version < \"3.11\""} +typing-extensions = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["autodocsumm (==0.2.14)", "furo (==2024.8.6)", "sphinx (==8.2.3)", "sphinx-copybutton (==0.5.2)", "sphinx-issues (==5.0.1)", "sphinxext-opengraph (==0.10.0)"] +tests = ["pytest", "simplejson"] [[package]] name = "matplotlib-inline" @@ -1339,7 +985,6 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, @@ -1354,8 +999,6 @@ version = "2.4.12" description = "A lightweight version of Milvus wrapped with Python." optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "sys_platform != \"win32\"" files = [ {file = "milvus_lite-2.4.12-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:e8d4f7cdd5f731efd6faeee3715d280fd91a5f9b4d89312664d56401f65b1473"}, {file = "milvus_lite-2.4.12-py3-none-macosx_11_0_arm64.whl", hash = "sha256:20087663e7b4385050b7ad08f1f03404426d4c87b1ff91d5a8723eee7fd49e88"}, @@ -1366,65 +1009,60 @@ files = [ [package.dependencies] tqdm = "*" +[[package]] +name = "ml-dtypes" +version = "0.4.1" +description = "" +optional = false +python-versions = ">=3.9" +files = [ + {file = "ml_dtypes-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fe8b5b5e70cd67211db94b05cfd58dace592f24489b038dc6f9fe347d2e07d5"}, + {file = "ml_dtypes-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c09a6d11d8475c2a9fd2bc0695628aec105f97cab3b3a3fb7c9660348ff7d24"}, + {file = "ml_dtypes-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5e8f75fa371020dd30f9196e7d73babae2abd51cf59bdd56cb4f8de7e13354"}, + {file = "ml_dtypes-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:15fdd922fea57e493844e5abb930b9c0bd0af217d9edd3724479fc3d7ce70e3f"}, + {file = "ml_dtypes-0.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2d55b588116a7085d6e074cf0cdb1d6fa3875c059dddc4d2c94a4cc81c23e975"}, + {file = "ml_dtypes-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e138a9b7a48079c900ea969341a5754019a1ad17ae27ee330f7ebf43f23877f9"}, + {file = "ml_dtypes-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74c6cfb5cf78535b103fde9ea3ded8e9f16f75bc07789054edc7776abfb3d752"}, + {file = "ml_dtypes-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:274cc7193dd73b35fb26bef6c5d40ae3eb258359ee71cd82f6e96a8c948bdaa6"}, + {file = "ml_dtypes-0.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:827d3ca2097085cf0355f8fdf092b888890bb1b1455f52801a2d7756f056f54b"}, + {file = "ml_dtypes-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:772426b08a6172a891274d581ce58ea2789cc8abc1c002a27223f314aaf894e7"}, + {file = "ml_dtypes-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:126e7d679b8676d1a958f2651949fbfa182832c3cd08020d8facd94e4114f3e9"}, + {file = "ml_dtypes-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:df0fb650d5c582a9e72bb5bd96cfebb2cdb889d89daff621c8fbc60295eba66c"}, + {file = "ml_dtypes-0.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e35e486e97aee577d0890bc3bd9e9f9eece50c08c163304008587ec8cfe7575b"}, + {file = "ml_dtypes-0.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:560be16dc1e3bdf7c087eb727e2cf9c0e6a3d87e9f415079d2491cc419b3ebf5"}, + {file = "ml_dtypes-0.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad0b757d445a20df39035c4cdeed457ec8b60d236020d2560dbc25887533cf50"}, + {file = "ml_dtypes-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:ef0d7e3fece227b49b544fa69e50e607ac20948f0043e9f76b44f35f229ea450"}, + {file = "ml_dtypes-0.4.1.tar.gz", hash = "sha256:fad5f2de464fd09127e49b7fd1252b9006fb43d2edc1ff112d390c324af5ca7a"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.21.2", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">1.20", markers = "python_version < \"3.10\""}, + {version = ">=1.23.3", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] + +[package.extras] +dev = ["absl-py", "pyink", "pylint (>=2.6.0)", "pytest", "pytest-xdist"] + [[package]] name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[[package]] -name = "numpy" -version = "1.24.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, - {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, - {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, - {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, - {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, - {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, - {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, - {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, - {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, - {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, - {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, -] - [[package]] name = "numpy" version = "2.0.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\" and python_version < \"3.10\"" files = [ {file = "numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece"}, {file = "numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04"}, @@ -1479,8 +1117,6 @@ version = "2.2.5" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" -groups = ["main"] -markers = "python_version >= \"3.10\"" files = [ {file = "numpy-2.2.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f4a922da1729f4c40932b2af4fe84909c7a6e167e6e99f71838ce3a29f3fe26"}, {file = "numpy-2.2.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b6f91524d31b34f4a5fee24f5bc16dcd1491b668798b6d85585d836c1e633a6a"}, @@ -1539,13 +1175,36 @@ files = [ {file = "numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291"}, ] +[[package]] +name = "opensearch-py" +version = "2.4.2" +description = "Python client for OpenSearch" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" +files = [ + {file = "opensearch-py-2.4.2.tar.gz", hash = "sha256:564f175af134aa885f4ced6846eb4532e08b414fff0a7976f76b276fe0e69158"}, + {file = "opensearch_py-2.4.2-py2.py3-none-any.whl", hash = "sha256:7867319132133e2974c09f76a54eb1d502b989229be52da583d93ddc743ea111"}, +] + +[package.dependencies] +certifi = ">=2022.12.07" +python-dateutil = "*" +requests = ">=2.4.0,<3.0.0" +six = "*" +urllib3 = ">=1.26.18" + +[package.extras] +async = ["aiohttp (>=3,<4)"] +develop = ["black", "botocore", "coverage (<8.0.0)", "jinja2", "mock", "myst-parser", "pytest (>=3.0.0)", "pytest-cov", "pytest-mock (<4.0.0)", "pytz", "pyyaml", "requests (>=2.0.0,<3.0.0)", "sphinx", "sphinx-copybutton", "sphinx-rtd-theme"] +docs = ["aiohttp (>=3,<4)", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-rtd-theme"] +kerberos = ["requests-kerberos"] + [[package]] name = "opensearch-py" version = "2.8.0" description = "Python client for OpenSearch" optional = false python-versions = "<4,>=3.8" -groups = ["main"] files = [ {file = "opensearch_py-2.8.0-py3-none-any.whl", hash = "sha256:52c60fdb5d4dcf6cce3ee746c13b194529b0161e0f41268b98ab8f1624abe2fa"}, {file = "opensearch_py-2.8.0.tar.gz", hash = "sha256:6598df0bc7a003294edd0ba88a331e0793acbb8c910c43edf398791e3b2eccda"}, @@ -1556,10 +1215,7 @@ certifi = ">=2024.07.04" Events = "*" python-dateutil = "*" requests = ">=2.32.0,<3.0.0" -urllib3 = [ - {version = ">=1.26.19,<1.27", markers = "python_version < \"3.10\""}, - {version = ">=1.26.19,<2.2.0 || >2.2.0,<2.2.1 || >2.2.1,<3", markers = "python_version >= \"3.10\""}, -] +urllib3 = {version = ">=1.26.19,<2.2.0 || >2.2.0,<2.2.1 || >2.2.1,<3", markers = "python_version >= \"3.10\""} [package.extras] async = ["aiohttp (>=3.9.4,<4)"] @@ -1573,85 +1229,17 @@ version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] -[[package]] -name = "pandas" -version = "2.0.3" -description = "Powerful data structures for data analysis, time series, and statistics" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"}, - {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"}, - {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"}, - {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"}, - {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"}, - {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"}, - {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"}, - {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"}, - {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"}, - {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"}, - {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"}, - {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"}, - {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"}, - {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"}, - {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"}, - {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"}, - {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"}, - {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"}, - {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"}, - {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"}, - {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"}, - {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"}, - {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"}, - {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"}, - {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"}, -] - -[package.dependencies] -numpy = {version = ">=1.20.3", markers = "python_version < \"3.10\""} -python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.1" - -[package.extras] -all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] -aws = ["s3fs (>=2021.08.0)"] -clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"] -compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"] -computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"] -feather = ["pyarrow (>=7.0.0)"] -fss = ["fsspec (>=2021.07.0)"] -gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"] -hdf5 = ["tables (>=3.6.1)"] -html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"] -mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"] -parquet = ["pyarrow (>=7.0.0)"] -performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"] -plot = ["matplotlib (>=3.6.1)"] -postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"] -spss = ["pyreadstat (>=1.1.2)"] -sql-other = ["SQLAlchemy (>=1.4.16)"] -test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.6.3)"] - [[package]] name = "pandas" version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, @@ -1738,7 +1326,6 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" -groups = ["main"] files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -1754,8 +1341,6 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" -groups = ["main"] -markers = "sys_platform != \"win32\" and (python_version < \"3.10\" or sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -1770,7 +1355,6 @@ version = "0.2.5" description = "pgvector support for Python" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "pgvector-0.2.5-py2.py3-none-any.whl", hash = "sha256:5e5e93ec4d3c45ab1fa388729d56c602f6966296e19deee8878928c6d567e41b"}, ] @@ -1778,45 +1362,12 @@ files = [ [package.dependencies] numpy = "*" -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -optional = false -python-versions = "*" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_version == \"3.8\"" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - [[package]] name = "platformdirs" version = "4.3.7" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.9" -groups = ["dev"] -markers = "python_version > \"3.8\"" files = [ {file = "platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94"}, {file = "platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351"}, @@ -1833,7 +1384,6 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -1849,7 +1399,6 @@ version = "2.10.1" description = "Wraps the portalocker recipe for easy usage" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "portalocker-2.10.1-py3-none-any.whl", hash = "sha256:53a5984ebc86a025552264b459b46a2086e269b21823cb572f8f28ee759e45bf"}, {file = "portalocker-2.10.1.tar.gz", hash = "sha256:ef1bf844e878ab08aee7e40184156e1151f228f103aa5c6bd0724cc330960f8f"}, @@ -1869,7 +1418,6 @@ version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, @@ -1888,7 +1436,6 @@ version = "3.0.51" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07"}, {file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed"}, @@ -1903,7 +1450,6 @@ version = "5.29.4" description = "" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "protobuf-5.29.4-cp310-abi3-win32.whl", hash = "sha256:13eb236f8eb9ec34e63fc8b1d6efd2777d062fa6aaa68268fb67cf77f6839ad7"}, {file = "protobuf-5.29.4-cp310-abi3-win_amd64.whl", hash = "sha256:bcefcdf3976233f8a502d265eb65ea740c989bacc6c30a58290ed0e519eb4b8d"}, @@ -1924,21 +1470,19 @@ version = "3.2.7" description = "PostgreSQL database adapter for Python" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "psycopg-3.2.7-py3-none-any.whl", hash = "sha256:d39747d2d5b9658b69fa462ad21d31f1ba4a5722ad1d0cb952552bc0b4125451"}, {file = "psycopg-3.2.7.tar.gz", hash = "sha256:9afa609c7ebf139827a38c0bf61be9c024a3ed743f56443de9d38e1efc260bf3"}, ] [package.dependencies] -"backports.zoneinfo" = {version = ">=0.2.0", markers = "python_version < \"3.9\""} psycopg-binary = {version = "3.2.7", optional = true, markers = "implementation_name != \"pypy\" and extra == \"binary\""} typing-extensions = {version = ">=4.6", markers = "python_version < \"3.13\""} tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] -binary = ["psycopg-binary (==3.2.7) ; implementation_name != \"pypy\""] -c = ["psycopg-c (==3.2.7) ; implementation_name != \"pypy\""] +binary = ["psycopg-binary (==3.2.7)"] +c = ["psycopg-c (==3.2.7)"] dev = ["ast-comments (>=1.1.2)", "black (>=24.1.0)", "codespell (>=2.2)", "dnspython (>=2.1)", "flake8 (>=4.0)", "isort-psycopg", "isort[colors] (>=6.0)", "mypy (>=1.14)", "pre-commit (>=4.0.1)", "types-setuptools (>=57.4)", "types-shapely (>=2.0)", "wheel (>=0.37)"] docs = ["Sphinx (>=5.0)", "furo (==2022.6.21)", "sphinx-autobuild (>=2021.3.14)", "sphinx-autodoc-typehints (>=1.12)"] pool = ["psycopg-pool"] @@ -1950,8 +1494,6 @@ version = "3.2.7" description = "PostgreSQL database adapter for Python -- C optimisation distribution" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "implementation_name != \"pypy\"" files = [ {file = "psycopg_binary-3.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:17ab2b4c2722138b7a6eb42d139ad8e5fed792574c1069f27abf8f8ebb0d7f75"}, {file = "psycopg_binary-3.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:063f5a56ccab2b9eef58f55437cff78c59c5562ebb5f7453ecd480f038b045dc"}, @@ -2026,8 +1568,6 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" -groups = ["main"] -markers = "sys_platform != \"win32\" and (python_version < \"3.10\" or sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2039,7 +1579,6 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" -groups = ["main"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -2054,43 +1593,17 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "platform_python_implementation != \"PyPy\"" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] -[[package]] -name = "pydantic" -version = "2.10.6" -description = "Data validation using Python type hints" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, - {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, -] - -[package.dependencies] -annotated-types = ">=0.6.0" -pydantic-core = "2.27.2" -typing-extensions = ">=4.12.2" - -[package.extras] -email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] - [[package]] name = "pydantic" version = "2.11.4" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "pydantic-2.11.4-py3-none-any.whl", hash = "sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb"}, {file = "pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d"}, @@ -2104,121 +1617,7 @@ typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] - -[[package]] -name = "pydantic-core" -version = "2.27.2" -description = "Core functionality for Pydantic validation and serialization" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, - {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" +timezone = ["tzdata"] [[package]] name = "pydantic-core" @@ -2226,8 +1625,6 @@ version = "2.33.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"}, {file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"}, @@ -2339,7 +1736,6 @@ version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, @@ -2354,7 +1750,6 @@ version = "2.9.0" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, @@ -2368,33 +1763,28 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pymilvus" -version = "2.5.8" +version = "2.4.9" description = "Python Sdk for Milvus" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ - {file = "pymilvus-2.5.8-py3-none-any.whl", hash = "sha256:6f33c9e78c041373df6a94724c90ca83448fd231aa33d6298a7a84ed2a5a0236"}, - {file = "pymilvus-2.5.8.tar.gz", hash = "sha256:48923e7efeebcc366d32b644772796f60484e0ca1a5afc1606d21a10ed98133c"}, + {file = "pymilvus-2.4.9-py3-none-any.whl", hash = "sha256:45313607d2c164064bdc44e0f933cb6d6afa92e9efcc7f357c5240c57db58fbe"}, + {file = "pymilvus-2.4.9.tar.gz", hash = "sha256:0937663700007c23a84cfc0656160b301f6ff9247aaec4c96d599a6b43572136"}, ] [package.dependencies] -grpcio = ">=1.49.1,<=1.67.1" -milvus-lite = {version = ">=2.4.0", markers = "sys_platform != \"win32\""} -numpy = {version = "<1.25.0", markers = "python_version <= \"3.8\""} +environs = "<=9.5.0" +grpcio = ">=1.49.1" +milvus-lite = {version = ">=2.4.0,<2.5.0", markers = "sys_platform != \"win32\""} pandas = ">=1.2.4" protobuf = ">=3.20.0" -python-dotenv = ">=1.0.1,<2.0.0" -setuptools = [ - {version = ">69,<70.1", markers = "python_version <= \"3.8\""}, - {version = ">69", markers = "python_version > \"3.8\""}, -] +setuptools = ">69" ujson = ">=2.0.0" [package.extras] bulk-writer = ["azure-storage-blob", "minio (>=7.0.0)", "pyarrow (>=12.0.0)", "requests"] dev = ["black", "grpcio (==1.62.2)", "grpcio-testing (==1.62.2)", "grpcio-tools (==1.62.2)", "pytest (>=5.3.4)", "pytest-cov (>=2.8.1)", "pytest-timeout (>=1.3.4)", "ruff (>0.4.0)"] -model = ["pymilvus.model (>=0.3.0)"] +model = ["milvus-model (>=0.1.0)"] [[package]] name = "pytest" @@ -2402,7 +1792,6 @@ version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" -groups = ["dev"] files = [ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, @@ -2425,7 +1814,6 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -2434,30 +1822,12 @@ files = [ [package.dependencies] six = ">=1.5" -[[package]] -name = "python-dotenv" -version = "1.0.1" -description = "Read key-value pairs from a .env file and set them as environment variables" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - [[package]] name = "python-dotenv" version = "1.1.0" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"}, {file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"}, @@ -2472,7 +1842,6 @@ version = "2025.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" -groups = ["main"] files = [ {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, @@ -2484,8 +1853,6 @@ version = "310" description = "Python for Window Extensions" optional = false python-versions = "*" -groups = ["main"] -markers = "platform_system == \"Windows\"" files = [ {file = "pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1"}, {file = "pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d"}, @@ -2511,7 +1878,6 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -2568,40 +1934,12 @@ files = [ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] -[[package]] -name = "qdrant-client" -version = "1.12.1" -description = "Client library for the Qdrant vector search engine" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "qdrant_client-1.12.1-py3-none-any.whl", hash = "sha256:b2d17ce18e9e767471368380dd3bbc4a0e3a0e2061fedc9af3542084b48451e0"}, - {file = "qdrant_client-1.12.1.tar.gz", hash = "sha256:35e8e646f75b7b883b3d2d0ee4c69c5301000bba41c82aa546e985db0f1aeb72"}, -] - -[package.dependencies] -grpcio = ">=1.41.0" -grpcio-tools = ">=1.41.0" -httpx = {version = ">=0.20.0", extras = ["http2"]} -numpy = {version = ">=1.21", markers = "python_version >= \"3.8\" and python_version < \"3.12\""} -portalocker = ">=2.7.0,<3.0.0" -pydantic = ">=1.10.8" -urllib3 = ">=1.26.14,<3" - -[package.extras] -fastembed = ["fastembed (==0.3.6) ; python_version < \"3.13\""] -fastembed-gpu = ["fastembed-gpu (==0.3.6) ; python_version < \"3.13\""] - [[package]] name = "qdrant-client" version = "1.14.2" description = "Client library for the Qdrant vector search engine" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "qdrant_client-1.14.2-py3-none-any.whl", hash = "sha256:7c283b1f0e71db9c21b85d898fb395791caca2a6d56ee751da96d797b001410c"}, {file = "qdrant_client-1.14.2.tar.gz", hash = "sha256:da5cab4d367d099d1330b6f30d45aefc8bd76f8b8f9d8fa5d4f813501b93af0d"}, @@ -2630,7 +1968,6 @@ version = "5.3.0" description = "Python client for Redis database and key-value store" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "redis-5.3.0-py3-none-any.whl", hash = "sha256:f1deeca1ea2ef25c1e4e46b07f4ea1275140526b1feea4c6459c0ec27a10ef83"}, {file = "redis-5.3.0.tar.gz", hash = "sha256:8d69d2dde11a12dc85d0dbf5c45577a5af048e2456f7077d87ad35c1c81c310e"}, @@ -2650,7 +1987,6 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -2668,42 +2004,23 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "70.0.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -groups = ["main"] -markers = "python_version == \"3.8\"" -files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov ; platform_python_implementation != \"PyPy\"", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "setuptools" -version = "80.2.0" +version = "80.3.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ - {file = "setuptools-80.2.0-py3-none-any.whl", hash = "sha256:5f982284ad5d644764e1985baca205e235651b55f9a7ea8d46878d37104aa5e5"}, - {file = "setuptools-80.2.0.tar.gz", hash = "sha256:16a390b41627e1455567193435e7cafa9101803ffaa2fdd9ecd0af098301981d"}, + {file = "setuptools-80.3.1-py3-none-any.whl", hash = "sha256:ea8e00d7992054c4c592aeb892f6ad51fe1b4d90cc6947cc45c45717c40ec537"}, + {file = "setuptools-80.3.1.tar.gz", hash = "sha256:31e2c58dbb67c99c289f51c16d899afedae292b978f8051efaf6262d8212f927"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] -core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] +core = ["importlib_metadata (>=6)", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "six" @@ -2711,7 +2028,6 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -2723,7 +2039,6 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" -groups = ["main"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -2735,7 +2050,6 @@ version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" -groups = ["main"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -2755,7 +2069,6 @@ version = "1.1.2" description = "Timeout control decorator and context managers, raise any exception in another thread" optional = false python-versions = "*" -groups = ["main"] files = [ {file = "stopit-1.1.2.tar.gz", hash = "sha256:f7f39c583fd92027bd9d06127b259aee7a5b7945c1f1fa56263811e1e766996d"}, ] @@ -2766,8 +2079,6 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] -markers = "python_version <= \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -2809,7 +2120,6 @@ version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" -groups = ["main"] files = [ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, @@ -2831,7 +2141,6 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -2847,7 +2156,6 @@ version = "0.6.1" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false python-versions = ">=3.6" -groups = ["main"] files = [ {file = "typer-0.6.1-py3-none-any.whl", hash = "sha256:54b19e5df18654070a82f8c2aa1da456a4ac16a2a83e6dcd9f170e291c56338e"}, {file = "typer-0.6.1.tar.gz", hash = "sha256:2d5720a5e63f73eaf31edaa15f6ab87f35f0690f8ca233017d7d23d743a91d73"}, @@ -2868,7 +2176,6 @@ version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, @@ -2880,8 +2187,6 @@ version = "0.4.0" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version > \"3.8\"" files = [ {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, @@ -2896,7 +2201,6 @@ version = "1.9.3" description = "Functionality for types" optional = false python-versions = "*" -groups = ["main"] files = [ {file = "typish-1.9.3-py3-none-any.whl", hash = "sha256:03cfee5e6eb856dbf90244e18f4e4c41044c8790d5779f4e775f63f982e2f896"}, ] @@ -2910,7 +2214,6 @@ version = "2025.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" -groups = ["main"] files = [ {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, @@ -2922,7 +2225,6 @@ version = "5.10.0" description = "Ultra fast JSON encoder and decoder for Python" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, @@ -3004,39 +2306,19 @@ files = [ {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, ] -[[package]] -name = "urllib3" -version = "1.26.20" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -groups = ["main"] -markers = "python_version < \"3.10\"" -files = [ - {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, - {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, -] - -[package.extras] -brotli = ["brotli (==1.0.9) ; os_name != \"nt\" and python_version < \"3\" and platform_python_implementation == \"CPython\"", "brotli (>=1.0.9) ; python_version >= \"3\" and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - [[package]] name = "urllib3" version = "2.4.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "python_version >= \"3.10\"" files = [ {file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"}, {file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466"}, ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -3047,7 +2329,6 @@ version = "0.33.0" description = "Python Data Validation for Humans™" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "validators-0.33.0-py3-none-any.whl", hash = "sha256:134b586a98894f8139865953899fc2daeb3d0c35569552c5518f089ae43ed075"}, {file = "validators-0.33.0.tar.gz", hash = "sha256:535867e9617f0100e676a1257ba1e206b9bfd847ddc171e4d44811f07ff0bfbf"}, @@ -3058,14 +2339,13 @@ crypto-eth-addresses = ["eth-hash[pycryptodome] (>=0.7.0)"] [[package]] name = "virtualenv" -version = "20.30.0" +version = "20.31.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" -groups = ["dev"] files = [ - {file = "virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6"}, - {file = "virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8"}, + {file = "virtualenv-20.31.1-py3-none-any.whl", hash = "sha256:f448cd2f1604c831afb9ea238021060be2c0edbcad8eb0a4e8b4e14ff11a5482"}, + {file = "virtualenv-20.31.1.tar.gz", hash = "sha256:65442939608aeebb9284cd30baca5865fcd9f12b58bb740a24b220030df46d26"}, ] [package.dependencies] @@ -3075,7 +2355,7 @@ platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "wcwidth" @@ -3083,7 +2363,6 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" -groups = ["main"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -3095,7 +2374,6 @@ version = "4.6.7" description = "A python native Weaviate client" optional = false python-versions = ">=3.8" -groups = ["main"] files = [ {file = "weaviate_client-4.6.7-py3-none-any.whl", hash = "sha256:8793de35264cab33a84fe8cb8c422a257fe4d8334657aaddd8ead853da3fb34a"}, {file = "weaviate_client-4.6.7.tar.gz", hash = "sha256:202b32e160536f5f44e4a635d30c3d3a0790b1a7ff997f5e243919d1ac5b68a1"}, @@ -3112,6 +2390,6 @@ requests = ">=2.30.0,<3.0.0" validators = "0.33.0" [metadata] -lock-version = "2.1" -python-versions = ">=3.8,<3.13" -content-hash = "f78b4738f8fad698bb3b96d1071f844a22b8b43e08517f90bd0370055c88db56" +lock-version = "2.0" +python-versions = ">=3.9,<3.13" +content-hash = "35934bef23a858f8c9079f65b49782759e233d31723ed87326cf39ee2816795f" diff --git a/pyproject.toml b/pyproject.toml index ee84d34a9..3b09c1564 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = ["Qdrant Team "] package-mode = false [tool.poetry.dependencies] -python = ">=3.8,<3.13" +python = ">=3.9,<3.13" qdrant-client = "^1.11.0" typer = "^0.6.1" jsons = "^1.6.3" @@ -19,8 +19,10 @@ ipdb = "^0.13.9" stopit = "^1.1.2" opensearch-py = "^2.3.2" tqdm = "^4.66.1" +backoff = "^2.2.1" psycopg = {extras = ["binary"], version = "^3.1.17"} pgvector = "^0.2.4" +ml-dtypes = "^0.4.0" [tool.poetry.group.dev.dependencies] pre-commit = "^2.20.0" diff --git a/run.py b/run.py index 5f112955b..d4673fbda 100644 --- a/run.py +++ b/run.py @@ -17,6 +17,7 @@ def run( engines: List[str] = typer.Option(["*"]), datasets: List[str] = typer.Option(["*"]), + parallels: List[int] = typer.Option([]), host: str = "localhost", skip_upload: bool = False, skip_search: bool = False, @@ -24,6 +25,10 @@ def run( exit_on_error: bool = True, timeout: float = 86400.0, skip_configure: Optional[bool] = False, + upload_start_idx: int = 0, + upload_end_idx: int = -1, + queries: int = typer.Option(-1, help="Number of queries to run. If the available queries are fewer, they will be reused."), + ef_runtime: List[int] = typer.Option([], help="Filter search experiments by ef runtime values. Only experiments with these ef values will be run."), ): """ Examples: @@ -40,6 +45,7 @@ def run( for name, config in all_engines.items() if any(fnmatch.fnmatch(name, engine) for engine in engines) } + selected_datasets = { name: config for name, config in all_datasets.items() @@ -66,6 +72,11 @@ def run( skip_search, skip_if_exists, skip_configure, + parallels, + upload_start_idx, + upload_end_idx, + queries, + ef_runtime, ) client.delete_client() diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh new file mode 100644 index 000000000..7c3bc7da7 --- /dev/null +++ b/run_laion_1b_upload.sh @@ -0,0 +1,36 @@ +#!/bin/bash + + +part_size=10000000 # 10 million elements per part +max_screens=100 # Maximum number of screens running simultaneously +engine=redis-intel-float16-hnsw-m-4-ef-4 + +# Function to wait until the number of running screens is below the limit +wait_for_available_screen_slot() { + echo "waiting for available screen." + while [ "$(screen -ls | grep -c loader_)" -ge "$max_screens" ]; do + sleep 15 # Wait for 15 seconds before checking again + done +} + +# Create the output directory if it doesn't exist +mkdir -p logs-new + +for i in {0..99}; do + # Wait until there's an available screen slot + wait_for_available_screen_slot + + # Calculate the start and end indices for each part + start_idx=$((i * part_size)) + end_idx=$(((i + 1) * part_size)) + + # Log file path + log_file="logs-new/loader_$i.log" + + # Launch each process in a new screen session and log stdout and stderr to the log file + screen -dmS loader_$i bash -c "REDIS_PORT=30001 REDIS_JUST_INDEX=1 REDIS_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines $engine --datasets laion-img-emb-768d-1Billion-cosine --skip-search --upload-start-idx $start_idx --upload-end-idx $end_idx &> $log_file" + + # Print progress + echo "Started screen loader_$i: uploading indices $start_idx to $end_idx" + echo "$((i+1))/100 processes started" +done diff --git a/scripts/process-benchmarks.ipynb b/scripts/process-benchmarks.ipynb index 50a9393e6..2cf445de0 100644 --- a/scripts/process-benchmarks.ipynb +++ b/scripts/process-benchmarks.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2022-08-05T10:03:50.900734Z", @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2022-08-05T10:03:50.982398Z", @@ -42,7 +42,19 @@ "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(PosixPath('/Users/dvir/Code/vector-db-benchmark/results'),\n", + " 'vectorsets-q8-m-64-ef-512-random-100-search-2-2025-03-18-23-31-46.json')" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "DATA_DIR = Path().resolve().parent / \"results\"\n", "DATA_DIR, list(DATA_DIR.glob(\"*.json\"))[0].name" @@ -50,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2022-08-05T10:03:51.482299Z", @@ -64,6 +76,7 @@ "source": [ "PATH_REGEX = re.compile(r\"(?P(\"\n", " r\"?P[a-z\\-]+)\"\n", + " r\"\\-(?P[a-zA-Z0-9\\-]+)\"\n", " r\"\\-m\\-(?P[0-9]+)\"\n", " r\"\\-ef\\-(?P[0-9]+)\"\n", " r\")\"\n", @@ -85,7 +98,185 @@ "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '2',\n", + " '2025-03-18-23-31-46',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 1,\n", + " 'search_params': {'ef': 256}},\n", + " {'total_time': 0.0025846249773167074,\n", + " 'mean_time': 0.00020889558945782482,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.00012517310030909733,\n", + " 'min_time': 0.00012079102452844381,\n", + " 'max_time': 0.0005068749887868762,\n", + " 'rps': 3869.033259278392,\n", + " 'p95_time': 0.0004580310720484703,\n", + " 'p99_time': 0.000497106205439195}],\n", + " ['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '5',\n", + " '2025-03-18-23-32-25',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 100,\n", + " 'search_params': {'ef': 128}},\n", + " {'total_time': 4.754267499956768,\n", + " 'mean_time': 0.0019451417960226537,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.0037093798096747236,\n", + " 'min_time': 0.0004131249734200537,\n", + " 'max_time': 0.013048959022853523,\n", + " 'rps': 2.103373442931205,\n", + " 'p95_time': 0.007698571513174089,\n", + " 'p99_time': 0.011978881520917641}],\n", + " ['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '4',\n", + " '2025-03-18-23-32-05',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 100,\n", + " 'search_params': {'ef': 64}},\n", + " {'total_time': 2.0294713340117596,\n", + " 'mean_time': 0.03196047500241548,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.08439925765507372,\n", + " 'min_time': 0.00027545803459361196,\n", + " 'max_time': 0.2835138339432888,\n", + " 'rps': 4.927391598201336,\n", + " 'p95_time': 0.1706198027444768,\n", + " 'p99_time': 0.26093502770352645}],\n", + " ['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '3',\n", + " '2025-03-18-23-31-46',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 1,\n", + " 'search_params': {'ef': 512}},\n", + " {'total_time': 0.002255416999105364,\n", + " 'mean_time': 0.0001831832982134074,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.00013853265792410592,\n", + " 'min_time': 0.00010545901022851467,\n", + " 'max_time': 0.000520500005222857,\n", + " 'rps': 4433.769898855338,\n", + " 'p95_time': 0.0004601064021699129,\n", + " 'p99_time': 0.0005084212846122682}],\n", + " ['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '7',\n", + " '2025-03-18-23-33-03',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 100,\n", + " 'search_params': {'ef': 512}},\n", + " {'total_time': 3.4431491250288673,\n", + " 'mean_time': 0.03187979999929667,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.06949698412336956,\n", + " 'min_time': 0.0003655419568531215,\n", + " 'max_time': 0.23800891602877527,\n", + " 'rps': 2.9043180056617968,\n", + " 'p95_time': 0.14553500411275289,\n", + " 'p99_time': 0.21951413364557087}],\n", + " ['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '6',\n", + " '2025-03-18-23-32-44',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 100,\n", + " 'search_params': {'ef': 256}},\n", + " {'total_time': 2.7904384169960395,\n", + " 'mean_time': 0.000987829192308709,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.0018635207020379135,\n", + " 'min_time': 0.0002573750098235905,\n", + " 'max_time': 0.006563208997249603,\n", + " 'rps': 3.583666257994395,\n", + " 'p95_time': 0.003952683851821342,\n", + " 'p99_time': 0.006041103968163953}],\n", + " ['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '1',\n", + " '2025-03-18-23-31-46',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 1,\n", + " 'search_params': {'ef': 128}},\n", + " {'total_time': 0.0023579999688081443,\n", + " 'mean_time': 0.00017647920176386834,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.00012461744999991972,\n", + " 'min_time': 0.00011404202086851001,\n", + " 'max_time': 0.0005437919753603637,\n", + " 'rps': 4240.882159576329,\n", + " 'p95_time': 0.00038786699296906554,\n", + " 'p99_time': 0.0005126069788821043}],\n", + " ['vectorsets',\n", + " '64',\n", + " '512',\n", + " 'q8',\n", + " 'random-100',\n", + " '0',\n", + " '2025-03-18-23-31-46',\n", + " {'dataset': 'random-100',\n", + " 'experiment': 'vectorsets-q8-m-64-ef-512',\n", + " 'engine': 'vectorsets',\n", + " 'parallel': 1,\n", + " 'search_params': {'ef': 64}},\n", + " {'total_time': 0.003914333006832749,\n", + " 'mean_time': 0.0002679917146451771,\n", + " 'mean_precisions': 1.0,\n", + " 'std_time': 0.00036875994409555664,\n", + " 'min_time': 0.00011029100278392434,\n", + " 'max_time': 0.001371125050354749,\n", + " 'rps': 2554.7136594010485,\n", + " 'p95_time': 0.0008407815796090277,\n", + " 'p99_time': 0.0012650563562056052}]]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "upload_results, search_results = [], []\n", "\n", @@ -99,20 +290,9 @@ " with open(path, \"r\") as fp:\n", " stats = json.load(fp)\n", "\n", - " params = stats[\"params\"]\n", - " dataset = params.pop(\"dataset\")\n", - " engine = params.pop(\"engine\")\n", - "\n", - " entry = {\n", - " \"dataset\": dataset,\n", - " \"engine\": engine,\n", - " \"m\": match[\"m\"],\n", - " \"ef\": match[\"ef\"],\n", - " \"date\": match[\"date\"],\n", - " \"params\": params,\n", - " \"results\": stats[\"results\"],\n", - " }\n", - "\n", + " entry = [match[\"engine\"], match[\"m\"], match[\"ef\"], match[\"quant\"],\n", + " match[\"dataset\"], match[\"search_index\"], match[\"date\"], \n", + " stats[\"params\"], stats[\"results\"]] " if experiment[\"operation\"] == \"search\":\n", " entry.update({\"search_index\": match[\"search_index\"]})\n", " search_results.append(entry)\n", @@ -126,16 +306,24 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2022-08-05T10:03:54.157465Z", + "start_time": "2022-08-05T10:03:54.153118Z" + }, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ - "upload_results, search_results[0]" + "column_names = [\"engine\", \"m\", \"ef\", \"quant\", \"dataset\", \"search_index\", \"date\", \"params\", \"results\"]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2022-08-05T11:31:17.192306Z", @@ -145,13 +333,102 @@ "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dateparamspost_uploadupload_timetotal_time
enginemefquantdataset
vectorsets64512q8random-1002025-03-18 23:31:46{'experiment': 'vectorsets-q8-m-64-ef-512', 'e...{}3.5902913.590334
\n", + "
" + ], + "text/plain": [ + " date \\\n", + "engine m ef quant dataset \n", + "vectorsets 64 512 q8 random-100 2025-03-18 23:31:46 \n", + "\n", + " params \\\n", + "engine m ef quant dataset \n", + "vectorsets 64 512 q8 random-100 {'experiment': 'vectorsets-q8-m-64-ef-512', 'e... \n", + "\n", + " post_upload upload_time total_time \n", + "engine m ef quant dataset \n", + "vectorsets 64 512 q8 random-100 {} 3.590291 3.590334 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "upload_df = pd.DataFrame(upload_results)\n", "upload_df[\"date\"] = pd.to_datetime(upload_df[\"date\"], format=\"%Y-%m-%d-%H-%M-%S\")\n", "upload_df = upload_df.sort_values(\"date\", ascending=False) \\\n", - " .groupby([\"engine\", \"m\", \"ef\", \"dataset\"]) \\\n", - " .first()\n", + " .groupby([\"engine\", \"m\", \"ef\", \"quant\", \"dataset\"]) \\\n", + " .last()\n", + "upload_df = pd.concat([upload_df, upload_df[\"results\"].apply(pd.Series)], axis=1)\n", + "upload_df = upload_df.drop(columns=\"results\") "\n", "temp_df = upload_df.copy()\n", "temp_df[\"total_time\"] = temp_df[\"results\"].apply(lambda x: x[\"total_time\"])\n", @@ -170,12 +447,345 @@ "name": "#%%\n" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "8\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datedatasetexperimentengineparallelsearch_paramstotal_timemean_timemean_precisionsstd_timemin_timemax_timerpsp95_timep99_time
enginemefdatasetquantsearch_index
vectorsets64512random-100q832025-03-18 23:31:46random-100vectorsets-q8-m-64-ef-512vectorsets1{'ef': 512}0.0022550.0001831.00.0001390.0001050.0005214433.7698990.0004600.000508
12025-03-18 23:31:46random-100vectorsets-q8-m-64-ef-512vectorsets1{'ef': 128}0.0023580.0001761.00.0001250.0001140.0005444240.8821600.0003880.000513
22025-03-18 23:31:46random-100vectorsets-q8-m-64-ef-512vectorsets1{'ef': 256}0.0025850.0002091.00.0001250.0001210.0005073869.0332590.0004580.000497
02025-03-18 23:31:46random-100vectorsets-q8-m-64-ef-512vectorsets1{'ef': 64}0.0039140.0002681.00.0003690.0001100.0013712554.7136590.0008410.001265
42025-03-18 23:32:05random-100vectorsets-q8-m-64-ef-512vectorsets100{'ef': 64}2.0294710.0319601.00.0843990.0002750.2835144.9273920.1706200.260935
62025-03-18 23:32:44random-100vectorsets-q8-m-64-ef-512vectorsets100{'ef': 256}2.7904380.0009881.00.0018640.0002570.0065633.5836660.0039530.006041
72025-03-18 23:33:03random-100vectorsets-q8-m-64-ef-512vectorsets100{'ef': 512}3.4431490.0318801.00.0694970.0003660.2380092.9043180.1455350.219514
52025-03-18 23:32:25random-100vectorsets-q8-m-64-ef-512vectorsets100{'ef': 128}4.7542670.0019451.00.0037090.0004130.0130492.1033730.0076990.011979
\n", + "
" + ], + "text/plain": [ + " date \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 2025-03-18 23:31:46 \n", + " 1 2025-03-18 23:31:46 \n", + " 2 2025-03-18 23:31:46 \n", + " 0 2025-03-18 23:31:46 \n", + " 4 2025-03-18 23:32:05 \n", + " 6 2025-03-18 23:32:44 \n", + " 7 2025-03-18 23:33:03 \n", + " 5 2025-03-18 23:32:25 \n", + "\n", + " dataset \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 random-100 \n", + " 1 random-100 \n", + " 2 random-100 \n", + " 0 random-100 \n", + " 4 random-100 \n", + " 6 random-100 \n", + " 7 random-100 \n", + " 5 random-100 \n", + "\n", + " experiment \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 vectorsets-q8-m-64-ef-512 \n", + " 1 vectorsets-q8-m-64-ef-512 \n", + " 2 vectorsets-q8-m-64-ef-512 \n", + " 0 vectorsets-q8-m-64-ef-512 \n", + " 4 vectorsets-q8-m-64-ef-512 \n", + " 6 vectorsets-q8-m-64-ef-512 \n", + " 7 vectorsets-q8-m-64-ef-512 \n", + " 5 vectorsets-q8-m-64-ef-512 \n", + "\n", + " engine parallel \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 vectorsets 1 \n", + " 1 vectorsets 1 \n", + " 2 vectorsets 1 \n", + " 0 vectorsets 1 \n", + " 4 vectorsets 100 \n", + " 6 vectorsets 100 \n", + " 7 vectorsets 100 \n", + " 5 vectorsets 100 \n", + "\n", + " search_params total_time \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 {'ef': 512} 0.002255 \n", + " 1 {'ef': 128} 0.002358 \n", + " 2 {'ef': 256} 0.002585 \n", + " 0 {'ef': 64} 0.003914 \n", + " 4 {'ef': 64} 2.029471 \n", + " 6 {'ef': 256} 2.790438 \n", + " 7 {'ef': 512} 3.443149 \n", + " 5 {'ef': 128} 4.754267 \n", + "\n", + " mean_time mean_precisions \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 0.000183 1.0 \n", + " 1 0.000176 1.0 \n", + " 2 0.000209 1.0 \n", + " 0 0.000268 1.0 \n", + " 4 0.031960 1.0 \n", + " 6 0.000988 1.0 \n", + " 7 0.031880 1.0 \n", + " 5 0.001945 1.0 \n", + "\n", + " std_time min_time max_time \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 0.000139 0.000105 0.000521 \n", + " 1 0.000125 0.000114 0.000544 \n", + " 2 0.000125 0.000121 0.000507 \n", + " 0 0.000369 0.000110 0.001371 \n", + " 4 0.084399 0.000275 0.283514 \n", + " 6 0.001864 0.000257 0.006563 \n", + " 7 0.069497 0.000366 0.238009 \n", + " 5 0.003709 0.000413 0.013049 \n", + "\n", + " rps p95_time \\\n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 4433.769899 0.000460 \n", + " 1 4240.882160 0.000388 \n", + " 2 3869.033259 0.000458 \n", + " 0 2554.713659 0.000841 \n", + " 4 4.927392 0.170620 \n", + " 6 3.583666 0.003953 \n", + " 7 2.904318 0.145535 \n", + " 5 2.103373 0.007699 \n", + "\n", + " p99_time \n", + "engine m ef dataset quant search_index \n", + "vectorsets 64 512 random-100 q8 3 0.000508 \n", + " 1 0.000513 \n", + " 2 0.000497 \n", + " 0 0.001265 \n", + " 4 0.260935 \n", + " 6 0.006041 \n", + " 7 0.219514 \n", + " 5 0.011979 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "search_df = pd.DataFrame(search_results)\n", "search_df[\"date\"] = pd.to_datetime(search_df[\"date\"], format=\"%Y-%m-%d-%H-%M-%S\")\n", "search_df = search_df.sort_values(\"date\", ascending=False) \\\n", - " .groupby([\"engine\", \"m\", \"ef\", \"dataset\", \"search_index\"]) \\\n", + " .groupby([\"engine\", \"m\", \"ef\", \"dataset\", \"quant\", \"search_index\"]) \\\n", " .first()\n", "\n", "temp_df = search_df.copy()\n", @@ -185,16 +795,61 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ValueError", + "evalue": "cannot insert dataset, already exists", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/4t/wcf5b_sj55lbww_8xxhhq8pr0000gp/T/ipykernel_45869/1649479656.py\u001b[0m in \u001b[0;36m?\u001b[0;34m()\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;31m# print(len(joined_df))\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;31m# joined_df\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;31m# Reset the indices of both dataframes to make columns\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0msearch_reset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msearch_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 22\u001b[0m \u001b[0mupload_reset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mupload_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreset_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;31m# Join on common columns\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, level, drop, inplace, col_level, col_fill, allow_duplicates, names)\u001b[0m\n\u001b[1;32m 6205\u001b[0m level_values = algorithms.take(\n\u001b[1;32m 6206\u001b[0m \u001b[0mlevel_values\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlab\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mallow_fill\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfill_value\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlev\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_na_value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6207\u001b[0m )\n\u001b[1;32m 6208\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6209\u001b[0;31m new_obj.insert(\n\u001b[0m\u001b[1;32m 6210\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6211\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6212\u001b[0m \u001b[0mlevel_values\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m?\u001b[0;34m(self, loc, column, value, allow_duplicates)\u001b[0m\n\u001b[1;32m 4768\u001b[0m \u001b[0;34m\"'self.flags.allows_duplicate_labels' is False.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4769\u001b[0m )\n\u001b[1;32m 4770\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mallow_duplicates\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mcolumn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4771\u001b[0m \u001b[0;31m# Should this be a different kind of error??\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4772\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"cannot insert {column}, already exists\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4773\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4774\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"loc must be int\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4775\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: cannot insert dataset, already exists" + ] + } + ], "source": [ - "_search = search_df.reset_index()\n", - "_upload = upload_df.reset_index()\n", + "# # Option 1: Check what's in your index and columns\n", + "# print(\"search_df index name:\", search_df.index.name or search_df.index.names)\n", + "# print(\"search_df columns:\", search_df.columns.tolist())\n", + "# print(\"upload_df index name:\", upload_df.index.name or upload_df.index.names)\n", + "# print(\"upload_df columns:\", upload_df.columns.tolist())\n", + "\n", + "# # Option 2: Reset index but specify a different name for the index column\n", + "# _search = search_df.reset_index()\n", + "# _upload = upload_df.reset_index()\n", + "# print(\"search_df index name:\", _search.index.name or _search.index.names)\n", + "# print(\"search_df columns:\", _search.columns.tolist())\n", + "\n", + "# print(\"_upload index name:\", _upload.index.name or _upload.index.names)\n", + "# print(\"_upload columns:\", _upload.columns.tolist())\n", "\n", - "joined_df = _search.merge(_upload, on=[\"engine\", \"m\", \"ef\", \"dataset\"], how=\"left\", suffixes=(\"_search\", \"_upload\"))\n", - "print(len(joined_df))\n", - "joined_df" + "# joined_df = _search.merge(_upload, how=\"left\", on=[\"engine\", \"m\", \"ef\", \"quant\", \"dataset\"], suffixes=(\"_search\", \"_upload\"))\n", + "# print(len(joined_df))\n", + "# joined_df\n", + "\n", + "# Reset the indices of both dataframes to make columns\n", + "search_reset = search_df.reset_index()\n", + "upload_reset = upload_df.reset_index()\n", + "\n", + "# Join on common columns\n", + "joined_df = search_reset.merge(upload_reset, \n", + " how=\"left\", \n", + " on=[\"engine\", \"m\", \"ef\", \"quant\", \"dataset\"],\n", + " suffixes=(\"\", \"_upload\"))\n", + "\n", + "# Rename any conflicting columns to match what's expected in cell 10\n", + "joined_df = joined_df.rename(columns={\n", + " \"total_time\": \"total_time_search\",\n", + " \"total_time_upload\": \"total_time_upload\"\n", + "})\n", + "\n", + "print(f\"Joined dataframe has {len(joined_df)} rows\")\n", + "joined_df.head(2)" ] }, { @@ -202,6 +857,36 @@ "execution_count": null, "metadata": {}, "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'upload_time'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/core/indexes/base.py:3653\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3652\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 3653\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3654\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", + "File \u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/_libs/index.pyx:147\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/_libs/index.pyx:176\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mpandas/_libs/hashtable_class_helper.pxi:7080\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mpandas/_libs/hashtable_class_helper.pxi:7088\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'upload_time'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[12], line 21\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m engine_name \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mqdrant-rps\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m engine_name \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mqdrant-bq-rps\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m engine_name \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mqdrant-sq-rps\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 14\u001b[0m engine_name \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mqdrant\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 16\u001b[0m json_object \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 17\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mengine_name\u001b[39m\u001b[38;5;124m\"\u001b[39m: engine_name,\n\u001b[1;32m 18\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msetup_name\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrow[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mengine\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m-m-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrow[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mm\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m-ef-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrow[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mef\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m-quant-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrow[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquant\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 19\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdataset_name\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdataset\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 20\u001b[0m \u001b[38;5;66;03m# \"search_idx\": row['search_index'],\u001b[39;00m\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mupload_time\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[43mrow\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mupload_time\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m,\n\u001b[1;32m 22\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtotal_upload_time\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtotal_time_upload\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 23\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mp95_time\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mp95_time\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 24\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrps\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrps\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 25\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparallel\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mparallel\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 26\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mp99_time\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mp99_time\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 27\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmean_time\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmean_time\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 28\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmean_precisions\u001b[39m\u001b[38;5;124m\"\u001b[39m: row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmean_precisions\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[1;32m 29\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mengine_params\u001b[39m\u001b[38;5;124m\"\u001b[39m: engine_params,\n\u001b[1;32m 30\u001b[0m }\n\u001b[1;32m 31\u001b[0m json_all\u001b[38;5;241m.\u001b[39mappend(json_object)\n\u001b[1;32m 33\u001b[0m parallel \u001b[38;5;241m=\u001b[39m row[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mparallel\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", + "File \u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/core/series.py:1007\u001b[0m, in \u001b[0;36mSeries.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_values[key]\n\u001b[1;32m 1006\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m key_is_scalar:\n\u001b[0;32m-> 1007\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_value\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1009\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_hashable(key):\n\u001b[1;32m 1010\u001b[0m \u001b[38;5;66;03m# Otherwise index.get_value will raise InvalidIndexError\u001b[39;00m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;66;03m# For labels that don't resolve as scalars like tuples and frozensets\u001b[39;00m\n", + "File \u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/core/series.py:1116\u001b[0m, in \u001b[0;36mSeries._get_value\u001b[0;34m(self, label, takeable)\u001b[0m\n\u001b[1;32m 1113\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_values[label]\n\u001b[1;32m 1115\u001b[0m \u001b[38;5;66;03m# Similar to Index.get_value, but we do not fall back to positional\u001b[39;00m\n\u001b[0;32m-> 1116\u001b[0m loc \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1118\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_integer(loc):\n\u001b[1;32m 1119\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_values[loc]\n", + "File \u001b[0;32m~/Code/vector-db-benchmark/.venv/lib/python3.11/site-packages/pandas/core/indexes/base.py:3655\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3653\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine\u001b[38;5;241m.\u001b[39mget_loc(casted_key)\n\u001b[1;32m 3654\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m-> 3655\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[1;32m 3656\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[1;32m 3657\u001b[0m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[1;32m 3658\u001b[0m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[1;32m 3659\u001b[0m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n\u001b[1;32m 3660\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n", + "\u001b[0;31mKeyError\u001b[0m: 'upload_time'" + ] + } + ], "source": [ "json_results = []\n", "\n", @@ -258,7 +943,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -272,7 +957,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.18" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/vectorsets.sh b/vectorsets.sh new file mode 100755 index 000000000..4be2cea70 --- /dev/null +++ b/vectorsets.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Check if hostname is provided +if [ $# -lt 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +hostname=$1 + +# Define experiments array +experiments=( + "vectorsets-bin-default" + "vectorsets-bin-m-32-ef-128" + "vectorsets-bin-m-32-ef-256" + "vectorsets-bin-m-32-ef-512" + "vectorsets-bin-m-64-ef-256" + "vectorsets-bin-m-64-ef-512" + + "vectorsets-q8-default" + "vectorsets-q8-m-32-ef-128" + "vectorsets-q8-m-32-ef-256" + "vectorsets-q8-m-32-ef-512" + "vectorsets-q8-m-64-ef-256" + "vectorsets-q8-m-64-ef-512" + + "vectorsets-fp32-default" + "vectorsets-fp32-m-32-ef-128" + "vectorsets-fp32-m-32-ef-256" + "vectorsets-fp32-m-32-ef-512" + "vectorsets-fp32-m-64-ef-256" + "vectorsets-fp32-m-64-ef-512" +) + +# Run command for each experiment +for experiment in "${experiments[@]}"; do + echo "Running experiment: $experiment" + python run.py --engines "$experiment" --datasets dbpedia-openai-1M-1536-angular --host "$hostname" + echo "Completed experiment: $experiment" + echo "-----------------------------------" +done + +echo "All experiments completed!" \ No newline at end of file