From 17ef49e40d6a965f4dc67570aa3960049b455769 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 4 Jul 2023 17:56:51 +0100 Subject: [PATCH 001/204] Update redisearch base client to include timeout. Extended latency metrics to include p50 --- engine/base_client/client.py | 3 + engine/base_client/search.py | 1 + engine/clients/redis/config.py | 5 +- engine/clients/redis/configure.py | 4 +- engine/clients/redis/search.py | 1 + engine/clients/redis/upload.py | 29 +- requirements.txt | 641 ++++++++++++++++++++++++++++++ 7 files changed, 669 insertions(+), 15 deletions(-) create mode 100644 requirements.txt diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 4dcee787..171a6e47 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -83,6 +83,9 @@ def run_experiment( print("Experiment stage: Search") for search_id, searcher in enumerate(self.searchers): search_params = {**searcher.search_params} + ef = search_params["search_params"]["ef"] + parallel = search_params["parallel"] if "parallel" in search_params else 1 + print(f"\tef runtime: {ef}; #clients {parallel}") search_stats = searcher.search_all( dataset.config.distance, reader.read_queries() ) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 0996a5e5..64550df0 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -105,6 +105,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/clients/redis/config.py b/engine/clients/redis/config.py index 5e8ee9db..3dfb8df9 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -1 +1,4 @@ -REDIS_PORT = 6380 +import os +REDIS_PORT = int(os.getenv("REDIS_PORT",6379)) +REDIS_AUTH = os.getenv("REDIS_AUTH",None) +REDIS_USER = os.getenv("REDIS_USER",None) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 715ac392..6bd49d2b 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -4,7 +4,7 @@ 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_PORT +from engine.clients.redis.config import REDIS_PORT, REDIS_AUTH, REDIS_USER class RedisConfigurator(BaseConfigurator): @@ -24,7 +24,7 @@ class RedisConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - self.client = redis.Redis(host=host, port=REDIS_PORT, db=0) + self.client = redis.Redis(host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER) def clean(self): index = self.client.ft() diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 04b868b2..16739429 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -36,6 +36,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: .paging(0, top) .return_fields("vector_score") .dialect(2) + .timeout(0) ) params_dict = { "vec_param": np.array(vector).astype(np.float32).tobytes(), diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 4f6e7b89..7f9adf7b 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -26,18 +26,23 @@ def upload_batch( idx = ids[i] vec = vectors[i] meta = metadata[i] if metadata else {} - payload = { - k: v - for k, v in meta.items() - if v is not None and not isinstance(v, dict) - } - # Redis treats geopoints differently and requires putting them as - # a comma-separated string with lat and lon coordinates - geopoints = { - k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) - for k, v in meta.items() - if isinstance(v, dict) - } + payload = {} + geopoints = {} + + if meta is not None: + meta = {} + payload = { + k: v + for k, v in meta.items() + if v is not None and not isinstance(v, dict) + } + # Redis treats geopoints differently and requires putting them as + # a comma-separated string with lat and lon coordinates + geopoints = { + k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) + for k, v in meta.items() + if isinstance(v, dict) + } cls.client.hset( str(idx), mapping={ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..bfcbc4ef --- /dev/null +++ b/requirements.txt @@ -0,0 +1,641 @@ +anyio==3.7.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce \ + --hash=sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0 +appnope==0.1.3 ; python_version >= "3.8" and python_version < "3.12" and sys_platform == "darwin" \ + --hash=sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24 \ + --hash=sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e +asttokens==2.2.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3 \ + --hash=sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c +async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version <= "3.11.2" \ + --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ + --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c +authlib==1.2.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:421f7c6b468d907ca2d9afede256f068f87e34d23dd221c07d13d4c234726afb \ + --hash=sha256:c88984ea00149a90e3537c964327da930779afa4564e354edfd98410bea01911 +backcall==0.2.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e \ + --hash=sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255 +certifi==2023.5.7 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7 \ + --hash=sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716 +cffi==1.15.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ + --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ + --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ + --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ + --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ + --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ + --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ + --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ + --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ + --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ + --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ + --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ + --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ + --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ + --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ + --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ + --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ + --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ + --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ + --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ + --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ + --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ + --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ + --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ + --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ + --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ + --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ + --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ + --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ + --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ + --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ + --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ + --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ + --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ + --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ + --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ + --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ + --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ + --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ + --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ + --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ + --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ + --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ + --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ + --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ + --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ + --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ + --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ + --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ + --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ + --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ + --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ + --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ + --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ + --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ + --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ + --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ + --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ + --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ + --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ + --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ + --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ + --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ + --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 +charset-normalizer==3.1.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6 \ + --hash=sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1 \ + --hash=sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e \ + --hash=sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373 \ + --hash=sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62 \ + --hash=sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230 \ + --hash=sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be \ + --hash=sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c \ + --hash=sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0 \ + --hash=sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448 \ + --hash=sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f \ + --hash=sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649 \ + --hash=sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d \ + --hash=sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0 \ + --hash=sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706 \ + --hash=sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a \ + --hash=sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59 \ + --hash=sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23 \ + --hash=sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5 \ + --hash=sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb \ + --hash=sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e \ + --hash=sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e \ + --hash=sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c \ + --hash=sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28 \ + --hash=sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d \ + --hash=sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41 \ + --hash=sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974 \ + --hash=sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce \ + --hash=sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f \ + --hash=sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1 \ + --hash=sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d \ + --hash=sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8 \ + --hash=sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017 \ + --hash=sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31 \ + --hash=sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7 \ + --hash=sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8 \ + --hash=sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e \ + --hash=sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14 \ + --hash=sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd \ + --hash=sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d \ + --hash=sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795 \ + --hash=sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b \ + --hash=sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b \ + --hash=sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b \ + --hash=sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203 \ + --hash=sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f \ + --hash=sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19 \ + --hash=sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1 \ + --hash=sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a \ + --hash=sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac \ + --hash=sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9 \ + --hash=sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0 \ + --hash=sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137 \ + --hash=sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f \ + --hash=sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6 \ + --hash=sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5 \ + --hash=sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909 \ + --hash=sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f \ + --hash=sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0 \ + --hash=sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324 \ + --hash=sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755 \ + --hash=sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb \ + --hash=sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854 \ + --hash=sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c \ + --hash=sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60 \ + --hash=sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84 \ + --hash=sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0 \ + --hash=sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b \ + --hash=sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1 \ + --hash=sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531 \ + --hash=sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1 \ + --hash=sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11 \ + --hash=sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326 \ + --hash=sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df \ + --hash=sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab +click==8.1.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ + --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 +colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" or python_version >= "3.8" and python_version < "3.12" and sys_platform == "win32" \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 +cryptography==41.0.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:059e348f9a3c1950937e1b5d7ba1f8e968508ab181e75fc32b879452f08356db \ + --hash=sha256:1a5472d40c8f8e91ff7a3d8ac6dfa363d8e3138b961529c996f3e2df0c7a411a \ + --hash=sha256:1a8e6c2de6fbbcc5e14fd27fb24414507cb3333198ea9ab1258d916f00bc3039 \ + --hash=sha256:1fee5aacc7367487b4e22484d3c7e547992ed726d14864ee33c0176ae43b0d7c \ + --hash=sha256:5d092fdfedaec4cbbffbf98cddc915ba145313a6fdaab83c6e67f4e6c218e6f3 \ + --hash=sha256:5f0ff6e18d13a3de56f609dd1fd11470918f770c6bd5d00d632076c727d35485 \ + --hash=sha256:7bfc55a5eae8b86a287747053140ba221afc65eb06207bedf6e019b8934b477c \ + --hash=sha256:7fa01527046ca5facdf973eef2535a27fec4cb651e4daec4d043ef63f6ecd4ca \ + --hash=sha256:8dde71c4169ec5ccc1087bb7521d54251c016f126f922ab2dfe6649170a3b8c5 \ + --hash=sha256:8f4ab7021127a9b4323537300a2acfb450124b2def3756f64dc3a3d2160ee4b5 \ + --hash=sha256:948224d76c4b6457349d47c0c98657557f429b4e93057cf5a2f71d603e2fc3a3 \ + --hash=sha256:9a6c7a3c87d595608a39980ebaa04d5a37f94024c9f24eb7d10262b92f739ddb \ + --hash=sha256:b46e37db3cc267b4dea1f56da7346c9727e1209aa98487179ee8ebed09d21e43 \ + --hash=sha256:b4ceb5324b998ce2003bc17d519080b4ec8d5b7b70794cbd2836101406a9be31 \ + --hash=sha256:cb33ccf15e89f7ed89b235cff9d49e2e62c6c981a6061c9c8bb47ed7951190bc \ + --hash=sha256:d198820aba55660b4d74f7b5fd1f17db3aa5eb3e6893b0a41b75e84e4f9e0e4b \ + --hash=sha256:d34579085401d3f49762d2f7d6634d6b6c2ae1242202e860f4d26b046e3a1006 \ + --hash=sha256:eb8163f5e549a22888c18b0d53d6bb62a20510060a22fd5a995ec8a05268df8a \ + --hash=sha256:f73bff05db2a3e5974a6fd248af2566134d8981fd7ab012e5dd4ddb1d9a70699 +decorator==5.1.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ + --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 +elastic-transport==8.4.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:19db271ab79c9f70f8c43f8f5b5111408781a6176b54ab2e54d713b6d9ceb815 \ + --hash=sha256:b9ad708ceb7fcdbc6b30a96f886609a109f042c0b9d9f2e44403b3133ba7ff10 +elasticsearch==8.8.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:2223ee9daaa3c80c25b28ec3f7c48e66fce6b767a338333d9a81886046a07df6 \ + --hash=sha256:6878313cd598c7c90079fed1d4be72e198da35cba57f4083e6bee91f9c70b0eb +environs==9.5.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:1e549569a3de49c05f856f40bce86979e7d5ffbbc4398e7f338574c220189124 \ + --hash=sha256:a76307b36fbe856bdca7ee9161e6c466fd7fcffc297109a118c59b54e27e30c9 +exceptiongroup==1.1.2 ; python_version >= "3.8" and python_version < "3.11" \ + --hash=sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5 \ + --hash=sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f +executing==1.2.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc \ + --hash=sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107 +grpcio-tools==1.56.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:02b23a12b91287ebea14b3685735d1d675e77c3cd365ec1771c3e9afbeba1ec6 \ + --hash=sha256:0a8767e4de0f573c678313c5de075ac0e163a192bb135018e45015a22f234387 \ + --hash=sha256:11cdd9cbf0c09c3a761c6f59dfd7128104be7cd393334efe386d4fc3f990ee1a \ + --hash=sha256:128bb13fe9a2681eeb08175f5fbc8e2d8953d7d0dd240e96f9244b9d2547a1aa \ + --hash=sha256:142530b9fdfabe04f0c7e5dacd45b6c419d39704fa439cc0aabf73ea0d8f916d \ + --hash=sha256:168940a4a955b6c65da978dbf62e1c36e3a311bb27f649fd201a228e2583a6d4 \ + --hash=sha256:1bd361fcc967c21672ba855fc77ea0e7afa51664033a746df96545f84edc4670 \ + --hash=sha256:21cf32ccffd4f1800b0dcdf58aa1fc7f626795c9da784c3d817c944edcf2d3ae \ + --hash=sha256:23e2ef1dc6a9bf766f091e2c52a68e54d0aff3548f94562e61fb0ac3874d514a \ + --hash=sha256:282176066fb082ad21c403b84f9d6b440a20482e6f52b83bb2adf54d6fdcae9f \ + --hash=sha256:2b7a4eb5003a29eecd71707589f93ae7e8fa2e681366a811b3f86695055d8666 \ + --hash=sha256:2c1c43d185ebf904c3deec23c36ca2ba4e95db999cf00fc8f85eda4551622a26 \ + --hash=sha256:2d1ee9e13ce135a6ed451b428ef14af131dc7df2551a5344ff4f8aee2d9fab99 \ + --hash=sha256:39f5877cea514b3da9f2683dfb3ffb45ef47b05f4ff39c287d7d61c5057f48b8 \ + --hash=sha256:3a4b06169493f9454a7f2516c5d41b566d9734e553bbc505f2a7837f7f4a2df1 \ + --hash=sha256:3de6c08b545920a39b31ed13305f946c00b19ac1b13d26119f111b6360f22ccf \ + --hash=sha256:4acdc7b957abfd76581717f0ac8e4408e0a85b7d0ac8d2cdf4d964f16926b897 \ + --hash=sha256:4d59009ed52220eb2d62f5cefa4e58dec930fb92fab27bb390c4cf1d360ac7e1 \ + --hash=sha256:5f5c416b88d76fbdb548cfee0486928748816b700ece6e591006e5b1dc67598f \ + --hash=sha256:5fd4c005a4afec16578849bc522ddf3298d6d499b3d37bf51314b086c714cdd5 \ + --hash=sha256:781cf09e4d5c9288708f6ec9c3eae64d9d5a0f4c46c7ebe70ebb7ab4f6384789 \ + --hash=sha256:79291bfb1fe5f21d99f4839f43d3c5d44c5402c830a24dbb2811d785dd21264b \ + --hash=sha256:7e6bcb194b81e372411494d8ed69fab89aa3452b7275fce4f7917fbe7b04fb72 \ + --hash=sha256:7f063443870650e55012fdb3a58ff4ce5f4042b81dad6b749333ee8146157511 \ + --hash=sha256:80d75856f8ec949847386ad2f56a460f21c63bf82ce99ca5b6aa512c0b875fb1 \ + --hash=sha256:8115b416ea2cad8a87dc3aadfaf26da684e003c3770b12e7219b462505bb5b85 \ + --hash=sha256:8870ab60f8a76b4a7e43184ee03d28112b976d83c43d41cec821f47b3a297da2 \ + --hash=sha256:8989d363ac1996238fee61c8f5663f15a8fc362cb1e758c4a686b76cb457cd70 \ + --hash=sha256:96fe2f7f5805d88cb7f2e3e3502550b2883dfab0f9efcf3cbd444942cf2ee1da \ + --hash=sha256:9cffff0b4af80285fa49637d69b69d640eb775dc74b23635e4de5faad9e7e744 \ + --hash=sha256:ac33fd2d02d24101ea389be8e05b928acb58be56403d4ebc3aecfab473fa4a25 \ + --hash=sha256:accf713f51da74b1a18aa4b31df0ab135510704661f735a938081777b79a4c25 \ + --hash=sha256:b12bb8c1d408ae40e4c806a3a8ebda2d107310e46696e1da13d0dc3f91fbd19d \ + --hash=sha256:b309659534b5d930f9ab6d521670c2dd86cb6ef7f47f37f73f96557e2ec13a49 \ + --hash=sha256:b57f7f01eafbfe3a293f2efffb675774dbe4074c4627975ec4dc4aa5766801fb \ + --hash=sha256:c43b4fe8c8df4c52d3106bba2cf427f0e46bbebb80e127fbbc3134db0fead7be \ + --hash=sha256:c62f07452dee3f1ed23aeaef821797c5e516f79535e97fe6a6b0a0ee8db1cc91 \ + --hash=sha256:cd69107705794e815a8b262722c6fea995911cb1dfc1310abf63b476165335d6 \ + --hash=sha256:cdbae7312e6d132d38ec2c1611b8cafb783e0416cc5c6deae04efde5f16fb190 \ + --hash=sha256:d9b8d1c42854d3433c058795f52b1418b53dd8c1e9811fecb1312202e803a2c5 \ + --hash=sha256:e4cb62a521efbca4cb1ad50233aa400574b3daaf6eb26707d661a0afe8191d92 \ + --hash=sha256:e59ab6c0bf4a8bb975553ad578d4425bd192775ae384f9406d77d31ad00f6efe \ + --hash=sha256:f3ab1a9fad636302f7307d143f64a9fbd11bc041652bf53bb016006e9a5ca820 \ + --hash=sha256:f7302acaa07cf4966c926fcd6a60c8d30a697f730c38168bf83e1519b464115b \ + --hash=sha256:fa6d9bdd75d3625dae38372b43696e159c10aa98719b4302b1e94f1ff7878d47 +grpcio==1.56.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:008767c0aed4899e657b50f2e0beacbabccab51359eba547f860e7c55f2be6ba \ + --hash=sha256:03a80451530fd3b8b155e0c4480434f6be669daf7ecba56f73ef98f94222ee01 \ + --hash=sha256:0409de787ebbf08c9d2bca2bcc7762c1efe72eada164af78b50567a8dfc7253c \ + --hash=sha256:14e70b4dda3183abea94c72d41d5930c333b21f8561c1904a372d80370592ef3 \ + --hash=sha256:17f47aeb9be0da5337f9ff33ebb8795899021e6c0741ee68bd69774a7804ca86 \ + --hash=sha256:187b8f71bad7d41eea15e0c9812aaa2b87adfb343895fffb704fb040ca731863 \ + --hash=sha256:1eadd6de258901929223f422ffed7f8b310c0323324caf59227f9899ea1b1674 \ + --hash=sha256:38fdf5bd0a1c754ce6bf9311a3c2c7ebe56e88b8763593316b69e0e9a56af1de \ + --hash=sha256:4241a1c2c76e748023c834995cd916570e7180ee478969c2d79a60ce007bc837 \ + --hash=sha256:437af5a7673bca89c4bc0a993382200592d104dd7bf55eddcd141cef91f40bab \ + --hash=sha256:43c50d810cc26349b093bf2cfe86756ab3e9aba3e7e681d360930c1268e1399a \ + --hash=sha256:4c08ee21b3d10315b8dc26f6c13917b20ed574cdbed2d2d80c53d5508fdcc0f2 \ + --hash=sha256:4f84a6fd4482e5fe73b297d4874b62a535bc75dc6aec8e9fe0dc88106cd40397 \ + --hash=sha256:4feee75565d1b5ab09cb3a5da672b84ca7f6dd80ee07a50f5537207a9af543a4 \ + --hash=sha256:50f4daa698835accbbcc60e61e0bc29636c0156ddcafb3891c987e533a0031ba \ + --hash=sha256:59c4e606993a47146fbeaf304b9e78c447f5b9ee5641cae013028c4cca784617 \ + --hash=sha256:5d2fc471668a7222e213f86ef76933b18cdda6a51ea1322034478df8c6519959 \ + --hash=sha256:64bd3abcf9fb4a9fa4ede8d0d34686314a7075f62a1502217b227991d9ca4245 \ + --hash=sha256:66f0369d27f4c105cd21059d635860bb2ea81bd593061c45fb64875103f40e4a \ + --hash=sha256:6b5ce42a5ebe3e04796246ba50357f1813c44a6efe17a37f8dc7a5c470377312 \ + --hash=sha256:72836b5a1d4f508ffbcfe35033d027859cc737972f9dddbe33fb75d687421e2e \ + --hash=sha256:76b6e6e1ee9bda32e6e933efd61c512e9a9f377d7c580977f090d1a9c78cca44 \ + --hash=sha256:79d4c5911d12a7aa671e5eb40cbb50a830396525014d2d6f254ea2ba180ce637 \ + --hash=sha256:7beb84ebd0a3f732625124b73969d12b7350c5d9d64ddf81ae739bbc63d5b1ed \ + --hash=sha256:8219f17baf069fe8e42bd8ca0b312b875595e43a70cabf397be4fda488e2f27d \ + --hash=sha256:83ec714bbbe9b9502177c842417fde39f7a267031e01fa3cd83f1ca49688f537 \ + --hash=sha256:8674fdbd28266d8efbcddacf4ec3643f76fe6376f73283fd63a8374c14b0ef7c \ + --hash=sha256:881575f240eb5db72ddca4dc5602898c29bc082e0d94599bf20588fb7d1ee6a0 \ + --hash=sha256:8b3b2c7b5feef90bc9a5fa1c7f97637e55ec3e76460c6d16c3013952ee479cd9 \ + --hash=sha256:991224fd485e088d3cb5e34366053691a4848a6b7112b8f5625a411305c26691 \ + --hash=sha256:aa08affbf672d051cd3da62303901aeb7042a2c188c03b2c2a2d346fc5e81c14 \ + --hash=sha256:b1f4b6f25a87d80b28dd6d02e87d63fe1577fe6d04a60a17454e3f8077a38279 \ + --hash=sha256:b4638a796778329cc8e142e4f57c705adb286b3ba64e00b0fa91eeb919611be8 \ + --hash=sha256:bd55f743e654fb050c665968d7ec2c33f03578a4bbb163cfce38024775ff54cc \ + --hash=sha256:c0bc9dda550785d23f4f025be614b7faa8d0293e10811f0f8536cf50435b7a30 \ + --hash=sha256:c2148170e01d464d41011a878088444c13413264418b557f0bdcd1bf1b674a0e \ + --hash=sha256:c243b158dd7585021d16c50498c4b2ec0a64a6119967440c5ff2d8c89e72330e \ + --hash=sha256:c63bc5ac6c7e646c296fed9139097ae0f0e63f36f0864d7ce431cce61fe0118a \ + --hash=sha256:c6f36621aabecbaff3e70c4d1d924c76c8e6a7ffec60c331893640a4af0a8037 \ + --hash=sha256:d596408bab632ec7b947761e83ce6b3e7632e26b76d64c239ba66b554b7ee286 \ + --hash=sha256:defdd14b518e6e468466f799aaa69db0355bca8d3a5ea75fb912d28ba6f8af31 \ + --hash=sha256:e2db108b4c8e29c145e95b0226973a66d73ae3e3e7fae00329294af4e27f1c42 \ + --hash=sha256:f92a99ab0c7772fb6859bf2e4f44ad30088d18f7c67b83205297bfb229e0d2cf \ + --hash=sha256:fb34ace11419f1ae321c36ccaa18d81cd3f20728cd191250be42949d6845bb2d \ + --hash=sha256:fdc3a895791af4addbb826808d4c9c35917c59bb5c430d729f44224e51c92d61 +h11==0.14.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ + --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 +h2==4.1.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d \ + --hash=sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb +h5py==3.9.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:12aa556d540f11a2cae53ea7cfb94017353bd271fb3962e1296b342f6550d1b8 \ + --hash=sha256:23e74b878bbe1653ab34ca49b83cac85529cd0b36b9d625516c5830cc5ca2eac \ + --hash=sha256:36408f8c62f50007d14e000f9f3acf77e103b9e932c114cbe52a3089e50ebf94 \ + --hash=sha256:3f457089c5d524b7998e3649bc63240679b8fb0a3859ea53bbb06841f3d755f1 \ + --hash=sha256:54f01202cdea754ab4227dd27014bdbd561a4bbe4b631424fd812f7c2ce9c6ac \ + --hash=sha256:551e358db05a874a0f827b22e95b30092f2303edc4b91bb62ad2f10e0236e1a0 \ + --hash=sha256:64acceaf6aff92af091a4b83f6dee3cf8d3061f924a6bb3a33eb6c4658a8348b \ + --hash=sha256:6822a814b9d8b8363ff102f76ea8d026f0ca25850bb579d85376029ee3e73b93 \ + --hash=sha256:78e44686334cbbf2dd21d9df15823bc38663f27a3061f6a032c68a3e30c47bf7 \ + --hash=sha256:79bbca34696c6f9eeeb36a91776070c49a060b2879828e2c8fa6c58b8ed10dd1 \ + --hash=sha256:804c7fb42a34c8ab3a3001901c977a5c24d2e9c586a0f3e7c0a389130b4276fc \ + --hash=sha256:8d9492391ff5c3c80ec30ae2fe82a3f0efd1e750833739c25b0d090e3be1b095 \ + --hash=sha256:95f7a745efd0d56076999b52e8da5fad5d30823bac98b59c68ae75588d09991a \ + --hash=sha256:9da9e7e63376c32704e37ad4cea2dceae6964cee0d8515185b3ab9cbd6b947bc \ + --hash=sha256:a4e20897c88759cbcbd38fb45b507adc91af3e0f67722aa302d71f02dd44d286 \ + --hash=sha256:a6284061f3214335e1eec883a6ee497dbe7a79f19e6a57fed2dd1f03acd5a8cb \ + --hash=sha256:d97409e17915798029e297a84124705c8080da901307ea58f29234e09b073ddc \ + --hash=sha256:dbf5225543ca35ce9f61c950b73899a82be7ba60d58340e76d0bd42bf659235a \ + --hash=sha256:e604db6521c1e367c6bd7fad239c847f53cc46646f2d2651372d05ae5e95f817 \ + --hash=sha256:eb7bdd5e601dd1739698af383be03f3dad0465fe67184ebd5afca770f50df9d6 \ + --hash=sha256:f68b41efd110ce9af1cbe6fa8af9f4dcbadace6db972d30828b911949e28fadd +hpack==4.0.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c \ + --hash=sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095 +httpcore==0.17.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:125f8375ab60036db632f34f4b627a9ad085048eef7cb7d2616fea0f739f98af \ + --hash=sha256:5581b9c12379c4288fe70f43c710d16060c10080617001e6b22a3b6dbcbefd36 +httpx[http2]==0.24.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd \ + --hash=sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd +hyperframe==6.0.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15 \ + --hash=sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914 +idna==3.4 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ + --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 +ipdb==0.13.13 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4 \ + --hash=sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726 +ipython==8.12.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:c7b80eb7f5a855a88efc971fda506ff7a91c280b42cdae26643e0f601ea281ea \ + --hash=sha256:ea8801f15dfe4ffb76dea1b09b847430ffd70d827b41735c64a0638a04103bfc +jedi==0.18.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e \ + --hash=sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612 +jsons==1.6.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:cd5815c7c6790ae11c70ad9978e0aa850d0d08a643a5105cc604eac8b29a30d7 \ + --hash=sha256:f07f8919316f72a3843c7ca6cc6c900513089f10092626934d1bfe4b5cf15401 +marshmallow==3.19.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78 \ + --hash=sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b +matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311 \ + --hash=sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304 +numpy==1.24.4 ; python_version < "3.12" and python_version >= "3.8" \ + --hash=sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f \ + --hash=sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61 \ + --hash=sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7 \ + --hash=sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400 \ + --hash=sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef \ + --hash=sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2 \ + --hash=sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d \ + --hash=sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc \ + --hash=sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835 \ + --hash=sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706 \ + --hash=sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5 \ + --hash=sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4 \ + --hash=sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6 \ + --hash=sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463 \ + --hash=sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a \ + --hash=sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f \ + --hash=sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e \ + --hash=sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e \ + --hash=sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694 \ + --hash=sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8 \ + --hash=sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64 \ + --hash=sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d \ + --hash=sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc \ + --hash=sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254 \ + --hash=sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2 \ + --hash=sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1 \ + --hash=sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810 \ + --hash=sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9 +opensearch-py==2.2.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:109fe8d2e1e8f419a22358eb901025f51e6ad2f50014c8962e23796b2a23cb67 \ + --hash=sha256:595dcebe42e21cdf945add0b5dbaecccace1a8a5ba65d60314813767b564263c +packaging==23.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ + --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f +pandas==2.0.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682 \ + --hash=sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc \ + --hash=sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b \ + --hash=sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089 \ + --hash=sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5 \ + --hash=sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26 \ + --hash=sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210 \ + --hash=sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b \ + --hash=sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641 \ + --hash=sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd \ + --hash=sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78 \ + --hash=sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b \ + --hash=sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e \ + --hash=sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061 \ + --hash=sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0 \ + --hash=sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e \ + --hash=sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8 \ + --hash=sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d \ + --hash=sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0 \ + --hash=sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c \ + --hash=sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183 \ + --hash=sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df \ + --hash=sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8 \ + --hash=sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f \ + --hash=sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02 +parso==0.8.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0 \ + --hash=sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75 +pexpect==4.8.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" \ + --hash=sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937 \ + --hash=sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c +pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca \ + --hash=sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56 +portalocker==2.7.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:032e81d534a88ec1736d03f780ba073f047a06c478b06e2937486f334e955c51 \ + --hash=sha256:a07c5b4f3985c3cf4798369631fb7011adb498e2a46d8440efc75a8f29a0f983 +prompt-toolkit==3.0.39 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac \ + --hash=sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88 +protobuf==4.23.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8 \ + --hash=sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223 \ + --hash=sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288 \ + --hash=sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac \ + --hash=sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1 \ + --hash=sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1 \ + --hash=sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62 \ + --hash=sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb \ + --hash=sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35 \ + --hash=sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b \ + --hash=sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359 \ + --hash=sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a \ + --hash=sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5 +ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" \ + --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ + --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 +pure-eval==0.2.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350 \ + --hash=sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3 +pycparser==2.21 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ + --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 +pydantic==1.10.10 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:20a3b30fd255eeeb63caa9483502ba96b7795ce5bf895c6a179b3d909d9f53a6 \ + --hash=sha256:2b71bd504d1573b0b722ae536e8ffb796bedeef978979d076bf206e77dcc55a5 \ + --hash=sha256:3403a090db45d4027d2344859d86eb797484dfda0706cf87af79ace6a35274ef \ + --hash=sha256:37ebddef68370e6f26243acc94de56d291e01227a67b2ace26ea3543cf53dd5f \ + --hash=sha256:3b8d5bd97886f9eb59260594207c9f57dce14a6f869c6ceea90188715d29921a \ + --hash=sha256:409b810f387610cc7405ab2fa6f62bdf7ea485311845a242ebc0bd0496e7e5ac \ + --hash=sha256:4870f13a4fafd5bc3e93cff3169222534fad867918b188e83ee0496452978437 \ + --hash=sha256:566a04ba755e8f701b074ffb134ddb4d429f75d5dced3fbd829a527aafe74c71 \ + --hash=sha256:67b3714b97ff84b2689654851c2426389bcabfac9080617bcf4306c69db606f6 \ + --hash=sha256:6dab5219659f95e357d98d70577b361383057fb4414cfdb587014a5f5c595f7b \ + --hash=sha256:748d10ab6089c5d196e1c8be9de48274f71457b01e59736f7a09c9dc34f51887 \ + --hash=sha256:762aa598f79b4cac2f275d13336b2dd8662febee2a9c450a49a2ab3bec4b385f \ + --hash=sha256:7a26841be620309a9697f5b1ffc47dce74909e350c5315ccdac7a853484d468a \ + --hash=sha256:7a7db03339893feef2092ff7b1afc9497beed15ebd4af84c3042a74abce02d48 \ + --hash=sha256:7aa75d1bd9cc275cf9782f50f60cddaf74cbaae19b6ada2a28e737edac420312 \ + --hash=sha256:86936c383f7c38fd26d35107eb669c85d8f46dfceae873264d9bab46fe1c7dde \ + --hash=sha256:88546dc10a40b5b52cae87d64666787aeb2878f9a9b37825aedc2f362e7ae1da \ + --hash=sha256:8c40964596809eb616d94f9c7944511f620a1103d63d5510440ed2908fc410af \ + --hash=sha256:990027e77cda6072a566e433b6962ca3b96b4f3ae8bd54748e9d62a58284d9d7 \ + --hash=sha256:9965e49c6905840e526e5429b09e4c154355b6ecc0a2f05492eda2928190311d \ + --hash=sha256:9f62a727f5c590c78c2d12fda302d1895141b767c6488fe623098f8792255fe5 \ + --hash=sha256:a2d5be50ac4a0976817144c7d653e34df2f9436d15555189f5b6f61161d64183 \ + --hash=sha256:a5939ec826f7faec434e2d406ff5e4eaf1716eb1f247d68cd3d0b3612f7b4c8a \ + --hash=sha256:aac218feb4af73db8417ca7518fb3bade4534fcca6e3fb00f84966811dd94450 \ + --hash=sha256:adad1ee4ab9888f12dac2529276704e719efcf472e38df7813f5284db699b4ec \ + --hash=sha256:b69f9138dec566962ec65623c9d57bee44412d2fc71065a5f3ebb3820bdeee96 \ + --hash=sha256:c41bbaae89e32fc582448e71974de738c055aef5ab474fb25692981a08df808a \ + --hash=sha256:c62376890b819bebe3c717a9ac841a532988372b7e600e76f75c9f7c128219d5 \ + --hash=sha256:ce937a2a2c020bcad1c9fde02892392a1123de6dda906ddba62bfe8f3e5989a2 \ + --hash=sha256:db4c7f7e60ca6f7d6c1785070f3e5771fcb9b2d88546e334d2f2c3934d949028 \ + --hash=sha256:e0014e29637125f4997c174dd6167407162d7af0da73414a9340461ea8573252 \ + --hash=sha256:e088e3865a2270ecbc369924cd7d9fbc565667d9158e7f304e4097ebb9cf98dd \ + --hash=sha256:ea9eebc2ebcba3717e77cdeee3f6203ffc0e78db5f7482c68b1293e8cc156e5e \ + --hash=sha256:edfdf0a5abc5c9bf2052ebaec20e67abd52e92d257e4f2d30e02c354ed3e6030 \ + --hash=sha256:f3d4ee957a727ccb5a36f1b0a6dbd9fad5dedd2a41eada99a8df55c12896e18d \ + --hash=sha256:f79db3652ed743309f116ba863dae0c974a41b688242482638b892246b7db21d +pygments==2.15.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c \ + --hash=sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1 +pymilvus==2.2.13 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:72da36cb5f4f84d7a8307202fcaa9a7fc4497d28d2d2235045ba93a430691ef1 \ + --hash=sha256:ac991863bd63e860c1210d096695297175c6ed09f4de762cf42394cb5aecd1f6 +python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ + --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 +python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ + --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +pytz==2023.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588 \ + --hash=sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb +pywin32==306 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" \ + --hash=sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d \ + --hash=sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65 \ + --hash=sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e \ + --hash=sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b \ + --hash=sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4 \ + --hash=sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040 \ + --hash=sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a \ + --hash=sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36 \ + --hash=sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8 \ + --hash=sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e \ + --hash=sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802 \ + --hash=sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a \ + --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ + --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 +qdrant-client==1.3.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:9640855585d1f532094e342f07e0f2ef00652a60fc5d903c92ca3989a1e86318 \ + --hash=sha256:a999358b10e611d71b4b04c6ded36a6cfc963e56b4c3f99d9c1a603ca524a82e +redis==4.6.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:585dc516b9eb042a619ef0a39c3d7d55fe81bdb4df09a52c9cdde0d07bf1aa7d \ + --hash=sha256:e2b03db868160ee4591de3cb90d40ebb50a90dd302138775937f6a42b7ed183c +requests==2.31.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ + --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 +setuptools==68.0.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f \ + --hash=sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235 +six==1.16.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ + --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 +sniffio==1.3.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ + --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 +stack-data==0.6.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815 \ + --hash=sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8 +stopit==1.1.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:f7f39c583fd92027bd9d06127b259aee7a5b7945c1f1fa56263811e1e766996d +tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" \ + --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ + --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f +tqdm==4.65.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5 \ + --hash=sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671 +traitlets==5.9.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8 \ + --hash=sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9 +typer==0.6.1 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:2d5720a5e63f73eaf31edaa15f6ab87f35f0690f8ca233017d7d23d743a91d73 \ + --hash=sha256:54b19e5df18654070a82f8c2aa1da456a4ac16a2a83e6dcd9f170e291c56338e +typing-extensions==4.5.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb \ + --hash=sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4 +typish==1.9.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:03cfee5e6eb856dbf90244e18f4e4c41044c8790d5779f4e775f63f982e2f896 +tzdata==2023.3 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a \ + --hash=sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda +ujson==5.8.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:07d459aca895eb17eb463b00441986b021b9312c6c8cc1d06880925c7f51009c \ + --hash=sha256:0be81bae295f65a6896b0c9030b55a106fb2dec69ef877253a87bc7c9c5308f7 \ + --hash=sha256:0fe1b7edaf560ca6ab023f81cbeaf9946a240876a993b8c5a21a1c539171d903 \ + --hash=sha256:102bf31c56f59538cccdfec45649780ae00657e86247c07edac434cb14d5388c \ + --hash=sha256:11da6bed916f9bfacf13f4fc6a9594abd62b2bb115acfb17a77b0f03bee4cfd5 \ + --hash=sha256:16fde596d5e45bdf0d7de615346a102510ac8c405098e5595625015b0d4b5296 \ + --hash=sha256:193349a998cd821483a25f5df30b44e8f495423840ee11b3b28df092ddfd0f7f \ + --hash=sha256:20768961a6a706170497129960762ded9c89fb1c10db2989c56956b162e2a8a3 \ + --hash=sha256:27a2a3c7620ebe43641e926a1062bc04e92dbe90d3501687957d71b4bdddaec4 \ + --hash=sha256:2873d196725a8193f56dde527b322c4bc79ed97cd60f1d087826ac3290cf9207 \ + --hash=sha256:299a312c3e85edee1178cb6453645217ba23b4e3186412677fa48e9a7f986de6 \ + --hash=sha256:2a64cc32bb4a436e5813b83f5aab0889927e5ea1788bf99b930fad853c5625cb \ + --hash=sha256:2b852bdf920fe9f84e2a2c210cc45f1b64f763b4f7d01468b33f7791698e455e \ + --hash=sha256:2e72ba76313d48a1a3a42e7dc9d1db32ea93fac782ad8dde6f8b13e35c229130 \ + --hash=sha256:3659deec9ab9eb19e8646932bfe6fe22730757c4addbe9d7d5544e879dc1b721 \ + --hash=sha256:3b27a8da7a080add559a3b73ec9ebd52e82cc4419f7c6fb7266e62439a055ed0 \ + --hash=sha256:3f9b63530a5392eb687baff3989d0fb5f45194ae5b1ca8276282fb647f8dcdb3 \ + --hash=sha256:407d60eb942c318482bbfb1e66be093308bb11617d41c613e33b4ce5be789adc \ + --hash=sha256:40931d7c08c4ce99adc4b409ddb1bbb01635a950e81239c2382cfe24251b127a \ + --hash=sha256:48c7d373ff22366eecfa36a52b9b55b0ee5bd44c2b50e16084aa88b9de038916 \ + --hash=sha256:4ddeabbc78b2aed531f167d1e70387b151900bc856d61e9325fcdfefb2a51ad8 \ + --hash=sha256:5ac97b1e182d81cf395ded620528c59f4177eee024b4b39a50cdd7b720fdeec6 \ + --hash=sha256:5ce24909a9c25062e60653073dd6d5e6ec9d6ad7ed6e0069450d5b673c854405 \ + --hash=sha256:69b3104a2603bab510497ceabc186ba40fef38ec731c0ccaa662e01ff94a985c \ + --hash=sha256:6a4dafa9010c366589f55afb0fd67084acd8added1a51251008f9ff2c3e44042 \ + --hash=sha256:6d230d870d1ce03df915e694dcfa3f4e8714369cce2346686dbe0bc8e3f135e7 \ + --hash=sha256:78e318def4ade898a461b3d92a79f9441e7e0e4d2ad5419abed4336d702c7425 \ + --hash=sha256:7a42baa647a50fa8bed53d4e242be61023bd37b93577f27f90ffe521ac9dc7a3 \ + --hash=sha256:7cba16b26efe774c096a5e822e4f27097b7c81ed6fb5264a2b3f5fd8784bab30 \ + --hash=sha256:7d8283ac5d03e65f488530c43d6610134309085b71db4f675e9cf5dff96a8282 \ + --hash=sha256:7ecc33b107ae88405aebdb8d82c13d6944be2331ebb04399134c03171509371a \ + --hash=sha256:9249fdefeb021e00b46025e77feed89cd91ffe9b3a49415239103fc1d5d9c29a \ + --hash=sha256:9399eaa5d1931a0ead49dce3ffacbea63f3177978588b956036bfe53cdf6af75 \ + --hash=sha256:94c7bd9880fa33fcf7f6d7f4cc032e2371adee3c5dba2922b918987141d1bf07 \ + --hash=sha256:9571de0c53db5cbc265945e08f093f093af2c5a11e14772c72d8e37fceeedd08 \ + --hash=sha256:9721cd112b5e4687cb4ade12a7b8af8b048d4991227ae8066d9c4b3a6642a582 \ + --hash=sha256:9ab282d67ef3097105552bf151438b551cc4bedb3f24d80fada830f2e132aeb9 \ + --hash=sha256:9d9707e5aacf63fb919f6237d6490c4e0244c7f8d3dc2a0f84d7dec5db7cb54c \ + --hash=sha256:a70f776bda2e5072a086c02792c7863ba5833d565189e09fabbd04c8b4c3abba \ + --hash=sha256:a89cf3cd8bf33a37600431b7024a7ccf499db25f9f0b332947fbc79043aad879 \ + --hash=sha256:a8c91b6f4bf23f274af9002b128d133b735141e867109487d17e344d38b87d94 \ + --hash=sha256:ad24ec130855d4430a682c7a60ca0bc158f8253ec81feed4073801f6b6cb681b \ + --hash=sha256:ae7f4725c344bf437e9b881019c558416fe84ad9c6b67426416c131ad577df67 \ + --hash=sha256:b748797131ac7b29826d1524db1cc366d2722ab7afacc2ce1287cdafccddbf1f \ + --hash=sha256:bdf04c6af3852161be9613e458a1fb67327910391de8ffedb8332e60800147a2 \ + --hash=sha256:bf5737dbcfe0fa0ac8fa599eceafae86b376492c8f1e4b84e3adf765f03fb564 \ + --hash=sha256:c4e7bb7eba0e1963f8b768f9c458ecb193e5bf6977090182e2b4f4408f35ac76 \ + --hash=sha256:d524a8c15cfc863705991d70bbec998456a42c405c291d0f84a74ad7f35c5109 \ + --hash=sha256:d53039d39de65360e924b511c7ca1a67b0975c34c015dd468fca492b11caa8f7 \ + --hash=sha256:d6f84a7a175c75beecde53a624881ff618e9433045a69fcfb5e154b73cdaa377 \ + --hash=sha256:e0147d41e9fb5cd174207c4a2895c5e24813204499fd0839951d4c8784a23bf5 \ + --hash=sha256:e3673053b036fd161ae7a5a33358ccae6793ee89fd499000204676baafd7b3aa \ + --hash=sha256:e54578fa8838ddc722539a752adfce9372474114f8c127bb316db5392d942f8b \ + --hash=sha256:eb0142f6f10f57598655340a3b2c70ed4646cbe674191da195eb0985a9813b83 \ + --hash=sha256:efeddf950fb15a832376c0c01d8d7713479fbeceaed1eaecb2665aa62c305aec \ + --hash=sha256:f26629ac531d712f93192c233a74888bc8b8212558bd7d04c349125f10199fcf \ + --hash=sha256:f2e385a7679b9088d7bc43a64811a7713cc7c33d032d020f757c54e7d41931ae \ + --hash=sha256:f3554eaadffe416c6f543af442066afa6549edbc34fe6a7719818c3e72ebfe95 \ + --hash=sha256:f4511560d75b15ecb367eef561554959b9d49b6ec3b8d5634212f9fed74a6df1 \ + --hash=sha256:f504117a39cb98abba4153bf0b46b4954cc5d62f6351a14660201500ba31fe7f \ + --hash=sha256:fb87decf38cc82bcdea1d7511e73629e651bdec3a43ab40985167ab8449b769c +urllib3==1.26.16 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f \ + --hash=sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14 +validators==0.20.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a +wcwidth==0.2.6 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e \ + --hash=sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0 +weaviate-client==3.21.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:420444ded7106fb000f4f8b2321b5f5fa2387825aa7a303d702accf61026f9d2 \ + --hash=sha256:ec94ac554883c765e94da8b2947c4f0fa4a0378ed3bbe9f3653df3a5b1745a6d From 1e8e7196a2438a0885df846bb33d8a0929ea78e5 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 4 Jul 2023 22:18:02 +0100 Subject: [PATCH 002/204] Included batch_size and parallel info in upload results --- engine/base_client/upload.py | 2 ++ engine/clients/redis/configure.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/engine/base_client/upload.py b/engine/base_client/upload.py index 8ce0fb28..b70b8e6a 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -77,6 +77,8 @@ def upload( "upload_time": upload_time, "total_time": total_time, "latencies": latencies, + "parallel": parallel, + "batch_size": batch_size, } @classmethod diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 6bd49d2b..ae9fa1f9 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -31,7 +31,8 @@ def clean(self): try: index.dropindex(delete_documents=True) except redis.ResponseError as e: - print(e) + if "Unknown Index name" not in e.__str__(): + print(e) def recreate(self, dataset: Dataset, collection_params): self.clean() From 084a68af0e6421bfc4c270297d1b518c5edcd5f8 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 5 Jul 2023 13:49:06 +0100 Subject: [PATCH 003/204] Enable passing env variables for url and api_key qdrant parameters --- engine/clients/qdrant/config.py | 2 ++ engine/clients/qdrant/configure.py | 8 +++++--- engine/clients/qdrant/search.py | 25 ++++++++++++++++++------- engine/clients/qdrant/upload.py | 7 +++++-- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/engine/clients/qdrant/config.py b/engine/clients/qdrant/config.py index 31d34007..aa5afeeb 100644 --- a/engine/clients/qdrant/config.py +++ b/engine/clients/qdrant/config.py @@ -1,3 +1,5 @@ import os 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) diff --git a/engine/clients/qdrant/configure.py b/engine/clients/qdrant/configure.py index 824d8058..6c3d7762 100644 --- a/engine/clients/qdrant/configure.py +++ b/engine/clients/qdrant/configure.py @@ -4,7 +4,7 @@ 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 +from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY, QDRANT_URL class QdrantConfigurator(BaseConfigurator): @@ -23,8 +23,10 @@ class QdrantConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - - self.client = QdrantClient(host=host, **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) diff --git a/engine/clients/qdrant/search.py b/engine/clients/qdrant/search.py index 06d4f0ab..34d5419c 100644 --- a/engine/clients/qdrant/search.py +++ b/engine/clients/qdrant/search.py @@ -6,7 +6,7 @@ from qdrant_client.http import models as rest from engine.base_client.search import BaseSearcher -from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME +from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY, QDRANT_URL from engine.clients.qdrant.parser import QdrantConditionParser @@ -17,12 +17,23 @@ class QdrantSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - cls.client: QdrantClient = QdrantClient( - host, - prefer_grpc=True, - limits=httpx.Limits(max_connections=None, max_keepalive_connections=0), - **connection_params - ) + if QDRANT_URL is None: + cls.client: QdrantClient = 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 = 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 7e2511cc..173b2a4d 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -5,7 +5,7 @@ from qdrant_client.http.models import Batch, CollectionStatus from engine.base_client.upload import BaseUploader -from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME +from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY, QDRANT_URL class QdrantUploader(BaseUploader): @@ -14,7 +14,10 @@ class QdrantUploader(BaseUploader): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - cls.client = QdrantClient(host=host, prefer_grpc=True, **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 From d890fa138637c0a711f040c8f29547e0b4ffcb53 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 5 Jul 2023 14:01:45 +0100 Subject: [PATCH 004/204] Print ef info if available in config --- engine/base_client/client.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 171a6e47..d838e378 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -83,7 +83,9 @@ def run_experiment( print("Experiment stage: Search") for search_id, searcher in enumerate(self.searchers): search_params = {**searcher.search_params} - ef = search_params["search_params"]["ef"] + ef = "n/a" + if "ef" in search_params["search_params"]: + ef = search_params["search_params"]["ef"] parallel = search_params["parallel"] if "parallel" in search_params else 1 print(f"\tef runtime: {ef}; #clients {parallel}") search_stats = searcher.search_all( From dcdfe21f2ce7ebe6da88e310dc53e11d0f0005eb Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 5 Jul 2023 14:14:41 +0100 Subject: [PATCH 005/204] waiting on full index before return qdrant --- engine/clients/qdrant/upload.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index 173b2a4d..d8c5d2d1 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -45,13 +45,20 @@ def wait_collection_green(cls): while True: time.sleep(wait_time) total += wait_time + collection_info = cls.client.get_collection(QDRANT_COLLECTION_NAME) if collection_info.status != CollectionStatus.GREEN: continue time.sleep(wait_time) collection_info = cls.client.get_collection(QDRANT_COLLECTION_NAME) if collection_info.status == CollectionStatus.GREEN: - break + vectors_count = collection_info.vectors_count + indexed_vectors_count = collection_info.indexed_vectors_count + if vectors_count > indexed_vectors_count: + print(f"waiting on fully indexed collection. vectors_count {vectors_count} != indexed_vectors_count {indexed_vectors_count}") + continue + else: + break return total @classmethod From a1ba1b144e84ed827ccc53d4df867894e99624b1 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 5 Jul 2023 15:09:06 +0100 Subject: [PATCH 006/204] Revert "waiting on full index before return qdrant" This reverts commit dcdfe21f2ce7ebe6da88e310dc53e11d0f0005eb. --- engine/clients/qdrant/upload.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index d8c5d2d1..173b2a4d 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -45,20 +45,13 @@ def wait_collection_green(cls): while True: time.sleep(wait_time) total += wait_time - collection_info = cls.client.get_collection(QDRANT_COLLECTION_NAME) if collection_info.status != CollectionStatus.GREEN: continue time.sleep(wait_time) collection_info = cls.client.get_collection(QDRANT_COLLECTION_NAME) if collection_info.status == CollectionStatus.GREEN: - vectors_count = collection_info.vectors_count - indexed_vectors_count = collection_info.indexed_vectors_count - if vectors_count > indexed_vectors_count: - print(f"waiting on fully indexed collection. vectors_count {vectors_count} != indexed_vectors_count {indexed_vectors_count}") - continue - else: - break + break return total @classmethod From 87b03303c8ebb15af0f8d3e73e420e9e5e8bd87d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 10 Jul 2023 16:00:45 +0100 Subject: [PATCH 007/204] Added REDIS_QUERY_TIMEOUT config parameter --- engine/clients/redis/config.py | 2 + engine/clients/redis/search.py | 4 +- poetry.lock | 98 +++++++++- pyproject.toml | 2 +- requirements.txt | 328 ++++++++++++++++----------------- 5 files changed, 261 insertions(+), 173 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index 3dfb8df9..f61e242c 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -2,3 +2,5 @@ REDIS_PORT = int(os.getenv("REDIS_PORT",6379)) REDIS_AUTH = os.getenv("REDIS_AUTH",None) REDIS_USER = os.getenv("REDIS_USER",None) +# 90 seconds timeout +REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT",90*1000)) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 16739429..1c7817bd 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -5,7 +5,7 @@ from redis.commands.search.query import Query from engine.base_client.search import BaseSearcher -from engine.clients.redis.config import REDIS_PORT +from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT from engine.clients.redis.parser import RedisConditionParser @@ -36,7 +36,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: .paging(0, top) .return_fields("vector_score") .dialect(2) - .timeout(0) + .timeout(REDIS_QUERY_TIMEOUT) ) params_dict = { "vec_param": np.array(vector).astype(np.float32).tobytes(), diff --git a/poetry.lock b/poetry.lock index 9a8c8575..65734088 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry and should not be changed by hand. [[package]] name = "anyio" version = "3.7.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -25,6 +26,7 @@ trio = ["trio (<0.22)"] name = "appnope" version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" +category = "main" optional = false python-versions = "*" files = [ @@ -36,6 +38,7 @@ files = [ name = "asttokens" version = "2.2.1" description = "Annotate AST trees with source code positions" +category = "main" optional = false python-versions = "*" files = [ @@ -53,6 +56,7 @@ test = ["astroid", "pytest"] name = "async-timeout" version = "4.0.2" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -64,6 +68,7 @@ files = [ name = "authlib" version = "1.2.1" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." +category = "main" optional = false python-versions = "*" files = [ @@ -78,6 +83,7 @@ cryptography = ">=3.2" name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" +category = "main" optional = false python-versions = "*" files = [ @@ -89,6 +95,7 @@ files = [ name = "certifi" version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -100,6 +107,7 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" files = [ @@ -176,6 +184,7 @@ pycparser = "*" name = "cfgv" version = "3.3.1" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -187,6 +196,7 @@ files = [ name = "charset-normalizer" version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -271,6 +281,7 @@ files = [ name = "click" version = "8.1.3" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -285,6 +296,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -296,6 +308,7 @@ files = [ name = "cryptography" version = "41.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -337,6 +350,7 @@ test-randomorder = ["pytest-randomly"] name = "decorator" version = "5.1.1" description = "Decorators for Humans" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -348,6 +362,7 @@ files = [ name = "distlib" version = "0.3.6" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -359,6 +374,7 @@ files = [ name = "elastic-transport" version = "8.4.0" description = "Transport classes and utilities shared among Python Elastic client libraries" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -377,6 +393,7 @@ develop = ["aiohttp", "mock", "pytest", "pytest-asyncio", "pytest-cov", "pytest- name = "elasticsearch" version = "8.8.0" description = "Python client for Elasticsearch" +category = "main" optional = false python-versions = ">=3.6, <4" files = [ @@ -395,6 +412,7 @@ requests = ["requests (>=2.4.0,<3.0.0)"] name = "environs" version = "9.5.0" description = "simplified environment variable parsing" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -416,6 +434,7 @@ tests = ["dj-database-url", "dj-email-url", "django-cache-url", "pytest"] name = "exceptiongroup" version = "1.1.1" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -430,6 +449,7 @@ test = ["pytest (>=6)"] name = "executing" version = "1.2.0" description = "Get the currently executing AST node of a frame, and other information" +category = "main" optional = false python-versions = "*" files = [ @@ -444,6 +464,7 @@ tests = ["asttokens", "littleutils", "pytest", "rich"] name = "filelock" version = "3.12.2" description = "A platform independent file lock." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -459,6 +480,7 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "p name = "grpcio" version = "1.53.0" description = "HTTP/2-based RPC framework" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -516,6 +538,7 @@ protobuf = ["grpcio-tools (>=1.53.0)"] name = "grpcio-tools" version = "1.53.0" description = "Protobuf code generator for gRPC" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -575,6 +598,7 @@ setuptools = "*" name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -586,6 +610,7 @@ files = [ name = "h2" version = "4.1.0" description = "HTTP/2 State-Machine based protocol implementation" +category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -601,6 +626,7 @@ hyperframe = ">=6.0,<7" name = "h5py" version = "3.9.0" description = "Read and write HDF5 files from Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -634,6 +660,7 @@ numpy = ">=1.17.3" name = "hpack" version = "4.0.0" description = "Pure-Python HPACK header compression" +category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -645,6 +672,7 @@ files = [ name = "httpcore" version = "0.17.2" description = "A minimal low-level HTTP client." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -656,16 +684,17 @@ files = [ anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" +sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "httpx" version = "0.24.1" description = "The next generation HTTP client." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -682,14 +711,15 @@ sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "hyperframe" version = "6.0.1" description = "HTTP/2 framing layer for Python" +category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -701,6 +731,7 @@ files = [ name = "identify" version = "2.5.24" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -715,6 +746,7 @@ license = ["ukkonen"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -726,6 +758,7 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -737,6 +770,7 @@ files = [ name = "ipdb" version = "0.13.13" description = "IPython-enabled pdb" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -753,6 +787,7 @@ tomli = {version = "*", markers = "python_version > \"3.6\" and python_version < name = "ipython" version = "8.12.2" description = "IPython: Productive Interactive Computing" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -792,6 +827,7 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa name = "jedi" version = "0.18.2" description = "An autocompletion tool for Python that can be used for text editors." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -811,6 +847,7 @@ testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jsons" version = "1.6.3" description = "For serializing Python objects to JSON (dicts) and back" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -828,6 +865,7 @@ test = ["attrs", "codecov", "coverage", "dataclasses", "pytest", "scons", "tzdat name = "marshmallow" version = "3.19.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -848,6 +886,7 @@ tests = ["pytest", "pytz", "simplejson"] name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -862,6 +901,7 @@ traitlets = "*" name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -876,6 +916,7 @@ setuptools = "*" name = "numpy" version = "1.24.4" description = "Fundamental package for array computing in Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -913,6 +954,7 @@ files = [ name = "opensearch-py" version = "2.2.0" description = "Python client for OpenSearch" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" files = [ @@ -937,6 +979,7 @@ kerberos = ["requests-kerberos"] name = "packaging" version = "23.1" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -948,6 +991,7 @@ files = [ name = "pandas" version = "2.0.2" description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1015,6 +1059,7 @@ xml = ["lxml (>=4.6.3)"] name = "parso" version = "0.8.3" description = "A Python Parser" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1030,6 +1075,7 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pexpect" version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." +category = "main" optional = false python-versions = "*" files = [ @@ -1044,6 +1090,7 @@ ptyprocess = ">=0.5" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" +category = "main" optional = false python-versions = "*" files = [ @@ -1055,6 +1102,7 @@ files = [ name = "platformdirs" version = "3.8.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1070,6 +1118,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "pluggy" version = "1.2.0" description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1085,6 +1134,7 @@ testing = ["pytest", "pytest-benchmark"] name = "portalocker" version = "2.7.0" description = "Wraps the portalocker recipe for easy usage" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1104,6 +1154,7 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p name = "pre-commit" version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1122,6 +1173,7 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.38" description = "Library for building powerful interactive command lines in Python" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -1136,6 +1188,7 @@ wcwidth = "*" name = "protobuf" version = "4.23.3" description = "" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1158,6 +1211,7 @@ files = [ name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" +category = "main" optional = false python-versions = "*" files = [ @@ -1169,6 +1223,7 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" +category = "main" optional = false python-versions = "*" files = [ @@ -1183,6 +1238,7 @@ tests = ["pytest"] name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1194,6 +1250,7 @@ files = [ name = "pydantic" version = "1.10.9" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1246,6 +1303,7 @@ email = ["email-validator (>=1.0.3)"] name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1260,6 +1318,7 @@ plugins = ["importlib-metadata"] name = "pymilvus" version = "2.2.12" description = "Python Sdk for Milvus" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1279,6 +1338,7 @@ ujson = ">=2.0.0" name = "pytest" version = "7.4.0" description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1301,6 +1361,7 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1315,6 +1376,7 @@ six = ">=1.5" name = "python-dotenv" version = "1.0.0" description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1329,6 +1391,7 @@ cli = ["click (>=5.0)"] name = "pytz" version = "2023.3" description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" files = [ @@ -1340,6 +1403,7 @@ files = [ name = "pywin32" version = "306" description = "Python for Window Extensions" +category = "main" optional = false python-versions = "*" files = [ @@ -1363,6 +1427,7 @@ files = [ name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1412,6 +1477,7 @@ files = [ name = "qdrant-client" version = "1.3.1" description = "Client library for the Qdrant vector search engine" +category = "main" optional = false python-versions = ">=3.7,<3.12" files = [ @@ -1433,6 +1499,7 @@ urllib3 = ">=1.26.14,<2.0.0" name = "redis" version = "4.6.0" description = "Python client for Redis database and key-value store" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1451,6 +1518,7 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1472,6 +1540,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "setuptools" version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1488,6 +1557,7 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1499,6 +1569,7 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1510,6 +1581,7 @@ files = [ name = "stack-data" version = "0.6.2" description = "Extract data from python stack frames and tracebacks for informative displays" +category = "main" optional = false python-versions = "*" files = [ @@ -1529,6 +1601,7 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "stopit" version = "1.1.2" description = "Timeout control decorator and context managers, raise any exception in another thread" +category = "main" optional = false python-versions = "*" files = [ @@ -1539,6 +1612,7 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1550,6 +1624,7 @@ files = [ name = "tqdm" version = "4.65.0" description = "Fast, Extensible Progress Meter" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1570,6 +1645,7 @@ telegram = ["requests"] name = "traitlets" version = "5.9.0" description = "Traitlets Python configuration system" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1585,6 +1661,7 @@ test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] name = "typer" version = "0.6.1" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1605,6 +1682,7 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6. name = "typing-extensions" version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1616,6 +1694,7 @@ files = [ name = "typish" version = "1.9.3" description = "Functionality for types" +category = "main" optional = false python-versions = "*" files = [ @@ -1629,6 +1708,7 @@ test = ["codecov", "coverage", "mypy", "nptyping (>=1.3.0)", "numpy", "pycodesty name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" +category = "main" optional = false python-versions = ">=2" files = [ @@ -1640,6 +1720,7 @@ files = [ name = "ujson" version = "5.8.0" description = "Ultra fast JSON encoder and decoder for Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1710,6 +1791,7 @@ files = [ name = "urllib3" version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -1726,6 +1808,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "validators" version = "0.20.0" description = "Python Data Validation for Humans™." +category = "main" optional = false python-versions = ">=3.4" files = [ @@ -1742,6 +1825,7 @@ test = ["flake8 (>=2.4.0)", "isort (>=4.2.2)", "pytest (>=2.2.3)"] name = "virtualenv" version = "20.23.1" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1762,6 +1846,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" +category = "main" optional = false python-versions = "*" files = [ @@ -1773,6 +1858,7 @@ files = [ name = "weaviate-client" version = "3.21.0" description = "A python native Weaviate client" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1792,4 +1878,4 @@ grpc = ["grpcio", "grpcio-tools"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "e1735c7182c7aa6f021f5eebda828a33bf144f28010558d46eb8bbc9f3ba4a83" +content-hash = "e76841fa20b3c72e2bd440df528f3dcb093f595fab794a86fabd14fe83444efb" diff --git a/pyproject.toml b/pyproject.toml index c70dc3a1..d7417508 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ h5py = "^3.7.0" weaviate-client = "^3.6.0" elasticsearch = "^8.4.3" pymilvus = "^2.2.0" -redis = "^4.3.4" +redis = "^4.4.1" ipdb = "^0.13.9" stopit = "^1.1.2" opensearch-py = "^2.2.0" diff --git a/requirements.txt b/requirements.txt index bfcbc4ef..c81f9888 100644 --- a/requirements.txt +++ b/requirements.txt @@ -198,104 +198,104 @@ elasticsearch==8.8.0 ; python_version >= "3.8" and python_version < "3.12" \ environs==9.5.0 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:1e549569a3de49c05f856f40bce86979e7d5ffbbc4398e7f338574c220189124 \ --hash=sha256:a76307b36fbe856bdca7ee9161e6c466fd7fcffc297109a118c59b54e27e30c9 -exceptiongroup==1.1.2 ; python_version >= "3.8" and python_version < "3.11" \ - --hash=sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5 \ - --hash=sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f +exceptiongroup==1.1.1 ; python_version >= "3.8" and python_version < "3.11" \ + --hash=sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e \ + --hash=sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785 executing==1.2.0 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc \ --hash=sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107 -grpcio-tools==1.56.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:02b23a12b91287ebea14b3685735d1d675e77c3cd365ec1771c3e9afbeba1ec6 \ - --hash=sha256:0a8767e4de0f573c678313c5de075ac0e163a192bb135018e45015a22f234387 \ - --hash=sha256:11cdd9cbf0c09c3a761c6f59dfd7128104be7cd393334efe386d4fc3f990ee1a \ - --hash=sha256:128bb13fe9a2681eeb08175f5fbc8e2d8953d7d0dd240e96f9244b9d2547a1aa \ - --hash=sha256:142530b9fdfabe04f0c7e5dacd45b6c419d39704fa439cc0aabf73ea0d8f916d \ - --hash=sha256:168940a4a955b6c65da978dbf62e1c36e3a311bb27f649fd201a228e2583a6d4 \ - --hash=sha256:1bd361fcc967c21672ba855fc77ea0e7afa51664033a746df96545f84edc4670 \ - --hash=sha256:21cf32ccffd4f1800b0dcdf58aa1fc7f626795c9da784c3d817c944edcf2d3ae \ - --hash=sha256:23e2ef1dc6a9bf766f091e2c52a68e54d0aff3548f94562e61fb0ac3874d514a \ - --hash=sha256:282176066fb082ad21c403b84f9d6b440a20482e6f52b83bb2adf54d6fdcae9f \ - --hash=sha256:2b7a4eb5003a29eecd71707589f93ae7e8fa2e681366a811b3f86695055d8666 \ - --hash=sha256:2c1c43d185ebf904c3deec23c36ca2ba4e95db999cf00fc8f85eda4551622a26 \ - --hash=sha256:2d1ee9e13ce135a6ed451b428ef14af131dc7df2551a5344ff4f8aee2d9fab99 \ - --hash=sha256:39f5877cea514b3da9f2683dfb3ffb45ef47b05f4ff39c287d7d61c5057f48b8 \ - --hash=sha256:3a4b06169493f9454a7f2516c5d41b566d9734e553bbc505f2a7837f7f4a2df1 \ - --hash=sha256:3de6c08b545920a39b31ed13305f946c00b19ac1b13d26119f111b6360f22ccf \ - --hash=sha256:4acdc7b957abfd76581717f0ac8e4408e0a85b7d0ac8d2cdf4d964f16926b897 \ - --hash=sha256:4d59009ed52220eb2d62f5cefa4e58dec930fb92fab27bb390c4cf1d360ac7e1 \ - --hash=sha256:5f5c416b88d76fbdb548cfee0486928748816b700ece6e591006e5b1dc67598f \ - --hash=sha256:5fd4c005a4afec16578849bc522ddf3298d6d499b3d37bf51314b086c714cdd5 \ - --hash=sha256:781cf09e4d5c9288708f6ec9c3eae64d9d5a0f4c46c7ebe70ebb7ab4f6384789 \ - --hash=sha256:79291bfb1fe5f21d99f4839f43d3c5d44c5402c830a24dbb2811d785dd21264b \ - --hash=sha256:7e6bcb194b81e372411494d8ed69fab89aa3452b7275fce4f7917fbe7b04fb72 \ - --hash=sha256:7f063443870650e55012fdb3a58ff4ce5f4042b81dad6b749333ee8146157511 \ - --hash=sha256:80d75856f8ec949847386ad2f56a460f21c63bf82ce99ca5b6aa512c0b875fb1 \ - --hash=sha256:8115b416ea2cad8a87dc3aadfaf26da684e003c3770b12e7219b462505bb5b85 \ - --hash=sha256:8870ab60f8a76b4a7e43184ee03d28112b976d83c43d41cec821f47b3a297da2 \ - --hash=sha256:8989d363ac1996238fee61c8f5663f15a8fc362cb1e758c4a686b76cb457cd70 \ - --hash=sha256:96fe2f7f5805d88cb7f2e3e3502550b2883dfab0f9efcf3cbd444942cf2ee1da \ - --hash=sha256:9cffff0b4af80285fa49637d69b69d640eb775dc74b23635e4de5faad9e7e744 \ - --hash=sha256:ac33fd2d02d24101ea389be8e05b928acb58be56403d4ebc3aecfab473fa4a25 \ - --hash=sha256:accf713f51da74b1a18aa4b31df0ab135510704661f735a938081777b79a4c25 \ - --hash=sha256:b12bb8c1d408ae40e4c806a3a8ebda2d107310e46696e1da13d0dc3f91fbd19d \ - --hash=sha256:b309659534b5d930f9ab6d521670c2dd86cb6ef7f47f37f73f96557e2ec13a49 \ - --hash=sha256:b57f7f01eafbfe3a293f2efffb675774dbe4074c4627975ec4dc4aa5766801fb \ - --hash=sha256:c43b4fe8c8df4c52d3106bba2cf427f0e46bbebb80e127fbbc3134db0fead7be \ - --hash=sha256:c62f07452dee3f1ed23aeaef821797c5e516f79535e97fe6a6b0a0ee8db1cc91 \ - --hash=sha256:cd69107705794e815a8b262722c6fea995911cb1dfc1310abf63b476165335d6 \ - --hash=sha256:cdbae7312e6d132d38ec2c1611b8cafb783e0416cc5c6deae04efde5f16fb190 \ - --hash=sha256:d9b8d1c42854d3433c058795f52b1418b53dd8c1e9811fecb1312202e803a2c5 \ - --hash=sha256:e4cb62a521efbca4cb1ad50233aa400574b3daaf6eb26707d661a0afe8191d92 \ - --hash=sha256:e59ab6c0bf4a8bb975553ad578d4425bd192775ae384f9406d77d31ad00f6efe \ - --hash=sha256:f3ab1a9fad636302f7307d143f64a9fbd11bc041652bf53bb016006e9a5ca820 \ - --hash=sha256:f7302acaa07cf4966c926fcd6a60c8d30a697f730c38168bf83e1519b464115b \ - --hash=sha256:fa6d9bdd75d3625dae38372b43696e159c10aa98719b4302b1e94f1ff7878d47 -grpcio==1.56.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:008767c0aed4899e657b50f2e0beacbabccab51359eba547f860e7c55f2be6ba \ - --hash=sha256:03a80451530fd3b8b155e0c4480434f6be669daf7ecba56f73ef98f94222ee01 \ - --hash=sha256:0409de787ebbf08c9d2bca2bcc7762c1efe72eada164af78b50567a8dfc7253c \ - --hash=sha256:14e70b4dda3183abea94c72d41d5930c333b21f8561c1904a372d80370592ef3 \ - --hash=sha256:17f47aeb9be0da5337f9ff33ebb8795899021e6c0741ee68bd69774a7804ca86 \ - --hash=sha256:187b8f71bad7d41eea15e0c9812aaa2b87adfb343895fffb704fb040ca731863 \ - --hash=sha256:1eadd6de258901929223f422ffed7f8b310c0323324caf59227f9899ea1b1674 \ - --hash=sha256:38fdf5bd0a1c754ce6bf9311a3c2c7ebe56e88b8763593316b69e0e9a56af1de \ - --hash=sha256:4241a1c2c76e748023c834995cd916570e7180ee478969c2d79a60ce007bc837 \ - --hash=sha256:437af5a7673bca89c4bc0a993382200592d104dd7bf55eddcd141cef91f40bab \ - --hash=sha256:43c50d810cc26349b093bf2cfe86756ab3e9aba3e7e681d360930c1268e1399a \ - --hash=sha256:4c08ee21b3d10315b8dc26f6c13917b20ed574cdbed2d2d80c53d5508fdcc0f2 \ - --hash=sha256:4f84a6fd4482e5fe73b297d4874b62a535bc75dc6aec8e9fe0dc88106cd40397 \ - --hash=sha256:4feee75565d1b5ab09cb3a5da672b84ca7f6dd80ee07a50f5537207a9af543a4 \ - --hash=sha256:50f4daa698835accbbcc60e61e0bc29636c0156ddcafb3891c987e533a0031ba \ - --hash=sha256:59c4e606993a47146fbeaf304b9e78c447f5b9ee5641cae013028c4cca784617 \ - --hash=sha256:5d2fc471668a7222e213f86ef76933b18cdda6a51ea1322034478df8c6519959 \ - --hash=sha256:64bd3abcf9fb4a9fa4ede8d0d34686314a7075f62a1502217b227991d9ca4245 \ - --hash=sha256:66f0369d27f4c105cd21059d635860bb2ea81bd593061c45fb64875103f40e4a \ - --hash=sha256:6b5ce42a5ebe3e04796246ba50357f1813c44a6efe17a37f8dc7a5c470377312 \ - --hash=sha256:72836b5a1d4f508ffbcfe35033d027859cc737972f9dddbe33fb75d687421e2e \ - --hash=sha256:76b6e6e1ee9bda32e6e933efd61c512e9a9f377d7c580977f090d1a9c78cca44 \ - --hash=sha256:79d4c5911d12a7aa671e5eb40cbb50a830396525014d2d6f254ea2ba180ce637 \ - --hash=sha256:7beb84ebd0a3f732625124b73969d12b7350c5d9d64ddf81ae739bbc63d5b1ed \ - --hash=sha256:8219f17baf069fe8e42bd8ca0b312b875595e43a70cabf397be4fda488e2f27d \ - --hash=sha256:83ec714bbbe9b9502177c842417fde39f7a267031e01fa3cd83f1ca49688f537 \ - --hash=sha256:8674fdbd28266d8efbcddacf4ec3643f76fe6376f73283fd63a8374c14b0ef7c \ - --hash=sha256:881575f240eb5db72ddca4dc5602898c29bc082e0d94599bf20588fb7d1ee6a0 \ - --hash=sha256:8b3b2c7b5feef90bc9a5fa1c7f97637e55ec3e76460c6d16c3013952ee479cd9 \ - --hash=sha256:991224fd485e088d3cb5e34366053691a4848a6b7112b8f5625a411305c26691 \ - --hash=sha256:aa08affbf672d051cd3da62303901aeb7042a2c188c03b2c2a2d346fc5e81c14 \ - --hash=sha256:b1f4b6f25a87d80b28dd6d02e87d63fe1577fe6d04a60a17454e3f8077a38279 \ - --hash=sha256:b4638a796778329cc8e142e4f57c705adb286b3ba64e00b0fa91eeb919611be8 \ - --hash=sha256:bd55f743e654fb050c665968d7ec2c33f03578a4bbb163cfce38024775ff54cc \ - --hash=sha256:c0bc9dda550785d23f4f025be614b7faa8d0293e10811f0f8536cf50435b7a30 \ - --hash=sha256:c2148170e01d464d41011a878088444c13413264418b557f0bdcd1bf1b674a0e \ - --hash=sha256:c243b158dd7585021d16c50498c4b2ec0a64a6119967440c5ff2d8c89e72330e \ - --hash=sha256:c63bc5ac6c7e646c296fed9139097ae0f0e63f36f0864d7ce431cce61fe0118a \ - --hash=sha256:c6f36621aabecbaff3e70c4d1d924c76c8e6a7ffec60c331893640a4af0a8037 \ - --hash=sha256:d596408bab632ec7b947761e83ce6b3e7632e26b76d64c239ba66b554b7ee286 \ - --hash=sha256:defdd14b518e6e468466f799aaa69db0355bca8d3a5ea75fb912d28ba6f8af31 \ - --hash=sha256:e2db108b4c8e29c145e95b0226973a66d73ae3e3e7fae00329294af4e27f1c42 \ - --hash=sha256:f92a99ab0c7772fb6859bf2e4f44ad30088d18f7c67b83205297bfb229e0d2cf \ - --hash=sha256:fb34ace11419f1ae321c36ccaa18d81cd3f20728cd191250be42949d6845bb2d \ - --hash=sha256:fdc3a895791af4addbb826808d4c9c35917c59bb5c430d729f44224e51c92d61 +grpcio-tools==1.53.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:0229e6cd442915192b8f8ee2e7e1c8b9986c878bc4dd8be3539f3be35f1b8282 \ + --hash=sha256:102b6d323d7cef7ac29683f949ec66885b417c06df6059f6a88d07c5556c2592 \ + --hash=sha256:17c557240f7fbe1886dcfb5f3ba79740ecb65fe3b93061e64b8f4dfc6a6a5dc5 \ + --hash=sha256:2758ea125442bc81251267fc9c28f65555a571f6a0afda4d71a6e7d669347095 \ + --hash=sha256:2b47f8b1bd3af2fb25548b625ad9c3659da30fe83c06f462f357c754f49b71ae \ + --hash=sha256:2be17265c0f070efd625683cef986e07dbc495103fcc719009ff2f6988003166 \ + --hash=sha256:326c67b35be69409a88632e6145032d53b8b8141634e9cbcd27fa8f9015a112c \ + --hash=sha256:39d0a254de49d852f5fe9f9df0a45b2ae66bc04e2d9ee1d6d2c0ba1e70fac91a \ + --hash=sha256:3cc832e8297e9437bc2b137fe815c8ba1d9af6ffdd76c5c6d7f911bf8e1b0f45 \ + --hash=sha256:41b859cf943256debba1e7b921e3689c89f95495b65f7ad226c4f0e38edf8ee4 \ + --hash=sha256:4605db5a5828205d7fa33a5de9e00723bd037709e74e15c028b9dcec2339b7bc \ + --hash=sha256:4701d48f649443f1101a24d85e9d5ac13346ccac7781e243f49491328e172266 \ + --hash=sha256:4be32c694c760f3281555089f7aed7d48ca7ea4094115a08b5fc895e17d7e62e \ + --hash=sha256:4c6acaca09cfcd59850e27bd138df9d01c0686c42a5412aa6a92141c15316b1e \ + --hash=sha256:613a84ebd1881635370c12503f2b15b37332a53fbac32904c94ac4c0c10f0a2a \ + --hash=sha256:65b77532bb8f6ab1bfbdd2ac0788626a6c05b227f4722d3bbc2c54258e49c3e5 \ + --hash=sha256:6afffd7e97e5bddc63b3ce9abe912b9adb704a36ba86d4406be94426734b97c2 \ + --hash=sha256:6bd4c732d8d7a736e787b5d0963d4195267fc856e1d313d4532d1625e19a0e4a \ + --hash=sha256:7062109553ec1873c5c09cc379b8ae0aa76a2d6d6aae97759b97787b93fa9786 \ + --hash=sha256:7152045190e9bd665d1feaeaef931d82c75cacce2b116ab150befa90855de3d0 \ + --hash=sha256:76898c1dadf8630a75a40b5a89ab38e326f1288dcfde3413cdfa7a58e149c987 \ + --hash=sha256:7728407b1e89fb1473b86152fc33be00f1a25a5aa3264245521f05cbbef9d817 \ + --hash=sha256:7754d6466191d327a0eef364ad5b863477a8fcc12953adc06b30b8e470c70e4a \ + --hash=sha256:7c0ede22796259e83aa1f108038513e86672b2892d3654f94415e3930b74b871 \ + --hash=sha256:7da0fc185735050d8240b1d74c4667a02baf1b4fa379a5fc05d1fc067eeba596 \ + --hash=sha256:830261fe08541f0fd2dd5035264df2b91012988f37aa1d80a0b4ee6404dc25ae \ + --hash=sha256:861f8634cca3ca5bb5336ba16cc78291dba3e7fcadedff195bfdeb433f2c29f2 \ + --hash=sha256:8940d59fca790f1bd45785d0661c3a8c081231c9f8049d7fbf6c6c00737e43da \ + --hash=sha256:925efff2d63ca3266f93c924ffeba5d496f16a8ccbe125fa0d18acf47cc5fa88 \ + --hash=sha256:99ecefb6b66e9fe41468a70ee2f05da2eb9c7bf63867fb9ff07f7dd90ea813ae \ + --hash=sha256:a2faad4b6362e7ff3ae43ef2d51dfce0a3bc32cf52469e88568c3f65cae377d5 \ + --hash=sha256:a8c3e30c531969c62a5a219be414277b269c1be9a76bcd6948571868894e19b2 \ + --hash=sha256:ad0c20688a650e731e8328a7a08899c433a59bfc995a7afcf715b5ad9eca9e7b \ + --hash=sha256:af686b83bc6b5c1f1591c9f49183717974047de9546adcf5e09a18781b550c96 \ + --hash=sha256:b1b76b6ab5c24e44b15d6a7df6c1b81c3099a54b82d41a3ce96e73a2e6a5081c \ + --hash=sha256:b4173b95e2c29a5145c806d16945ce1e5b38a11c7eb6ab1a6d74afc0a2ce47d9 \ + --hash=sha256:b54c64d85bea5c3a3d895454878c7d6bed5cbb80dc3cafcd75dc1e78300d8c95 \ + --hash=sha256:c2cff79be5a06d63e9a6a7e38f8f160ade21517386eabe27afacef65a8531358 \ + --hash=sha256:c9a9e1da1868349eba401e9648eac19132700942c475adcc97b6938bf4bf0182 \ + --hash=sha256:ccf7313e5bee13f2f86d12741489f3ed8c901d6b463dff2604191cd4ff518abb \ + --hash=sha256:d646d65fafbf70a57416493e719a0df7ffa0772133266cfe1b2b72e072ae64a2 \ + --hash=sha256:e18292123c86975d0aa47f1bcb176393640dcc23912e9f3a2247f1eff81ac8e8 \ + --hash=sha256:e76e8dfe6fe4e61ce3049e9d56c0d806d0d3edc28aa32117d1b17f387469c52e \ + --hash=sha256:f31c549d793a0e72c044f724b3373141d2aa9970fe97b1c2cfaa7ea44002b9aa \ + --hash=sha256:f55e2c13620271b7f5a81a489a188d6e34a24da8885d46f1566f0e798cb59e6f +grpcio==1.53.0 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:0698c094688a2dd4c7c2f2c0e3e142cac439a64d1cef6904c97f6cde38ba422f \ + --hash=sha256:104a2210edd3776c38448b4f76c2f16e527adafbde171fc72a8a32976c20abc7 \ + --hash=sha256:14817de09317dd7d3fbc8272864288320739973ef0f4b56bf2c0032349da8cdf \ + --hash=sha256:1948539ce78805d4e6256ab0e048ec793956d54787dc9d6777df71c1d19c7f81 \ + --hash=sha256:19caa5b7282a89b799e63776ff602bb39604f7ca98db6df27e2de06756ae86c3 \ + --hash=sha256:1b172e6d497191940c4b8d75b53de82dc252e15b61de2951d577ec5b43316b29 \ + --hash=sha256:1c734a2d4843e4e14ececf5600c3c4750990ec319e1299db7e4f0d02c25c1467 \ + --hash=sha256:2a912397eb8d23c177d6d64e3c8bc46b8a1c7680b090d9f13a640b104aaec77c \ + --hash=sha256:2eddaae8af625e45b5c8500dcca1043264d751a6872cde2eda5022df8a336959 \ + --hash=sha256:55930c56b8f5b347d6c8c609cc341949a97e176c90f5cbb01d148d778f3bbd23 \ + --hash=sha256:658ffe1e39171be00490db5bd3b966f79634ac4215a1eb9a85c6cd6783bf7f6e \ + --hash=sha256:6601d812105583948ab9c6e403a7e2dba6e387cc678c010e74f2d6d589d1d1b3 \ + --hash=sha256:6b6d60b0958be711bab047e9f4df5dbbc40367955f8651232bfdcdd21450b9ab \ + --hash=sha256:6beb84f83360ff29a3654f43f251ec11b809dcb5524b698d711550243debd289 \ + --hash=sha256:752d2949b40e12e6ad3ed8cc552a65b54d226504f6b1fb67cab2ccee502cc06f \ + --hash=sha256:7dc8584ca6c015ad82e186e82f4c0fe977394588f66b8ecfc4ec873285314619 \ + --hash=sha256:82434ba3a5935e47908bc861ce1ebc43c2edfc1001d235d6e31e5d3ed55815f7 \ + --hash=sha256:8270d1dc2c98ab57e6dbf36fa187db8df4c036f04a398e5d5e25b4e01a766d70 \ + --hash=sha256:8a48fd3a7222be226bb86b7b413ad248f17f3101a524018cdc4562eeae1eb2a3 \ + --hash=sha256:95952d3fe795b06af29bb8ec7bbf3342cdd867fc17b77cc25e6733d23fa6c519 \ + --hash=sha256:976a7f24eb213e8429cab78d5e120500dfcdeb01041f1f5a77b17b9101902615 \ + --hash=sha256:9c84a481451e7174f3a764a44150f93b041ab51045aa33d7b5b68b6979114e48 \ + --hash=sha256:a34d6e905f071f9b945cabbcc776e2055de1fdb59cd13683d9aa0a8f265b5bf9 \ + --hash=sha256:a4952899b4931a6ba12951f9a141ef3e74ff8a6ec9aa2dc602afa40f63595e33 \ + --hash=sha256:a96c3c7f564b263c5d7c0e49a337166c8611e89c4c919f66dba7b9a84abad137 \ + --hash=sha256:aef7d30242409c3aa5839b501e877e453a2c8d3759ca8230dd5a21cda029f046 \ + --hash=sha256:b5bd026ac928c96cc23149e6ef79183125542062eb6d1ccec34c0a37e02255e7 \ + --hash=sha256:b6a2ead3de3b2d53119d473aa2f224030257ef33af1e4ddabd4afee1dea5f04c \ + --hash=sha256:ba074af9ca268ad7b05d3fc2b920b5fb3c083da94ab63637aaf67f4f71ecb755 \ + --hash=sha256:c5fb6f3d7824696c1c9f2ad36ddb080ba5a86f2d929ef712d511b4d9972d3d27 \ + --hash=sha256:c705e0c21acb0e8478a00e7e773ad0ecdb34bd0e4adc282d3d2f51ba3961aac7 \ + --hash=sha256:c7ad9fbedb93f331c2e9054e202e95cf825b885811f1bcbbdfdc301e451442db \ + --hash=sha256:da95778d37be8e4e9afca771a83424f892296f5dfb2a100eda2571a1d8bbc0dc \ + --hash=sha256:dad5b302a4c21c604d88a5d441973f320134e6ff6a84ecef9c1139e5ffd466f6 \ + --hash=sha256:dbc1ba968639c1d23476f75c356e549e7bbf2d8d6688717dcab5290e88e8482b \ + --hash=sha256:ddb2511fbbb440ed9e5c9a4b9b870f2ed649b7715859fd6f2ebc585ee85c0364 \ + --hash=sha256:df9ba1183b3f649210788cf80c239041dddcb375d6142d8bccafcfdf549522cd \ + --hash=sha256:e4f513d63df6336fd84b74b701f17d1bb3b64e9d78a6ed5b5e8a198bbbe8bbfa \ + --hash=sha256:e6f90698b5d1c5dd7b3236cd1fa959d7b80e17923f918d5be020b65f1c78b173 \ + --hash=sha256:eaf8e3b97caaf9415227a3c6ca5aa8d800fecadd526538d2bf8f11af783f1550 \ + --hash=sha256:ee81349411648d1abc94095c68cd25e3c2812e4e0367f9a9355be1e804a5135c \ + --hash=sha256:f144a790f14c51b8a8e591eb5af40507ffee45ea6b818c2482f0457fec2e1a2e \ + --hash=sha256:f3e837d29f0e1b9d6e7b29d569e2e9b0da61889e41879832ea15569c251c303a \ + --hash=sha256:fa8eaac75d3107e3f5465f2c9e3bbd13db21790c6e45b7de1756eba16b050aca \ + --hash=sha256:fdc6191587de410a184550d4143e2b24a14df495c86ca15e59508710681690ac h11==0.14.0 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -392,32 +392,32 @@ opensearch-py==2.2.0 ; python_version >= "3.8" and python_version < "3.12" \ packaging==23.1 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f -pandas==2.0.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682 \ - --hash=sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc \ - --hash=sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b \ - --hash=sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089 \ - --hash=sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5 \ - --hash=sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26 \ - --hash=sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210 \ - --hash=sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b \ - --hash=sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641 \ - --hash=sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd \ - --hash=sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78 \ - --hash=sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b \ - --hash=sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e \ - --hash=sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061 \ - --hash=sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0 \ - --hash=sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e \ - --hash=sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8 \ - --hash=sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d \ - --hash=sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0 \ - --hash=sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c \ - --hash=sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183 \ - --hash=sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df \ - --hash=sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8 \ - --hash=sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f \ - --hash=sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02 +pandas==2.0.2 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:02755de164da6827764ceb3bbc5f64b35cb12394b1024fdf88704d0fa06e0e2f \ + --hash=sha256:0a1e0576611641acde15c2322228d138258f236d14b749ad9af498ab69089e2d \ + --hash=sha256:1eb09a242184092f424b2edd06eb2b99d06dc07eeddff9929e8667d4ed44e181 \ + --hash=sha256:30a89d0fec4263ccbf96f68592fd668939481854d2ff9da709d32a047689393b \ + --hash=sha256:50e451932b3011b61d2961b4185382c92cc8c6ee4658dcd4f320687bb2d000ee \ + --hash=sha256:51a93d422fbb1bd04b67639ba4b5368dffc26923f3ea32a275d2cc450f1d1c86 \ + --hash=sha256:598e9020d85a8cdbaa1815eb325a91cfff2bb2b23c1442549b8a3668e36f0f77 \ + --hash=sha256:66d00300f188fa5de73f92d5725ced162488f6dc6ad4cecfe4144ca29debe3b8 \ + --hash=sha256:69167693cb8f9b3fc060956a5d0a0a8dbfed5f980d9fd2c306fb5b9c855c814c \ + --hash=sha256:6d6d10c2142d11d40d6e6c0a190b1f89f525bcf85564707e31b0a39e3b398e08 \ + --hash=sha256:713f2f70abcdade1ddd68fc91577cb090b3544b07ceba78a12f799355a13ee44 \ + --hash=sha256:7376e13d28eb16752c398ca1d36ccfe52bf7e887067af9a0474de6331dd948d2 \ + --hash=sha256:77550c8909ebc23e56a89f91b40ad01b50c42cfbfab49b3393694a50549295ea \ + --hash=sha256:7b21cb72958fc49ad757685db1919021d99650d7aaba676576c9e88d3889d456 \ + --hash=sha256:9ebb9f1c22ddb828e7fd017ea265a59d80461d5a79154b49a4207bd17514d122 \ + --hash=sha256:a18e5c72b989ff0f7197707ceddc99828320d0ca22ab50dd1b9e37db45b010c0 \ + --hash=sha256:a6b5f14cd24a2ed06e14255ff40fe2ea0cfaef79a8dd68069b7ace74bd6acbba \ + --hash=sha256:b42b120458636a981077cfcfa8568c031b3e8709701315e2bfa866324a83efa8 \ + --hash=sha256:c4af689352c4fe3d75b2834933ee9d0ccdbf5d7a8a7264f0ce9524e877820c08 \ + --hash=sha256:c7319b6e68de14e6209460f72a8d1ef13c09fb3d3ef6c37c1e65b35d50b5c145 \ + --hash=sha256:cf3f0c361a4270185baa89ec7ab92ecaa355fe783791457077473f974f654df5 \ + --hash=sha256:dd46bde7309088481b1cf9c58e3f0e204b9ff9e3244f441accd220dd3365ce7c \ + --hash=sha256:dd5476b6c3fe410ee95926873f377b856dbc4e81a9c605a0dc05aaccc6a7c6c6 \ + --hash=sha256:e69140bc2d29a8556f55445c15f5794490852af3de0f609a24003ef174528b79 \ + --hash=sha256:f908a77cbeef9bbd646bd4b81214cbef9ac3dda4181d5092a4aa9797d1bc7774 parso==0.8.3 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0 \ --hash=sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75 @@ -430,9 +430,9 @@ pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "3.12" \ portalocker==2.7.0 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:032e81d534a88ec1736d03f780ba073f047a06c478b06e2937486f334e955c51 \ --hash=sha256:a07c5b4f3985c3cf4798369631fb7011adb498e2a46d8440efc75a8f29a0f983 -prompt-toolkit==3.0.39 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac \ - --hash=sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88 +prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b \ + --hash=sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f protobuf==4.23.3 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8 \ --hash=sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223 \ @@ -456,49 +456,49 @@ pure-eval==0.2.2 ; python_version >= "3.8" and python_version < "3.12" \ pycparser==2.21 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic==1.10.10 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:20a3b30fd255eeeb63caa9483502ba96b7795ce5bf895c6a179b3d909d9f53a6 \ - --hash=sha256:2b71bd504d1573b0b722ae536e8ffb796bedeef978979d076bf206e77dcc55a5 \ - --hash=sha256:3403a090db45d4027d2344859d86eb797484dfda0706cf87af79ace6a35274ef \ - --hash=sha256:37ebddef68370e6f26243acc94de56d291e01227a67b2ace26ea3543cf53dd5f \ - --hash=sha256:3b8d5bd97886f9eb59260594207c9f57dce14a6f869c6ceea90188715d29921a \ - --hash=sha256:409b810f387610cc7405ab2fa6f62bdf7ea485311845a242ebc0bd0496e7e5ac \ - --hash=sha256:4870f13a4fafd5bc3e93cff3169222534fad867918b188e83ee0496452978437 \ - --hash=sha256:566a04ba755e8f701b074ffb134ddb4d429f75d5dced3fbd829a527aafe74c71 \ - --hash=sha256:67b3714b97ff84b2689654851c2426389bcabfac9080617bcf4306c69db606f6 \ - --hash=sha256:6dab5219659f95e357d98d70577b361383057fb4414cfdb587014a5f5c595f7b \ - --hash=sha256:748d10ab6089c5d196e1c8be9de48274f71457b01e59736f7a09c9dc34f51887 \ - --hash=sha256:762aa598f79b4cac2f275d13336b2dd8662febee2a9c450a49a2ab3bec4b385f \ - --hash=sha256:7a26841be620309a9697f5b1ffc47dce74909e350c5315ccdac7a853484d468a \ - --hash=sha256:7a7db03339893feef2092ff7b1afc9497beed15ebd4af84c3042a74abce02d48 \ - --hash=sha256:7aa75d1bd9cc275cf9782f50f60cddaf74cbaae19b6ada2a28e737edac420312 \ - --hash=sha256:86936c383f7c38fd26d35107eb669c85d8f46dfceae873264d9bab46fe1c7dde \ - --hash=sha256:88546dc10a40b5b52cae87d64666787aeb2878f9a9b37825aedc2f362e7ae1da \ - --hash=sha256:8c40964596809eb616d94f9c7944511f620a1103d63d5510440ed2908fc410af \ - --hash=sha256:990027e77cda6072a566e433b6962ca3b96b4f3ae8bd54748e9d62a58284d9d7 \ - --hash=sha256:9965e49c6905840e526e5429b09e4c154355b6ecc0a2f05492eda2928190311d \ - --hash=sha256:9f62a727f5c590c78c2d12fda302d1895141b767c6488fe623098f8792255fe5 \ - --hash=sha256:a2d5be50ac4a0976817144c7d653e34df2f9436d15555189f5b6f61161d64183 \ - --hash=sha256:a5939ec826f7faec434e2d406ff5e4eaf1716eb1f247d68cd3d0b3612f7b4c8a \ - --hash=sha256:aac218feb4af73db8417ca7518fb3bade4534fcca6e3fb00f84966811dd94450 \ - --hash=sha256:adad1ee4ab9888f12dac2529276704e719efcf472e38df7813f5284db699b4ec \ - --hash=sha256:b69f9138dec566962ec65623c9d57bee44412d2fc71065a5f3ebb3820bdeee96 \ - --hash=sha256:c41bbaae89e32fc582448e71974de738c055aef5ab474fb25692981a08df808a \ - --hash=sha256:c62376890b819bebe3c717a9ac841a532988372b7e600e76f75c9f7c128219d5 \ - --hash=sha256:ce937a2a2c020bcad1c9fde02892392a1123de6dda906ddba62bfe8f3e5989a2 \ - --hash=sha256:db4c7f7e60ca6f7d6c1785070f3e5771fcb9b2d88546e334d2f2c3934d949028 \ - --hash=sha256:e0014e29637125f4997c174dd6167407162d7af0da73414a9340461ea8573252 \ - --hash=sha256:e088e3865a2270ecbc369924cd7d9fbc565667d9158e7f304e4097ebb9cf98dd \ - --hash=sha256:ea9eebc2ebcba3717e77cdeee3f6203ffc0e78db5f7482c68b1293e8cc156e5e \ - --hash=sha256:edfdf0a5abc5c9bf2052ebaec20e67abd52e92d257e4f2d30e02c354ed3e6030 \ - --hash=sha256:f3d4ee957a727ccb5a36f1b0a6dbd9fad5dedd2a41eada99a8df55c12896e18d \ - --hash=sha256:f79db3652ed743309f116ba863dae0c974a41b688242482638b892246b7db21d +pydantic==1.10.9 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d \ + --hash=sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a \ + --hash=sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc \ + --hash=sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3 \ + --hash=sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a \ + --hash=sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7 \ + --hash=sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf \ + --hash=sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f \ + --hash=sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91 \ + --hash=sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece \ + --hash=sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29 \ + --hash=sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60 \ + --hash=sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a \ + --hash=sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305 \ + --hash=sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766 \ + --hash=sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f \ + --hash=sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8 \ + --hash=sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276 \ + --hash=sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c \ + --hash=sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60 \ + --hash=sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896 \ + --hash=sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be \ + --hash=sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb \ + --hash=sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298 \ + --hash=sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4 \ + --hash=sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572 \ + --hash=sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d \ + --hash=sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82 \ + --hash=sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0 \ + --hash=sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4 \ + --hash=sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca \ + --hash=sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1 \ + --hash=sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f \ + --hash=sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f \ + --hash=sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6 \ + --hash=sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e pygments==2.15.1 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c \ --hash=sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1 -pymilvus==2.2.13 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:72da36cb5f4f84d7a8307202fcaa9a7fc4497d28d2d2235045ba93a430691ef1 \ - --hash=sha256:ac991863bd63e860c1210d096695297175c6ed09f4de762cf42394cb5aecd1f6 +pymilvus==2.2.12 ; python_version >= "3.8" and python_version < "3.12" \ + --hash=sha256:420bd043c86638cadd5496d2a842ab4cc3dfd0c4acc5293b09cefb6dd396a4d1 \ + --hash=sha256:f8b9f85e2f4a7a388f874da37ab08c41381de81c84cded5cb034bc90f5d0f470 python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.12" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 From 435038a317ee0ab4fd517f417e5bbd59b6d1974c Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 11:56:03 +0100 Subject: [PATCH 008/204] Introduced MILVUS_USER and MILVUS_PASS env vars --- engine/clients/milvus/config.py | 4 +++- engine/clients/milvus/search.py | 4 +++- engine/clients/milvus/upload.py | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/engine/clients/milvus/config.py b/engine/clients/milvus/config.py index 122ef617..20a6cfba 100644 --- a/engine/clients/milvus/config.py +++ b/engine/clients/milvus/config.py @@ -1,10 +1,12 @@ from pymilvus import DataType - +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","") DISTANCE_MAPPING = { Distance.L2: "L2", diff --git a/engine/clients/milvus/search.py b/engine/clients/milvus/search.py index c7e2468c..0b6fb242 100644 --- a/engine/clients/milvus/search.py +++ b/engine/clients/milvus/search.py @@ -8,7 +8,7 @@ DISTANCE_MAPPING, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, + MILVUS_DEFAULT_PORT, MILVUS_PASS, MILVUS_USER, ) from engine.clients.milvus.parser import MilvusConditionParser @@ -26,6 +26,8 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic alias=MILVUS_DEFAULT_ALIAS, host=host, port=str(connection_params.pop("port", MILVUS_DEFAULT_PORT)), + user=MILVUS_USER, + password=MILVUS_PASS, **connection_params ) cls.collection = Collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index cdc62544..515f5b37 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -14,7 +14,7 @@ DTYPE_DEFAULT, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, + MILVUS_DEFAULT_PORT, MILVUS_USER, MILVUS_PASS, ) @@ -34,6 +34,8 @@ def init_client(cls, host, distance, connection_params, upload_params): alias=MILVUS_DEFAULT_ALIAS, host=host, port=str(connection_params.pop("port", MILVUS_DEFAULT_PORT)), + user=MILVUS_USER, + password=MILVUS_PASS, **connection_params ) cls.collection = Collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) From f4e49bee104e0fbfca5536a31eb93961ec281040 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 12:10:17 +0100 Subject: [PATCH 009/204] Introduce MILVUS_PORT env variable --- engine/clients/milvus/config.py | 1 + engine/clients/milvus/search.py | 4 ++-- engine/clients/milvus/upload.py | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/engine/clients/milvus/config.py b/engine/clients/milvus/config.py index 20a6cfba..3ebec8c2 100644 --- a/engine/clients/milvus/config.py +++ b/engine/clients/milvus/config.py @@ -7,6 +7,7 @@ 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", diff --git a/engine/clients/milvus/search.py b/engine/clients/milvus/search.py index 0b6fb242..16955e59 100644 --- a/engine/clients/milvus/search.py +++ b/engine/clients/milvus/search.py @@ -8,7 +8,7 @@ DISTANCE_MAPPING, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, MILVUS_PASS, MILVUS_USER, + MILVUS_DEFAULT_PORT, MILVUS_PASS, MILVUS_USER, MILVUS_PORT, ) from engine.clients.milvus.parser import MilvusConditionParser @@ -25,7 +25,7 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, host=host, - port=str(connection_params.pop("port", MILVUS_DEFAULT_PORT)), + port=str(connection_params.pop("port", MILVUS_PORT)), user=MILVUS_USER, password=MILVUS_PASS, **connection_params diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index 515f5b37..f0d1ea97 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -14,7 +14,7 @@ DTYPE_DEFAULT, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, MILVUS_USER, MILVUS_PASS, + MILVUS_DEFAULT_PORT, MILVUS_USER, MILVUS_PASS, MILVUS_PORT, ) @@ -33,7 +33,7 @@ def init_client(cls, host, distance, connection_params, upload_params): cls.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, host=host, - port=str(connection_params.pop("port", MILVUS_DEFAULT_PORT)), + port=str(connection_params.pop("port", MILVUS_PORT)), user=MILVUS_USER, password=MILVUS_PASS, **connection_params From 42133d090325605c945ac5de14f1579e3edecf59 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 12:12:51 +0100 Subject: [PATCH 010/204] Simplify milvus port settings --- engine/clients/milvus/search.py | 2 +- engine/clients/milvus/upload.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/clients/milvus/search.py b/engine/clients/milvus/search.py index 16955e59..a04d0fe5 100644 --- a/engine/clients/milvus/search.py +++ b/engine/clients/milvus/search.py @@ -25,7 +25,7 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, host=host, - port=str(connection_params.pop("port", MILVUS_PORT)), + port=MILVUS_PORT, user=MILVUS_USER, password=MILVUS_PASS, **connection_params diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index f0d1ea97..1ccaf9f1 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -33,7 +33,7 @@ def init_client(cls, host, distance, connection_params, upload_params): cls.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, host=host, - port=str(connection_params.pop("port", MILVUS_PORT)), + port=MILVUS_PORT, user=MILVUS_USER, password=MILVUS_PASS, **connection_params From ee7cb9b1b123ec853ecd6a9de851f74ed29ea570 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 12:14:42 +0100 Subject: [PATCH 011/204] Added missing milvus env variables on configure file --- engine/clients/milvus/configure.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/engine/clients/milvus/configure.py b/engine/clients/milvus/configure.py index c4afbffe..ec4048f0 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, + MILVUS_PASS, MILVUS_USER, MILVUS_PORT, ) @@ -35,7 +35,9 @@ def __init__(self, host, collection_params: dict, connection_params: dict): self.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, host=host, - port=str(connection_params.pop("port", MILVUS_DEFAULT_PORT)), + port=MILVUS_PORT, + user=MILVUS_USER, + password=MILVUS_PASS, **connection_params, ) print("established connection") From dfefb4991d17c3992fa11e819449406389d1c154 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 13:36:20 +0100 Subject: [PATCH 012/204] specify milvus uri when http is detected --- engine/clients/milvus/configure.py | 9 ++++++++- engine/clients/milvus/search.py | 11 +++++++++-- engine/clients/milvus/upload.py | 11 +++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/engine/clients/milvus/configure.py b/engine/clients/milvus/configure.py index ec4048f0..4ed48384 100644 --- a/engine/clients/milvus/configure.py +++ b/engine/clients/milvus/configure.py @@ -32,9 +32,16 @@ class MilvusConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) + h = "" + uri = "" + if host.startswith("http"): + uri = host + else: + h = host self.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, - host=host, + host=h, + uri=uri, port=MILVUS_PORT, user=MILVUS_USER, password=MILVUS_PASS, diff --git a/engine/clients/milvus/search.py b/engine/clients/milvus/search.py index a04d0fe5..c36bb02a 100644 --- a/engine/clients/milvus/search.py +++ b/engine/clients/milvus/search.py @@ -8,7 +8,7 @@ DISTANCE_MAPPING, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, MILVUS_PASS, MILVUS_USER, MILVUS_PORT, + MILVUS_PASS, MILVUS_USER, MILVUS_PORT, ) from engine.clients.milvus.parser import MilvusConditionParser @@ -22,9 +22,16 @@ class MilvusSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): + h = "" + uri = "" + if host.startswith("http"): + uri = host + else: + h = host cls.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, - host=host, + host=h, + uri=uri, port=MILVUS_PORT, user=MILVUS_USER, password=MILVUS_PASS, diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index 1ccaf9f1..98bebd35 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -14,7 +14,7 @@ DTYPE_DEFAULT, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_DEFAULT_PORT, MILVUS_USER, MILVUS_PASS, MILVUS_PORT, + MILVUS_USER, MILVUS_PASS, MILVUS_PORT, ) @@ -30,9 +30,16 @@ def get_mp_start_method(cls): @classmethod def init_client(cls, host, distance, connection_params, upload_params): + h = "" + uri = "" + if host.startswith("http"): + uri = host + else: + h = host cls.client = connections.connect( alias=MILVUS_DEFAULT_ALIAS, - host=host, + host=h, + uri=uri, port=MILVUS_PORT, user=MILVUS_USER, password=MILVUS_PASS, From 97662077fac1ed65ef8f976d67138c612c78c287 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 14:34:47 +0100 Subject: [PATCH 013/204] wrap milvus upload_batch with backoff --- engine/clients/milvus/upload.py | 8 ++++++++ poetry.lock | 14 +++++++++++++- pyproject.toml | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index 98bebd35..03c3b88a 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -1,5 +1,6 @@ import multiprocessing as mp from typing import List, Optional +import backoff from pymilvus import ( Collection, @@ -64,6 +65,13 @@ def upload_batch( ] else: field_values = [] + cls.upload_with_backoff(field_values, ids, vectors) + + @classmethod + @backoff.on_exception(backoff.expo, + MilvusException, + max_time=120) + def upload_with_backoff(cls, field_values, ids, vectors): cls.collection.insert([ids, vectors] + field_values) @classmethod diff --git a/poetry.lock b/poetry.lock index 65734088..480014f8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -91,6 +91,18 @@ files = [ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, ] +[[package]] +name = "backoff" +version = "2.2.1" +description = "Function decoration for backoff and retry" +category = "main" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, + {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, +] + [[package]] name = "certifi" version = "2023.5.7" @@ -1878,4 +1890,4 @@ grpc = ["grpcio", "grpcio-tools"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "e76841fa20b3c72e2bd440df528f3dcb093f595fab794a86fabd14fe83444efb" +content-hash = "5e76e6ce97d315d91caa1ad5098eda05aa2ea853a3574659825a883ba45321ca" diff --git a/pyproject.toml b/pyproject.toml index d7417508..03629930 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ redis = "^4.4.1" ipdb = "^0.13.9" stopit = "^1.1.2" opensearch-py = "^2.2.0" +backoff = "^2.2.1" [tool.poetry.dev-dependencies] From 9ad6022f5acb69e1311d0d1a97eec297b02dbb3d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 14:55:31 +0100 Subject: [PATCH 014/204] Enabled using the API_KEY of weaviate and detecting secure connection setups --- engine/clients/weaviate/config.py | 4 ++++ engine/clients/weaviate/configure.py | 16 ++++++++++++---- engine/clients/weaviate/search.py | 15 +++++++++++---- engine/clients/weaviate/upload.py | 15 +++++++++++---- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index b1192734..0b7a0ed4 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -1,2 +1,6 @@ +import os + WEAVIATE_CLASS_NAME = "Benchmark" WEAVIATE_DEFAULT_PORT = 8090 +WEAVIATE_API_KEY = os.getenv("WEAVIATE_API_KEY",None) +WEAVIATE_PORT = os.getenv("WEAVIATE_PORT",WEAVIATE_DEFAULT_PORT) diff --git a/engine/clients/weaviate/configure.py b/engine/clients/weaviate/configure.py index 38c6af6a..2b89a07e 100644 --- a/engine/clients/weaviate/configure.py +++ b/engine/clients/weaviate/configure.py @@ -1,9 +1,9 @@ -from weaviate import Client +from weaviate import Client, AuthApiKey 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, WEAVIATE_PORT, WEAVIATE_API_KEY class WeaviateConfigurator(BaseConfigurator): @@ -22,8 +22,16 @@ 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.pop('port', WEAVIATE_DEFAULT_PORT)}" - self.client = Client(url, **connection_params) + if host.startswith("http"): + url = "" + else: + url = "http://" + url += f"{host}:{connection_params.pop('port', WEAVIATE_PORT)}" + auth_client_secret = None + if WEAVIATE_API_KEY is not None: + auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) + + self.client = Client(url, auth_client_secret, **connection_params) def clean(self): classes = self.client.schema.get() diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index 126e95b3..7a463000 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -1,10 +1,10 @@ import uuid from typing import List, Tuple -from weaviate import Client +from weaviate import Client, AuthApiKey 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, WEAVIATE_API_KEY, WEAVIATE_PORT from engine.clients.weaviate.parser import WeaviateConditionParser @@ -15,8 +15,15 @@ class WeaviateSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - url = f"http://{host}:{connection_params.pop('port', WEAVIATE_DEFAULT_PORT)}" - cls.client = Client(url, **connection_params) + if host.startswith("http"): + url = "" + else: + url = "http://" + url += f"{host}:{connection_params.pop('port', WEAVIATE_PORT)}" + auth_client_secret = None + if WEAVIATE_API_KEY is not None: + auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) + cls.client = Client(url, auth_client_secret, **connection_params) cls.search_params = search_params @classmethod diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index 41affa66..a4ce38d9 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -1,10 +1,10 @@ import uuid from typing import List, Optional -from weaviate import Client +from weaviate import Client, AuthApiKey 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, WEAVIATE_PORT, WEAVIATE_API_KEY class WeaviateUploader(BaseUploader): @@ -13,8 +13,15 @@ class WeaviateUploader(BaseUploader): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - url = f"http://{host}:{connection_params.pop('port', WEAVIATE_DEFAULT_PORT)}" - cls.client = Client(url, **connection_params) + if host.startswith("http"): + url = "" + else: + url = "http://" + url += f"{host}:{connection_params.pop('port', WEAVIATE_PORT)}" + auth_client_secret = None + if WEAVIATE_API_KEY is not None: + auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) + cls.client = Client(url, auth_client_secret, **connection_params) cls.upload_params = upload_params cls.connection_params = connection_params From 4e1408aa18b95efa125dfc9202533286b8852591 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 14:57:29 +0100 Subject: [PATCH 015/204] Only printing ef in search parameters if it's available --- engine/base_client/client.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index d838e378..ec13454d 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -84,8 +84,9 @@ def run_experiment( for search_id, searcher in enumerate(self.searchers): search_params = {**searcher.search_params} ef = "n/a" - if "ef" in search_params["search_params"]: - ef = search_params["search_params"]["ef"] + if "search_params" in search_params: + if "ef" in search_params["search_params"]: + ef = search_params["search_params"]["ef"] parallel = search_params["parallel"] if "parallel" in search_params else 1 print(f"\tef runtime: {ef}; #clients {parallel}") search_stats = searcher.search_all( From 824f17a072c0b5f5d167378b52288d3c28d4181b Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 17:14:08 +0100 Subject: [PATCH 016/204] Simplified weviate client construct --- engine/clients/weaviate/config.py | 14 ++++++++++++++ engine/clients/weaviate/configure.py | 14 +++----------- engine/clients/weaviate/search.py | 14 ++------------ engine/clients/weaviate/upload.py | 15 ++------------- 4 files changed, 21 insertions(+), 36 deletions(-) diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index 0b7a0ed4..feeaa60f 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -1,6 +1,20 @@ import os +from weaviate import Client, AuthApiKey WEAVIATE_CLASS_NAME = "Benchmark" WEAVIATE_DEFAULT_PORT = 8090 WEAVIATE_API_KEY = os.getenv("WEAVIATE_API_KEY",None) WEAVIATE_PORT = os.getenv("WEAVIATE_PORT",WEAVIATE_DEFAULT_PORT) + +def setup_client(connection_params, host): + port = connection_params.pop('port', WEAVIATE_PORT) + if host.startswith("http"): + url = "" + else: + url = "http://" + url += f"{host}:{port}" + auth_client_secret = None + if WEAVIATE_API_KEY is not None: + auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) + c = Client(url, auth_client_secret, **connection_params) + return c \ No newline at end of file diff --git a/engine/clients/weaviate/configure.py b/engine/clients/weaviate/configure.py index 2b89a07e..2a37e6aa 100644 --- a/engine/clients/weaviate/configure.py +++ b/engine/clients/weaviate/configure.py @@ -1,9 +1,8 @@ -from weaviate import Client, AuthApiKey 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_PORT, WEAVIATE_API_KEY +from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, WEAVIATE_PORT, WEAVIATE_API_KEY, setup_client class WeaviateConfigurator(BaseConfigurator): @@ -22,16 +21,9 @@ class WeaviateConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - if host.startswith("http"): - url = "" - else: - url = "http://" - url += f"{host}:{connection_params.pop('port', WEAVIATE_PORT)}" - auth_client_secret = None - if WEAVIATE_API_KEY is not None: - auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) + self.client = setup_client(connection_params, host) + - self.client = Client(url, auth_client_secret, **connection_params) def clean(self): classes = self.client.schema.get() diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index 7a463000..945c449c 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -1,10 +1,8 @@ import uuid from typing import List, Tuple -from weaviate import Client, AuthApiKey - from engine.base_client.search import BaseSearcher -from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, WEAVIATE_API_KEY, WEAVIATE_PORT +from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client from engine.clients.weaviate.parser import WeaviateConditionParser @@ -15,15 +13,7 @@ class WeaviateSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - if host.startswith("http"): - url = "" - else: - url = "http://" - url += f"{host}:{connection_params.pop('port', WEAVIATE_PORT)}" - auth_client_secret = None - if WEAVIATE_API_KEY is not None: - auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) - cls.client = Client(url, auth_client_secret, **connection_params) + cls.client = setup_client(connection_params, host) cls.search_params = search_params @classmethod diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index a4ce38d9..e31855c4 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -1,10 +1,8 @@ import uuid from typing import List, Optional -from weaviate import Client, AuthApiKey - from engine.base_client.upload import BaseUploader -from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, WEAVIATE_PORT, WEAVIATE_API_KEY +from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client class WeaviateUploader(BaseUploader): @@ -13,16 +11,7 @@ class WeaviateUploader(BaseUploader): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - if host.startswith("http"): - url = "" - else: - url = "http://" - url += f"{host}:{connection_params.pop('port', WEAVIATE_PORT)}" - auth_client_secret = None - if WEAVIATE_API_KEY is not None: - auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) - cls.client = Client(url, auth_client_secret, **connection_params) - + cls.client = setup_client(connection_params, host) cls.upload_params = upload_params cls.connection_params = connection_params From 31b2a1862c0a63e223358c2a363fd6b6059f088a Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jul 2023 17:15:55 +0100 Subject: [PATCH 017/204] fix NameError on weviate search.py --- engine/clients/weaviate/search.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index 945c449c..0f761297 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -1,6 +1,8 @@ import uuid from typing import List, Tuple +from weaviate import Client + from engine.base_client.search import BaseSearcher from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client from engine.clients.weaviate.parser import WeaviateConditionParser From 909594d06f9bec336072ceb043b30e04dd8ec080 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 00:03:26 +0100 Subject: [PATCH 018/204] Update weviate client to include multi-tenant schema check fix --- engine/clients/weaviate/search.py | 1 + poetry.lock | 8 +- pyproject.toml | 2 +- requirements.txt | 716 ++++-------------------------- 4 files changed, 81 insertions(+), 646 deletions(-) diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index 0f761297..80ef3165 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -54,4 +54,5 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: return id_score_pairs def setup_search(self): + self.client.schema.update_config(WEAVIATE_CLASS_NAME, self.search_params) diff --git a/poetry.lock b/poetry.lock index 480014f8..af7d1dd1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1868,14 +1868,14 @@ files = [ [[package]] name = "weaviate-client" -version = "3.21.0" +version = "3.22.1" description = "A python native Weaviate client" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "weaviate-client-3.21.0.tar.gz", hash = "sha256:ec94ac554883c765e94da8b2947c4f0fa4a0378ed3bbe9f3653df3a5b1745a6d"}, - {file = "weaviate_client-3.21.0-py3-none-any.whl", hash = "sha256:420444ded7106fb000f4f8b2321b5f5fa2387825aa7a303d702accf61026f9d2"}, + {file = "weaviate-client-3.22.1.tar.gz", hash = "sha256:aff61bd3f5d74df20a62328443e3aa9c860d5330fdfb19c4d8ddc44cb604032f"}, + {file = "weaviate_client-3.22.1-py3-none-any.whl", hash = "sha256:01843a4899a227300e570409e77628e9d1b28476313f94943c37aee3f75112e1"}, ] [package.dependencies] @@ -1890,4 +1890,4 @@ grpc = ["grpcio", "grpcio-tools"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "5e76e6ce97d315d91caa1ad5098eda05aa2ea853a3574659825a883ba45321ca" +content-hash = "d4c5af5b53e730b441de613a77e1cccc780a4f227136c38e674c588598ca3fd6" diff --git a/pyproject.toml b/pyproject.toml index 03629930..4e11097d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ qdrant-client = "^1.3.0" typer = "^0.6.1" jsons = "^1.6.3" h5py = "^3.7.0" -weaviate-client = "^3.6.0" +weaviate-client = "^3.22.0" elasticsearch = "^8.4.3" pymilvus = "^2.2.0" redis = "^4.4.1" diff --git a/requirements.txt b/requirements.txt index c81f9888..9a812463 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,641 +1,75 @@ -anyio==3.7.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce \ - --hash=sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0 -appnope==0.1.3 ; python_version >= "3.8" and python_version < "3.12" and sys_platform == "darwin" \ - --hash=sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24 \ - --hash=sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e -asttokens==2.2.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3 \ - --hash=sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c -async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version <= "3.11.2" \ - --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ - --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c -authlib==1.2.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:421f7c6b468d907ca2d9afede256f068f87e34d23dd221c07d13d4c234726afb \ - --hash=sha256:c88984ea00149a90e3537c964327da930779afa4564e354edfd98410bea01911 -backcall==0.2.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e \ - --hash=sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255 -certifi==2023.5.7 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7 \ - --hash=sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716 -cffi==1.15.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 -charset-normalizer==3.1.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6 \ - --hash=sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1 \ - --hash=sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e \ - --hash=sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373 \ - --hash=sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62 \ - --hash=sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230 \ - --hash=sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be \ - --hash=sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c \ - --hash=sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0 \ - --hash=sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448 \ - --hash=sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f \ - --hash=sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649 \ - --hash=sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d \ - --hash=sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0 \ - --hash=sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706 \ - --hash=sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a \ - --hash=sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59 \ - --hash=sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23 \ - --hash=sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5 \ - --hash=sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb \ - --hash=sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e \ - --hash=sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e \ - --hash=sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c \ - --hash=sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28 \ - --hash=sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d \ - --hash=sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41 \ - --hash=sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974 \ - --hash=sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce \ - --hash=sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f \ - --hash=sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1 \ - --hash=sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d \ - --hash=sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8 \ - --hash=sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017 \ - --hash=sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31 \ - --hash=sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7 \ - --hash=sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8 \ - --hash=sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e \ - --hash=sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14 \ - --hash=sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd \ - --hash=sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d \ - --hash=sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795 \ - --hash=sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b \ - --hash=sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b \ - --hash=sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b \ - --hash=sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203 \ - --hash=sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f \ - --hash=sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19 \ - --hash=sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1 \ - --hash=sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a \ - --hash=sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac \ - --hash=sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9 \ - --hash=sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0 \ - --hash=sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137 \ - --hash=sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f \ - --hash=sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6 \ - --hash=sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5 \ - --hash=sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909 \ - --hash=sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f \ - --hash=sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0 \ - --hash=sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324 \ - --hash=sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755 \ - --hash=sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb \ - --hash=sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854 \ - --hash=sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c \ - --hash=sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60 \ - --hash=sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84 \ - --hash=sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0 \ - --hash=sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b \ - --hash=sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1 \ - --hash=sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531 \ - --hash=sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1 \ - --hash=sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11 \ - --hash=sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326 \ - --hash=sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df \ - --hash=sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab -click==8.1.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ - --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 -colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" or python_version >= "3.8" and python_version < "3.12" and sys_platform == "win32" \ - --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ - --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==41.0.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:059e348f9a3c1950937e1b5d7ba1f8e968508ab181e75fc32b879452f08356db \ - --hash=sha256:1a5472d40c8f8e91ff7a3d8ac6dfa363d8e3138b961529c996f3e2df0c7a411a \ - --hash=sha256:1a8e6c2de6fbbcc5e14fd27fb24414507cb3333198ea9ab1258d916f00bc3039 \ - --hash=sha256:1fee5aacc7367487b4e22484d3c7e547992ed726d14864ee33c0176ae43b0d7c \ - --hash=sha256:5d092fdfedaec4cbbffbf98cddc915ba145313a6fdaab83c6e67f4e6c218e6f3 \ - --hash=sha256:5f0ff6e18d13a3de56f609dd1fd11470918f770c6bd5d00d632076c727d35485 \ - --hash=sha256:7bfc55a5eae8b86a287747053140ba221afc65eb06207bedf6e019b8934b477c \ - --hash=sha256:7fa01527046ca5facdf973eef2535a27fec4cb651e4daec4d043ef63f6ecd4ca \ - --hash=sha256:8dde71c4169ec5ccc1087bb7521d54251c016f126f922ab2dfe6649170a3b8c5 \ - --hash=sha256:8f4ab7021127a9b4323537300a2acfb450124b2def3756f64dc3a3d2160ee4b5 \ - --hash=sha256:948224d76c4b6457349d47c0c98657557f429b4e93057cf5a2f71d603e2fc3a3 \ - --hash=sha256:9a6c7a3c87d595608a39980ebaa04d5a37f94024c9f24eb7d10262b92f739ddb \ - --hash=sha256:b46e37db3cc267b4dea1f56da7346c9727e1209aa98487179ee8ebed09d21e43 \ - --hash=sha256:b4ceb5324b998ce2003bc17d519080b4ec8d5b7b70794cbd2836101406a9be31 \ - --hash=sha256:cb33ccf15e89f7ed89b235cff9d49e2e62c6c981a6061c9c8bb47ed7951190bc \ - --hash=sha256:d198820aba55660b4d74f7b5fd1f17db3aa5eb3e6893b0a41b75e84e4f9e0e4b \ - --hash=sha256:d34579085401d3f49762d2f7d6634d6b6c2ae1242202e860f4d26b046e3a1006 \ - --hash=sha256:eb8163f5e549a22888c18b0d53d6bb62a20510060a22fd5a995ec8a05268df8a \ - --hash=sha256:f73bff05db2a3e5974a6fd248af2566134d8981fd7ab012e5dd4ddb1d9a70699 -decorator==5.1.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ - --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 -elastic-transport==8.4.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:19db271ab79c9f70f8c43f8f5b5111408781a6176b54ab2e54d713b6d9ceb815 \ - --hash=sha256:b9ad708ceb7fcdbc6b30a96f886609a109f042c0b9d9f2e44403b3133ba7ff10 -elasticsearch==8.8.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:2223ee9daaa3c80c25b28ec3f7c48e66fce6b767a338333d9a81886046a07df6 \ - --hash=sha256:6878313cd598c7c90079fed1d4be72e198da35cba57f4083e6bee91f9c70b0eb -environs==9.5.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:1e549569a3de49c05f856f40bce86979e7d5ffbbc4398e7f338574c220189124 \ - --hash=sha256:a76307b36fbe856bdca7ee9161e6c466fd7fcffc297109a118c59b54e27e30c9 -exceptiongroup==1.1.1 ; python_version >= "3.8" and python_version < "3.11" \ - --hash=sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e \ - --hash=sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785 -executing==1.2.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc \ - --hash=sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107 -grpcio-tools==1.53.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:0229e6cd442915192b8f8ee2e7e1c8b9986c878bc4dd8be3539f3be35f1b8282 \ - --hash=sha256:102b6d323d7cef7ac29683f949ec66885b417c06df6059f6a88d07c5556c2592 \ - --hash=sha256:17c557240f7fbe1886dcfb5f3ba79740ecb65fe3b93061e64b8f4dfc6a6a5dc5 \ - --hash=sha256:2758ea125442bc81251267fc9c28f65555a571f6a0afda4d71a6e7d669347095 \ - --hash=sha256:2b47f8b1bd3af2fb25548b625ad9c3659da30fe83c06f462f357c754f49b71ae \ - --hash=sha256:2be17265c0f070efd625683cef986e07dbc495103fcc719009ff2f6988003166 \ - --hash=sha256:326c67b35be69409a88632e6145032d53b8b8141634e9cbcd27fa8f9015a112c \ - --hash=sha256:39d0a254de49d852f5fe9f9df0a45b2ae66bc04e2d9ee1d6d2c0ba1e70fac91a \ - --hash=sha256:3cc832e8297e9437bc2b137fe815c8ba1d9af6ffdd76c5c6d7f911bf8e1b0f45 \ - --hash=sha256:41b859cf943256debba1e7b921e3689c89f95495b65f7ad226c4f0e38edf8ee4 \ - --hash=sha256:4605db5a5828205d7fa33a5de9e00723bd037709e74e15c028b9dcec2339b7bc \ - --hash=sha256:4701d48f649443f1101a24d85e9d5ac13346ccac7781e243f49491328e172266 \ - --hash=sha256:4be32c694c760f3281555089f7aed7d48ca7ea4094115a08b5fc895e17d7e62e \ - --hash=sha256:4c6acaca09cfcd59850e27bd138df9d01c0686c42a5412aa6a92141c15316b1e \ - --hash=sha256:613a84ebd1881635370c12503f2b15b37332a53fbac32904c94ac4c0c10f0a2a \ - --hash=sha256:65b77532bb8f6ab1bfbdd2ac0788626a6c05b227f4722d3bbc2c54258e49c3e5 \ - --hash=sha256:6afffd7e97e5bddc63b3ce9abe912b9adb704a36ba86d4406be94426734b97c2 \ - --hash=sha256:6bd4c732d8d7a736e787b5d0963d4195267fc856e1d313d4532d1625e19a0e4a \ - --hash=sha256:7062109553ec1873c5c09cc379b8ae0aa76a2d6d6aae97759b97787b93fa9786 \ - --hash=sha256:7152045190e9bd665d1feaeaef931d82c75cacce2b116ab150befa90855de3d0 \ - --hash=sha256:76898c1dadf8630a75a40b5a89ab38e326f1288dcfde3413cdfa7a58e149c987 \ - --hash=sha256:7728407b1e89fb1473b86152fc33be00f1a25a5aa3264245521f05cbbef9d817 \ - --hash=sha256:7754d6466191d327a0eef364ad5b863477a8fcc12953adc06b30b8e470c70e4a \ - --hash=sha256:7c0ede22796259e83aa1f108038513e86672b2892d3654f94415e3930b74b871 \ - --hash=sha256:7da0fc185735050d8240b1d74c4667a02baf1b4fa379a5fc05d1fc067eeba596 \ - --hash=sha256:830261fe08541f0fd2dd5035264df2b91012988f37aa1d80a0b4ee6404dc25ae \ - --hash=sha256:861f8634cca3ca5bb5336ba16cc78291dba3e7fcadedff195bfdeb433f2c29f2 \ - --hash=sha256:8940d59fca790f1bd45785d0661c3a8c081231c9f8049d7fbf6c6c00737e43da \ - --hash=sha256:925efff2d63ca3266f93c924ffeba5d496f16a8ccbe125fa0d18acf47cc5fa88 \ - --hash=sha256:99ecefb6b66e9fe41468a70ee2f05da2eb9c7bf63867fb9ff07f7dd90ea813ae \ - --hash=sha256:a2faad4b6362e7ff3ae43ef2d51dfce0a3bc32cf52469e88568c3f65cae377d5 \ - --hash=sha256:a8c3e30c531969c62a5a219be414277b269c1be9a76bcd6948571868894e19b2 \ - --hash=sha256:ad0c20688a650e731e8328a7a08899c433a59bfc995a7afcf715b5ad9eca9e7b \ - --hash=sha256:af686b83bc6b5c1f1591c9f49183717974047de9546adcf5e09a18781b550c96 \ - --hash=sha256:b1b76b6ab5c24e44b15d6a7df6c1b81c3099a54b82d41a3ce96e73a2e6a5081c \ - --hash=sha256:b4173b95e2c29a5145c806d16945ce1e5b38a11c7eb6ab1a6d74afc0a2ce47d9 \ - --hash=sha256:b54c64d85bea5c3a3d895454878c7d6bed5cbb80dc3cafcd75dc1e78300d8c95 \ - --hash=sha256:c2cff79be5a06d63e9a6a7e38f8f160ade21517386eabe27afacef65a8531358 \ - --hash=sha256:c9a9e1da1868349eba401e9648eac19132700942c475adcc97b6938bf4bf0182 \ - --hash=sha256:ccf7313e5bee13f2f86d12741489f3ed8c901d6b463dff2604191cd4ff518abb \ - --hash=sha256:d646d65fafbf70a57416493e719a0df7ffa0772133266cfe1b2b72e072ae64a2 \ - --hash=sha256:e18292123c86975d0aa47f1bcb176393640dcc23912e9f3a2247f1eff81ac8e8 \ - --hash=sha256:e76e8dfe6fe4e61ce3049e9d56c0d806d0d3edc28aa32117d1b17f387469c52e \ - --hash=sha256:f31c549d793a0e72c044f724b3373141d2aa9970fe97b1c2cfaa7ea44002b9aa \ - --hash=sha256:f55e2c13620271b7f5a81a489a188d6e34a24da8885d46f1566f0e798cb59e6f -grpcio==1.53.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:0698c094688a2dd4c7c2f2c0e3e142cac439a64d1cef6904c97f6cde38ba422f \ - --hash=sha256:104a2210edd3776c38448b4f76c2f16e527adafbde171fc72a8a32976c20abc7 \ - --hash=sha256:14817de09317dd7d3fbc8272864288320739973ef0f4b56bf2c0032349da8cdf \ - --hash=sha256:1948539ce78805d4e6256ab0e048ec793956d54787dc9d6777df71c1d19c7f81 \ - --hash=sha256:19caa5b7282a89b799e63776ff602bb39604f7ca98db6df27e2de06756ae86c3 \ - --hash=sha256:1b172e6d497191940c4b8d75b53de82dc252e15b61de2951d577ec5b43316b29 \ - --hash=sha256:1c734a2d4843e4e14ececf5600c3c4750990ec319e1299db7e4f0d02c25c1467 \ - --hash=sha256:2a912397eb8d23c177d6d64e3c8bc46b8a1c7680b090d9f13a640b104aaec77c \ - --hash=sha256:2eddaae8af625e45b5c8500dcca1043264d751a6872cde2eda5022df8a336959 \ - --hash=sha256:55930c56b8f5b347d6c8c609cc341949a97e176c90f5cbb01d148d778f3bbd23 \ - --hash=sha256:658ffe1e39171be00490db5bd3b966f79634ac4215a1eb9a85c6cd6783bf7f6e \ - --hash=sha256:6601d812105583948ab9c6e403a7e2dba6e387cc678c010e74f2d6d589d1d1b3 \ - --hash=sha256:6b6d60b0958be711bab047e9f4df5dbbc40367955f8651232bfdcdd21450b9ab \ - --hash=sha256:6beb84f83360ff29a3654f43f251ec11b809dcb5524b698d711550243debd289 \ - --hash=sha256:752d2949b40e12e6ad3ed8cc552a65b54d226504f6b1fb67cab2ccee502cc06f \ - --hash=sha256:7dc8584ca6c015ad82e186e82f4c0fe977394588f66b8ecfc4ec873285314619 \ - --hash=sha256:82434ba3a5935e47908bc861ce1ebc43c2edfc1001d235d6e31e5d3ed55815f7 \ - --hash=sha256:8270d1dc2c98ab57e6dbf36fa187db8df4c036f04a398e5d5e25b4e01a766d70 \ - --hash=sha256:8a48fd3a7222be226bb86b7b413ad248f17f3101a524018cdc4562eeae1eb2a3 \ - --hash=sha256:95952d3fe795b06af29bb8ec7bbf3342cdd867fc17b77cc25e6733d23fa6c519 \ - --hash=sha256:976a7f24eb213e8429cab78d5e120500dfcdeb01041f1f5a77b17b9101902615 \ - --hash=sha256:9c84a481451e7174f3a764a44150f93b041ab51045aa33d7b5b68b6979114e48 \ - --hash=sha256:a34d6e905f071f9b945cabbcc776e2055de1fdb59cd13683d9aa0a8f265b5bf9 \ - --hash=sha256:a4952899b4931a6ba12951f9a141ef3e74ff8a6ec9aa2dc602afa40f63595e33 \ - --hash=sha256:a96c3c7f564b263c5d7c0e49a337166c8611e89c4c919f66dba7b9a84abad137 \ - --hash=sha256:aef7d30242409c3aa5839b501e877e453a2c8d3759ca8230dd5a21cda029f046 \ - --hash=sha256:b5bd026ac928c96cc23149e6ef79183125542062eb6d1ccec34c0a37e02255e7 \ - --hash=sha256:b6a2ead3de3b2d53119d473aa2f224030257ef33af1e4ddabd4afee1dea5f04c \ - --hash=sha256:ba074af9ca268ad7b05d3fc2b920b5fb3c083da94ab63637aaf67f4f71ecb755 \ - --hash=sha256:c5fb6f3d7824696c1c9f2ad36ddb080ba5a86f2d929ef712d511b4d9972d3d27 \ - --hash=sha256:c705e0c21acb0e8478a00e7e773ad0ecdb34bd0e4adc282d3d2f51ba3961aac7 \ - --hash=sha256:c7ad9fbedb93f331c2e9054e202e95cf825b885811f1bcbbdfdc301e451442db \ - --hash=sha256:da95778d37be8e4e9afca771a83424f892296f5dfb2a100eda2571a1d8bbc0dc \ - --hash=sha256:dad5b302a4c21c604d88a5d441973f320134e6ff6a84ecef9c1139e5ffd466f6 \ - --hash=sha256:dbc1ba968639c1d23476f75c356e549e7bbf2d8d6688717dcab5290e88e8482b \ - --hash=sha256:ddb2511fbbb440ed9e5c9a4b9b870f2ed649b7715859fd6f2ebc585ee85c0364 \ - --hash=sha256:df9ba1183b3f649210788cf80c239041dddcb375d6142d8bccafcfdf549522cd \ - --hash=sha256:e4f513d63df6336fd84b74b701f17d1bb3b64e9d78a6ed5b5e8a198bbbe8bbfa \ - --hash=sha256:e6f90698b5d1c5dd7b3236cd1fa959d7b80e17923f918d5be020b65f1c78b173 \ - --hash=sha256:eaf8e3b97caaf9415227a3c6ca5aa8d800fecadd526538d2bf8f11af783f1550 \ - --hash=sha256:ee81349411648d1abc94095c68cd25e3c2812e4e0367f9a9355be1e804a5135c \ - --hash=sha256:f144a790f14c51b8a8e591eb5af40507ffee45ea6b818c2482f0457fec2e1a2e \ - --hash=sha256:f3e837d29f0e1b9d6e7b29d569e2e9b0da61889e41879832ea15569c251c303a \ - --hash=sha256:fa8eaac75d3107e3f5465f2c9e3bbd13db21790c6e45b7de1756eba16b050aca \ - --hash=sha256:fdc6191587de410a184550d4143e2b24a14df495c86ca15e59508710681690ac -h11==0.14.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ - --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -h2==4.1.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d \ - --hash=sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb -h5py==3.9.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:12aa556d540f11a2cae53ea7cfb94017353bd271fb3962e1296b342f6550d1b8 \ - --hash=sha256:23e74b878bbe1653ab34ca49b83cac85529cd0b36b9d625516c5830cc5ca2eac \ - --hash=sha256:36408f8c62f50007d14e000f9f3acf77e103b9e932c114cbe52a3089e50ebf94 \ - --hash=sha256:3f457089c5d524b7998e3649bc63240679b8fb0a3859ea53bbb06841f3d755f1 \ - --hash=sha256:54f01202cdea754ab4227dd27014bdbd561a4bbe4b631424fd812f7c2ce9c6ac \ - --hash=sha256:551e358db05a874a0f827b22e95b30092f2303edc4b91bb62ad2f10e0236e1a0 \ - --hash=sha256:64acceaf6aff92af091a4b83f6dee3cf8d3061f924a6bb3a33eb6c4658a8348b \ - --hash=sha256:6822a814b9d8b8363ff102f76ea8d026f0ca25850bb579d85376029ee3e73b93 \ - --hash=sha256:78e44686334cbbf2dd21d9df15823bc38663f27a3061f6a032c68a3e30c47bf7 \ - --hash=sha256:79bbca34696c6f9eeeb36a91776070c49a060b2879828e2c8fa6c58b8ed10dd1 \ - --hash=sha256:804c7fb42a34c8ab3a3001901c977a5c24d2e9c586a0f3e7c0a389130b4276fc \ - --hash=sha256:8d9492391ff5c3c80ec30ae2fe82a3f0efd1e750833739c25b0d090e3be1b095 \ - --hash=sha256:95f7a745efd0d56076999b52e8da5fad5d30823bac98b59c68ae75588d09991a \ - --hash=sha256:9da9e7e63376c32704e37ad4cea2dceae6964cee0d8515185b3ab9cbd6b947bc \ - --hash=sha256:a4e20897c88759cbcbd38fb45b507adc91af3e0f67722aa302d71f02dd44d286 \ - --hash=sha256:a6284061f3214335e1eec883a6ee497dbe7a79f19e6a57fed2dd1f03acd5a8cb \ - --hash=sha256:d97409e17915798029e297a84124705c8080da901307ea58f29234e09b073ddc \ - --hash=sha256:dbf5225543ca35ce9f61c950b73899a82be7ba60d58340e76d0bd42bf659235a \ - --hash=sha256:e604db6521c1e367c6bd7fad239c847f53cc46646f2d2651372d05ae5e95f817 \ - --hash=sha256:eb7bdd5e601dd1739698af383be03f3dad0465fe67184ebd5afca770f50df9d6 \ - --hash=sha256:f68b41efd110ce9af1cbe6fa8af9f4dcbadace6db972d30828b911949e28fadd -hpack==4.0.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c \ - --hash=sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095 -httpcore==0.17.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:125f8375ab60036db632f34f4b627a9ad085048eef7cb7d2616fea0f739f98af \ - --hash=sha256:5581b9c12379c4288fe70f43c710d16060c10080617001e6b22a3b6dbcbefd36 -httpx[http2]==0.24.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd \ - --hash=sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd -hyperframe==6.0.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15 \ - --hash=sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914 -idna==3.4 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 -ipdb==0.13.13 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:45529994741c4ab6d2388bfa5d7b725c2cf7fe9deffabdb8a6113aa5ed449ed4 \ - --hash=sha256:e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726 -ipython==8.12.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:c7b80eb7f5a855a88efc971fda506ff7a91c280b42cdae26643e0f601ea281ea \ - --hash=sha256:ea8801f15dfe4ffb76dea1b09b847430ffd70d827b41735c64a0638a04103bfc -jedi==0.18.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e \ - --hash=sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612 -jsons==1.6.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:cd5815c7c6790ae11c70ad9978e0aa850d0d08a643a5105cc604eac8b29a30d7 \ - --hash=sha256:f07f8919316f72a3843c7ca6cc6c900513089f10092626934d1bfe4b5cf15401 -marshmallow==3.19.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78 \ - --hash=sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b -matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311 \ - --hash=sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304 -numpy==1.24.4 ; python_version < "3.12" and python_version >= "3.8" \ - --hash=sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f \ - --hash=sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61 \ - --hash=sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7 \ - --hash=sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400 \ - --hash=sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef \ - --hash=sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2 \ - --hash=sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d \ - --hash=sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc \ - --hash=sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835 \ - --hash=sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706 \ - --hash=sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5 \ - --hash=sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4 \ - --hash=sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6 \ - --hash=sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463 \ - --hash=sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a \ - --hash=sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f \ - --hash=sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e \ - --hash=sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e \ - --hash=sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694 \ - --hash=sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8 \ - --hash=sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64 \ - --hash=sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d \ - --hash=sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc \ - --hash=sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254 \ - --hash=sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2 \ - --hash=sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1 \ - --hash=sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810 \ - --hash=sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9 -opensearch-py==2.2.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:109fe8d2e1e8f419a22358eb901025f51e6ad2f50014c8962e23796b2a23cb67 \ - --hash=sha256:595dcebe42e21cdf945add0b5dbaecccace1a8a5ba65d60314813767b564263c -packaging==23.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f -pandas==2.0.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:02755de164da6827764ceb3bbc5f64b35cb12394b1024fdf88704d0fa06e0e2f \ - --hash=sha256:0a1e0576611641acde15c2322228d138258f236d14b749ad9af498ab69089e2d \ - --hash=sha256:1eb09a242184092f424b2edd06eb2b99d06dc07eeddff9929e8667d4ed44e181 \ - --hash=sha256:30a89d0fec4263ccbf96f68592fd668939481854d2ff9da709d32a047689393b \ - --hash=sha256:50e451932b3011b61d2961b4185382c92cc8c6ee4658dcd4f320687bb2d000ee \ - --hash=sha256:51a93d422fbb1bd04b67639ba4b5368dffc26923f3ea32a275d2cc450f1d1c86 \ - --hash=sha256:598e9020d85a8cdbaa1815eb325a91cfff2bb2b23c1442549b8a3668e36f0f77 \ - --hash=sha256:66d00300f188fa5de73f92d5725ced162488f6dc6ad4cecfe4144ca29debe3b8 \ - --hash=sha256:69167693cb8f9b3fc060956a5d0a0a8dbfed5f980d9fd2c306fb5b9c855c814c \ - --hash=sha256:6d6d10c2142d11d40d6e6c0a190b1f89f525bcf85564707e31b0a39e3b398e08 \ - --hash=sha256:713f2f70abcdade1ddd68fc91577cb090b3544b07ceba78a12f799355a13ee44 \ - --hash=sha256:7376e13d28eb16752c398ca1d36ccfe52bf7e887067af9a0474de6331dd948d2 \ - --hash=sha256:77550c8909ebc23e56a89f91b40ad01b50c42cfbfab49b3393694a50549295ea \ - --hash=sha256:7b21cb72958fc49ad757685db1919021d99650d7aaba676576c9e88d3889d456 \ - --hash=sha256:9ebb9f1c22ddb828e7fd017ea265a59d80461d5a79154b49a4207bd17514d122 \ - --hash=sha256:a18e5c72b989ff0f7197707ceddc99828320d0ca22ab50dd1b9e37db45b010c0 \ - --hash=sha256:a6b5f14cd24a2ed06e14255ff40fe2ea0cfaef79a8dd68069b7ace74bd6acbba \ - --hash=sha256:b42b120458636a981077cfcfa8568c031b3e8709701315e2bfa866324a83efa8 \ - --hash=sha256:c4af689352c4fe3d75b2834933ee9d0ccdbf5d7a8a7264f0ce9524e877820c08 \ - --hash=sha256:c7319b6e68de14e6209460f72a8d1ef13c09fb3d3ef6c37c1e65b35d50b5c145 \ - --hash=sha256:cf3f0c361a4270185baa89ec7ab92ecaa355fe783791457077473f974f654df5 \ - --hash=sha256:dd46bde7309088481b1cf9c58e3f0e204b9ff9e3244f441accd220dd3365ce7c \ - --hash=sha256:dd5476b6c3fe410ee95926873f377b856dbc4e81a9c605a0dc05aaccc6a7c6c6 \ - --hash=sha256:e69140bc2d29a8556f55445c15f5794490852af3de0f609a24003ef174528b79 \ - --hash=sha256:f908a77cbeef9bbd646bd4b81214cbef9ac3dda4181d5092a4aa9797d1bc7774 -parso==0.8.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0 \ - --hash=sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75 -pexpect==4.8.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" \ - --hash=sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937 \ - --hash=sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c -pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca \ - --hash=sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56 -portalocker==2.7.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:032e81d534a88ec1736d03f780ba073f047a06c478b06e2937486f334e955c51 \ - --hash=sha256:a07c5b4f3985c3cf4798369631fb7011adb498e2a46d8440efc75a8f29a0f983 -prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b \ - --hash=sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f -protobuf==4.23.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8 \ - --hash=sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223 \ - --hash=sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288 \ - --hash=sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac \ - --hash=sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1 \ - --hash=sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1 \ - --hash=sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62 \ - --hash=sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb \ - --hash=sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35 \ - --hash=sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b \ - --hash=sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359 \ - --hash=sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a \ - --hash=sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5 -ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" \ - --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ - --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 -pure-eval==0.2.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350 \ - --hash=sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3 -pycparser==2.21 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ - --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic==1.10.9 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d \ - --hash=sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a \ - --hash=sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc \ - --hash=sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3 \ - --hash=sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a \ - --hash=sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7 \ - --hash=sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf \ - --hash=sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f \ - --hash=sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91 \ - --hash=sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece \ - --hash=sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29 \ - --hash=sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60 \ - --hash=sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a \ - --hash=sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305 \ - --hash=sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766 \ - --hash=sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f \ - --hash=sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8 \ - --hash=sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276 \ - --hash=sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c \ - --hash=sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60 \ - --hash=sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896 \ - --hash=sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be \ - --hash=sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb \ - --hash=sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298 \ - --hash=sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4 \ - --hash=sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572 \ - --hash=sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d \ - --hash=sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82 \ - --hash=sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0 \ - --hash=sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4 \ - --hash=sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca \ - --hash=sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1 \ - --hash=sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f \ - --hash=sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f \ - --hash=sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6 \ - --hash=sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e -pygments==2.15.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c \ - --hash=sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1 -pymilvus==2.2.12 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:420bd043c86638cadd5496d2a842ab4cc3dfd0c4acc5293b09cefb6dd396a4d1 \ - --hash=sha256:f8b9f85e2f4a7a388f874da37ab08c41381de81c84cded5cb034bc90f5d0f470 -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -pytz==2023.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588 \ - --hash=sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb -pywin32==306 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" \ - --hash=sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d \ - --hash=sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65 \ - --hash=sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e \ - --hash=sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b \ - --hash=sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4 \ - --hash=sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040 \ - --hash=sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a \ - --hash=sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36 \ - --hash=sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8 \ - --hash=sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e \ - --hash=sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802 \ - --hash=sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a \ - --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ - --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 -qdrant-client==1.3.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:9640855585d1f532094e342f07e0f2ef00652a60fc5d903c92ca3989a1e86318 \ - --hash=sha256:a999358b10e611d71b4b04c6ded36a6cfc963e56b4c3f99d9c1a603ca524a82e -redis==4.6.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:585dc516b9eb042a619ef0a39c3d7d55fe81bdb4df09a52c9cdde0d07bf1aa7d \ - --hash=sha256:e2b03db868160ee4591de3cb90d40ebb50a90dd302138775937f6a42b7ed183c -requests==2.31.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ - --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -setuptools==68.0.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f \ - --hash=sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235 -six==1.16.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ - --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -stack-data==0.6.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815 \ - --hash=sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8 -stopit==1.1.2 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:f7f39c583fd92027bd9d06127b259aee7a5b7945c1f1fa56263811e1e766996d -tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" \ - --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ - --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -tqdm==4.65.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5 \ - --hash=sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671 -traitlets==5.9.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8 \ - --hash=sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9 -typer==0.6.1 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:2d5720a5e63f73eaf31edaa15f6ab87f35f0690f8ca233017d7d23d743a91d73 \ - --hash=sha256:54b19e5df18654070a82f8c2aa1da456a4ac16a2a83e6dcd9f170e291c56338e -typing-extensions==4.5.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb \ - --hash=sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4 -typish==1.9.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:03cfee5e6eb856dbf90244e18f4e4c41044c8790d5779f4e775f63f982e2f896 -tzdata==2023.3 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a \ - --hash=sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda -ujson==5.8.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:07d459aca895eb17eb463b00441986b021b9312c6c8cc1d06880925c7f51009c \ - --hash=sha256:0be81bae295f65a6896b0c9030b55a106fb2dec69ef877253a87bc7c9c5308f7 \ - --hash=sha256:0fe1b7edaf560ca6ab023f81cbeaf9946a240876a993b8c5a21a1c539171d903 \ - --hash=sha256:102bf31c56f59538cccdfec45649780ae00657e86247c07edac434cb14d5388c \ - --hash=sha256:11da6bed916f9bfacf13f4fc6a9594abd62b2bb115acfb17a77b0f03bee4cfd5 \ - --hash=sha256:16fde596d5e45bdf0d7de615346a102510ac8c405098e5595625015b0d4b5296 \ - --hash=sha256:193349a998cd821483a25f5df30b44e8f495423840ee11b3b28df092ddfd0f7f \ - --hash=sha256:20768961a6a706170497129960762ded9c89fb1c10db2989c56956b162e2a8a3 \ - --hash=sha256:27a2a3c7620ebe43641e926a1062bc04e92dbe90d3501687957d71b4bdddaec4 \ - --hash=sha256:2873d196725a8193f56dde527b322c4bc79ed97cd60f1d087826ac3290cf9207 \ - --hash=sha256:299a312c3e85edee1178cb6453645217ba23b4e3186412677fa48e9a7f986de6 \ - --hash=sha256:2a64cc32bb4a436e5813b83f5aab0889927e5ea1788bf99b930fad853c5625cb \ - --hash=sha256:2b852bdf920fe9f84e2a2c210cc45f1b64f763b4f7d01468b33f7791698e455e \ - --hash=sha256:2e72ba76313d48a1a3a42e7dc9d1db32ea93fac782ad8dde6f8b13e35c229130 \ - --hash=sha256:3659deec9ab9eb19e8646932bfe6fe22730757c4addbe9d7d5544e879dc1b721 \ - --hash=sha256:3b27a8da7a080add559a3b73ec9ebd52e82cc4419f7c6fb7266e62439a055ed0 \ - --hash=sha256:3f9b63530a5392eb687baff3989d0fb5f45194ae5b1ca8276282fb647f8dcdb3 \ - --hash=sha256:407d60eb942c318482bbfb1e66be093308bb11617d41c613e33b4ce5be789adc \ - --hash=sha256:40931d7c08c4ce99adc4b409ddb1bbb01635a950e81239c2382cfe24251b127a \ - --hash=sha256:48c7d373ff22366eecfa36a52b9b55b0ee5bd44c2b50e16084aa88b9de038916 \ - --hash=sha256:4ddeabbc78b2aed531f167d1e70387b151900bc856d61e9325fcdfefb2a51ad8 \ - --hash=sha256:5ac97b1e182d81cf395ded620528c59f4177eee024b4b39a50cdd7b720fdeec6 \ - --hash=sha256:5ce24909a9c25062e60653073dd6d5e6ec9d6ad7ed6e0069450d5b673c854405 \ - --hash=sha256:69b3104a2603bab510497ceabc186ba40fef38ec731c0ccaa662e01ff94a985c \ - --hash=sha256:6a4dafa9010c366589f55afb0fd67084acd8added1a51251008f9ff2c3e44042 \ - --hash=sha256:6d230d870d1ce03df915e694dcfa3f4e8714369cce2346686dbe0bc8e3f135e7 \ - --hash=sha256:78e318def4ade898a461b3d92a79f9441e7e0e4d2ad5419abed4336d702c7425 \ - --hash=sha256:7a42baa647a50fa8bed53d4e242be61023bd37b93577f27f90ffe521ac9dc7a3 \ - --hash=sha256:7cba16b26efe774c096a5e822e4f27097b7c81ed6fb5264a2b3f5fd8784bab30 \ - --hash=sha256:7d8283ac5d03e65f488530c43d6610134309085b71db4f675e9cf5dff96a8282 \ - --hash=sha256:7ecc33b107ae88405aebdb8d82c13d6944be2331ebb04399134c03171509371a \ - --hash=sha256:9249fdefeb021e00b46025e77feed89cd91ffe9b3a49415239103fc1d5d9c29a \ - --hash=sha256:9399eaa5d1931a0ead49dce3ffacbea63f3177978588b956036bfe53cdf6af75 \ - --hash=sha256:94c7bd9880fa33fcf7f6d7f4cc032e2371adee3c5dba2922b918987141d1bf07 \ - --hash=sha256:9571de0c53db5cbc265945e08f093f093af2c5a11e14772c72d8e37fceeedd08 \ - --hash=sha256:9721cd112b5e4687cb4ade12a7b8af8b048d4991227ae8066d9c4b3a6642a582 \ - --hash=sha256:9ab282d67ef3097105552bf151438b551cc4bedb3f24d80fada830f2e132aeb9 \ - --hash=sha256:9d9707e5aacf63fb919f6237d6490c4e0244c7f8d3dc2a0f84d7dec5db7cb54c \ - --hash=sha256:a70f776bda2e5072a086c02792c7863ba5833d565189e09fabbd04c8b4c3abba \ - --hash=sha256:a89cf3cd8bf33a37600431b7024a7ccf499db25f9f0b332947fbc79043aad879 \ - --hash=sha256:a8c91b6f4bf23f274af9002b128d133b735141e867109487d17e344d38b87d94 \ - --hash=sha256:ad24ec130855d4430a682c7a60ca0bc158f8253ec81feed4073801f6b6cb681b \ - --hash=sha256:ae7f4725c344bf437e9b881019c558416fe84ad9c6b67426416c131ad577df67 \ - --hash=sha256:b748797131ac7b29826d1524db1cc366d2722ab7afacc2ce1287cdafccddbf1f \ - --hash=sha256:bdf04c6af3852161be9613e458a1fb67327910391de8ffedb8332e60800147a2 \ - --hash=sha256:bf5737dbcfe0fa0ac8fa599eceafae86b376492c8f1e4b84e3adf765f03fb564 \ - --hash=sha256:c4e7bb7eba0e1963f8b768f9c458ecb193e5bf6977090182e2b4f4408f35ac76 \ - --hash=sha256:d524a8c15cfc863705991d70bbec998456a42c405c291d0f84a74ad7f35c5109 \ - --hash=sha256:d53039d39de65360e924b511c7ca1a67b0975c34c015dd468fca492b11caa8f7 \ - --hash=sha256:d6f84a7a175c75beecde53a624881ff618e9433045a69fcfb5e154b73cdaa377 \ - --hash=sha256:e0147d41e9fb5cd174207c4a2895c5e24813204499fd0839951d4c8784a23bf5 \ - --hash=sha256:e3673053b036fd161ae7a5a33358ccae6793ee89fd499000204676baafd7b3aa \ - --hash=sha256:e54578fa8838ddc722539a752adfce9372474114f8c127bb316db5392d942f8b \ - --hash=sha256:eb0142f6f10f57598655340a3b2c70ed4646cbe674191da195eb0985a9813b83 \ - --hash=sha256:efeddf950fb15a832376c0c01d8d7713479fbeceaed1eaecb2665aa62c305aec \ - --hash=sha256:f26629ac531d712f93192c233a74888bc8b8212558bd7d04c349125f10199fcf \ - --hash=sha256:f2e385a7679b9088d7bc43a64811a7713cc7c33d032d020f757c54e7d41931ae \ - --hash=sha256:f3554eaadffe416c6f543af442066afa6549edbc34fe6a7719818c3e72ebfe95 \ - --hash=sha256:f4511560d75b15ecb367eef561554959b9d49b6ec3b8d5634212f9fed74a6df1 \ - --hash=sha256:f504117a39cb98abba4153bf0b46b4954cc5d62f6351a14660201500ba31fe7f \ - --hash=sha256:fb87decf38cc82bcdea1d7511e73629e651bdec3a43ab40985167ab8449b769c -urllib3==1.26.16 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f \ - --hash=sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14 -validators==0.20.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a -wcwidth==0.2.6 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e \ - --hash=sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0 -weaviate-client==3.21.0 ; python_version >= "3.8" and python_version < "3.12" \ - --hash=sha256:420444ded7106fb000f4f8b2321b5f5fa2387825aa7a303d702accf61026f9d2 \ - --hash=sha256:ec94ac554883c765e94da8b2947c4f0fa4a0378ed3bbe9f3653df3a5b1745a6d +anyio==3.7.0 ; python_version >= "3.8" and python_version < "3.12" +appnope==0.1.3 ; python_version >= "3.8" and python_version < "3.12" and sys_platform == "darwin" +asttokens==2.2.1 ; python_version >= "3.8" and python_version < "3.12" +async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version <= "3.11.2" +authlib==1.2.1 ; python_version >= "3.8" and python_version < "3.12" +backcall==0.2.0 ; python_version >= "3.8" and python_version < "3.12" +backoff==2.2.1 ; python_version >= "3.8" and python_version < "3.12" +certifi==2023.5.7 ; python_version >= "3.8" and python_version < "3.12" +cffi==1.15.1 ; python_version >= "3.8" and python_version < "3.12" +charset-normalizer==3.1.0 ; python_version >= "3.8" and python_version < "3.12" +click==8.1.3 ; python_version >= "3.8" and python_version < "3.12" +colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" or python_version >= "3.8" and python_version < "3.12" and sys_platform == "win32" +cryptography==41.0.1 ; python_version >= "3.8" and python_version < "3.12" +decorator==5.1.1 ; python_version >= "3.8" and python_version < "3.12" +elastic-transport==8.4.0 ; python_version >= "3.8" and python_version < "3.12" +elasticsearch==8.8.0 ; python_version >= "3.8" and python_version < "3.12" +environs==9.5.0 ; python_version >= "3.8" and python_version < "3.12" +exceptiongroup==1.1.1 ; python_version >= "3.8" and python_version < "3.11" +executing==1.2.0 ; python_version >= "3.8" and python_version < "3.12" +grpcio-tools==1.53.0 ; python_version >= "3.8" and python_version < "3.12" +grpcio==1.53.0 ; python_version >= "3.8" and python_version < "3.12" +h11==0.14.0 ; python_version >= "3.8" and python_version < "3.12" +h2==4.1.0 ; python_version >= "3.8" and python_version < "3.12" +h5py==3.9.0 ; python_version >= "3.8" and python_version < "3.12" +hpack==4.0.0 ; python_version >= "3.8" and python_version < "3.12" +httpcore==0.17.2 ; python_version >= "3.8" and python_version < "3.12" +httpx[http2]==0.24.1 ; python_version >= "3.8" and python_version < "3.12" +hyperframe==6.0.1 ; python_version >= "3.8" and python_version < "3.12" +idna==3.4 ; python_version >= "3.8" and python_version < "3.12" +ipdb==0.13.13 ; python_version >= "3.8" and python_version < "3.12" +ipython==8.12.2 ; python_version >= "3.8" and python_version < "3.12" +jedi==0.18.2 ; python_version >= "3.8" and python_version < "3.12" +jsons==1.6.3 ; python_version >= "3.8" and python_version < "3.12" +marshmallow==3.19.0 ; python_version >= "3.8" and python_version < "3.12" +matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_version < "3.12" +numpy==1.24.4 ; python_version < "3.12" and python_version >= "3.8" +opensearch-py==2.2.0 ; python_version >= "3.8" and python_version < "3.12" +packaging==23.1 ; python_version >= "3.8" and python_version < "3.12" +pandas==2.0.2 ; python_version >= "3.8" and python_version < "3.12" +parso==0.8.3 ; python_version >= "3.8" and python_version < "3.12" +pexpect==4.8.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" +pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "3.12" +portalocker==2.7.0 ; python_version >= "3.8" and python_version < "3.12" +prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_version < "3.12" +protobuf==4.23.3 ; python_version >= "3.8" and python_version < "3.12" +ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" +pure-eval==0.2.2 ; python_version >= "3.8" and python_version < "3.12" +pycparser==2.21 ; python_version >= "3.8" and python_version < "3.12" +pydantic==1.10.9 ; python_version >= "3.8" and python_version < "3.12" +pygments==2.15.1 ; python_version >= "3.8" and python_version < "3.12" +pymilvus==2.2.12 ; python_version >= "3.8" and python_version < "3.12" +python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.12" +python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "3.12" +pytz==2023.3 ; python_version >= "3.8" and python_version < "3.12" +pywin32==306 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" +qdrant-client==1.3.1 ; python_version >= "3.8" and python_version < "3.12" +redis==4.6.0 ; python_version >= "3.8" and python_version < "3.12" +requests==2.31.0 ; python_version >= "3.8" and python_version < "3.12" +setuptools==68.0.0 ; python_version >= "3.8" and python_version < "3.12" +six==1.16.0 ; python_version >= "3.8" and python_version < "3.12" +sniffio==1.3.0 ; python_version >= "3.8" and python_version < "3.12" +stack-data==0.6.2 ; python_version >= "3.8" and python_version < "3.12" +stopit==1.1.2 ; python_version >= "3.8" and python_version < "3.12" +tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" +tqdm==4.65.0 ; python_version >= "3.8" and python_version < "3.12" +traitlets==5.9.0 ; python_version >= "3.8" and python_version < "3.12" +typer==0.6.1 ; python_version >= "3.8" and python_version < "3.12" +typing-extensions==4.5.0 ; python_version >= "3.8" and python_version < "3.12" +typish==1.9.3 ; python_version >= "3.8" and python_version < "3.12" +tzdata==2023.3 ; python_version >= "3.8" and python_version < "3.12" +ujson==5.8.0 ; python_version >= "3.8" and python_version < "3.12" +urllib3==1.26.16 ; python_version >= "3.8" and python_version < "3.12" +validators==0.20.0 ; python_version >= "3.8" and python_version < "3.12" +wcwidth==0.2.6 ; python_version >= "3.8" and python_version < "3.12" +weaviate-client==3.22.1 ; python_version >= "3.8" and python_version < "3.12" From 42fc051f5e30d0d2f362ebda0e5b48595391c1ff Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 00:18:25 +0100 Subject: [PATCH 019/204] Specify batch_size (and reduce from 64 to 32) on milvus configs. --- engine/clients/milvus/upload.py | 4 +++- experiments/configurations/milvus-on-disk.json | 2 +- experiments/configurations/milvus-single-node.json | 14 +++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index 03c3b88a..87c3fa84 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -1,3 +1,4 @@ +import logging import multiprocessing as mp from typing import List, Optional import backoff @@ -70,7 +71,8 @@ def upload_batch( @classmethod @backoff.on_exception(backoff.expo, MilvusException, - max_time=120) + max_time=600, + backoff_log_level=logging.WARN) def upload_with_backoff(cls, field_values, ids, vectors): cls.collection.insert([ids, vectors] + field_values) diff --git a/experiments/configurations/milvus-on-disk.json b/experiments/configurations/milvus-on-disk.json index 971bd0ee..4f255338 100644 --- a/experiments/configurations/milvus-on-disk.json +++ b/experiments/configurations/milvus-on-disk.json @@ -7,6 +7,6 @@ "search_params": [ { "parallel": 8, "params": { } } ], - "upload_params": { "parallel": 4, "index_type": "DISKANN", "index_params": { } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_type": "DISKANN", "index_params": { } } } ] \ No newline at end of file diff --git a/experiments/configurations/milvus-single-node.json b/experiments/configurations/milvus-single-node.json index b6ad3fdb..618af904 100644 --- a/experiments/configurations/milvus-single-node.json +++ b/experiments/configurations/milvus-single-node.json @@ -11,7 +11,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "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 } } + "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 100, "M": 16 } } }, { "name": "milvus-m-16-ef-128", @@ -25,7 +25,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "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 } } + "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 16 } } }, { "name": "milvus-m-32-ef-128", @@ -39,7 +39,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "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 } } + "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 32 } } }, { "name": "milvus-m-32-ef-256", @@ -53,7 +53,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "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 } } + "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 32 } } }, { "name": "milvus-m-32-ef-512", @@ -67,7 +67,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "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 } } + "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 32 } } }, { "name": "milvus-m-64-ef-256", @@ -81,7 +81,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "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 } } + "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 64 } } }, { "name": "milvus-m-64-ef-512", @@ -95,6 +95,6 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "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 } } + "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 64 } } } ] \ No newline at end of file From 228b10d8f3bac6ff62b83cb6c987943eabe18f76 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 13:24:07 +0100 Subject: [PATCH 020/204] Updating milvus upload params from 16 to 4 concurrent clients doing batches of 32 vectors --- experiments/configurations/milvus-single-node.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/experiments/configurations/milvus-single-node.json b/experiments/configurations/milvus-single-node.json index 618af904..41df2bf2 100644 --- a/experiments/configurations/milvus-single-node.json +++ b/experiments/configurations/milvus-single-node.json @@ -11,7 +11,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 100, "M": 16 } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 100, "M": 16 } } }, { "name": "milvus-m-16-ef-128", @@ -25,7 +25,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 16 } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 16 } } }, { "name": "milvus-m-32-ef-128", @@ -39,7 +39,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 32 } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 32 } } }, { "name": "milvus-m-32-ef-256", @@ -53,7 +53,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 32 } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 32 } } }, { "name": "milvus-m-32-ef-512", @@ -67,7 +67,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 32 } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 32 } } }, { "name": "milvus-m-64-ef-256", @@ -81,7 +81,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 64 } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 64 } } }, { "name": "milvus-m-64-ef-512", @@ -95,6 +95,6 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 16, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 64 } } + "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 64 } } } ] \ No newline at end of file From 55f91c2906cf3b57f93025e51fbb021c203d4e81 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 15:09:07 +0100 Subject: [PATCH 021/204] Cleanup on milvus client --- engine/base_client/upload.py | 13 ++++++++----- engine/clients/milvus/config.py | 21 ++++++++++++++++++++- engine/clients/milvus/configure.py | 26 ++++++-------------------- engine/clients/milvus/search.py | 20 ++++---------------- engine/clients/milvus/upload.py | 18 ++---------------- engine/clients/weaviate/upload.py | 3 ++- 6 files changed, 42 insertions(+), 59 deletions(-) diff --git a/engine/base_client/upload.py b/engine/base_client/upload.py index b70b8e6a..a7cfe811 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -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 diff --git a/engine/clients/milvus/config.py b/engine/clients/milvus/config.py index 3ebec8c2..f266af50 100644 --- a/engine/clients/milvus/config.py +++ b/engine/clients/milvus/config.py @@ -1,4 +1,4 @@ -from pymilvus import DataType +from pymilvus import DataType, connections import os from engine.base_client.distances import Distance @@ -27,3 +27,22 @@ DataType.VARCHAR: "---MILVUS DOES NOT ACCEPT EMPTY STRINGS---", DataType.FLOAT: 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 \ No newline at end of file diff --git a/engine/clients/milvus/configure.py b/engine/clients/milvus/configure.py index 4ed48384..0149dea5 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_PASS, MILVUS_USER, MILVUS_PORT, + get_milvus_client, ) @@ -32,29 +32,15 @@ class MilvusConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - h = "" - uri = "" - if host.startswith("http"): - uri = host - else: - h = host - self.client = connections.connect( - alias=MILVUS_DEFAULT_ALIAS, - host=h, - uri=uri, - port=MILVUS_PORT, - user=MILVUS_USER, - password=MILVUS_PASS, - **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) - utility.has_collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) - except MilvusException: - pass + print("dropped collection named {MILVUS_COLLECTION_NAME}...") + assert utility.has_collection(MILVUS_COLLECTION_NAME, using=MILVUS_DEFAULT_ALIAS) 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 c36bb02a..1e48dc90 100644 --- a/engine/clients/milvus/search.py +++ b/engine/clients/milvus/search.py @@ -8,7 +8,7 @@ DISTANCE_MAPPING, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_PASS, MILVUS_USER, MILVUS_PORT, + get_milvus_client, ) from engine.clients.milvus.parser import MilvusConditionParser @@ -22,25 +22,13 @@ class MilvusSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - h = "" - uri = "" - if host.startswith("http"): - uri = host - else: - h = host - cls.client = connections.connect( - alias=MILVUS_DEFAULT_ALIAS, - host=h, - uri=uri, - port=MILVUS_PORT, - user=MILVUS_USER, - password=MILVUS_PASS, - **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] + + @classmethod def get_mp_start_method(cls): return "forkserver" if "forkserver" in mp.get_all_start_methods() else "spawn" diff --git a/engine/clients/milvus/upload.py b/engine/clients/milvus/upload.py index 87c3fa84..8157608f 100644 --- a/engine/clients/milvus/upload.py +++ b/engine/clients/milvus/upload.py @@ -16,7 +16,7 @@ DTYPE_DEFAULT, MILVUS_COLLECTION_NAME, MILVUS_DEFAULT_ALIAS, - MILVUS_USER, MILVUS_PASS, MILVUS_PORT, + get_milvus_client, ) @@ -32,21 +32,7 @@ def get_mp_start_method(cls): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - h = "" - uri = "" - if host.startswith("http"): - uri = host - else: - h = host - cls.client = connections.connect( - alias=MILVUS_DEFAULT_ALIAS, - host=h, - uri=uri, - port=MILVUS_PORT, - user=MILVUS_USER, - password=MILVUS_PASS, - **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] diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index e31855c4..431c61d0 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -1,12 +1,13 @@ import uuid from typing import List, Optional +from weaviate import Client from engine.base_client.upload import BaseUploader from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client class WeaviateUploader(BaseUploader): - client = None + client : Client = None upload_params = {} @classmethod From 96410800fcf4275194b51b759b37c48862dffc57 Mon Sep 17 00:00:00 2001 From: alon Date: Wed, 12 Jul 2023 18:21:15 +0300 Subject: [PATCH 022/204] Change recall computation to be as ann-benchmarks' --- engine/base_client/search.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 64550df0..a9ea5b89 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -50,9 +50,17 @@ def _search_one(cls, query, top: Optional[int] = None): precision = 1.0 if query.expected_result: - ids = set(x[0] for x in search_res) - precision = len(ids.intersection(query.expected_result[:top])) / top - + # This was Qdrant original recall calculation + # ids = set(x[0] for x in search_res) + # precision = len(ids.intersection(query.expected_result[:top])) / top + # This is ann-benchmark recall calculation + epsilon = 1e-3 + threshold = query.expected_scores[top - 1] + epsilon + actual = 0.0 + for cand_res in search_res[:top]: + if cand_res[1] <= threshold: + actual += 1 + precision = actual/top return precision, end - start def search_all( From e10887405029f3ee1614de17a26386ebce8af3a0 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 16:46:32 +0100 Subject: [PATCH 023/204] Reducing weaviate batch size due to recurrent ingest errors. ensuring cluster is ready/alive before benchmark --- engine/clients/weaviate/config.py | 2 ++ engine/clients/weaviate/search.py | 2 ++ engine/clients/weaviate/upload.py | 4 ++-- .../configurations/weaviate-single-node.json | 14 +++++++------- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index feeaa60f..79dd1e80 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -17,4 +17,6 @@ def setup_client(connection_params, host): if WEAVIATE_API_KEY is not None: auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) c = Client(url, auth_client_secret, **connection_params) + # Ping Weaviate's live state. + assert c.is_live() is True return c \ No newline at end of file diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index 80ef3165..8d69470c 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -17,6 +17,8 @@ class WeaviateSearcher(BaseSearcher): def init_client(cls, host, distance, connection_params: dict, search_params: dict): cls.client = setup_client(connection_params, host) cls.search_params = search_params + # Ping Weaviate's ready state + assert cls.client.is_ready() is True @classmethod def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index 431c61d0..d113927e 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -35,8 +35,8 @@ def upload_batch( # Weaviate introduced the batch_size, so it can handle built-in client's # multi-threading. That should make the upload faster. cls.client.batch.configure( - batch_size=100, - timeout_retries=3, + batch_size=len(vectors), + timeout_retries=5, ) with cls.client.batch as batch: diff --git a/experiments/configurations/weaviate-single-node.json b/experiments/configurations/weaviate-single-node.json index 918e74ed..4b2ebb4a 100644 --- a/experiments/configurations/weaviate-single-node.json +++ b/experiments/configurations/weaviate-single-node.json @@ -9,7 +9,7 @@ "search_params": [ { "parallel": 8, "vectorIndexConfig": { "ef": 128} } ], - "upload_params": { "batch_size": 1000, "parallel": 5 } + "upload_params": { "batch_size": 32, "parallel": 4 } }, { "name": "weaviate-m-16-ef-128", @@ -25,7 +25,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 1000, "parallel": 5 } + "upload_params": { "batch_size": 32, "parallel": 4 } }, { "name": "weaviate-m-32-ef-128", @@ -41,7 +41,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 1000, "parallel": 5 } + "upload_params": { "batch_size": 32, "parallel": 4 } }, { "name": "weaviate-m-32-ef-256", @@ -57,7 +57,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 1000, "parallel": 5 } + "upload_params": { "batch_size": 32, "parallel": 4 } }, { "name": "weaviate-m-32-ef-512", @@ -73,7 +73,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 1000, "parallel": 5 } + "upload_params": { "batch_size": 32, "parallel": 4 } }, { "name": "weaviate-m-64-ef-256", @@ -89,7 +89,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 1000, "parallel": 5 } + "upload_params": { "batch_size": 32, "parallel": 4 } }, { "name": "weaviate-m-64-ef-512", @@ -105,6 +105,6 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 10000, "parallel": 1 } + "upload_params": { "batch_size": 32, "parallel": 4 } } ] \ No newline at end of file From 60360ad134f2db8aeb90dc1f7ec1b04f1c40211c Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 16:48:49 +0100 Subject: [PATCH 024/204] Reducing milvus batch size to ensure a steady ingestion --- experiments/configurations/milvus-on-disk.json | 2 +- experiments/configurations/milvus-single-node.json | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/experiments/configurations/milvus-on-disk.json b/experiments/configurations/milvus-on-disk.json index 4f255338..c33e0e50 100644 --- a/experiments/configurations/milvus-on-disk.json +++ b/experiments/configurations/milvus-on-disk.json @@ -7,6 +7,6 @@ "search_params": [ { "parallel": 8, "params": { } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_type": "DISKANN", "index_params": { } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_type": "DISKANN", "index_params": { } } } ] \ No newline at end of file diff --git a/experiments/configurations/milvus-single-node.json b/experiments/configurations/milvus-single-node.json index 41df2bf2..cb7b6328 100644 --- a/experiments/configurations/milvus-single-node.json +++ b/experiments/configurations/milvus-single-node.json @@ -11,7 +11,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 100, "M": 16 } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 100, "M": 16 } } }, { "name": "milvus-m-16-ef-128", @@ -25,7 +25,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 16 } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 128, "M": 16 } } }, { "name": "milvus-m-32-ef-128", @@ -39,7 +39,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 128, "M": 32 } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 128, "M": 32 } } }, { "name": "milvus-m-32-ef-256", @@ -53,7 +53,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 32 } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 256, "M": 32 } } }, { "name": "milvus-m-32-ef-512", @@ -67,7 +67,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 32 } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 512, "M": 32 } } }, { "name": "milvus-m-64-ef-256", @@ -81,7 +81,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 256, "M": 64 } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 256, "M": 64 } } }, { "name": "milvus-m-64-ef-512", @@ -95,6 +95,6 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 32, "index_params": { "efConstruction": 512, "M": 64 } } + "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 512, "M": 64 } } } ] \ No newline at end of file From 832fc8684c907f0bcecaf4b74c2b6556bce920d8 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 18:04:14 +0100 Subject: [PATCH 025/204] Increasing timeout config for weaviate. Reduce parallel count on ingestion to avoid bad state --- .../configurations/weaviate-single-node.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/experiments/configurations/weaviate-single-node.json b/experiments/configurations/weaviate-single-node.json index 4b2ebb4a..f8885ff7 100644 --- a/experiments/configurations/weaviate-single-node.json +++ b/experiments/configurations/weaviate-single-node.json @@ -3,19 +3,19 @@ "name": "weaviate-default", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 100, "maxConnections": 16 } }, "search_params": [ { "parallel": 8, "vectorIndexConfig": { "ef": 128} } ], - "upload_params": { "batch_size": 32, "parallel": 4 } + "upload_params": { "batch_size": 32, "parallel": 1 } }, { "name": "weaviate-m-16-ef-128", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 128, "maxConnections": 16 } }, "search_params": [ @@ -25,13 +25,13 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 4 } + "upload_params": { "batch_size": 32, "parallel": 1 } }, { "name": "weaviate-m-32-ef-128", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 128, "maxConnections": 32 } }, "search_params": [ @@ -41,13 +41,13 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 4 } + "upload_params": { "batch_size": 32, "parallel": 1 } }, { "name": "weaviate-m-32-ef-256", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 256, "maxConnections": 32 } }, "search_params": [ @@ -57,13 +57,13 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 4 } + "upload_params": { "batch_size": 32, "parallel": 1 } }, { "name": "weaviate-m-32-ef-512", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 512, "maxConnections": 32 } }, "search_params": [ @@ -73,13 +73,13 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 4 } + "upload_params": { "batch_size": 32, "parallel": 1 } }, { "name": "weaviate-m-64-ef-256", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 256, "maxConnections": 64 } }, "search_params": [ @@ -89,13 +89,13 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 4 } + "upload_params": { "batch_size": 32, "parallel": 1 } }, { "name": "weaviate-m-64-ef-512", "engine": "weaviate", "connection_params": { - "timeout_config": 1000 + "timeout_config": 90000 }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 512, "maxConnections": 64 } }, "search_params": [ @@ -105,6 +105,6 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 4 } + "upload_params": { "batch_size": 32, "parallel": 1 } } ] \ No newline at end of file From f8b4b7a3995fa2dca0b1b480b7820f8e6b3e3021 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 20:21:26 +0100 Subject: [PATCH 026/204] Added single client weviate config --- ...e-node.json => __weaviate-single-node.txt} | 0 .../weaviate-single-node-single-client.json | 86 +++++++++++++++++++ 2 files changed, 86 insertions(+) rename experiments/configurations/{weaviate-single-node.json => __weaviate-single-node.txt} (100%) create mode 100644 experiments/configurations/weaviate-single-node-single-client.json diff --git a/experiments/configurations/weaviate-single-node.json b/experiments/configurations/__weaviate-single-node.txt similarity index 100% rename from experiments/configurations/weaviate-single-node.json rename to experiments/configurations/__weaviate-single-node.txt diff --git a/experiments/configurations/weaviate-single-node-single-client.json b/experiments/configurations/weaviate-single-node-single-client.json new file mode 100644 index 00000000..720000f0 --- /dev/null +++ b/experiments/configurations/weaviate-single-node-single-client.json @@ -0,0 +1,86 @@ +[ + { + "name": "weaviate-default", + "engine": "weaviate", + "connection_params": { + "timeout_config": 90000 + }, + "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 100, "maxConnections": 16 } }, + "search_params": [ + { "parallel": 8, "vectorIndexConfig": { "ef": 128} } + ], + "upload_params": { "batch_size": 32, "parallel": 1 } + }, + { + "name": "weaviate-m-16-ef-128", + "engine": "weaviate", + "connection_params": { + "timeout_config": 90000 + }, + "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 128, "maxConnections": 16 } }, + "search_params": [ + { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } + ], + "upload_params": { "batch_size": 32, "parallel": 1 } + }, + { + "name": "weaviate-m-32-ef-128", + "engine": "weaviate", + "connection_params": { + "timeout_config": 90000 + }, + "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 128, "maxConnections": 32 } }, + "search_params": [ + { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } + ], + "upload_params": { "batch_size": 32, "parallel": 1 } + }, + { + "name": "weaviate-m-32-ef-256", + "engine": "weaviate", + "connection_params": { + "timeout_config": 90000 + }, + "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 256, "maxConnections": 32 } }, + "search_params": [ + { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } + ], + "upload_params": { "batch_size": 32, "parallel": 1 } + }, + { + "name": "weaviate-m-32-ef-512", + "engine": "weaviate", + "connection_params": { + "timeout_config": 90000 + }, + "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 512, "maxConnections": 32 } }, + "search_params": [ + { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } + ], + "upload_params": { "batch_size": 32, "parallel": 1 } + }, + { + "name": "weaviate-m-64-ef-256", + "engine": "weaviate", + "connection_params": { + "timeout_config": 90000 + }, + "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 256, "maxConnections": 64 } }, + "search_params": [ + { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } + ], + "upload_params": { "batch_size": 32, "parallel": 1 } + }, + { + "name": "weaviate-m-64-ef-512", + "engine": "weaviate", + "connection_params": { + "timeout_config": 90000 + }, + "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 512, "maxConnections": 64 } }, + "search_params": [ + { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } + ], + "upload_params": { "batch_size": 32, "parallel": 1 } + } +] From c10df6d857b3581c18de4f77043e507ceb1097b8 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 20:22:54 +0100 Subject: [PATCH 027/204] Added single client weviate config --- .../configurations/weaviate-single-node-single-client.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experiments/configurations/weaviate-single-node-single-client.json b/experiments/configurations/weaviate-single-node-single-client.json index 720000f0..d8807f9e 100644 --- a/experiments/configurations/weaviate-single-node-single-client.json +++ b/experiments/configurations/weaviate-single-node-single-client.json @@ -7,7 +7,7 @@ }, "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 100, "maxConnections": 16 } }, "search_params": [ - { "parallel": 8, "vectorIndexConfig": { "ef": 128} } + { "parallel": 1, "vectorIndexConfig": { "ef": 128} } ], "upload_params": { "batch_size": 32, "parallel": 1 } }, From 32b4c6e62dc67c683e2f2f0fd8013c5b0fd1d3a5 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jul 2023 21:12:59 +0100 Subject: [PATCH 028/204] Revert "Change recall computation to be as ann-benchmarks'" This reverts commit 96410800fcf4275194b51b759b37c48862dffc57. --- engine/base_client/search.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index a9ea5b89..64550df0 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -50,17 +50,9 @@ def _search_one(cls, query, top: Optional[int] = None): precision = 1.0 if query.expected_result: - # This was Qdrant original recall calculation - # ids = set(x[0] for x in search_res) - # precision = len(ids.intersection(query.expected_result[:top])) / top - # This is ann-benchmark recall calculation - epsilon = 1e-3 - threshold = query.expected_scores[top - 1] + epsilon - actual = 0.0 - for cand_res in search_res[:top]: - if cand_res[1] <= threshold: - actual += 1 - precision = actual/top + 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( From 0559dd483c5b2c8e477698fec6f23e75ee322e11 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 13 Jul 2023 15:24:00 +0100 Subject: [PATCH 029/204] Included single segment config for qdrant --- .../qdrant-single-node-single-segment.json | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 experiments/configurations/qdrant-single-node-single-segment.json diff --git a/experiments/configurations/qdrant-single-node-single-segment.json b/experiments/configurations/qdrant-single-node-single-segment.json new file mode 100644 index 00000000..8fc70e26 --- /dev/null +++ b/experiments/configurations/qdrant-single-node-single-segment.json @@ -0,0 +1,104 @@ +[ + { + "name": "qdrant-single-segment-m-16-ef-128", + "engine": "qdrant", + "connection_params": {}, + "collection_params": { + "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "hnsw_config": { "m": 16, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-32-ef-128", + "engine": "qdrant", + "connection_params": {}, + "collection_params": { + "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "hnsw_config": { "m": 32, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-32-ef-256", + "engine": "qdrant", + "connection_params": {}, + "collection_params": { + "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "hnsw_config": { "m": 32, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-32-ef-512", + "engine": "qdrant", + "connection_params": {}, + "collection_params": { + "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "hnsw_config": { "m": 32, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-64-ef-256", + "engine": "qdrant", + "connection_params": {}, + "collection_params": { + "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "hnsw_config": { "m": 64, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-64-ef-512", + "engine": "qdrant", + "connection_params": {}, + "collection_params": { + "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "hnsw_config": { "m": 64, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, + { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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 } + } +] \ No newline at end of file From e93f2735bb443c113e7d2d29e29d30c034231934 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 13 Jul 2023 16:08:18 +0100 Subject: [PATCH 030/204] Verbose info about collection cleaning. Checking if setting is now optimizers_config --- engine/base_client/configure.py | 1 + engine/clients/qdrant/configure.py | 3 ++- .../qdrant-single-node-single-segment.json | 12 ++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/engine/base_client/configure.py b/engine/base_client/configure.py index 8d492e43..f0e228e5 100644 --- a/engine/base_client/configure.py +++ b/engine/base_client/configure.py @@ -18,6 +18,7 @@ def recreate(self, dataset: Dataset, collection_params): raise NotImplementedError() def configure(self, dataset: Dataset) -> Optional[dict]: + print("Ensuring we have a clean DB") self.clean() return self.recreate(dataset, self.collection_params) or {} diff --git a/engine/clients/qdrant/configure.py b/engine/clients/qdrant/configure.py index 6c3d7762..d56f97e1 100644 --- a/engine/clients/qdrant/configure.py +++ b/engine/clients/qdrant/configure.py @@ -29,7 +29,8 @@ def __init__(self, host, collection_params: dict, connection_params: dict): 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) + assert res is True def recreate(self, dataset: Dataset, collection_params): self.client.recreate_collection( diff --git a/experiments/configurations/qdrant-single-node-single-segment.json b/experiments/configurations/qdrant-single-node-single-segment.json index 8fc70e26..48175186 100644 --- a/experiments/configurations/qdrant-single-node-single-segment.json +++ b/experiments/configurations/qdrant-single-node-single-segment.json @@ -4,7 +4,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, "hnsw_config": { "m": 16, "ef_construct": 128 } }, "search_params": [ @@ -21,7 +21,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, "hnsw_config": { "m": 32, "ef_construct": 128 } }, "search_params": [ @@ -38,7 +38,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, "hnsw_config": { "m": 32, "ef_construct": 256 } }, "search_params": [ @@ -55,7 +55,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, "hnsw_config": { "m": 32, "ef_construct": 512 } }, "search_params": [ @@ -72,7 +72,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, "hnsw_config": { "m": 64, "ef_construct": 256 } }, "search_params": [ @@ -89,7 +89,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizers_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, "hnsw_config": { "m": 64, "ef_construct": 512 } }, "search_params": [ From 9504e1f653c0ee43c6ea87026a71af5c5d9645ac Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 13 Jul 2023 16:21:45 +0100 Subject: [PATCH 031/204] Setting default_segment_number in qdrant-single-node-single-segment --- .../qdrant-single-node-single-segment.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/experiments/configurations/qdrant-single-node-single-segment.json b/experiments/configurations/qdrant-single-node-single-segment.json index 48175186..b984e22e 100644 --- a/experiments/configurations/qdrant-single-node-single-segment.json +++ b/experiments/configurations/qdrant-single-node-single-segment.json @@ -4,7 +4,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, "hnsw_config": { "m": 16, "ef_construct": 128 } }, "search_params": [ @@ -21,7 +21,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, "hnsw_config": { "m": 32, "ef_construct": 128 } }, "search_params": [ @@ -38,7 +38,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, "hnsw_config": { "m": 32, "ef_construct": 256 } }, "search_params": [ @@ -55,7 +55,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, "hnsw_config": { "m": 32, "ef_construct": 512 } }, "search_params": [ @@ -72,7 +72,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, "hnsw_config": { "m": 64, "ef_construct": 256 } }, "search_params": [ @@ -89,7 +89,7 @@ "engine": "qdrant", "connection_params": {}, "collection_params": { - "optimizer_config": { "max_segment_number": 1,"memmap_threshold": 10000 }, + "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, "hnsw_config": { "m": 64, "ef_construct": 512 } }, "search_params": [ From 0b1f9ee4404f1984598955605b45d1ef9960e017 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 13 Jul 2023 16:22:51 +0100 Subject: [PATCH 032/204] Remove config assert on qdrant --- engine/clients/qdrant/configure.py | 1 - 1 file changed, 1 deletion(-) diff --git a/engine/clients/qdrant/configure.py b/engine/clients/qdrant/configure.py index d56f97e1..53c3f668 100644 --- a/engine/clients/qdrant/configure.py +++ b/engine/clients/qdrant/configure.py @@ -30,7 +30,6 @@ def __init__(self, host, collection_params: dict, connection_params: dict): def clean(self): res = self.client.delete_collection(collection_name=QDRANT_COLLECTION_NAME) - assert res is True def recreate(self, dataset: Dataset, collection_params): self.client.recreate_collection( From cb01f607f5ee9cebe7855742e70168e32fa8b1ef Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 14 Jul 2023 21:53:46 +0100 Subject: [PATCH 033/204] Reverted milvus to original settings --- experiments/configurations/milvus-on-disk.json | 2 +- experiments/configurations/milvus-single-node.json | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/experiments/configurations/milvus-on-disk.json b/experiments/configurations/milvus-on-disk.json index c33e0e50..971bd0ee 100644 --- a/experiments/configurations/milvus-on-disk.json +++ b/experiments/configurations/milvus-on-disk.json @@ -7,6 +7,6 @@ "search_params": [ { "parallel": 8, "params": { } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_type": "DISKANN", "index_params": { } } + "upload_params": { "parallel": 4, "index_type": "DISKANN", "index_params": { } } } ] \ No newline at end of file diff --git a/experiments/configurations/milvus-single-node.json b/experiments/configurations/milvus-single-node.json index cb7b6328..b6ad3fdb 100644 --- a/experiments/configurations/milvus-single-node.json +++ b/experiments/configurations/milvus-single-node.json @@ -11,7 +11,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 100, "M": 16 } } + "upload_params": { "parallel": 16, "index_params": { "efConstruction": 100, "M": 16 } } }, { "name": "milvus-m-16-ef-128", @@ -25,7 +25,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 128, "M": 16 } } + "upload_params": { "parallel": 16, "index_params": { "efConstruction": 128, "M": 16 } } }, { "name": "milvus-m-32-ef-128", @@ -39,7 +39,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 128, "M": 32 } } + "upload_params": { "parallel": 16, "index_params": { "efConstruction": 128, "M": 32 } } }, { "name": "milvus-m-32-ef-256", @@ -53,7 +53,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 256, "M": 32 } } + "upload_params": { "parallel": 16, "index_params": { "efConstruction": 256, "M": 32 } } }, { "name": "milvus-m-32-ef-512", @@ -67,7 +67,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 512, "M": 32 } } + "upload_params": { "parallel": 16, "index_params": { "efConstruction": 512, "M": 32 } } }, { "name": "milvus-m-64-ef-256", @@ -81,7 +81,7 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 256, "M": 64 } } + "upload_params": { "parallel": 16, "index_params": { "efConstruction": 256, "M": 64 } } }, { "name": "milvus-m-64-ef-512", @@ -95,6 +95,6 @@ { "parallel": 8, "params": { "ef": 128 } }, { "parallel": 8, "params": { "ef": 256 } }, { "parallel": 8, "params": { "ef": 512 } }, { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "ef": 512 } } ], - "upload_params": { "parallel": 4, "batch_size": 16, "index_params": { "efConstruction": 512, "M": 64 } } + "upload_params": { "parallel": 16, "index_params": { "efConstruction": 512, "M": 64 } } } ] \ No newline at end of file From 64042e7a2ef4de29af85cebda9cbf83a4fe15457 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 17 Jul 2023 18:18:50 +0100 Subject: [PATCH 034/204] Bumping weaviate to the latest stable version (1.20.1) --- engine/servers/weaviate-single-node/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/servers/weaviate-single-node/docker-compose.yaml b/engine/servers/weaviate-single-node/docker-compose.yaml index 845d2931..1427b06c 100644 --- a/engine/servers/weaviate-single-node/docker-compose.yaml +++ b/engine/servers/weaviate-single-node/docker-compose.yaml @@ -8,7 +8,7 @@ services: - '8090' - --scheme - http - image: semitechnologies/weaviate:1.19.9 + image: semitechnologies/weaviate:1.20.1 ports: - "8090:8090" logging: From 3b699b51856f965fbdd7f5051d02fa8fb0e58236 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 17 Jul 2023 19:04:51 +0100 Subject: [PATCH 035/204] Bumping qdrant to latest stable: qdrant/qdrant:v1.3.2 --- engine/servers/qdrant-limit-ram/docker-compose.yaml | 2 +- engine/servers/qdrant-single-node/docker-compose.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/servers/qdrant-limit-ram/docker-compose.yaml b/engine/servers/qdrant-limit-ram/docker-compose.yaml index 55f8e656..bbade2cd 100644 --- a/engine/servers/qdrant-limit-ram/docker-compose.yaml +++ b/engine/servers/qdrant-limit-ram/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3.7' services: qdrant_bench: - image: qdrant/qdrant:v1.1.0 + image: qdrant/qdrant:v1.3.2 network_mode: host logging: driver: "json-file" diff --git a/engine/servers/qdrant-single-node/docker-compose.yaml b/engine/servers/qdrant-single-node/docker-compose.yaml index 18d786df..3157bf49 100644 --- a/engine/servers/qdrant-single-node/docker-compose.yaml +++ b/engine/servers/qdrant-single-node/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3.7' services: qdrant_bench: - image: qdrant/qdrant:v1.1.0 + image: qdrant/qdrant:v1.3.2 network_mode: host logging: driver: "json-file" From 575e8118c314c0ed6ae60af328933ff6bf169204 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 18 Jul 2023 00:02:08 +0100 Subject: [PATCH 036/204] Updated weaviate config timeout --- .../weaviate-single-node-single-client.json | 86 ------------------- ...gle-node.txt => weaviate-single-node.json} | 14 +-- 2 files changed, 7 insertions(+), 93 deletions(-) delete mode 100644 experiments/configurations/weaviate-single-node-single-client.json rename experiments/configurations/{__weaviate-single-node.txt => weaviate-single-node.json} (95%) diff --git a/experiments/configurations/weaviate-single-node-single-client.json b/experiments/configurations/weaviate-single-node-single-client.json deleted file mode 100644 index d8807f9e..00000000 --- a/experiments/configurations/weaviate-single-node-single-client.json +++ /dev/null @@ -1,86 +0,0 @@ -[ - { - "name": "weaviate-default", - "engine": "weaviate", - "connection_params": { - "timeout_config": 90000 - }, - "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 100, "maxConnections": 16 } }, - "search_params": [ - { "parallel": 1, "vectorIndexConfig": { "ef": 128} } - ], - "upload_params": { "batch_size": 32, "parallel": 1 } - }, - { - "name": "weaviate-m-16-ef-128", - "engine": "weaviate", - "connection_params": { - "timeout_config": 90000 - }, - "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 128, "maxConnections": 16 } }, - "search_params": [ - { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } - ], - "upload_params": { "batch_size": 32, "parallel": 1 } - }, - { - "name": "weaviate-m-32-ef-128", - "engine": "weaviate", - "connection_params": { - "timeout_config": 90000 - }, - "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 128, "maxConnections": 32 } }, - "search_params": [ - { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } - ], - "upload_params": { "batch_size": 32, "parallel": 1 } - }, - { - "name": "weaviate-m-32-ef-256", - "engine": "weaviate", - "connection_params": { - "timeout_config": 90000 - }, - "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 256, "maxConnections": 32 } }, - "search_params": [ - { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } - ], - "upload_params": { "batch_size": 32, "parallel": 1 } - }, - { - "name": "weaviate-m-32-ef-512", - "engine": "weaviate", - "connection_params": { - "timeout_config": 90000 - }, - "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 512, "maxConnections": 32 } }, - "search_params": [ - { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } - ], - "upload_params": { "batch_size": 32, "parallel": 1 } - }, - { - "name": "weaviate-m-64-ef-256", - "engine": "weaviate", - "connection_params": { - "timeout_config": 90000 - }, - "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 256, "maxConnections": 64 } }, - "search_params": [ - { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } - ], - "upload_params": { "batch_size": 32, "parallel": 1 } - }, - { - "name": "weaviate-m-64-ef-512", - "engine": "weaviate", - "connection_params": { - "timeout_config": 90000 - }, - "collection_params": { "vectorIndexConfig": { "ef": 100, "efConstruction": 512, "maxConnections": 64 } }, - "search_params": [ - { "parallel": 1, "vectorIndexConfig": { "ef": 64} }, { "parallel": 1, "vectorIndexConfig": { "ef": 128} }, { "parallel": 1, "vectorIndexConfig": { "ef": 256} }, { "parallel": 1, "vectorIndexConfig": { "ef": 512} } - ], - "upload_params": { "batch_size": 32, "parallel": 1 } - } -] diff --git a/experiments/configurations/__weaviate-single-node.txt b/experiments/configurations/weaviate-single-node.json similarity index 95% rename from experiments/configurations/__weaviate-single-node.txt rename to experiments/configurations/weaviate-single-node.json index f8885ff7..f1159efa 100644 --- a/experiments/configurations/__weaviate-single-node.txt +++ b/experiments/configurations/weaviate-single-node.json @@ -9,7 +9,7 @@ "search_params": [ { "parallel": 8, "vectorIndexConfig": { "ef": 128} } ], - "upload_params": { "batch_size": 32, "parallel": 1 } + "upload_params": { "batch_size": 1000, "parallel": 5 } }, { "name": "weaviate-m-16-ef-128", @@ -25,7 +25,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 1 } + "upload_params": { "batch_size": 1000, "parallel": 5 } }, { "name": "weaviate-m-32-ef-128", @@ -41,7 +41,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 1 } + "upload_params": { "batch_size": 1000, "parallel": 5 } }, { "name": "weaviate-m-32-ef-256", @@ -57,7 +57,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 1 } + "upload_params": { "batch_size": 1000, "parallel": 5 } }, { "name": "weaviate-m-32-ef-512", @@ -73,7 +73,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 1 } + "upload_params": { "batch_size": 1000, "parallel": 5 } }, { "name": "weaviate-m-64-ef-256", @@ -89,7 +89,7 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 1 } + "upload_params": { "batch_size": 1000, "parallel": 5 } }, { "name": "weaviate-m-64-ef-512", @@ -105,6 +105,6 @@ { "parallel": 8, "vectorIndexConfig": { "ef": 64} }, { "parallel": 8, "vectorIndexConfig": { "ef": 128} }, { "parallel": 8, "vectorIndexConfig": { "ef": 256} }, { "parallel": 8, "vectorIndexConfig": { "ef": 512} }, { "parallel": 100, "vectorIndexConfig": { "ef": 64} }, { "parallel": 100, "vectorIndexConfig": { "ef": 128} }, { "parallel": 100, "vectorIndexConfig": { "ef": 256} }, { "parallel": 100, "vectorIndexConfig": { "ef": 512} } ], - "upload_params": { "batch_size": 32, "parallel": 1 } + "upload_params": { "batch_size": 10000, "parallel": 1 } } ] \ No newline at end of file From 03a1829efe516acca2caa117ba0fb8943b3385ae Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 18 Jul 2023 07:57:12 +0100 Subject: [PATCH 037/204] Using Milvus latest stable v2.2.11 --- engine/servers/milvus-single-node/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/servers/milvus-single-node/docker-compose.yaml b/engine/servers/milvus-single-node/docker-compose.yaml index 99185f57..131d2ea9 100644 --- a/engine/servers/milvus-single-node/docker-compose.yaml +++ b/engine/servers/milvus-single-node/docker-compose.yaml @@ -39,7 +39,7 @@ services: standalone: container_name: milvus-standalone - image: milvusdb/milvus:v2.3.0-beta + image: milvusdb/milvus:v2.2.11 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: etcd:2379 From f7caa32de5282e5557718111e68b38e80ab410be Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 18 Jul 2023 11:39:56 +0100 Subject: [PATCH 038/204] Increase qdrant single node configs to avoid timeouts and ensure all data is in memory --- .../qdrant-single-node-single-segment.json | 104 ------------------ .../configurations/qdrant-single-node.json | 32 +++--- 2 files changed, 16 insertions(+), 120 deletions(-) delete mode 100644 experiments/configurations/qdrant-single-node-single-segment.json diff --git a/experiments/configurations/qdrant-single-node-single-segment.json b/experiments/configurations/qdrant-single-node-single-segment.json deleted file mode 100644 index b984e22e..00000000 --- a/experiments/configurations/qdrant-single-node-single-segment.json +++ /dev/null @@ -1,104 +0,0 @@ -[ - { - "name": "qdrant-single-segment-m-16-ef-128", - "engine": "qdrant", - "connection_params": {}, - "collection_params": { - "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, - "hnsw_config": { "m": 16, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-32-ef-128", - "engine": "qdrant", - "connection_params": {}, - "collection_params": { - "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, - "hnsw_config": { "m": 32, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-32-ef-256", - "engine": "qdrant", - "connection_params": {}, - "collection_params": { - "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, - "hnsw_config": { "m": 32, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-32-ef-512", - "engine": "qdrant", - "connection_params": {}, - "collection_params": { - "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, - "hnsw_config": { "m": 32, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-64-ef-256", - "engine": "qdrant", - "connection_params": {}, - "collection_params": { - "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, - "hnsw_config": { "m": 64, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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-single-segment-m-64-ef-512", - "engine": "qdrant", - "connection_params": {}, - "collection_params": { - "optimizers_config": { "max_segment_number": 1, "default_segment_number": 1, "memmap_threshold": 10000 }, - "hnsw_config": { "m": 64, "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": 2, "search_params": { "hnsw_ef": 64 } }, { "parallel": 2, "search_params": { "hnsw_ef": 128 } }, { "parallel": 2, "search_params": { "hnsw_ef": 256 } }, { "parallel": 2, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 4, "search_params": { "hnsw_ef": 64 } }, { "parallel": 4, "search_params": { "hnsw_ef": 128 } }, { "parallel": 4, "search_params": { "hnsw_ef": 256 } }, { "parallel": 4, "search_params": { "hnsw_ef": 512 } }, - { "parallel": 8, "search_params": { "hnsw_ef": 64 } }, { "parallel": 8, "search_params": { "hnsw_ef": 128 } }, { "parallel": 8, "search_params": { "hnsw_ef": 256 } }, { "parallel": 8, "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 } - } -] \ No newline at end of file diff --git a/experiments/configurations/qdrant-single-node.json b/experiments/configurations/qdrant-single-node.json index 26a5e9ed..aaf65cd8 100644 --- a/experiments/configurations/qdrant-single-node.json +++ b/experiments/configurations/qdrant-single-node.json @@ -2,9 +2,9 @@ { "name": "qdrant-default", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 } + "optimizers_config": { "memmap_threshold": 25000000 } }, "search_params": [ { "parallel": 8, "search_params": { "hnsw_ef": 128 } } @@ -14,7 +14,7 @@ { "name": "qdrant-continuous-benchmark", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { "hnsw_config": { "m": 32, @@ -29,7 +29,7 @@ "optimizers_config": { "max_segment_size": 1000000, "default_segment_number": 3, - "memmap_threshold": 10000000 + "memmap_threshold": 25000000 } }, "search_params": [ @@ -48,9 +48,9 @@ { "name": "qdrant-m-16-ef-128", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 16, "ef_construct": 128 } }, "search_params": [ @@ -65,9 +65,9 @@ { "name": "qdrant-m-32-ef-128", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 128 } }, "search_params": [ @@ -82,9 +82,9 @@ { "name": "qdrant-m-32-ef-256", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 256 } }, "search_params": [ @@ -99,9 +99,9 @@ { "name": "qdrant-m-32-ef-512", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 512 } }, "search_params": [ @@ -116,9 +116,9 @@ { "name": "qdrant-m-64-ef-256", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 64, "ef_construct": 256 } }, "search_params": [ @@ -133,9 +133,9 @@ { "name": "qdrant-m-64-ef-512", "engine": "qdrant", - "connection_params": { "timeout": 30 }, + "connection_params": { "timeout": 300 }, "collection_params": { - "optimizers_config": { "memmap_threshold": 10000000 }, + "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 64, "ef_construct": 512 } }, "search_params": [ From 6aabb6d78a94d4d54fcc33ff72a5c7fc4ba93443 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 18 Jul 2023 17:14:55 +0100 Subject: [PATCH 039/204] Added option to run solely specific parallel count --- engine/base_client/client.py | 20 ++++++++++++-------- run.py | 3 ++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index ec13454d..30da9da5 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -54,7 +54,7 @@ def save_upload_results( out.write(json.dumps(upload_stats, indent=2)) def run_experiment( - self, dataset: Dataset, skip_upload: bool = False, skip_search: bool = False + self, dataset: Dataset, skip_upload: bool = False, skip_search: bool = False, parallels: [int] = [], ): execution_params = self.configurator.execution_params( distance=dataset.config.distance, vector_size=dataset.config.vector_size @@ -88,12 +88,16 @@ def run_experiment( if "ef" in search_params["search_params"]: ef = search_params["search_params"]["ef"] parallel = search_params["parallel"] if "parallel" in search_params else 1 - print(f"\tef runtime: {ef}; #clients {parallel}") - search_stats = searcher.search_all( - dataset.config.distance, reader.read_queries() - ) - self.save_search_results( - dataset.config.name, search_stats, search_id, search_params - ) + filter_parallel = (len(parallels) > 0) + if (filter_parallel and parallel in parallels) or filter_parallel is False: + print(f"\trunning ef runtime: {ef}; #clients {parallel}") + search_stats = searcher.search_all( + dataset.config.distance, reader.read_queries() + ) + self.save_search_results( + dataset.config.name, search_stats, search_id, search_params + ) + else: + print(f"\tskipping ef runtime: {ef}; #clients {parallel}") print("Experiment stage: Done") print("Results saved to: ", RESULTS_DIR) diff --git a/run.py b/run.py index 93e1cafe..4e54b975 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, @@ -49,7 +50,7 @@ def run( dataset.download() try: with stopit.ThreadingTimeout(timeout) as tt: - client.run_experiment(dataset, skip_upload, skip_search) + client.run_experiment(dataset, skip_upload, skip_search, parallels) # If the timeout is reached, the server might be still in the # middle of some background processing, like creating the index. From bf3300d47534a8f540393f1c9d8398515267e6e6 Mon Sep 17 00:00:00 2001 From: alon Date: Thu, 20 Jul 2023 14:38:22 +0300 Subject: [PATCH 040/204] changes for running hybrid benchmarks in redis --- engine/base_client/search.py | 12 ++++++++++-- engine/clients/redis/configure.py | 13 ++++++++++--- engine/clients/redis/parser.py | 3 ++- engine/clients/redis/upload.py | 29 ++++++++++++----------------- 4 files changed, 34 insertions(+), 23 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index a9ea5b89..edb31f0a 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -48,19 +48,28 @@ def _search_one(cls, query, top: Optional[int] = None): search_res = cls.search_one(query.vector, query.meta_conditions, top) end = time.perf_counter() + debugging = False precision = 1.0 if query.expected_result: # This was Qdrant original recall calculation # ids = set(x[0] for x in search_res) # precision = len(ids.intersection(query.expected_result[:top])) / top # This is ann-benchmark recall calculation + # IMPORTANT - qdrant use in their hybrid data sets actual *cosine metric* as the "expected_score", + # while we (and ann) are using *1-cosine metric*. Then, we make the adjustment for computing the threshold epsilon = 1e-3 - threshold = query.expected_scores[top - 1] + epsilon + threshold = (1.0 - query.expected_scores[top - 1]) + epsilon actual = 0.0 for cand_res in search_res[:top]: if cand_res[1] <= threshold: actual += 1 precision = actual/top + if debugging: + print("query meta: ", query.meta_conditions) + print("our ids: ", [x[0] for x in search_res]) + print("our scores: ", [x[1] for x in search_res]) + print("their ids: ", query.expected_result) + print("their scores: ", query.expected_scores) return precision, end - start def search_all( @@ -70,7 +79,6 @@ def search_all( ): parallel = self.search_params.pop("parallel", 1) top = self.search_params.pop("top", None) - # setup_search may require initialized client self.init_client( self.host, distance, self.connection_params, self.search_params diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index ae9fa1f9..6c349930 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -1,5 +1,5 @@ import redis -from redis.commands.search.field import GeoField, NumericField, TextField, VectorField +from redis.commands.search.field import GeoField, NumericField, TextField, VectorField, TagField from benchmark.dataset import Dataset from engine.base_client.configure import BaseConfigurator @@ -15,7 +15,7 @@ class RedisConfigurator(BaseConfigurator): } FIELD_MAPPING = { "int": NumericField, - "keyword": TextField, + "keyword": TagField, "text": TextField, "float": NumericField, "geo": GeoField, @@ -41,7 +41,14 @@ def recreate(self, dataset: Dataset, collection_params): self.FIELD_MAPPING[field_type]( name=field_name, ) - for field_name, field_type in dataset.config.schema.items() + for field_name, field_type in dataset.config.schema.items() if field_type != 'keyword' + ] + payload_fields += [ + TagField( + name=field_name, + separator=',' + ) + for field_name, field_type in dataset.config.schema.items() if field_type == 'keyword' ] search_namespace.create_index( fields=[ diff --git a/engine/clients/redis/parser.py b/engine/clients/redis/parser.py index 2575096e..ae4068d9 100644 --- a/engine/clients/redis/parser.py +++ b/engine/clients/redis/parser.py @@ -34,7 +34,8 @@ def build_exact_match_filter(self, field_name: str, value: FieldValue) -> Any: param_name = f"{field_name}_{self.counter}" self.counter += 1 if isinstance(value, str): - return f"@{field_name}:${param_name}", {param_name: value} + return f"@{field_name}:{{${param_name}}}", {param_name: value} + # field is numeric, value is an integer return f"@{field_name}:[${param_name} ${param_name}]", {param_name: value} def build_range_filter( diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 7f9adf7b..4f6e7b89 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -26,23 +26,18 @@ def upload_batch( idx = ids[i] vec = vectors[i] meta = metadata[i] if metadata else {} - payload = {} - geopoints = {} - - if meta is not None: - meta = {} - payload = { - k: v - for k, v in meta.items() - if v is not None and not isinstance(v, dict) - } - # Redis treats geopoints differently and requires putting them as - # a comma-separated string with lat and lon coordinates - geopoints = { - k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) - for k, v in meta.items() - if isinstance(v, dict) - } + payload = { + k: v + for k, v in meta.items() + if v is not None and not isinstance(v, dict) + } + # Redis treats geopoints differently and requires putting them as + # a comma-separated string with lat and lon coordinates + geopoints = { + k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) + for k, v in meta.items() + if isinstance(v, dict) + } cls.client.hset( str(idx), mapping={ From 1769f94aefdf15589d1296f7486f1e7664e7a819 Mon Sep 17 00:00:00 2001 From: alon Date: Wed, 26 Jul 2023 10:27:04 +0300 Subject: [PATCH 041/204] Add patch to support arxiv-titles dataset --- engine/clients/redis/configure.py | 2 +- engine/clients/redis/upload.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 6c349930..40d33486 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -46,7 +46,7 @@ def recreate(self, dataset: Dataset, collection_params): payload_fields += [ TagField( name=field_name, - separator=',' + separator=';' ) for field_name, field_type in dataset.config.schema.items() if field_type == 'keyword' ] diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 4f6e7b89..1ed793fd 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -26,11 +26,14 @@ def upload_batch( idx = ids[i] vec = vectors[i] meta = metadata[i] if metadata else {} - payload = { - k: v - for k, v in meta.items() - if v is not None and not isinstance(v, dict) - } + payload = {} + for k, v in meta.items(): + # This is a patch for arxiv-titles dataset where we have a list of "labels", and + # we want to index all of them under the same TAG field (whose seperator is ';'). + if k == 'labels': + payload[k] = ";".join(v) + if v is not None and not isinstance(v, dict) and not isinstance(v, list): + payload[k] = v # Redis treats geopoints differently and requires putting them as # a comma-separated string with lat and lon coordinates geopoints = { From 75d7700d8064a462ae8fa283ad8fa123f9959119 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 11 Aug 2023 09:04:11 +0100 Subject: [PATCH 042/204] Enabling key prefix ingestion on Redis. More control over clean stage on Redis to avoid multi process indexing of different data --- engine/clients/redis/config.py | 4 ++ engine/clients/redis/configure.py | 62 +++++++++++++++++++------------ engine/clients/redis/search.py | 11 ++++-- engine/clients/redis/upload.py | 4 +- 4 files changed, 52 insertions(+), 29 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index f61e242c..38c3de70 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -2,5 +2,9 @@ REDIS_PORT = int(os.getenv("REDIS_PORT",6379)) REDIS_AUTH = os.getenv("REDIS_AUTH",None) REDIS_USER = os.getenv("REDIS_USER",None) +REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY",None) +DISABLE_CLEAN = bool(int(os.getenv("DISABLE_CLEAN",0))) +REDIS_KEY_PREFIX = os.getenv("REDIS_KEY_PREFIX","") + # 90 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 40d33486..b4cf51fc 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -4,7 +4,7 @@ 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_PORT, REDIS_AUTH, REDIS_USER +from engine.clients.redis.config import REDIS_PORT, REDIS_AUTH, REDIS_USER, DISABLE_CLEAN, REDIS_KEY_PREFIX class RedisConfigurator(BaseConfigurator): @@ -23,16 +23,22 @@ class RedisConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) + if REDIS_KEY_PREFIX != "": + print(f"\tUsing a key prefix for this experiment: {REDIS_KEY_PREFIX}") self.client = redis.Redis(host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER) def clean(self): - index = self.client.ft() - try: - index.dropindex(delete_documents=True) - except redis.ResponseError as e: - if "Unknown Index name" not in e.__str__(): - print(e) + if DISABLE_CLEAN is False: + index = self.client.ft() + try: + index.dropindex(delete_documents=True) + except redis.ResponseError as e: + if "Unknown Index name" not in e.__str__(): + print(e) + else: + print(f"\tSkipping clean stage given DISABLE_CLEAN=1") + def recreate(self, dataset: Dataset, collection_params): self.clean() @@ -50,23 +56,31 @@ def recreate(self, dataset: Dataset, collection_params): ) for field_name, field_type in dataset.config.schema.items() if field_type == 'keyword' ] - search_namespace.create_index( - fields=[ - VectorField( - name="vector", - algorithm="HNSW", - attributes={ - "TYPE": "FLOAT32", - "DIM": dataset.config.vector_size, - "DISTANCE_METRIC": self.DISTANCE_MAPPING[ - dataset.config.distance - ], - **self.collection_params.get("hnsw_config", {}), - }, - ) - ] - + payload_fields - ) + try: + search_namespace.create_index( + fields=[ + VectorField( + name="vector", + algorithm="HNSW", + attributes={ + "TYPE": "FLOAT32", + "DIM": dataset.config.vector_size, + "DISTANCE_METRIC": self.DISTANCE_MAPPING[ + dataset.config.distance + ], + **self.collection_params.get("hnsw_config", {}), + }, + ) + ] + + payload_fields + ) + except redis.ResponseError as e: + if "Index already exists" not in e.__str__(): + raise e + elif DISABLE_CLEAN is True: + print("There as an error when creating the index but you've specified DISABLE_CLEAN=1 so we're ignoring it") + else: + raise e if __name__ == "__main__": diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 1c7817bd..98c26289 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -5,7 +5,7 @@ from redis.commands.search.query import Query from engine.base_client.search import BaseSearcher -from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT +from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT, REDIS_HYBRID_POLICY from engine.clients.redis.parser import RedisConditionParser @@ -18,7 +18,12 @@ class RedisSearcher(BaseSearcher): def init_client(cls, host, distance, connection_params: dict, search_params: dict): cls.client = redis.Redis(host=host, port=REDIS_PORT, db=0) cls.search_params = search_params - + cls.knn_conditions = "EF_RUNTIME $EF" + if REDIS_HYBRID_POLICY is not None: + # for HYBRID_POLICY ADHOC_BF we need to remove EF_RUNTIME + if REDIS_HYBRID_POLICY == "ADHOC_BF": + cls.knn_conditions = "" + cls.knn_conditions = f"HYBRID_POLICY {REDIS_HYBRID_POLICY} {cls.knn_conditions}" @classmethod def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: conditions = cls.parser.parse(meta_conditions) @@ -30,7 +35,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: q = ( Query( - f"{prefilter_condition}=>[KNN $K @vector $vec_param EF_RUNTIME $EF AS vector_score]" + f"{prefilter_condition}=>[KNN $K @vector $vec_param {cls.knn_conditions} AS vector_score]" ) .sort_by("vector_score", asc=False) .paging(0, top) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 1ed793fd..c1198a19 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -4,7 +4,7 @@ import redis from engine.base_client.upload import BaseUploader -from engine.clients.redis.config import REDIS_PORT +from engine.clients.redis.config import REDIS_PORT, REDIS_KEY_PREFIX from engine.clients.redis.helper import convert_to_redis_coords @@ -42,7 +42,7 @@ def upload_batch( if isinstance(v, dict) } cls.client.hset( - str(idx), + REDIS_KEY_PREFIX + str(idx), mapping={ "vector": np.array(vec).astype(np.float32).tobytes(), **payload, From a7f1c9d6e2a452ca0e658b1c174c24027d52aec2 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 11 Aug 2023 09:36:52 +0100 Subject: [PATCH 043/204] Ensure search results are properly processed when using REDIS_KEY_PREFIX --- engine/clients/redis/search.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 98c26289..790333f3 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -5,7 +5,7 @@ from redis.commands.search.query import Query from engine.base_client.search import BaseSearcher -from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT, REDIS_HYBRID_POLICY +from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT, REDIS_HYBRID_POLICY, REDIS_KEY_PREFIX from engine.clients.redis.parser import RedisConditionParser @@ -52,4 +52,4 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: results = cls.client.ft().search(q, query_params=params_dict) - return [(int(result.id), float(result.vector_score)) for result in results.docs] + return [(int(result.id[len(REDIS_KEY_PREFIX):]), float(result.vector_score)) for result in results.docs] From a7c3f321d581a0edff0d09f995078a345011f22f Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sun, 3 Sep 2023 18:59:56 +0100 Subject: [PATCH 044/204] Ensure that the indexed payload fields are sortable --- engine/clients/redis/configure.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index b4cf51fc..87ee2e85 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -46,13 +46,15 @@ def recreate(self, dataset: Dataset, collection_params): payload_fields = [ self.FIELD_MAPPING[field_type]( name=field_name, + sortable=True, ) for field_name, field_type in dataset.config.schema.items() if field_type != 'keyword' ] payload_fields += [ TagField( name=field_name, - separator=';' + separator=';', + sortable=True, ) for field_name, field_type in dataset.config.schema.items() if field_type == 'keyword' ] From e2f605947494bfff8b7467ee7e7ca5fe77ae508a Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 8 Sep 2023 15:16:54 +0100 Subject: [PATCH 045/204] Ensuring when metadata is None we can run the benchmark --- engine/clients/redis/upload.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index c1198a19..1514486e 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -26,21 +26,23 @@ def upload_batch( idx = ids[i] vec = vectors[i] meta = metadata[i] if metadata else {} + geopoints = {} payload = {} - for k, v in meta.items(): - # This is a patch for arxiv-titles dataset where we have a list of "labels", and - # we want to index all of them under the same TAG field (whose seperator is ';'). - if k == 'labels': - payload[k] = ";".join(v) - if v is not None and not isinstance(v, dict) and not isinstance(v, list): - payload[k] = v - # Redis treats geopoints differently and requires putting them as - # a comma-separated string with lat and lon coordinates - geopoints = { - k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) - for k, v in meta.items() - if isinstance(v, dict) - } + if meta is not None: + for k, v in meta.items(): + # This is a patch for arxiv-titles dataset where we have a list of "labels", and + # we want to index all of them under the same TAG field (whose seperator is ';'). + if k == 'labels': + payload[k] = ";".join(v) + if v is not None and not isinstance(v, dict) and not isinstance(v, list): + payload[k] = v + # Redis treats geopoints differently and requires putting them as + # a comma-separated string with lat and lon coordinates + geopoints = { + k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) + for k, v in meta.items() + if isinstance(v, dict) + } cls.client.hset( REDIS_KEY_PREFIX + str(idx), mapping={ From e2b0c164a2d1b5f79f3a693cab9e7c3ef91e191b Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 11 Sep 2023 13:05:17 +0100 Subject: [PATCH 046/204] Updated client to use REDIS_AUTH --- engine/clients/redis/upload.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 1514486e..56c66585 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -4,7 +4,7 @@ import redis from engine.base_client.upload import BaseUploader -from engine.clients.redis.config import REDIS_PORT, REDIS_KEY_PREFIX +from engine.clients.redis.config import REDIS_PORT, REDIS_KEY_PREFIX, REDIS_AUTH, REDIS_USER from engine.clients.redis.helper import convert_to_redis_coords @@ -14,7 +14,7 @@ class RedisUploader(BaseUploader): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - cls.client = redis.Redis(host=host, port=REDIS_PORT, db=0) + cls.client = redis.Redis(host=host, port=REDIS_PORT, db=0, password=REDIS_AUTH, username=REDIS_USER) cls.upload_params = upload_params @classmethod From d5c97038d8a301bd30f9916d104b74de74b2cabd Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 11 Sep 2023 13:10:29 +0100 Subject: [PATCH 047/204] Updated client to use REDIS_AUTH --- engine/clients/redis/requirements.txt | 4 ++++ engine/clients/redis/search.py | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 engine/clients/redis/requirements.txt diff --git a/engine/clients/redis/requirements.txt b/engine/clients/redis/requirements.txt new file mode 100644 index 00000000..11f2b0d6 --- /dev/null +++ b/engine/clients/redis/requirements.txt @@ -0,0 +1,4 @@ +benchmark==0.1.5 +engine==0.6.0 +numpy==1.24.4 +redis==4.6.0 diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 790333f3..3a63596c 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -5,7 +5,7 @@ from redis.commands.search.query import Query from engine.base_client.search import BaseSearcher -from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT, REDIS_HYBRID_POLICY, REDIS_KEY_PREFIX +from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT, REDIS_HYBRID_POLICY, REDIS_KEY_PREFIX, REDIS_AUTH, REDIS_USER from engine.clients.redis.parser import RedisConditionParser @@ -16,7 +16,7 @@ class RedisSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - cls.client = redis.Redis(host=host, port=REDIS_PORT, db=0) + cls.client = redis.Redis(host=host, port=REDIS_PORT, db=0, password=REDIS_AUTH, username=REDIS_USER) cls.search_params = search_params cls.knn_conditions = "EF_RUNTIME $EF" if REDIS_HYBRID_POLICY is not None: From 1323bf595fb55d8ffb0c3a5aeb75fefb27423b87 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 26 Oct 2023 14:52:08 +0100 Subject: [PATCH 048/204] Added support of OSS Cluster API --- engine/base_client/configure.py | 1 - engine/base_client/search.py | 22 ++------------------- engine/clients/redis/config.py | 16 ++++++++------- engine/clients/redis/configure.py | 33 +++++++++++++++++++++++-------- engine/clients/redis/search.py | 28 ++++++++++++++++++++------ engine/clients/redis/upload.py | 24 ++++++++++++++++------ 6 files changed, 76 insertions(+), 48 deletions(-) diff --git a/engine/base_client/configure.py b/engine/base_client/configure.py index f0e228e5..8d492e43 100644 --- a/engine/base_client/configure.py +++ b/engine/base_client/configure.py @@ -18,7 +18,6 @@ def recreate(self, dataset: Dataset, collection_params): raise NotImplementedError() def configure(self, dataset: Dataset) -> Optional[dict]: - print("Ensuring we have a clean DB") self.clean() return self.recreate(dataset, self.collection_params) or {} diff --git a/engine/base_client/search.py b/engine/base_client/search.py index edb31f0a..98e04551 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -48,28 +48,10 @@ def _search_one(cls, query, top: Optional[int] = None): search_res = cls.search_one(query.vector, query.meta_conditions, top) end = time.perf_counter() - debugging = False precision = 1.0 if query.expected_result: - # This was Qdrant original recall calculation - # ids = set(x[0] for x in search_res) - # precision = len(ids.intersection(query.expected_result[:top])) / top - # This is ann-benchmark recall calculation - # IMPORTANT - qdrant use in their hybrid data sets actual *cosine metric* as the "expected_score", - # while we (and ann) are using *1-cosine metric*. Then, we make the adjustment for computing the threshold - epsilon = 1e-3 - threshold = (1.0 - query.expected_scores[top - 1]) + epsilon - actual = 0.0 - for cand_res in search_res[:top]: - if cand_res[1] <= threshold: - actual += 1 - precision = actual/top - if debugging: - print("query meta: ", query.meta_conditions) - print("our ids: ", [x[0] for x in search_res]) - print("our scores: ", [x[1] for x in search_res]) - print("their ids: ", query.expected_result) - print("their scores: ", query.expected_scores) + 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( diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index 38c3de70..b496e9f3 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -1,10 +1,12 @@ 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_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY",None) -DISABLE_CLEAN = bool(int(os.getenv("DISABLE_CLEAN",0))) -REDIS_KEY_PREFIX = os.getenv("REDIS_KEY_PREFIX","") + +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))) +REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) +DISABLE_CLEAN = bool(int(os.getenv("DISABLE_CLEAN", 0))) +REDIS_KEY_PREFIX = os.getenv("REDIS_KEY_PREFIX", "") # 90 seconds timeout -REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT",90*1000)) +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 87ee2e85..ed3c4b12 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -1,10 +1,22 @@ import redis -from redis.commands.search.field import GeoField, NumericField, TextField, VectorField, TagField +from redis.commands.search.field import ( + GeoField, + NumericField, + 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_PORT, REDIS_AUTH, REDIS_USER, DISABLE_CLEAN, REDIS_KEY_PREFIX +from engine.clients.redis.config import ( + REDIS_PORT, + REDIS_AUTH, + REDIS_USER, + DISABLE_CLEAN, + REDIS_KEY_PREFIX, +) class RedisConfigurator(BaseConfigurator): @@ -26,7 +38,9 @@ def __init__(self, host, collection_params: dict, connection_params: dict): if REDIS_KEY_PREFIX != "": print(f"\tUsing a key prefix for this experiment: {REDIS_KEY_PREFIX}") - self.client = redis.Redis(host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER) + self.client = redis.Redis( + host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER + ) def clean(self): if DISABLE_CLEAN is False: @@ -39,7 +53,6 @@ def clean(self): else: print(f"\tSkipping clean stage given DISABLE_CLEAN=1") - def recreate(self, dataset: Dataset, collection_params): self.clean() search_namespace = self.client.ft() @@ -48,15 +61,17 @@ def recreate(self, dataset: Dataset, collection_params): name=field_name, sortable=True, ) - for field_name, field_type in dataset.config.schema.items() if field_type != 'keyword' + for field_name, field_type in dataset.config.schema.items() + if field_type != "keyword" ] payload_fields += [ TagField( name=field_name, - separator=';', + separator=";", sortable=True, ) - for field_name, field_type in dataset.config.schema.items() if field_type == 'keyword' + for field_name, field_type in dataset.config.schema.items() + if field_type == "keyword" ] try: search_namespace.create_index( @@ -80,7 +95,9 @@ def recreate(self, dataset: Dataset, collection_params): if "Index already exists" not in e.__str__(): raise e elif DISABLE_CLEAN is True: - print("There as an error when creating the index but you've specified DISABLE_CLEAN=1 so we're ignoring it") + print( + "There as an error when creating the index but you've specified DISABLE_CLEAN=1 so we're ignoring it" + ) else: raise e diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 3a63596c..8ff2827c 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -1,11 +1,18 @@ from typing import List, Tuple import numpy as np -import redis +from redis import Redis, RedisCluster from redis.commands.search.query import Query - from engine.base_client.search import BaseSearcher -from engine.clients.redis.config import REDIS_PORT, REDIS_QUERY_TIMEOUT, REDIS_HYBRID_POLICY, REDIS_KEY_PREFIX, REDIS_AUTH, REDIS_USER +from engine.clients.redis.config import ( + REDIS_PORT, + REDIS_QUERY_TIMEOUT, + REDIS_HYBRID_POLICY, + REDIS_KEY_PREFIX, + REDIS_AUTH, + REDIS_USER, + REDIS_CLUSTER, +) from engine.clients.redis.parser import RedisConditionParser @@ -16,14 +23,20 @@ class RedisSearcher(BaseSearcher): @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): - cls.client = redis.Redis(host=host, port=REDIS_PORT, db=0, password=REDIS_AUTH, username=REDIS_USER) + redis_constructor = RedisCluster if REDIS_CLUSTER else Redis + cls.client = redis_constructor( + host=host, port=REDIS_PORT, db=0, password=REDIS_AUTH, username=REDIS_USER + ) cls.search_params = search_params cls.knn_conditions = "EF_RUNTIME $EF" if REDIS_HYBRID_POLICY is not None: # for HYBRID_POLICY ADHOC_BF we need to remove EF_RUNTIME if REDIS_HYBRID_POLICY == "ADHOC_BF": cls.knn_conditions = "" - cls.knn_conditions = f"HYBRID_POLICY {REDIS_HYBRID_POLICY} {cls.knn_conditions}" + cls.knn_conditions = ( + f"HYBRID_POLICY {REDIS_HYBRID_POLICY} {cls.knn_conditions}" + ) + @classmethod def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: conditions = cls.parser.parse(meta_conditions) @@ -52,4 +65,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: results = cls.client.ft().search(q, query_params=params_dict) - return [(int(result.id[len(REDIS_KEY_PREFIX):]), float(result.vector_score)) for result in results.docs] + return [ + (int(result.id[len(REDIS_KEY_PREFIX) :]), float(result.vector_score)) + for result in results.docs + ] diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 56c66585..c0759dda 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -1,10 +1,15 @@ from typing import List, Optional import numpy as np -import redis - +from redis import Redis, RedisCluster from engine.base_client.upload import BaseUploader -from engine.clients.redis.config import REDIS_PORT, REDIS_KEY_PREFIX, REDIS_AUTH, REDIS_USER +from engine.clients.redis.config import ( + REDIS_PORT, + REDIS_KEY_PREFIX, + REDIS_AUTH, + REDIS_USER, + REDIS_CLUSTER, +) from engine.clients.redis.helper import convert_to_redis_coords @@ -14,7 +19,10 @@ class RedisUploader(BaseUploader): @classmethod def init_client(cls, host, distance, connection_params, upload_params): - cls.client = redis.Redis(host=host, port=REDIS_PORT, db=0, password=REDIS_AUTH, username=REDIS_USER) + redis_constructor = RedisCluster if REDIS_CLUSTER else Redis + cls.client = redis_constructor( + host=host, port=REDIS_PORT, db=0, password=REDIS_AUTH, username=REDIS_USER + ) cls.upload_params = upload_params @classmethod @@ -32,9 +40,13 @@ def upload_batch( for k, v in meta.items(): # This is a patch for arxiv-titles dataset where we have a list of "labels", and # we want to index all of them under the same TAG field (whose seperator is ';'). - if k == 'labels': + if k == "labels": payload[k] = ";".join(v) - if v is not None and not isinstance(v, dict) and not isinstance(v, list): + if ( + v is not None + and not isinstance(v, dict) + and not isinstance(v, list) + ): payload[k] = v # Redis treats geopoints differently and requires putting them as # a comma-separated string with lat and lon coordinates From bc1ec1ada14dc0f79eb2ba1a5899939421805bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Mon, 6 Nov 2023 11:08:46 +0100 Subject: [PATCH 049/204] Add 1M,10M,20M,40M,100M,200M laion datasets --- datasets/datasets.json | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/datasets/datasets.json b/datasets/datasets.json index b3d480ef..d5bf39d4 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -31,6 +31,54 @@ "path": "gist-960-euclidean/gist-960-euclidean.hdf5", "link": "http://ann-benchmarks.com/gist-960-euclidean.hdf5" }, + { + "name": "laion-img-emb-512-1M-angular", + "vector_size": 512, + "distance": "dot", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-1M-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-1M-angular.hdf5" + }, + { + "name": "laion-img-emb-512-10M-angular", + "vector_size": 512, + "distance": "dot", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-10M-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-10M-angular.hdf5" + }, + { + "name": "laion-img-emb-512-20M-angular", + "vector_size": 512, + "distance": "dot", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-20M-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-20M-angular.hdf5" + }, + { + "name": "laion-img-emb-512-40M-angular", + "vector_size": 512, + "distance": "dot", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-40M-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-40M-angular.hdf5" + }, + { + "name": "laion-img-emb-512-100M-angular", + "vector_size": 512, + "distance": "dot", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-100M-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100M-angular.hdf5" + }, + { + "name": "laion-img-emb-512-200M-angular", + "vector_size": 512, + "distance": "dot", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-200M-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-200M-angular.hdf5" + }, { "name": "gist-960-angular", "vector_size": 960, From 70cafeb47800e47342c132799c11da205ee57b47 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 9 Nov 2023 16:20:20 +0000 Subject: [PATCH 050/204] Fixed the distance on laion datasets angular==cosine --- README.md | 15 +++++++++++++++ datasets/datasets.json | 12 ++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index beda23ae..1419a120 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/datasets/datasets.json b/datasets/datasets.json index d5bf39d4..3303916e 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -34,7 +34,7 @@ { "name": "laion-img-emb-512-1M-angular", "vector_size": 512, - "distance": "dot", + "distance": "cosine", "type": "h5", "path": "laion-img-emb-512/laion-img-emb-512-1M-angular.hdf5", "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-1M-angular.hdf5" @@ -42,7 +42,7 @@ { "name": "laion-img-emb-512-10M-angular", "vector_size": 512, - "distance": "dot", + "distance": "cosine", "type": "h5", "path": "laion-img-emb-512/laion-img-emb-512-10M-angular.hdf5", "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-10M-angular.hdf5" @@ -50,7 +50,7 @@ { "name": "laion-img-emb-512-20M-angular", "vector_size": 512, - "distance": "dot", + "distance": "cosine", "type": "h5", "path": "laion-img-emb-512/laion-img-emb-512-20M-angular.hdf5", "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-20M-angular.hdf5" @@ -58,7 +58,7 @@ { "name": "laion-img-emb-512-40M-angular", "vector_size": 512, - "distance": "dot", + "distance": "cosine", "type": "h5", "path": "laion-img-emb-512/laion-img-emb-512-40M-angular.hdf5", "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-40M-angular.hdf5" @@ -66,7 +66,7 @@ { "name": "laion-img-emb-512-100M-angular", "vector_size": 512, - "distance": "dot", + "distance": "cosine", "type": "h5", "path": "laion-img-emb-512/laion-img-emb-512-100M-angular.hdf5", "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100M-angular.hdf5" @@ -74,7 +74,7 @@ { "name": "laion-img-emb-512-200M-angular", "vector_size": 512, - "distance": "dot", + "distance": "cosine", "type": "h5", "path": "laion-img-emb-512/laion-img-emb-512-200M-angular.hdf5", "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-200M-angular.hdf5" From 64497f5cbac1dc84acc4603792b838b66e08107a Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 9 Nov 2023 16:49:00 +0000 Subject: [PATCH 051/204] Included LAION-400 100K vectors dataset. Showing progress bar on download of datasets --- benchmark/dataset.py | 6 +++++- datasets/datasets.json | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/benchmark/dataset.py b/benchmark/dataset.py index d2793f04..2b7f13f4 100644 --- a/benchmark/dataset.py +++ b/benchmark/dataset.py @@ -25,6 +25,10 @@ class DatasetConfig: READER_TYPE = {"h5": AnnH5Reader, "jsonl": JSONReader, "tar": AnnCompoundReader} +# prepare progressbar +def show_progress(block_num, block_size, total_size): + percent = round(block_num * block_size / total_size *100,2) + print( f"{percent} %", end="\r") class Dataset: def __init__(self, config: dict): @@ -39,7 +43,7 @@ def download(self): if self.config.link: print(f"Downloading {self.config.link}...") - tmp_path, _ = urllib.request.urlretrieve(self.config.link) + tmp_path, _ = urllib.request.urlretrieve(self.config.link, None, show_progress) if self.config.link.endswith(".tgz") or self.config.link.endswith( ".tar.gz" diff --git a/datasets/datasets.json b/datasets/datasets.json index b4165c99..2199b936 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -31,6 +31,14 @@ "path": "gist-960-euclidean/gist-960-euclidean.hdf5", "link": "http://ann-benchmarks.com/gist-960-euclidean.hdf5" }, + { + "name": "laion-img-emb-512-100K-angular", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-100K-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100K-angular.hdf5" + }, { "name": "laion-img-emb-512-1M-angular", "vector_size": 512, From 94499c1ed805a5210ba5a7730cbdc2a3982c4f75 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 22 Nov 2023 23:28:03 +0000 Subject: [PATCH 052/204] Fixed sorting order on the search query --- engine/clients/redis/config.py | 2 - engine/clients/redis/configure.py | 32 ++++-------- engine/clients/redis/requirements.txt | 4 -- engine/clients/redis/search.py | 19 +++---- engine/clients/redis/upload.py | 5 +- requirements.txt | 75 --------------------------- 6 files changed, 19 insertions(+), 118 deletions(-) delete mode 100644 engine/clients/redis/requirements.txt delete mode 100644 requirements.txt diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index b496e9f3..23531a4d 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -5,8 +5,6 @@ REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) -DISABLE_CLEAN = bool(int(os.getenv("DISABLE_CLEAN", 0))) -REDIS_KEY_PREFIX = os.getenv("REDIS_KEY_PREFIX", "") # 90 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 ed3c4b12..f73c266c 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -1,4 +1,5 @@ import redis +from redis import Redis, RedisCluster from redis.commands.search.field import ( GeoField, NumericField, @@ -14,8 +15,7 @@ REDIS_PORT, REDIS_AUTH, REDIS_USER, - DISABLE_CLEAN, - REDIS_KEY_PREFIX, + REDIS_CLUSTER, ) @@ -35,23 +35,19 @@ class RedisConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) - if REDIS_KEY_PREFIX != "": - print(f"\tUsing a key prefix for this experiment: {REDIS_KEY_PREFIX}") - - self.client = redis.Redis( + redis_constructor = RedisCluster if REDIS_CLUSTER else Redis + self.client = redis_constructor( host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER ) + def clean(self): - if DISABLE_CLEAN is False: - index = self.client.ft() - try: - index.dropindex(delete_documents=True) - except redis.ResponseError as e: - if "Unknown Index name" not in e.__str__(): - print(e) - else: - print(f"\tSkipping clean stage given DISABLE_CLEAN=1") + index = self.client.ft() + try: + index.dropindex(delete_documents=True) + except redis.ResponseError as e: + if "Unknown Index name" not in e.__str__(): + print(e) def recreate(self, dataset: Dataset, collection_params): self.clean() @@ -94,12 +90,6 @@ def recreate(self, dataset: Dataset, collection_params): except redis.ResponseError as e: if "Index already exists" not in e.__str__(): raise e - elif DISABLE_CLEAN is True: - print( - "There as an error when creating the index but you've specified DISABLE_CLEAN=1 so we're ignoring it" - ) - else: - raise e if __name__ == "__main__": diff --git a/engine/clients/redis/requirements.txt b/engine/clients/redis/requirements.txt deleted file mode 100644 index 11f2b0d6..00000000 --- a/engine/clients/redis/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -benchmark==0.1.5 -engine==0.6.0 -numpy==1.24.4 -redis==4.6.0 diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 8ff2827c..0f53f95c 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -7,8 +7,6 @@ from engine.clients.redis.config import ( REDIS_PORT, REDIS_QUERY_TIMEOUT, - REDIS_HYBRID_POLICY, - REDIS_KEY_PREFIX, REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, @@ -25,17 +23,10 @@ class RedisSearcher(BaseSearcher): 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, db=0, password=REDIS_AUTH, username=REDIS_USER + host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER ) cls.search_params = search_params cls.knn_conditions = "EF_RUNTIME $EF" - if REDIS_HYBRID_POLICY is not None: - # for HYBRID_POLICY ADHOC_BF we need to remove EF_RUNTIME - if REDIS_HYBRID_POLICY == "ADHOC_BF": - cls.knn_conditions = "" - cls.knn_conditions = ( - f"HYBRID_POLICY {REDIS_HYBRID_POLICY} {cls.knn_conditions}" - ) @classmethod def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: @@ -50,10 +41,12 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: Query( f"{prefilter_condition}=>[KNN $K @vector $vec_param {cls.knn_conditions} AS vector_score]" ) - .sort_by("vector_score", asc=False) + .sort_by("vector_score", asc=True) .paging(0, top) .return_fields("vector_score") - .dialect(2) + # performance is optimized for sorting operations on DIALECT 4 in different scenarios. + # check SORTBY details in https://redis.io/commands/ft.search/ + .dialect(4) .timeout(REDIS_QUERY_TIMEOUT) ) params_dict = { @@ -66,6 +59,6 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: results = cls.client.ft().search(q, query_params=params_dict) return [ - (int(result.id[len(REDIS_KEY_PREFIX) :]), float(result.vector_score)) + (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 c0759dda..87ed2332 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -5,7 +5,6 @@ from engine.base_client.upload import BaseUploader from engine.clients.redis.config import ( REDIS_PORT, - REDIS_KEY_PREFIX, REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, @@ -21,7 +20,7 @@ class RedisUploader(BaseUploader): 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, db=0, password=REDIS_AUTH, username=REDIS_USER + host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER ) cls.upload_params = upload_params @@ -56,7 +55,7 @@ def upload_batch( if isinstance(v, dict) } cls.client.hset( - REDIS_KEY_PREFIX + str(idx), + str(idx), mapping={ "vector": np.array(vec).astype(np.float32).tobytes(), **payload, diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 9a812463..00000000 --- a/requirements.txt +++ /dev/null @@ -1,75 +0,0 @@ -anyio==3.7.0 ; python_version >= "3.8" and python_version < "3.12" -appnope==0.1.3 ; python_version >= "3.8" and python_version < "3.12" and sys_platform == "darwin" -asttokens==2.2.1 ; python_version >= "3.8" and python_version < "3.12" -async-timeout==4.0.2 ; python_version >= "3.8" and python_full_version <= "3.11.2" -authlib==1.2.1 ; python_version >= "3.8" and python_version < "3.12" -backcall==0.2.0 ; python_version >= "3.8" and python_version < "3.12" -backoff==2.2.1 ; python_version >= "3.8" and python_version < "3.12" -certifi==2023.5.7 ; python_version >= "3.8" and python_version < "3.12" -cffi==1.15.1 ; python_version >= "3.8" and python_version < "3.12" -charset-normalizer==3.1.0 ; python_version >= "3.8" and python_version < "3.12" -click==8.1.3 ; python_version >= "3.8" and python_version < "3.12" -colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" or python_version >= "3.8" and python_version < "3.12" and sys_platform == "win32" -cryptography==41.0.1 ; python_version >= "3.8" and python_version < "3.12" -decorator==5.1.1 ; python_version >= "3.8" and python_version < "3.12" -elastic-transport==8.4.0 ; python_version >= "3.8" and python_version < "3.12" -elasticsearch==8.8.0 ; python_version >= "3.8" and python_version < "3.12" -environs==9.5.0 ; python_version >= "3.8" and python_version < "3.12" -exceptiongroup==1.1.1 ; python_version >= "3.8" and python_version < "3.11" -executing==1.2.0 ; python_version >= "3.8" and python_version < "3.12" -grpcio-tools==1.53.0 ; python_version >= "3.8" and python_version < "3.12" -grpcio==1.53.0 ; python_version >= "3.8" and python_version < "3.12" -h11==0.14.0 ; python_version >= "3.8" and python_version < "3.12" -h2==4.1.0 ; python_version >= "3.8" and python_version < "3.12" -h5py==3.9.0 ; python_version >= "3.8" and python_version < "3.12" -hpack==4.0.0 ; python_version >= "3.8" and python_version < "3.12" -httpcore==0.17.2 ; python_version >= "3.8" and python_version < "3.12" -httpx[http2]==0.24.1 ; python_version >= "3.8" and python_version < "3.12" -hyperframe==6.0.1 ; python_version >= "3.8" and python_version < "3.12" -idna==3.4 ; python_version >= "3.8" and python_version < "3.12" -ipdb==0.13.13 ; python_version >= "3.8" and python_version < "3.12" -ipython==8.12.2 ; python_version >= "3.8" and python_version < "3.12" -jedi==0.18.2 ; python_version >= "3.8" and python_version < "3.12" -jsons==1.6.3 ; python_version >= "3.8" and python_version < "3.12" -marshmallow==3.19.0 ; python_version >= "3.8" and python_version < "3.12" -matplotlib-inline==0.1.6 ; python_version >= "3.8" and python_version < "3.12" -numpy==1.24.4 ; python_version < "3.12" and python_version >= "3.8" -opensearch-py==2.2.0 ; python_version >= "3.8" and python_version < "3.12" -packaging==23.1 ; python_version >= "3.8" and python_version < "3.12" -pandas==2.0.2 ; python_version >= "3.8" and python_version < "3.12" -parso==0.8.3 ; python_version >= "3.8" and python_version < "3.12" -pexpect==4.8.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" -pickleshare==0.7.5 ; python_version >= "3.8" and python_version < "3.12" -portalocker==2.7.0 ; python_version >= "3.8" and python_version < "3.12" -prompt-toolkit==3.0.38 ; python_version >= "3.8" and python_version < "3.12" -protobuf==4.23.3 ; python_version >= "3.8" and python_version < "3.12" -ptyprocess==0.7.0 ; python_version >= "3.8" and python_version < "3.12" and sys_platform != "win32" -pure-eval==0.2.2 ; python_version >= "3.8" and python_version < "3.12" -pycparser==2.21 ; python_version >= "3.8" and python_version < "3.12" -pydantic==1.10.9 ; python_version >= "3.8" and python_version < "3.12" -pygments==2.15.1 ; python_version >= "3.8" and python_version < "3.12" -pymilvus==2.2.12 ; python_version >= "3.8" and python_version < "3.12" -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.12" -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "3.12" -pytz==2023.3 ; python_version >= "3.8" and python_version < "3.12" -pywin32==306 ; python_version >= "3.8" and python_version < "3.12" and platform_system == "Windows" -qdrant-client==1.3.1 ; python_version >= "3.8" and python_version < "3.12" -redis==4.6.0 ; python_version >= "3.8" and python_version < "3.12" -requests==2.31.0 ; python_version >= "3.8" and python_version < "3.12" -setuptools==68.0.0 ; python_version >= "3.8" and python_version < "3.12" -six==1.16.0 ; python_version >= "3.8" and python_version < "3.12" -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "3.12" -stack-data==0.6.2 ; python_version >= "3.8" and python_version < "3.12" -stopit==1.1.2 ; python_version >= "3.8" and python_version < "3.12" -tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" -tqdm==4.65.0 ; python_version >= "3.8" and python_version < "3.12" -traitlets==5.9.0 ; python_version >= "3.8" and python_version < "3.12" -typer==0.6.1 ; python_version >= "3.8" and python_version < "3.12" -typing-extensions==4.5.0 ; python_version >= "3.8" and python_version < "3.12" -typish==1.9.3 ; python_version >= "3.8" and python_version < "3.12" -tzdata==2023.3 ; python_version >= "3.8" and python_version < "3.12" -ujson==5.8.0 ; python_version >= "3.8" and python_version < "3.12" -urllib3==1.26.16 ; python_version >= "3.8" and python_version < "3.12" -validators==0.20.0 ; python_version >= "3.8" and python_version < "3.12" -wcwidth==0.2.6 ; python_version >= "3.8" and python_version < "3.12" -weaviate-client==3.22.1 ; python_version >= "3.8" and python_version < "3.12" From bcd50576006d5469cb3e159b3975249f43277603 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 30 Nov 2023 23:56:19 +0000 Subject: [PATCH 053/204] Ensuring every oss shard has ft.create/ft.drop --- engine/clients/redis/configure.py | 67 ++++++++++++++++++------------- engine/clients/redis/search.py | 1 + 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index f73c266c..24a9752a 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -36,22 +36,27 @@ class RedisConfigurator(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 ) def clean(self): - index = self.client.ft() - try: - index.dropindex(delete_documents=True) - except redis.ResponseError as e: - if "Unknown Index name" not in e.__str__(): - print(e) + conns = [self.client] + if self._is_cluster: + conns = self.client.get_primaries() + for conn in conns: + index = conn.ft() + try: + index.dropindex(delete_documents=True) + except redis.ResponseError as e: + if "Unknown Index name" not in e.__str__(): + print(e) def recreate(self, dataset: Dataset, collection_params): self.clean() - search_namespace = self.client.ft() + payload_fields = [ self.FIELD_MAPPING[field_type]( name=field_name, @@ -69,27 +74,33 @@ def recreate(self, dataset: Dataset, collection_params): for field_name, field_type in dataset.config.schema.items() if field_type == "keyword" ] - try: - search_namespace.create_index( - fields=[ - VectorField( - name="vector", - algorithm="HNSW", - attributes={ - "TYPE": "FLOAT32", - "DIM": dataset.config.vector_size, - "DISTANCE_METRIC": self.DISTANCE_MAPPING[ - dataset.config.distance - ], - **self.collection_params.get("hnsw_config", {}), - }, - ) - ] - + payload_fields - ) - except redis.ResponseError as e: - if "Index already exists" not in e.__str__(): - raise e + index_fields = [ + VectorField( + name="vector", + algorithm="HNSW", + attributes={ + "TYPE": "FLOAT32", + "DIM": dataset.config.vector_size, + "DISTANCE_METRIC": self.DISTANCE_MAPPING[ + dataset.config.distance + ], + **self.collection_params.get("hnsw_config", {}), + }, + ) + ] + payload_fields + + conns = [self.client] + if self._is_cluster: + conns = self.client.get_primaries() + for conn in conns: + search_namespace = conn.ft() + try: + search_namespace.create_index( + fields=index_fields + ) + except redis.ResponseError as e: + if "Index already exists" not in e.__str__(): + raise e if __name__ == "__main__": diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 0f53f95c..88123340 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -27,6 +27,7 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic ) cls.search_params = search_params cls.knn_conditions = "EF_RUNTIME $EF" + cls._is_cluster = True if REDIS_CLUSTER else False @classmethod def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: From 5992b73a17aac31ddc8cf476886e23e822ece0cd Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 1 Dec 2023 00:00:13 +0000 Subject: [PATCH 054/204] Ensuring every oss shard has ft.create/ft.drop --- engine/clients/redis/configure.py | 37 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 24a9752a..1aa1a51f 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -41,11 +41,12 @@ def __init__(self, host, collection_params: dict, connection_params: dict): host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER ) - def clean(self): conns = [self.client] if self._is_cluster: - conns = self.client.get_primaries() + conns = [ + self.client.get_connection(node) for node in self.client.get_primaries() + ] for conn in conns: index = conn.ft() try: @@ -75,29 +76,27 @@ def recreate(self, dataset: Dataset, collection_params): if field_type == "keyword" ] index_fields = [ - VectorField( - name="vector", - algorithm="HNSW", - attributes={ - "TYPE": "FLOAT32", - "DIM": dataset.config.vector_size, - "DISTANCE_METRIC": self.DISTANCE_MAPPING[ - dataset.config.distance - ], - **self.collection_params.get("hnsw_config", {}), - }, - ) - ] + payload_fields + VectorField( + name="vector", + algorithm="HNSW", + attributes={ + "TYPE": "FLOAT32", + "DIM": dataset.config.vector_size, + "DISTANCE_METRIC": self.DISTANCE_MAPPING[dataset.config.distance], + **self.collection_params.get("hnsw_config", {}), + }, + ) + ] + payload_fields conns = [self.client] if self._is_cluster: - conns = self.client.get_primaries() + conns = [ + self.client.get_connection(node) for node in self.client.get_primaries() + ] for conn in conns: search_namespace = conn.ft() try: - search_namespace.create_index( - fields=index_fields - ) + search_namespace.create_index(fields=index_fields) except redis.ResponseError as e: if "Index already exists" not in e.__str__(): raise e From 8b41d8ac131131fdb51c62da3e0a20e96db5d352 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 1 Dec 2023 00:02:44 +0000 Subject: [PATCH 055/204] Ensuring every oss shard has ft.create/ft.drop --- engine/clients/redis/configure.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 1aa1a51f..63046ab8 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -45,7 +45,7 @@ def clean(self): conns = [self.client] if self._is_cluster: conns = [ - self.client.get_connection(node) for node in self.client.get_primaries() + self.client.get_redis_connection(node) for node in self.client.get_primaries() ] for conn in conns: index = conn.ft() @@ -91,7 +91,7 @@ def recreate(self, dataset: Dataset, collection_params): conns = [self.client] if self._is_cluster: conns = [ - self.client.get_connection(node) for node in self.client.get_primaries() + self.client.get_redis_connection(node) for node in self.client.get_primaries() ] for conn in conns: search_namespace = conn.ft() From 886dd085b132e93e0666db7cfbb6f999493ec988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Wed, 6 Dec 2023 13:37:36 +0100 Subject: [PATCH 056/204] Add laion 400M dataset to datasets.json file --- datasets/datasets.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/datasets/datasets.json b/datasets/datasets.json index 72cb0ffd..5b87b646 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -95,6 +95,14 @@ "path": "laion-img-emb-512/laion-img-emb-512-200M-angular.hdf5", "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-200M-angular.hdf5" }, + { + "name": "laion-img-emb-512-400M-angular", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-400M-angular.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-400M-angular.hdf5" + }, { "name": "gist-960-angular", "vector_size": 960, From dfed4ce4f6270d551c66af590014de1d066d4cc4 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 7 Dec 2023 07:49:50 +0000 Subject: [PATCH 057/204] Applied black to changed files --- engine/clients/redis/configure.py | 6 ++++-- engine/clients/redis/search.py | 5 +---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 63046ab8..54376210 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -45,7 +45,8 @@ def clean(self): conns = [self.client] if self._is_cluster: conns = [ - self.client.get_redis_connection(node) for node in self.client.get_primaries() + self.client.get_redis_connection(node) + for node in self.client.get_primaries() ] for conn in conns: index = conn.ft() @@ -91,7 +92,8 @@ def recreate(self, dataset: Dataset, collection_params): conns = [self.client] if self._is_cluster: conns = [ - self.client.get_redis_connection(node) for node in self.client.get_primaries() + self.client.get_redis_connection(node) + for node in self.client.get_primaries() ] for conn in conns: search_namespace = conn.ft() diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 88123340..cb4c1d61 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -59,7 +59,4 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: results = cls.client.ft().search(q, query_params=params_dict) - return [ - (int(result.id), float(result.vector_score)) - for result in results.docs - ] + return [(int(result.id), float(result.vector_score)) for result in results.docs] From 4d6ba07f63014722ae14ba587ee5739aa6bb2f9d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sun, 17 Dec 2023 20:33:09 +0000 Subject: [PATCH 058/204] Using random primary node on search_one for Redis --- engine/clients/redis/search.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index cb4c1d61..ddd033e2 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -1,6 +1,7 @@ from typing import List, Tuple import numpy as np +import random from redis import Redis, RedisCluster from redis.commands.search.query import Query from engine.base_client.search import BaseSearcher @@ -28,6 +29,13 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.search_params = search_params cls.knn_conditions = "EF_RUNTIME $EF" cls._is_cluster = True if REDIS_CLUSTER else False + 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))].ft() @classmethod def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: @@ -56,7 +64,6 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: "EF": cls.search_params["search_params"]["ef"], **params, } - - results = cls.client.ft().search(q, query_params=params_dict) + results = cls._ft.search(q, query_params=params_dict) return [(int(result.id), float(result.vector_score)) for result in results.docs] From 96536c5d668e0405c1c8d4dbcb0ab2fc3250c082 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sun, 17 Dec 2023 20:36:11 +0000 Subject: [PATCH 059/204] Using random primary node on search_one for Redis --- engine/clients/redis/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index ddd033e2..405d8f51 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -35,7 +35,7 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.client.get_redis_connection(node) for node in cls.client.get_primaries() ] - cls._ft = cls.conns[random.randint(0, len(cls.conns))].ft() + 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]]: From b19349bc4c47f1c95e290436a0a127b9bc5d3207 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sun, 17 Dec 2023 20:51:11 +0000 Subject: [PATCH 060/204] Include context on how we distribute search query load on redis in case of cluster api enabled --- engine/clients/redis/search.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 405d8f51..e9eddcbb 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -29,6 +29,8 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.search_params = search_params cls.knn_conditions = "EF_RUNTIME $EF" 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 = [ From fb2ecc7dae9214c98d85af8aad280ea5e692723f Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 21 Dec 2023 14:43:09 +0000 Subject: [PATCH 061/204] Include a large scale redis config --- .../configurations/redis-large-scale.json | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 experiments/configurations/redis-large-scale.json diff --git a/experiments/configurations/redis-large-scale.json b/experiments/configurations/redis-large-scale.json new file mode 100644 index 00000000..86d511d5 --- /dev/null +++ b/experiments/configurations/redis-large-scale.json @@ -0,0 +1,114 @@ +[ + { + "name": "redis-default", + "engine": "redis", + "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, + { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, + { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } + }, + { + "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, + { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, + { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } + }, + { + "name": "redis-m-32-ef-128", + "engine": "redis", + "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, + { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, + { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } + }, + { + "name": "redis-m-32-ef-256", + "engine": "redis", + "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, + { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, + { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } + }, + { + "name": "redis-m-32-ef-512", + "engine": "redis", + "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, + { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, + { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } + }, + { + "name": "redis-m-64-ef-256", + "engine": "redis", + "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, + { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, + { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } + }, + { + "name": "redis-m-64-ef-512", + "engine": "redis", + "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, + { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, + { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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 } }, + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } } + ], + "upload_params": { "parallel": 100, "batch_size": 100 } + } +] \ No newline at end of file From ef8bf0894d210e2bc3911886f7d34fb210fd6c4b Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 25 Jan 2024 13:50:59 +0000 Subject: [PATCH 062/204] Updated laion-400m angular to cosine reference on dataset --- datasets/datasets.json | 50 ++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/datasets/datasets.json b/datasets/datasets.json index 5b87b646..9237803e 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -40,68 +40,60 @@ "link": "http://ann-benchmarks.com/gist-960-euclidean.hdf5" }, { - "name": "laion-img-emb-512-100K-angular", + "name": "laion-img-emb-512-1M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-100K-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100K-angular.hdf5" + "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-1M-angular", + "name": "laion-img-emb-512-10M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-1M-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-1M-angular.hdf5" + "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-10M-angular", + "name": "laion-img-emb-512-20M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-10M-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-10M-angular.hdf5" + "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-20M-angular", + "name": "laion-img-emb-512-40M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-20M-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-20M-angular.hdf5" + "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-40M-angular", + "name": "laion-img-emb-512-100M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-40M-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-40M-angular.hdf5" + "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-100M-angular", + "name": "laion-img-emb-512-200M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-100M-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100M-angular.hdf5" + "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-200M-angular", + "name": "laion-img-emb-512-400M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-200M-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-200M-angular.hdf5" - }, - { - "name": "laion-img-emb-512-400M-angular", - "vector_size": 512, - "distance": "cosine", - "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-400M-angular.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-400M-angular.hdf5" + "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": "gist-960-angular", From 10d7260bc3ef61a7f8558ab7b4af7225d107e4cc Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 7 Feb 2024 17:46:46 -0500 Subject: [PATCH 063/204] Enabled passing postgres connection details --- engine/clients/pgvector/config.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/engine/clients/pgvector/config.py b/engine/clients/pgvector/config.py index 851c3efb..dc3b8365 100644 --- a/engine/clients/pgvector/config.py +++ b/engine/clients/pgvector/config.py @@ -1,7 +1,9 @@ -PGVECTOR_PORT = 9200 -PGVECTOR_DB = "postgres" -PGVECTOR_USER = "postgres" -PGVECTOR_PASSWORD = "passwd" +import os + +PGVECTOR_PORT = int(os.getenv("PGVECTOR_PORT", 9200)) +PGVECTOR_DB = os.getenv("PGVECTOR_DB", "postgres") +PGVECTOR_USER = os.getenv("PGVECTOR_USER", "postgres") +PGVECTOR_PASSWORD = os.getenv("PGVECTOR_PASSWORD", "passwd") def get_db_config(host, connection_params): From fc32ba8d065a51806c26a7012a460aea8dd40b96 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 15 Feb 2024 11:06:17 +0000 Subject: [PATCH 064/204] reducing changes to sync with origin --- engine/base_client/client.py | 26 ++-- .../configurations/redis-large-scale.json | 114 ------------------ .../configurations/redis-single-node.json | 26 ++++ 3 files changed, 40 insertions(+), 126 deletions(-) delete mode 100644 experiments/configurations/redis-large-scale.json diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 743ee19c..e00eafb2 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -115,18 +115,20 @@ def run_experiment( if "search_params" in search_params: if "ef" in search_params["search_params"]: ef = search_params["search_params"]["ef"] - parallel = search_params["parallel"] if "parallel" in search_params else 1 - filter_parallel = (len(parallels) > 0) - if (filter_parallel and parallel in parallels) or filter_parallel is False: - print(f"\trunning ef runtime: {ef}; #clients {parallel}") - search_stats = searcher.search_all( - dataset.config.distance, reader.read_queries() - ) - self.save_search_results( - dataset.config.name, search_stats, search_id, search_params - ) - else: - print(f"\tskipping ef runtime: {ef}; #clients {parallel}") + client_count = search_params["parallel"] if "parallel" in search_params else 1 + 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 + print(f"\trunning ef runtime: {ef}; #clients {client_count}") + + search_stats = searcher.search_all( + dataset.config.distance, reader.read_queries() + ) + 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/experiments/configurations/redis-large-scale.json b/experiments/configurations/redis-large-scale.json deleted file mode 100644 index 86d511d5..00000000 --- a/experiments/configurations/redis-large-scale.json +++ /dev/null @@ -1,114 +0,0 @@ -[ - { - "name": "redis-default", - "engine": "redis", - "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, - { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, - { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } - }, - { - "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, - { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, - { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } - }, - { - "name": "redis-m-32-ef-128", - "engine": "redis", - "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, - { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, - { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } - }, - { - "name": "redis-m-32-ef-256", - "engine": "redis", - "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, - { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, - { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } - }, - { - "name": "redis-m-32-ef-512", - "engine": "redis", - "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, - { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, - { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } - }, - { - "name": "redis-m-64-ef-256", - "engine": "redis", - "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, - { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, - { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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": 100, "batch_size": 100 } - }, - { - "name": "redis-m-64-ef-512", - "engine": "redis", - "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": 2, "search_params": { "ef": 64 } }, { "parallel": 2, "search_params": { "ef": 128 } }, { "parallel": 2, "search_params": { "ef": 256 } }, { "parallel": 2, "search_params": { "ef": 512 } }, - { "parallel": 4, "search_params": { "ef": 64 } }, { "parallel": 4, "search_params": { "ef": 128 } }, { "parallel": 4, "search_params": { "ef": 256 } }, { "parallel": 4, "search_params": { "ef": 512 } }, - { "parallel": 8, "search_params": { "ef": 64 } }, { "parallel": 8, "search_params": { "ef": 128 } }, { "parallel": 8, "search_params": { "ef": 256 } }, { "parallel": 8, "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 } }, - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } } - ], - "upload_params": { "parallel": 100, "batch_size": 100 } - } -] \ No newline at end of file diff --git a/experiments/configurations/redis-single-node.json b/experiments/configurations/redis-single-node.json index 3b351edc..b42593ec 100644 --- a/experiments/configurations/redis-single-node.json +++ b/experiments/configurations/redis-single-node.json @@ -11,6 +11,32 @@ ], "upload_params": { "parallel": 16, "batch_size": 1024 } }, + { + "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": 16 } + }, + { + "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": 16 } + }, { "name": "redis-m-32-ef-128", "engine": "redis", From 2e79be80478039bb418ce68e38414f510406df1d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 15 Feb 2024 17:00:52 +0000 Subject: [PATCH 065/204] General improvements. Extended exposed metrics in results file. Added more metadata. Allowed to filter benchmark runs by client count --- benchmark/dataset.py | 10 +++++++++- engine/base_client/client.py | 15 ++++++++++++++- engine/base_client/search.py | 3 +-- engine/base_client/upload.py | 15 ++++++++++----- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/benchmark/dataset.py b/benchmark/dataset.py index d2793f04..41485369 100644 --- a/benchmark/dataset.py +++ b/benchmark/dataset.py @@ -26,6 +26,12 @@ class DatasetConfig: READER_TYPE = {"h5": AnnH5Reader, "jsonl": JSONReader, "tar": AnnCompoundReader} +# prepare progressbar +def show_progress(block_num, block_size, total_size): + percent = round(block_num * block_size / total_size * 100, 2) + print(f"{percent} %", end="\r") + + class Dataset: def __init__(self, config: dict): self.config = DatasetConfig(**config) @@ -39,7 +45,9 @@ def download(self): if self.config.link: print(f"Downloading {self.config.link}...") - tmp_path, _ = urllib.request.urlretrieve(self.config.link) + tmp_path, _ = urllib.request.urlretrieve( + self.config.link, None, show_progress + ) if self.config.link.endswith(".tgz") or self.config.link.endswith( ".tar.gz" diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 160728d8..e5d46c64 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -60,6 +60,7 @@ def run_experiment( skip_upload: bool = False, skip_search: bool = False, skip_if_exists: bool = True, + parallels: [int] = [], ): execution_params = self.configurator.execution_params( distance=dataset.config.distance, vector_size=dataset.config.vector_size @@ -96,7 +97,6 @@ def run_experiment( 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" @@ -110,12 +110,25 @@ def run_experiment( continue search_params = {**searcher.search_params} + ef = "default" + if "search_params" in search_params: + ef = search_params["search_params"].get("ef", "default") + client_count = search_params.get("parallel", 1) + 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 + print(f"\tRunning ef runtime: {ef}; #clients {client_count}") + search_stats = searcher.search_all( dataset.config.distance, reader.read_queries() ) + # ensure we specify the client count in the results + search_params["parallel"] = client_count 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 1ba6e672..55e4cf9a 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -52,7 +52,6 @@ def _search_one(cls, 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( @@ -62,7 +61,6 @@ def search_all( ): parallel = self.search_params.pop("parallel", 1) top = self.search_params.pop("top", None) - # setup_search may require initialized client self.init_client( self.host, distance, self.connection_params, self.search_params @@ -108,6 +106,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 8ce0fb28..a7cfe811 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -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 @@ -77,6 +80,8 @@ def upload( "upload_time": upload_time, "total_time": total_time, "latencies": latencies, + "parallel": parallel, + "batch_size": batch_size, } @classmethod From 49b6b0dbb316aea0edc06df1e88045284b9c71c9 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 15 Feb 2024 17:07:03 +0000 Subject: [PATCH 066/204] General improvements. Extended exposed metrics in results file. Added more metadata. Allowed to filter benchmark runs by client count --- benchmark/dataset.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/benchmark/dataset.py b/benchmark/dataset.py index a28ddc3a..41485369 100644 --- a/benchmark/dataset.py +++ b/benchmark/dataset.py @@ -26,12 +26,6 @@ class DatasetConfig: READER_TYPE = {"h5": AnnH5Reader, "jsonl": JSONReader, "tar": AnnCompoundReader} -# prepare progressbar -def show_progress(block_num, block_size, total_size): - percent = round(block_num * block_size / total_size * 100, 2) - print(f"{percent} %", end="\r") - - # prepare progressbar def show_progress(block_num, block_size, total_size): percent = round(block_num * block_size / total_size * 100, 2) From 358484f2068df3fc71a004a911f62cabd3eddb8a Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 15 Feb 2024 23:15:23 +0000 Subject: [PATCH 067/204] Fix: in case on multiple multiple datasets using the same config parallel/other properties in search_params and upload_params were not preserved --- engine/base_client/search.py | 4 ++-- engine/base_client/upload.py | 4 ++-- engine/clients/weaviate/config.py | 2 +- engine/clients/weaviate/upload.py | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 55e4cf9a..4c5e86d5 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -59,8 +59,8 @@ def search_all( distance, queries: Iterable[Query], ): - parallel = self.search_params.pop("parallel", 1) - top = self.search_params.pop("top", None) + 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 diff --git a/engine/base_client/upload.py b/engine/base_client/upload.py index a7cfe811..3b035fc0 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -31,8 +31,8 @@ def upload( ) -> dict: latencies = [] start = time.perf_counter() - parallel = self.upload_params.pop("parallel", 1) - batch_size = self.upload_params.pop("batch_size", 64) + parallel = self.upload_params..get("parallel", 1) + batch_size = self.upload_params..get("batch_size", 64) self.init_client( self.host, distance, self.connection_params, self.upload_params diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index 79dd1e80..fbba5a2f 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -7,7 +7,7 @@ WEAVIATE_PORT = os.getenv("WEAVIATE_PORT",WEAVIATE_DEFAULT_PORT) def setup_client(connection_params, host): - port = connection_params.pop('port', WEAVIATE_PORT) + port = connection_params..get('port', WEAVIATE_PORT) if host.startswith("http"): url = "" else: diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index d113927e..2e9b2f85 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -21,9 +21,9 @@ def _update_geo_data(data_object): keys = data_object.keys() for key in keys: if isinstance(data_object[key], dict): - if lat := data_object[key].pop("lat", None): + if lat := data_object[key]..get("lat", None): data_object[key]["latitude"] = lat - if lon := data_object[key].pop("lon", None): + if lon := data_object[key]..get("lon", None): data_object[key]["longitude"] = lon return data_object From 8ec0387e08b508345d32ee5e9a8e1d65b34593c5 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 15 Feb 2024 23:18:14 +0000 Subject: [PATCH 068/204] Fix: in case on multiple multiple datasets using the same config parallel/other properties in search_params and upload_params were not preserved --- engine/base_client/search.py | 4 ++-- engine/base_client/upload.py | 4 ++-- engine/clients/weaviate/config.py | 2 +- engine/clients/weaviate/upload.py | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 4c5e86d5..76dc9753 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -59,8 +59,8 @@ def search_all( distance, queries: Iterable[Query], ): - parallel = self.search_params..get("parallel", 1) - top = self.search_params..get("top", None) + 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 diff --git a/engine/base_client/upload.py b/engine/base_client/upload.py index 3b035fc0..50486baa 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -31,8 +31,8 @@ def upload( ) -> dict: latencies = [] start = time.perf_counter() - parallel = self.upload_params..get("parallel", 1) - batch_size = self.upload_params..get("batch_size", 64) + parallel = self.upload_params.get(("parallel", 1) + batch_size = self.upload_params.get(("batch_size", 64) self.init_client( self.host, distance, self.connection_params, self.upload_params diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index fbba5a2f..f85c2f5c 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -7,7 +7,7 @@ WEAVIATE_PORT = os.getenv("WEAVIATE_PORT",WEAVIATE_DEFAULT_PORT) def setup_client(connection_params, host): - port = connection_params..get('port', WEAVIATE_PORT) + port = connection_params.get(('port', WEAVIATE_PORT) if host.startswith("http"): url = "" else: diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index 2e9b2f85..c875e17b 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -21,9 +21,9 @@ def _update_geo_data(data_object): keys = data_object.keys() for key in keys: if isinstance(data_object[key], dict): - if lat := data_object[key]..get("lat", None): + if lat := data_object[key].get(("lat", None): data_object[key]["latitude"] = lat - if lon := data_object[key]..get("lon", None): + if lon := data_object[key].get(("lon", None): data_object[key]["longitude"] = lon return data_object From 55a821947c33600974cabc64b4b4bfb58bff6786 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 15 Feb 2024 23:19:19 +0000 Subject: [PATCH 069/204] Fix: in case on multiple multiple datasets using the same config parallel/other properties in search_params and upload_params were not preserved --- engine/base_client/search.py | 4 ++-- engine/base_client/upload.py | 4 ++-- engine/clients/weaviate/config.py | 2 +- engine/clients/weaviate/upload.py | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 76dc9753..a58d02d0 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -59,8 +59,8 @@ def search_all( distance, queries: Iterable[Query], ): - parallel = self.search_params.get(("parallel", 1) - top = self.search_params.get(("top", None) + 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 diff --git a/engine/base_client/upload.py b/engine/base_client/upload.py index 50486baa..b6a59bd4 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -31,8 +31,8 @@ def upload( ) -> dict: latencies = [] start = time.perf_counter() - parallel = self.upload_params.get(("parallel", 1) - batch_size = self.upload_params.get(("batch_size", 64) + parallel = self.upload_params.get("parallel", 1) + batch_size = self.upload_params.get("batch_size", 64) self.init_client( self.host, distance, self.connection_params, self.upload_params diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index f85c2f5c..3dd21bea 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -7,7 +7,7 @@ WEAVIATE_PORT = os.getenv("WEAVIATE_PORT",WEAVIATE_DEFAULT_PORT) def setup_client(connection_params, host): - port = connection_params.get(('port', WEAVIATE_PORT) + port = connection_params.get('port', WEAVIATE_PORT) if host.startswith("http"): url = "" else: diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index c875e17b..10b5475a 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -21,9 +21,9 @@ def _update_geo_data(data_object): keys = data_object.keys() for key in keys: if isinstance(data_object[key], dict): - if lat := data_object[key].get(("lat", None): + if lat := data_object[key].get("lat", None): data_object[key]["latitude"] = lat - if lon := data_object[key].get(("lon", None): + if lon := data_object[key].get("lon", None): data_object[key]["longitude"] = lon return data_object From 497aa90015972de0e2c56e4dae0c4b1423c70f59 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 4 Mar 2024 12:22:55 +0000 Subject: [PATCH 070/204] Enabled api key elastic connections --- engine/clients/elasticsearch/config.py | 43 ++++++++++++++++++++--- engine/clients/elasticsearch/configure.py | 18 ++-------- engine/clients/elasticsearch/search.py | 10 ++---- engine/clients/elasticsearch/upload.py | 18 ++-------- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 19b59d74..0658ed1e 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -1,4 +1,39 @@ -ELASTIC_PORT = 9200 -ELASTIC_INDEX = "bench" -ELASTIC_USER = "elastic" -ELASTIC_PASSWORD = "passwd" +import os +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", 90)) + + +def get_es_client(host, connection_params): + client: Elasticsearch = None + init_params = { + **{ + "verify_certs": False, + "request_timeout": ELASTIC_TIMEOUT, + "retry_on_timeout": True, + }, + **connection_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, + ) + return client diff --git a/engine/clients/elasticsearch/configure.py b/engine/clients/elasticsearch/configure.py index 76f64eb8..a4f08425 100644 --- a/engine/clients/elasticsearch/configure.py +++ b/engine/clients/elasticsearch/configure.py @@ -6,9 +6,7 @@ from engine.base_client.distances import Distance from engine.clients.elasticsearch.config import ( ELASTIC_INDEX, - ELASTIC_PASSWORD, - ELASTIC_PORT, - ELASTIC_USER, + get_es_client, ) @@ -25,19 +23,7 @@ class ElasticConfigurator(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 = Elasticsearch( - f"http://{host}:{ELASTIC_PORT}", - basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), - **init_params, - ) + self.client = get_es_client(host, connection_params) def clean(self): try: diff --git a/engine/clients/elasticsearch/search.py b/engine/clients/elasticsearch/search.py index 29d20ec5..ed15113c 100644 --- a/engine/clients/elasticsearch/search.py +++ b/engine/clients/elasticsearch/search.py @@ -7,9 +7,7 @@ from engine.base_client.search import BaseSearcher from engine.clients.elasticsearch.config import ( ELASTIC_INDEX, - ELASTIC_PASSWORD, - ELASTIC_PORT, - ELASTIC_USER, + get_es_client, ) from engine.clients.elasticsearch.parser import ElasticConditionParser @@ -38,11 +36,7 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic }, **connection_params, } - cls.client: Elasticsearch = Elasticsearch( - f"http://{host}:{ELASTIC_PORT}", - basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), - **init_params, - ) + cls.client = get_es_client(host, connection_params) cls.search_params = search_params @classmethod diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 0d5c6f2b..78842a25 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -7,9 +7,7 @@ from engine.base_client.upload import BaseUploader from engine.clients.elasticsearch.config import ( ELASTIC_INDEX, - ELASTIC_PASSWORD, - ELASTIC_PORT, - ELASTIC_USER, + get_es_client, ) @@ -28,19 +26,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 = Elasticsearch( - f"http://{host}:{ELASTIC_PORT}", - basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), - **init_params, - ) + cls.client = get_es_client(host, connection_params) cls.upload_params = upload_params @classmethod From beb119fd1e21a15fd4023a517e7c4b89bca18457 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 4 Mar 2024 12:32:57 +0000 Subject: [PATCH 071/204] Extra logging on which auth method we use on elastic --- engine/clients/elasticsearch/config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 0658ed1e..eeecdd9b 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -25,12 +25,14 @@ def get_es_client(host, connection_params): url = "http://" url += f"{host}:{ELASTIC_PORT}" if ELASTIC_API_KEY is None: + print("Connecting using basic auth") client = Elasticsearch( url, basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), **init_params, ) else: + print("Connecting using api key") client = Elasticsearch( url, api_key=ELASTIC_API_KEY, From 100bf974c9adb987decb083cf8bfad87d9b3d7b6 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 4 Mar 2024 12:22:55 +0000 Subject: [PATCH 072/204] Enabled api key elastic connections --- engine/clients/elasticsearch/config.py | 43 ++++++++++++++++++++--- engine/clients/elasticsearch/configure.py | 18 ++-------- engine/clients/elasticsearch/search.py | 10 ++---- engine/clients/elasticsearch/upload.py | 18 ++-------- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 19b59d74..0658ed1e 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -1,4 +1,39 @@ -ELASTIC_PORT = 9200 -ELASTIC_INDEX = "bench" -ELASTIC_USER = "elastic" -ELASTIC_PASSWORD = "passwd" +import os +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", 90)) + + +def get_es_client(host, connection_params): + client: Elasticsearch = None + init_params = { + **{ + "verify_certs": False, + "request_timeout": ELASTIC_TIMEOUT, + "retry_on_timeout": True, + }, + **connection_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, + ) + return client diff --git a/engine/clients/elasticsearch/configure.py b/engine/clients/elasticsearch/configure.py index 76f64eb8..a4f08425 100644 --- a/engine/clients/elasticsearch/configure.py +++ b/engine/clients/elasticsearch/configure.py @@ -6,9 +6,7 @@ from engine.base_client.distances import Distance from engine.clients.elasticsearch.config import ( ELASTIC_INDEX, - ELASTIC_PASSWORD, - ELASTIC_PORT, - ELASTIC_USER, + get_es_client, ) @@ -25,19 +23,7 @@ class ElasticConfigurator(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 = Elasticsearch( - f"http://{host}:{ELASTIC_PORT}", - basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), - **init_params, - ) + self.client = get_es_client(host, connection_params) def clean(self): try: diff --git a/engine/clients/elasticsearch/search.py b/engine/clients/elasticsearch/search.py index 29d20ec5..ed15113c 100644 --- a/engine/clients/elasticsearch/search.py +++ b/engine/clients/elasticsearch/search.py @@ -7,9 +7,7 @@ from engine.base_client.search import BaseSearcher from engine.clients.elasticsearch.config import ( ELASTIC_INDEX, - ELASTIC_PASSWORD, - ELASTIC_PORT, - ELASTIC_USER, + get_es_client, ) from engine.clients.elasticsearch.parser import ElasticConditionParser @@ -38,11 +36,7 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic }, **connection_params, } - cls.client: Elasticsearch = Elasticsearch( - f"http://{host}:{ELASTIC_PORT}", - basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), - **init_params, - ) + cls.client = get_es_client(host, connection_params) cls.search_params = search_params @classmethod diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 0d5c6f2b..78842a25 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -7,9 +7,7 @@ from engine.base_client.upload import BaseUploader from engine.clients.elasticsearch.config import ( ELASTIC_INDEX, - ELASTIC_PASSWORD, - ELASTIC_PORT, - ELASTIC_USER, + get_es_client, ) @@ -28,19 +26,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 = Elasticsearch( - f"http://{host}:{ELASTIC_PORT}", - basic_auth=(ELASTIC_USER, ELASTIC_PASSWORD), - **init_params, - ) + cls.client = get_es_client(host, connection_params) cls.upload_params = upload_params @classmethod From 6549035af6246e912a785a33d876d42e7303c4e6 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 4 Mar 2024 12:47:06 +0000 Subject: [PATCH 073/204] Fixes per pre-commit hook --- engine/clients/elasticsearch/config.py | 1 + engine/clients/elasticsearch/configure.py | 5 +---- engine/clients/elasticsearch/search.py | 5 +---- engine/clients/elasticsearch/upload.py | 5 +---- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 0658ed1e..a988eee7 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -1,4 +1,5 @@ import os + from elasticsearch import Elasticsearch ELASTIC_PORT = int(os.getenv("ELASTIC_PORT", 9200)) diff --git a/engine/clients/elasticsearch/configure.py b/engine/clients/elasticsearch/configure.py index a4f08425..c07e5939 100644 --- a/engine/clients/elasticsearch/configure.py +++ b/engine/clients/elasticsearch/configure.py @@ -4,10 +4,7 @@ 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 class ElasticConfigurator(BaseConfigurator): diff --git a/engine/clients/elasticsearch/search.py b/engine/clients/elasticsearch/search.py index ed15113c..a20b2121 100644 --- a/engine/clients/elasticsearch/search.py +++ b/engine/clients/elasticsearch/search.py @@ -5,10 +5,7 @@ from elasticsearch import Elasticsearch from engine.base_client.search import BaseSearcher -from engine.clients.elasticsearch.config import ( - ELASTIC_INDEX, - get_es_client, -) +from engine.clients.elasticsearch.config import ELASTIC_INDEX, get_es_client from engine.clients.elasticsearch.parser import ElasticConditionParser diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 78842a25..9b24ca5d 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -5,10 +5,7 @@ from elasticsearch import Elasticsearch 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 class ClosableElastic(Elasticsearch): From 3f314d82659cac25d0c983161147706506061879 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 4 Mar 2024 13:57:43 +0000 Subject: [PATCH 074/204] popping the parallel config from a deep copy of search_params --- engine/clients/elasticsearch/search.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engine/clients/elasticsearch/search.py b/engine/clients/elasticsearch/search.py index a20b2121..b7b09e2f 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 @@ -34,7 +35,9 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic **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, vector, meta_conditions, top) -> List[Tuple[int, float]]: From bef25e6ee4d66a40a3b784bd7a03da4ddf2275f3 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 21 Mar 2024 08:58:48 +0000 Subject: [PATCH 075/204] ensuring client connection is available --- engine/clients/elasticsearch/config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index a988eee7..6388be9b 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -37,4 +37,5 @@ def get_es_client(host, connection_params): api_key=ELASTIC_API_KEY, **init_params, ) + assert client.ping() return client From 8b6a0c1f27423fab4ff0a1e1e7784f54ff294ef0 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 21 Mar 2024 15:14:05 +0000 Subject: [PATCH 076/204] dsiabled urlib warnings --- engine/clients/elasticsearch/config.py | 2 ++ engine/clients/milvus/config.py | 8 ++++---- engine/clients/qdrant/configure.py | 14 +++++++++++--- engine/clients/qdrant/search.py | 6 +++++- engine/clients/qdrant/upload.py | 17 ++++++++++++++--- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 6388be9b..78b430ed 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -1,4 +1,5 @@ import os +import urllib3 from elasticsearch import Elasticsearch @@ -8,6 +9,7 @@ ELASTIC_PASSWORD = os.getenv("ELASTIC_PASSWORD", "passwd") ELASTIC_API_KEY = os.getenv("ELASTIC_API_KEY", None) ELASTIC_TIMEOUT = int(os.getenv("ELASTIC_TIMEOUT", 90)) +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) def get_es_client(host, connection_params): diff --git a/engine/clients/milvus/config.py b/engine/clients/milvus/config.py index 7716ac44..df5acd3d 100644 --- a/engine/clients/milvus/config.py +++ b/engine/clients/milvus/config.py @@ -5,9 +5,9 @@ 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) +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", @@ -45,4 +45,4 @@ def get_milvus_client(connection_params: dict, host: str, alias: str): password=MILVUS_PASS, **connection_params ) - return client \ No newline at end of file + return client diff --git a/engine/clients/qdrant/configure.py b/engine/clients/qdrant/configure.py index 51d81175..f89ecf65 100644 --- a/engine/clients/qdrant/configure.py +++ b/engine/clients/qdrant/configure.py @@ -4,7 +4,11 @@ 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, QDRANT_URL +from engine.clients.qdrant.config import ( + QDRANT_COLLECTION_NAME, + QDRANT_API_KEY, + QDRANT_URL, +) class QdrantConfigurator(BaseConfigurator): @@ -24,9 +28,13 @@ class QdrantConfigurator(BaseConfigurator): def __init__(self, host, collection_params: dict, connection_params: dict): super().__init__(host, collection_params, connection_params) if QDRANT_URL is None: - self.client = QdrantClient(host=host, api_key=QDRANT_API_KEY, **connection_params) + 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) + self.client = QdrantClient( + url=QDRANT_URL, api_key=QDRANT_API_KEY, **connection_params + ) def clean(self): res = self.client.delete_collection(collection_name=QDRANT_COLLECTION_NAME) diff --git a/engine/clients/qdrant/search.py b/engine/clients/qdrant/search.py index 9b783419..f98fd3b3 100644 --- a/engine/clients/qdrant/search.py +++ b/engine/clients/qdrant/search.py @@ -7,7 +7,11 @@ from qdrant_client.http import models as rest from engine.base_client.search import BaseSearcher -from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY, QDRANT_URL +from engine.clients.qdrant.config import ( + QDRANT_COLLECTION_NAME, + QDRANT_API_KEY, + QDRANT_URL, +) from engine.clients.qdrant.parser import QdrantConditionParser diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index 87a9e47e..c81d4fa4 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -6,7 +6,11 @@ from qdrant_client.http.models import Batch, CollectionStatus, OptimizersConfigDiff from engine.base_client.upload import BaseUploader -from engine.clients.qdrant.config import QDRANT_COLLECTION_NAME, QDRANT_API_KEY, QDRANT_URL +from engine.clients.qdrant.config import ( + QDRANT_COLLECTION_NAME, + QDRANT_API_KEY, + QDRANT_URL, +) class QdrantUploader(BaseUploader): @@ -18,9 +22,16 @@ def init_client(cls, host, distance, connection_params, upload_params): os.environ["GRPC_ENABLE_FORK_SUPPORT"] = "true" os.environ["GRPC_POLL_STRATEGY"] = "epoll,poll" if QDRANT_URL is None: - cls.client = QdrantClient(host=host, api_key=QDRANT_API_KEY, prefer_grpc=True, **connection_params) + 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.client = QdrantClient( + url=QDRANT_URL, + api_key=QDRANT_API_KEY, + prefer_grpc=True, + **connection_params + ) cls.upload_params = upload_params @classmethod From b6823967235212ec6476a10f9a12b770ad947031 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 21 Mar 2024 15:17:38 +0000 Subject: [PATCH 077/204] dsiabled urlib warnings --- engine/clients/elasticsearch/config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 78b430ed..2b30dcd2 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -19,6 +19,7 @@ def get_es_client(host, connection_params): "verify_certs": False, "request_timeout": ELASTIC_TIMEOUT, "retry_on_timeout": True, + "ssl_show_warn": False, }, **connection_params, } From f8bb088f4d91bdd919d8517f03f2d1ff3c3746bf Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 21 Mar 2024 15:19:27 +0000 Subject: [PATCH 078/204] Disable deprecation warnings on weaviate --- engine/base_client/client.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 054e2f4c..171a9363 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -3,6 +3,7 @@ from datetime import datetime from pathlib import Path from typing import List +import warnings from benchmark import ROOT_DIR from benchmark.dataset import Dataset @@ -15,6 +16,8 @@ DETAILED_RESULTS = bool(int(os.getenv("DETAILED_RESULTS", False))) +warnings.filterwarnings("ignore", category=DeprecationWarning) + class BaseClient: def __init__( From cc8a9b6949f1e00020332b16b47c4d13347f9960 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 21 Mar 2024 16:39:50 +0000 Subject: [PATCH 079/204] Disable deprecation warnings on weaviate --- engine/clients/elasticsearch/upload.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 9b24ca5d..dad1dfe9 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -2,6 +2,7 @@ import uuid from typing import List, Optional +import elastic_transport from elasticsearch import Elasticsearch from engine.base_client.upload import BaseUploader @@ -48,7 +49,21 @@ def upload_batch( @classmethod def post_upload(cls, _distance): - cls.client.indices.forcemerge( - index=ELASTIC_INDEX, wait_for_completion=True, max_num_segments=1 - ) + tries = 10 + 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 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 + break return {} From 6e194ab4755ae436676513af9e06f4c6f30e61a7 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 22 Mar 2024 10:42:18 +0000 Subject: [PATCH 080/204] Properly handle Api Error from Elastic --- engine/clients/elasticsearch/upload.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index dad1dfe9..67e25ad8 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -3,7 +3,7 @@ from typing import List, Optional import elastic_transport -from elasticsearch import Elasticsearch +from elasticsearch import Elasticsearch, ApiError from engine.base_client.upload import BaseUploader from engine.clients.elasticsearch.config import ELASTIC_INDEX, get_es_client @@ -55,7 +55,7 @@ def post_upload(cls, _distance): cls.client.indices.forcemerge( index=ELASTIC_INDEX, wait_for_completion=True, max_num_segments=1 ) - except elastic_transport.TlsError as e: + 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( From c6cdf57524378a00f31808dd888124f09be288a1 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 22 Mar 2024 12:24:28 +0000 Subject: [PATCH 081/204] Included elastic index timeout --- engine/clients/elasticsearch/config.py | 3 ++- engine/clients/elasticsearch/configure.py | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 2b30dcd2..8d8272b9 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -8,7 +8,8 @@ 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", 90)) +ELASTIC_TIMEOUT = int(os.getenv("ELASTIC_TIMEOUT", 300)) +ELASTIC_INDEX_TIMEOUT = os.getenv("ELASTIC_INDEX_TIMEOUT", "30m") urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) diff --git a/engine/clients/elasticsearch/configure.py b/engine/clients/elasticsearch/configure.py index c07e5939..a19edc16 100644 --- a/engine/clients/elasticsearch/configure.py +++ b/engine/clients/elasticsearch/configure.py @@ -4,7 +4,12 @@ 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, +) class ElasticConfigurator(BaseConfigurator): @@ -25,7 +30,9 @@ def __init__(self, host, collection_params: dict, connection_params: dict): def clean(self): 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 @@ -39,6 +46,9 @@ 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, From 172208b806879ebec27c3730aca23fee243ffce1 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 22 Mar 2024 23:15:09 +0000 Subject: [PATCH 082/204] waiting for ES green status --- engine/clients/elasticsearch/config.py | 1 + engine/clients/elasticsearch/configure.py | 3 ++- engine/clients/elasticsearch/upload.py | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 8d8272b9..965c51e9 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -10,6 +10,7 @@ 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 = int(os.getenv("ELASTIC_TIMEOUT", 30)) urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) diff --git a/engine/clients/elasticsearch/configure.py b/engine/clients/elasticsearch/configure.py index a19edc16..97938871 100644 --- a/engine/clients/elasticsearch/configure.py +++ b/engine/clients/elasticsearch/configure.py @@ -9,6 +9,7 @@ get_es_client, ELASTIC_TIMEOUT, ELASTIC_INDEX_TIMEOUT, + ELASTIC_INDEX_REFRESH_INTERVAL, ) @@ -53,7 +54,7 @@ def recreate(self, dataset: Dataset, collection_params): "index": { "number_of_shards": 1, "number_of_replicas": 0, - "refresh_interval": -1, + "refresh_interval": ELASTIC_INDEX_REFRESH_INTERVAL, } }, mappings={ diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 67e25ad8..1b42bdac 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -49,6 +49,7 @@ def upload_batch( @classmethod def post_upload(cls, _distance): + print("forcing the merge into 1 segment...") tries = 10 for i in range(tries + 1): try: @@ -66,4 +67,14 @@ def post_upload(cls, _distance): else: raise break + print("waiting for ES green status...") + for _ in range(100): + try: + client.cluster.health(wait_for_status="green") + return client + except ConnectionError: + time.sleep(0.1) + else: + # timeout + raise SkipTest("Elasticsearch failed to start.") return {} From eb28dfb4b0af93a56276852cc647a86d5396f661 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 22 Mar 2024 23:17:32 +0000 Subject: [PATCH 083/204] waiting for ES green status --- engine/clients/elasticsearch/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 965c51e9..060693fd 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -10,7 +10,7 @@ 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 = int(os.getenv("ELASTIC_TIMEOUT", 30)) +ELASTIC_INDEX_REFRESH_INTERVAL = os.getenv("ELASTIC_INDEX_REFRESH_INTERVAL", "10s") urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) From 99ef83289e9d8df45131f1f6cc6ed5de6f90ea48 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 22 Mar 2024 23:51:18 +0000 Subject: [PATCH 084/204] Fixed weaviate deprecation warning for apikey --- engine/clients/weaviate/config.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index 127d62e4..7bbd3096 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -1,5 +1,6 @@ import os -from weaviate import Client, AuthApiKey +from weaviate import Client +from weaviate.auth import AuthApiKey WEAVIATE_CLASS_NAME = "Benchmark" WEAVIATE_DEFAULT_PORT = 8090 From 738a991d1cd72d9ff7f2c9aed4a27a4f4b1dca5a Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sat, 23 Mar 2024 10:19:36 +0000 Subject: [PATCH 085/204] Included repetitions --- engine/base_client/client.py | 32 +++++++++++++---------- engine/clients/elasticsearch/config.py | 15 ++++++++++- engine/clients/elasticsearch/configure.py | 2 ++ engine/clients/elasticsearch/upload.py | 13 ++------- 4 files changed, 36 insertions(+), 26 deletions(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 171a9363..c071a9d1 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -15,6 +15,7 @@ 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) @@ -147,21 +148,24 @@ def run_experiment( if filter_client_count and (client_count not in parallels): print(f"\tSkipping ef runtime: {ef}; #clients {client_count}") continue - print(f"\tRunning ef runtime: {ef}; #clients {client_count}") + 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() - ) - # 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 - ) + search_stats = searcher.search_all( + dataset.config.distance, reader.read_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 + ) print("Experiment stage: Done") print("Results saved to: ", RESULTS_DIR) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 060693fd..d4fac2f9 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -1,6 +1,6 @@ import os import urllib3 - +import time from elasticsearch import Elasticsearch ELASTIC_PORT = int(os.getenv("ELASTIC_PORT", 9200)) @@ -44,3 +44,16 @@ def get_es_client(host, connection_params): ) assert client.ping() return client + + +def _wait_es_green(client): + print("waiting for ES green status...") + for _ in range(100): + try: + client.cluster.health(wait_for_status="green") + 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 97938871..7db91382 100644 --- a/engine/clients/elasticsearch/configure.py +++ b/engine/clients/elasticsearch/configure.py @@ -29,6 +29,7 @@ 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, @@ -37,6 +38,7 @@ def clean(self): ) except NotFoundError: pass + print("Finished ensuring the index does not exist...") def recreate(self, dataset: Dataset, collection_params): if dataset.config.distance == Distance.DOT: diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 1b42bdac..556aa0eb 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -50,7 +50,7 @@ def upload_batch( @classmethod def post_upload(cls, _distance): print("forcing the merge into 1 segment...") - tries = 10 + tries = 30 for i in range(tries + 1): try: cls.client.indices.forcemerge( @@ -67,14 +67,5 @@ def post_upload(cls, _distance): else: raise break - print("waiting for ES green status...") - for _ in range(100): - try: - client.cluster.health(wait_for_status="green") - return client - except ConnectionError: - time.sleep(0.1) - else: - # timeout - raise SkipTest("Elasticsearch failed to start.") + _wait_for_es_green(cls.client) return {} From cead3e1f075bfbaf1ef2881f87ad861402743935 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sat, 23 Mar 2024 10:25:52 +0000 Subject: [PATCH 086/204] Included repetitions --- engine/clients/elasticsearch/config.py | 2 +- engine/clients/elasticsearch/upload.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index d4fac2f9..321f8537 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -46,7 +46,7 @@ def get_es_client(host, connection_params): return client -def _wait_es_green(client): +def _wait_for_es_green(client): print("waiting for ES green status...") for _ in range(100): try: diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 556aa0eb..6ab94dd8 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -6,7 +6,11 @@ from elasticsearch import Elasticsearch, ApiError 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_green, +) class ClosableElastic(Elasticsearch): @@ -66,6 +70,6 @@ def post_upload(cls, _distance): continue else: raise - break _wait_for_es_green(cls.client) + break return {} From 1dcb421556448a285aaf84022302183749c459b7 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sat, 23 Mar 2024 16:39:40 +0000 Subject: [PATCH 087/204] waiting for yellow state in ES --- engine/clients/elasticsearch/config.py | 6 +++--- engine/clients/elasticsearch/upload.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/engine/clients/elasticsearch/config.py b/engine/clients/elasticsearch/config.py index 321f8537..183284d2 100644 --- a/engine/clients/elasticsearch/config.py +++ b/engine/clients/elasticsearch/config.py @@ -46,11 +46,11 @@ def get_es_client(host, connection_params): return client -def _wait_for_es_green(client): - print("waiting for ES green status...") +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="green") + client.cluster.health(wait_for_status=status) return client except ConnectionError: time.sleep(0.1) diff --git a/engine/clients/elasticsearch/upload.py b/engine/clients/elasticsearch/upload.py index 6ab94dd8..e295cb5e 100644 --- a/engine/clients/elasticsearch/upload.py +++ b/engine/clients/elasticsearch/upload.py @@ -9,7 +9,7 @@ from engine.clients.elasticsearch.config import ( ELASTIC_INDEX, get_es_client, - _wait_for_es_green, + _wait_for_es_status, ) @@ -70,6 +70,6 @@ def post_upload(cls, _distance): continue else: raise - _wait_for_es_green(cls.client) + _wait_for_es_status(cls.client) break return {} From 145ce7b0ef596c61cd91614b82f1bf0c53fa24f6 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 28 Mar 2024 15:50:32 +0000 Subject: [PATCH 088/204] Ensuring a proper clean DB at start for memorydb and memorystore. Ensuring all docs are indexed before search stage... --- engine/clients/redis/config.py | 4 ++-- engine/clients/redis/configure.py | 16 ++++++++++++++-- engine/clients/redis/upload.py | 24 ++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index 23531a4d..c310ac40 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -6,5 +6,5 @@ REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) -# 90 seconds timeout -REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 90 * 1000)) +# 60 seconds timeout +REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 60 * 1000)) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 54376210..0ae019fd 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -53,8 +53,20 @@ def clean(self): try: index.dropindex(delete_documents=True) except redis.ResponseError as e: - if "Unknown Index name" not in e.__str__(): - print(e) + str_err = e.__str__() + if ( + "Unknown Index name" not in str_err + and "Index does not exist" 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..." + ) + conn.flushall() + else: + raise e def recreate(self, dataset: Dataset, collection_params): self.clean() diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index bee9ce25..8d6086fd 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -1,3 +1,4 @@ +import time from typing import List, Optional import numpy as np @@ -66,4 +67,27 @@ def upload_batch( @classmethod def post_upload(cls, _distance): + 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 {} From 0f3e5767ce71fc430a8fd31821c512913d6483f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Wed, 3 Apr 2024 13:18:22 +0200 Subject: [PATCH 089/204] Add laion-img-emb-768-1G-cosine to datasets --- datasets/datasets.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/datasets/datasets.json b/datasets/datasets.json index 9237803e..752bd4c3 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -95,6 +95,14 @@ "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": "gist-960-angular", "vector_size": 960, From 77b4ca02fa567ccc9adc95376d92d454886571f3 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 9 Apr 2024 16:13:55 +0100 Subject: [PATCH 090/204] Extracting memory info from redis compatible DBs --- engine/base_client/upload.py | 6 ++++++ engine/clients/redis/upload.py | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/engine/base_client/upload.py b/engine/base_client/upload.py index b6a59bd4..2bda5479 100644 --- a/engine/base_client/upload.py +++ b/engine/base_client/upload.py @@ -73,6 +73,7 @@ def upload( print(f"Total import time: {total_time}") + memory_usage = self.get_memory_usage() self.delete_client() return { @@ -82,6 +83,7 @@ def upload( "latencies": latencies, "parallel": parallel, "batch_size": batch_size, + "memory_usage": memory_usage, } @classmethod @@ -97,6 +99,10 @@ def _upload_batch( def post_upload(cls, distance): return {} + @classmethod + def get_memory_usage(cls): + return {} + @classmethod def upload_batch( cls, ids: List[int], vectors: List[list], metadata: List[Optional[dict]] diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 8d6086fd..21a2feb1 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -15,6 +15,7 @@ class RedisUploader(BaseUploader): client = None + client_decode = None upload_params = {} @classmethod @@ -23,6 +24,13 @@ 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.client_decode = redis_constructor( + host=host, + port=REDIS_PORT, + password=REDIS_AUTH, + username=REDIS_USER, + decode_responses=True, + ) cls.upload_params = upload_params @classmethod @@ -91,3 +99,8 @@ def post_upload(cls, _distance): time.sleep(1) current_lag = int(cls.client.ft().info()["current_lag"]) return {} + + def get_memory_usage(cls): + used_memory = cls.client_decode.info("memory")["used_memory"] + index_info = cls.client_decode.ft().info() + return {"used_memory": used_memory, "index_info": index_info} From e31c73c98c589109a4fab3d6316c191d6f76f763 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 11 Apr 2024 18:16:44 +0100 Subject: [PATCH 091/204] Included simple plot script --- .gitignore | 2 + chart.py | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 chart.py diff --git a/.gitignore b/.gitignore index e21c3643..9c694280 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ NOTES.md results/* tools/custom/data.json + +*.png diff --git a/chart.py b/chart.py new file mode 100644 index 00000000..c2346147 --- /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) From 1879049aec284d7e750aaec1365712d950a98585 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 19 Apr 2024 13:26:45 +0100 Subject: [PATCH 092/204] Allowing to specify ALGO --- engine/clients/redis/config.py | 1 + engine/clients/redis/configure.py | 8 ++++++-- engine/clients/redis/upload.py | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index c310ac40..afc3ab37 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -5,6 +5,7 @@ REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) +REDIS_ALGORITHM = os.getenv("REDIS_ALGORITHM", "HNSW") # 60 seconds timeout REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 60 * 1000)) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 0ae019fd..c5ce2058 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -16,6 +16,7 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, + REDIS_ALGORITHM, ) @@ -88,15 +89,18 @@ def recreate(self, dataset: Dataset, collection_params): for field_name, field_type in dataset.config.schema.items() if field_type == "keyword" ] + algorithm_config = {} + if REDIS_ALGORITHM == "HNSW": + algorithm_config = self.collection_params.get("hnsw_config", {}) index_fields = [ VectorField( name="vector", - algorithm="HNSW", + algorithm=REDIS_ALGORITHM, attributes={ "TYPE": "FLOAT32", "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/upload.py b/engine/clients/redis/upload.py index 21a2feb1..c6510a40 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -9,6 +9,7 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, + REDIS_ALGORITHM, ) from engine.clients.redis.helper import convert_to_redis_coords @@ -75,6 +76,9 @@ def upload_batch( @classmethod def post_upload(cls, _distance): + if REDIS_ALGORITHM != "HNSW" and REDIS_ALGORITHM != "FLAT": + print(f"TODO: FIXME!! Avoiding calling ft.info for {REDIS_ALGORITHM}...") + return {} index_info = cls.client.ft().info() # redisearch / memorystore for redis if "percent_index" in index_info: From 8cbc9d46b0bcc079604beb02b47bb12e245e73b7 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 19 Apr 2024 16:00:23 +0100 Subject: [PATCH 093/204] avoiding call to ft.info on IVF indices --- engine/clients/redis/upload.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index c6510a40..dd28050c 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -106,5 +106,9 @@ def post_upload(cls, _distance): def get_memory_usage(cls): used_memory = cls.client_decode.info("memory")["used_memory"] - index_info = cls.client_decode.ft().info() + index_info = {} + if REDIS_ALGORITHM != "HNSW" and REDIS_ALGORITHM != "FLAT": + print(f"TODO: FIXME!! Avoiding calling ft.info for {REDIS_ALGORITHM}...") + else: + index_info = cls.client_decode.ft().info() return {"used_memory": used_memory, "index_info": index_info} From f628e322a0bbb3799a767be61149064fcff19cef Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 26 Apr 2024 00:44:25 +0100 Subject: [PATCH 094/204] Adjusted search parameters for non-hnsw queries --- engine/clients/redis/search.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index b197277a..ebf2a06e 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -11,7 +11,9 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, + REDIS_ALGORITHM, ) + from engine.clients.redis.parser import RedisConditionParser @@ -27,7 +29,9 @@ 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.knn_conditions = "" + if REDIS_ALGORITHM == "HNSW": + cls.knn_conditions = "EF_RUNTIME $EF" 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 From da9e9263248ff2077a8e07b98608865fba665b14 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 2 May 2024 13:42:26 +0100 Subject: [PATCH 095/204] adjusting search parameters for non-hnsw runs --- engine/clients/redis/search.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index ebf2a06e..baad81df 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -67,9 +67,10 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: params_dict = { "vec_param": np.array(vector).astype(np.float32).tobytes(), "K": top, - "EF": cls.search_params["search_params"]["ef"], **params, } + if REDIS_ALGORITHM == "HNSW": + params_dict["EF"] = cls.search_params["search_params"]["ef"] results = cls._ft.search(q, query_params=params_dict) return [(int(result.id), float(result.vector_score)) for result in results.docs] From bdd305ca7ee17382af36fbf99c404742619dcbc7 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 6 May 2024 16:35:40 +0100 Subject: [PATCH 096/204] included ivf experiments --- .../redis-hnsw-single-node.json | 86 +++++++++++++++++++ .../redis-ivf_flat-single-node.json | 72 ++++++++++++++++ .../redis-ivf_pq-single-node.json | 72 ++++++++++++++++ 3 files changed, 230 insertions(+) create mode 100644 experiments/configurations/redis-hnsw-single-node.json create mode 100644 experiments/configurations/redis-ivf_flat-single-node.json create mode 100644 experiments/configurations/redis-ivf_pq-single-node.json diff --git a/experiments/configurations/redis-hnsw-single-node.json b/experiments/configurations/redis-hnsw-single-node.json new file mode 100644 index 00000000..77dbd6c2 --- /dev/null +++ b/experiments/configurations/redis-hnsw-single-node.json @@ -0,0 +1,86 @@ +[ + { + "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-ivf_flat-single-node.json b/experiments/configurations/redis-ivf_flat-single-node.json new file mode 100644 index 00000000..3333fba3 --- /dev/null +++ b/experiments/configurations/redis-ivf_flat-single-node.json @@ -0,0 +1,72 @@ +[ + { + "name": "redis-ivf_flat-n_lists-64", + "engine": "redis", + "algorithm": "ivf_flat", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 64 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_flat-n_lists-128", + "engine": "redis", + "algorithm": "ivf_flat", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_flat-n_lists-256", + "engine": "redis", + "algorithm": "ivf_flat", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 256 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_flat-n_lists-512", + "engine": "redis", + "algorithm": "ivf_flat", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 512 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_flat-n_lists-1024", + "engine": "redis", + "algorithm": "ivf_flat", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 1024 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + } +] diff --git a/experiments/configurations/redis-ivf_pq-single-node.json b/experiments/configurations/redis-ivf_pq-single-node.json new file mode 100644 index 00000000..9812e824 --- /dev/null +++ b/experiments/configurations/redis-ivf_pq-single-node.json @@ -0,0 +1,72 @@ +[ + { + "name": "redis-ivf_pq-n_lists-64", + "engine": "redis", + "algorithm": "ivf_pq", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 64 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_pq-n_lists-128", + "engine": "redis", + "algorithm": "ivf_pq", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 128 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_pq-n_lists-256", + "engine": "redis", + "algorithm": "ivf_pq", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 256 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_pq-n_lists-512", + "engine": "redis", + "algorithm": "ivf_pq", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 512 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + }, + { + "name": "redis-ivf_pq-n_lists-1024", + "engine": "redis", + "algorithm": "ivf_pq", + "connection_params": {}, + "collection_params": { + "ivf_config": { "N_LISTS": 1024 } + }, + "search_params": [ + { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, + { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + ], + "upload_params": { "parallel": 16 } + } +] From fd76a9b2cb1bf511647ac1f8a7b552ab762ae783 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 8 May 2024 14:40:24 +0100 Subject: [PATCH 097/204] Added specific experiment configurations for IVF and IVF-PQ --- engine/clients/redis/config.py | 1 - engine/clients/redis/configure.py | 8 +- engine/clients/redis/search.py | 6 +- engine/clients/redis/upload.py | 10 +- experiments/configurations/create-ivf.py | 39 + .../redis-ivf_flat-single-node.json | 892 +++++++++++++++++- .../redis-ivf_pq-single-node.json | 892 +++++++++++++++++- 7 files changed, 1774 insertions(+), 74 deletions(-) create mode 100644 experiments/configurations/create-ivf.py diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index afc3ab37..c310ac40 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -5,7 +5,6 @@ REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) -REDIS_ALGORITHM = os.getenv("REDIS_ALGORITHM", "HNSW") # 60 seconds timeout REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 60 * 1000)) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index c5ce2058..e4e6d5d3 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -90,12 +90,14 @@ def recreate(self, dataset: Dataset, collection_params): if field_type == "keyword" ] algorithm_config = {} - if REDIS_ALGORITHM == "HNSW": - algorithm_config = self.collection_params.get("hnsw_config", {}) + # by default we use hnsw + algo = collection_params.get("algorithm", "hnsw") + algorithm_config = collection_params.get(f"{algo}_config", {}) + print(f"Using algorithm {algo} with config {algorithm_config}") index_fields = [ VectorField( name="vector", - algorithm=REDIS_ALGORITHM, + algorithm=algo, attributes={ "TYPE": "FLOAT32", "DIM": dataset.config.vector_size, diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index baad81df..9629a078 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -11,7 +11,6 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, - REDIS_ALGORITHM, ) from engine.clients.redis.parser import RedisConditionParser @@ -30,7 +29,8 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic ) cls.search_params = search_params cls.knn_conditions = "" - if REDIS_ALGORITHM == "HNSW": + cls.algorithm = cls.search_params.get("algorithm", "hnsw").upper() + if cls.algorithm == "HNSW": cls.knn_conditions = "EF_RUNTIME $EF" cls._is_cluster = True if REDIS_CLUSTER else False # In the case of CLUSTER API enabled we randomly select the starting primary shard @@ -69,7 +69,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: "K": top, **params, } - if REDIS_ALGORITHM == "HNSW": + if cls.algorithm == "HNSW": params_dict["EF"] = cls.search_params["search_params"]["ef"] results = cls._ft.search(q, query_params=params_dict) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index dd28050c..2a58c3d2 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -9,7 +9,6 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, - REDIS_ALGORITHM, ) from engine.clients.redis.helper import convert_to_redis_coords @@ -33,6 +32,7 @@ def init_client(cls, host, distance, connection_params, upload_params): decode_responses=True, ) cls.upload_params = upload_params + cls.algorithm = cls.upload_params.get("algorithm", "hnsw").upper() @classmethod def upload_batch( @@ -76,8 +76,8 @@ def upload_batch( @classmethod def post_upload(cls, _distance): - if REDIS_ALGORITHM != "HNSW" and REDIS_ALGORITHM != "FLAT": - print(f"TODO: FIXME!! Avoiding calling ft.info for {REDIS_ALGORITHM}...") + 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 @@ -107,8 +107,8 @@ def post_upload(cls, _distance): def get_memory_usage(cls): used_memory = cls.client_decode.info("memory")["used_memory"] index_info = {} - if REDIS_ALGORITHM != "HNSW" and REDIS_ALGORITHM != "FLAT": - print(f"TODO: FIXME!! Avoiding calling ft.info for {REDIS_ALGORITHM}...") + 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() return {"used_memory": used_memory, "index_info": index_info} diff --git a/experiments/configurations/create-ivf.py b/experiments/configurations/create-ivf.py new file mode 100644 index 00000000..43a4bb22 --- /dev/null +++ b/experiments/configurations/create-ivf.py @@ -0,0 +1,39 @@ +import json + +n_lists = [256, 512, 1024, 1536, 2048] +n_probes = [16, 20, 32, 64, 128, 256] + + +for algo in ["ivf_pq", "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, + "search_params": { + "algorithm": algo, + }, + }, + { + "parallel": 100, + "search_params": { + "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/redis-ivf_flat-single-node.json b/experiments/configurations/redis-ivf_flat-single-node.json index 3333fba3..d4e3a5e0 100644 --- a/experiments/configurations/redis-ivf_flat-single-node.json +++ b/experiments/configurations/redis-ivf_flat-single-node.json @@ -1,72 +1,902 @@ [ { - "name": "redis-ivf_flat-n_lists-64", + "name": "redis-ivf_flat-n_lists-256-n_probes-16", "engine": "redis", - "algorithm": "ivf_flat", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 64 } + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 16 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } }, { - "name": "redis-ivf_flat-n_lists-128", + "name": "redis-ivf_flat-n_lists-256-n_probes-20", "engine": "redis", - "algorithm": "ivf_flat", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 128 } + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 20 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } }, { - "name": "redis-ivf_flat-n_lists-256", + "name": "redis-ivf_flat-n_lists-256-n_probes-32", "engine": "redis", - "algorithm": "ivf_flat", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 256 } + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 32 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } }, { - "name": "redis-ivf_flat-n_lists-512", + "name": "redis-ivf_flat-n_lists-256-n_probes-64", "engine": "redis", - "algorithm": "ivf_flat", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 512 } + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 64 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } }, { - "name": "redis-ivf_flat-n_lists-1024", + "name": "redis-ivf_flat-n_lists-256-n_probes-128", "engine": "redis", - "algorithm": "ivf_flat", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 1024 } + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 128 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-256-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 256, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-512-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-512-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-512-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-512-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-512-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-512-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 512, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1024-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1024-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1024-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1024-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1024-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1024-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1024, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1536-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1536-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1536-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1536-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1536-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-1536-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 1536, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-2048-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-2048-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-2048-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-2048-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-2048-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } + }, + { + "name": "redis-ivf_flat-n_lists-2048-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_flat", + "ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_flat" + } } -] +] \ No newline at end of file diff --git a/experiments/configurations/redis-ivf_pq-single-node.json b/experiments/configurations/redis-ivf_pq-single-node.json index 9812e824..818d7eb9 100644 --- a/experiments/configurations/redis-ivf_pq-single-node.json +++ b/experiments/configurations/redis-ivf_pq-single-node.json @@ -1,72 +1,902 @@ [ { - "name": "redis-ivf_pq-n_lists-64", + "name": "redis-ivf_pq-n_lists-256-n_probes-16", "engine": "redis", - "algorithm": "ivf_pq", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 64 } + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 16 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } }, { - "name": "redis-ivf_pq-n_lists-128", + "name": "redis-ivf_pq-n_lists-256-n_probes-20", "engine": "redis", - "algorithm": "ivf_pq", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 128 } + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 20 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } }, { - "name": "redis-ivf_pq-n_lists-256", + "name": "redis-ivf_pq-n_lists-256-n_probes-32", "engine": "redis", - "algorithm": "ivf_pq", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 256 } + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 32 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } }, { - "name": "redis-ivf_pq-n_lists-512", + "name": "redis-ivf_pq-n_lists-256-n_probes-64", "engine": "redis", - "algorithm": "ivf_pq", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 512 } + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 64 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } }, { - "name": "redis-ivf_pq-n_lists-1024", + "name": "redis-ivf_pq-n_lists-256-n_probes-128", "engine": "redis", - "algorithm": "ivf_pq", "connection_params": {}, "collection_params": { - "ivf_config": { "N_LISTS": 1024 } + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 128 + } }, "search_params": [ - { "parallel": 1, "search_params": { "n_probes": 32 } }, { "parallel": 1, "search_params": { "n_probes": 64 } }, { "parallel": 1, "search_params": { "n_probes": 128 } }, { "parallel": 1, "search_params": { "n_probes": 256 } }, { "parallel": 1, "search_params": { "n_probes": 512 } }, - { "parallel": 100, "search_params": { "n_probes": 32 } }, { "parallel": 100, "search_params": { "n_probes": 64 } }, { "parallel": 100, "search_params": { "n_probes": 128 } }, { "parallel": 100, "search_params": { "n_probes": 256 } }, { "parallel": 100, "search_params": { "n_probes": 512 } } + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } ], - "upload_params": { "parallel": 16 } + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-256-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 256, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-512-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-512-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-512-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-512-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-512-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-512-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 512, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1024-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1024-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1024-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1024-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1024-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1024-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1024, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1536-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1536-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1536-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1536-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1536-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-1536-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 1536, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-2048-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-2048-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-2048-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-2048-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-2048-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } + }, + { + "name": "redis-ivf_pq-n_lists-2048-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "ivf_pq", + "ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "ivf_pq" + } } -] +] \ No newline at end of file From a8a9a480dfd28b6e676c301bd236e1d0d24c5891 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 8 May 2024 14:55:33 +0100 Subject: [PATCH 098/204] Added specific experiment configurations for IVF and IVF-PQ --- engine/clients/redis/configure.py | 1 - 1 file changed, 1 deletion(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index e4e6d5d3..aeb03dbc 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -16,7 +16,6 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, - REDIS_ALGORITHM, ) From 9fa1f37bdc35368bd7535ba38c7b542ff09c770c Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 8 May 2024 14:58:05 +0100 Subject: [PATCH 099/204] Added specific experiment configurations for IVF and IVF-PQ --- experiments/configurations/create-ivf.py | 2 +- .../redis-raft_ivf_flat-single-node.json | 902 ++++++++++++++++++ .../redis-raft_ivf_pq-single-node.json | 902 ++++++++++++++++++ 3 files changed, 1805 insertions(+), 1 deletion(-) create mode 100644 experiments/configurations/redis-raft_ivf_flat-single-node.json create mode 100644 experiments/configurations/redis-raft_ivf_pq-single-node.json diff --git a/experiments/configurations/create-ivf.py b/experiments/configurations/create-ivf.py index 43a4bb22..1c891057 100644 --- a/experiments/configurations/create-ivf.py +++ b/experiments/configurations/create-ivf.py @@ -4,7 +4,7 @@ n_probes = [16, 20, 32, 64, 128, 256] -for algo in ["ivf_pq", "ivf_flat"]: +for algo in ["raft_ivf_pq", "raft_ivf_flat"]: configs = [] for lists in n_lists: for probes in n_probes: 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 00000000..a5075a89 --- /dev/null +++ b/experiments/configurations/redis-raft_ivf_flat-single-node.json @@ -0,0 +1,902 @@ +[ + { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-2048-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-2048-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-2048-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-2048-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-2048-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_flat" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_flat" + } + }, + { + "name": "redis-raft_ivf_flat-n_lists-2048-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_flat", + "raft_ivf_flat_config": { + "N_LISTS": 2048, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_flat" + } + }, + { + "parallel": 100, + "search_params": { + "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 00000000..1c5077d8 --- /dev/null +++ b/experiments/configurations/redis-raft_ivf_pq-single-node.json @@ -0,0 +1,902 @@ +[ + { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "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, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-2048-n_probes-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 16 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-2048-n_probes-20", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 20 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-2048-n_probes-32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 32 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-2048-n_probes-64", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 64 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-2048-n_probes-128", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 128 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + }, + { + "name": "redis-raft_ivf_pq-n_lists-2048-n_probes-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "raft_ivf_pq", + "raft_ivf_pq_config": { + "N_LISTS": 2048, + "N_PROBES": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "algorithm": "raft_ivf_pq" + } + }, + { + "parallel": 100, + "search_params": { + "algorithm": "raft_ivf_pq" + } + } + ], + "upload_params": { + "parallel": 16, + "algorithm": "raft_ivf_pq" + } + } +] \ No newline at end of file From b3a0f4e24b5590fa703a1db53930a8b72ac36349 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 8 May 2024 14:59:43 +0100 Subject: [PATCH 100/204] Added specific experiment configurations for IVF and IVF-PQ --- .../redis-ivf_flat-single-node.json | 902 ------------------ .../redis-ivf_pq-single-node.json | 902 ------------------ 2 files changed, 1804 deletions(-) delete mode 100644 experiments/configurations/redis-ivf_flat-single-node.json delete mode 100644 experiments/configurations/redis-ivf_pq-single-node.json diff --git a/experiments/configurations/redis-ivf_flat-single-node.json b/experiments/configurations/redis-ivf_flat-single-node.json deleted file mode 100644 index d4e3a5e0..00000000 --- a/experiments/configurations/redis-ivf_flat-single-node.json +++ /dev/null @@ -1,902 +0,0 @@ -[ - { - "name": "redis-ivf_flat-n_lists-256-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 256, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-256-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 256, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-256-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 256, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-256-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 256, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-256-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 256, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-256-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 256, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-512-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 512, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-512-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 512, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-512-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 512, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-512-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 512, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-512-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 512, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-512-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 512, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1024-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1024, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1024-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1024, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1024-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1024, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1024-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1024, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1024-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1024, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1024-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1024, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1536-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1536, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1536-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1536, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1536-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1536, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1536-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1536, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1536-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1536, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-1536-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 1536, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-2048-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 2048, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-2048-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 2048, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-2048-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 2048, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-2048-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 2048, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-2048-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 2048, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - }, - { - "name": "redis-ivf_flat-n_lists-2048-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_flat", - "ivf_flat_config": { - "N_LISTS": 2048, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_flat" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_flat" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_flat" - } - } -] \ No newline at end of file diff --git a/experiments/configurations/redis-ivf_pq-single-node.json b/experiments/configurations/redis-ivf_pq-single-node.json deleted file mode 100644 index 818d7eb9..00000000 --- a/experiments/configurations/redis-ivf_pq-single-node.json +++ /dev/null @@ -1,902 +0,0 @@ -[ - { - "name": "redis-ivf_pq-n_lists-256-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 256, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-256-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 256, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-256-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 256, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-256-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 256, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-256-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 256, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-256-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 256, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-512-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 512, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-512-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 512, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-512-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 512, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-512-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 512, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-512-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 512, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-512-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 512, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1024-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1024, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1024-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1024, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1024-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1024, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1024-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1024, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1024-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1024, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1024-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1024, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1536-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1536, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1536-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1536, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1536-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1536, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1536-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1536, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1536-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1536, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-1536-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 1536, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-2048-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 2048, - "N_PROBES": 16 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-2048-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 2048, - "N_PROBES": 20 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-2048-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 2048, - "N_PROBES": 32 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-2048-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 2048, - "N_PROBES": 64 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-2048-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 2048, - "N_PROBES": 128 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - }, - { - "name": "redis-ivf_pq-n_lists-2048-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "ivf_pq", - "ivf_pq_config": { - "N_LISTS": 2048, - "N_PROBES": 256 - } - }, - "search_params": [ - { - "parallel": 1, - "search_params": { - "algorithm": "ivf_pq" - } - }, - { - "parallel": 100, - "search_params": { - "algorithm": "ivf_pq" - } - } - ], - "upload_params": { - "parallel": 16, - "algorithm": "ivf_pq" - } - } -] \ No newline at end of file From 8c222d9559a0b0633e3c0c13622011bcec062508 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 8 May 2024 18:38:05 +0100 Subject: [PATCH 101/204] Fixed location of algorithm in search_params --- experiments/configurations/create-ivf.py | 10 +- .../redis-raft_ivf_flat-single-node.json | 240 +++++------------- .../redis-raft_ivf_pq-single-node.json | 240 +++++------------- 3 files changed, 123 insertions(+), 367 deletions(-) diff --git a/experiments/configurations/create-ivf.py b/experiments/configurations/create-ivf.py index 1c891057..d951ddf7 100644 --- a/experiments/configurations/create-ivf.py +++ b/experiments/configurations/create-ivf.py @@ -19,18 +19,14 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": algo, - }, + "algorithm": algo, }, { "parallel": 100, - "search_params": { - "algorithm": algo, - }, + "algorithm": algo, }, ], - "upload_params": {"parallel": 16, "algorithm": algo}, + "upload_params": {"parallel": 16, "algorithm": algo}, } configs.append(config) fname = f"redis-{algo}-single-node.json" diff --git a/experiments/configurations/redis-raft_ivf_flat-single-node.json b/experiments/configurations/redis-raft_ivf_flat-single-node.json index a5075a89..60c9dd8b 100644 --- a/experiments/configurations/redis-raft_ivf_flat-single-node.json +++ b/experiments/configurations/redis-raft_ivf_flat-single-node.json @@ -13,15 +13,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -43,15 +39,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -73,15 +65,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -103,15 +91,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -133,15 +117,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -163,15 +143,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -193,15 +169,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -223,15 +195,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -253,15 +221,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -283,15 +247,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -313,15 +273,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -343,15 +299,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -373,15 +325,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -403,15 +351,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -433,15 +377,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -463,15 +403,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -493,15 +429,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -523,15 +455,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -553,15 +481,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -583,15 +507,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -613,15 +533,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -643,15 +559,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -673,15 +585,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -703,15 +611,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -733,15 +637,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -763,15 +663,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -793,15 +689,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -823,15 +715,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -853,15 +741,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { @@ -883,15 +767,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_flat" - } + "algorithm": "raft_ivf_flat" } ], "upload_params": { diff --git a/experiments/configurations/redis-raft_ivf_pq-single-node.json b/experiments/configurations/redis-raft_ivf_pq-single-node.json index 1c5077d8..03c9f7c8 100644 --- a/experiments/configurations/redis-raft_ivf_pq-single-node.json +++ b/experiments/configurations/redis-raft_ivf_pq-single-node.json @@ -13,15 +13,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -43,15 +39,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -73,15 +65,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -103,15 +91,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -133,15 +117,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -163,15 +143,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -193,15 +169,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -223,15 +195,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -253,15 +221,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -283,15 +247,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -313,15 +273,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -343,15 +299,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -373,15 +325,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -403,15 +351,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -433,15 +377,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -463,15 +403,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -493,15 +429,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -523,15 +455,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -553,15 +481,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -583,15 +507,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -613,15 +533,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -643,15 +559,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -673,15 +585,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -703,15 +611,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -733,15 +637,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -763,15 +663,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -793,15 +689,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -823,15 +715,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -853,15 +741,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { @@ -883,15 +767,11 @@ "search_params": [ { "parallel": 1, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" }, { "parallel": 100, - "search_params": { - "algorithm": "raft_ivf_pq" - } + "algorithm": "raft_ivf_pq" } ], "upload_params": { From 313b5c0d0fb8b137e5eae2a5076e5138453d02b3 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 9 May 2024 10:25:14 +0100 Subject: [PATCH 102/204] Fixed IVF experiment creation script --- experiments/configurations/create-ivf.py | 2 +- .../redis-raft_ivf_flat-single-node.json | 156 ------------------ .../redis-raft_ivf_pq-single-node.json | 156 ------------------ 3 files changed, 1 insertion(+), 313 deletions(-) diff --git a/experiments/configurations/create-ivf.py b/experiments/configurations/create-ivf.py index d951ddf7..1b945e01 100644 --- a/experiments/configurations/create-ivf.py +++ b/experiments/configurations/create-ivf.py @@ -1,6 +1,6 @@ import json -n_lists = [256, 512, 1024, 1536, 2048] +n_lists = [256, 512, 1024, 1536] n_probes = [16, 20, 32, 64, 128, 256] diff --git a/experiments/configurations/redis-raft_ivf_flat-single-node.json b/experiments/configurations/redis-raft_ivf_flat-single-node.json index 60c9dd8b..ca05c042 100644 --- a/experiments/configurations/redis-raft_ivf_flat-single-node.json +++ b/experiments/configurations/redis-raft_ivf_flat-single-node.json @@ -622,161 +622,5 @@ "parallel": 16, "algorithm": "raft_ivf_flat" } - }, - { - "name": "redis-raft_ivf_flat-n_lists-2048-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_flat", - "raft_ivf_flat_config": { - "N_LISTS": 2048, - "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-2048-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_flat", - "raft_ivf_flat_config": { - "N_LISTS": 2048, - "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-2048-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_flat", - "raft_ivf_flat_config": { - "N_LISTS": 2048, - "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-2048-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_flat", - "raft_ivf_flat_config": { - "N_LISTS": 2048, - "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-2048-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_flat", - "raft_ivf_flat_config": { - "N_LISTS": 2048, - "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-2048-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_flat", - "raft_ivf_flat_config": { - "N_LISTS": 2048, - "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 index 03c9f7c8..099063db 100644 --- a/experiments/configurations/redis-raft_ivf_pq-single-node.json +++ b/experiments/configurations/redis-raft_ivf_pq-single-node.json @@ -622,161 +622,5 @@ "parallel": 16, "algorithm": "raft_ivf_pq" } - }, - { - "name": "redis-raft_ivf_pq-n_lists-2048-n_probes-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_pq", - "raft_ivf_pq_config": { - "N_LISTS": 2048, - "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-2048-n_probes-20", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_pq", - "raft_ivf_pq_config": { - "N_LISTS": 2048, - "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-2048-n_probes-32", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_pq", - "raft_ivf_pq_config": { - "N_LISTS": 2048, - "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-2048-n_probes-64", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_pq", - "raft_ivf_pq_config": { - "N_LISTS": 2048, - "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-2048-n_probes-128", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_pq", - "raft_ivf_pq_config": { - "N_LISTS": 2048, - "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-2048-n_probes-256", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "raft_ivf_pq", - "raft_ivf_pq_config": { - "N_LISTS": 2048, - "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 From 5ed2110c865940a8a638912d5d89e034c5297a5f Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 9 May 2024 12:20:57 +0100 Subject: [PATCH 103/204] Added the ability to query GPU status on redis client (included wrapper for gpustat as well) --- engine/clients/redis/config.py | 3 +++ engine/clients/redis/upload.py | 27 +++++++++++++++++++++- monitoring/gpu_wrapper.py | 41 ++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 monitoring/gpu_wrapper.py diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index c310ac40..a953deb0 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -5,6 +5,9 @@ REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) +GPU_STATS = bool(int(os.getenv("GPU_STATS", 0))) +GPU_STATS_ENDPOINT = os.getenv("GPU_STATS_ENDPOINT", None) + # 60 seconds timeout REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 60 * 1000)) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 2a58c3d2..7bc89f05 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -1,5 +1,7 @@ import time from typing import List, Optional +import requests +import json import numpy as np from redis import Redis, RedisCluster @@ -9,12 +11,15 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, + GPU_STATS, + GPU_STATS_ENDPOINT, ) from engine.clients.redis.helper import convert_to_redis_coords class RedisUploader(BaseUploader): client = None + host = None client_decode = None upload_params = {} @@ -24,6 +29,7 @@ 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, @@ -107,8 +113,27 @@ def post_upload(cls, _distance): def get_memory_usage(cls): used_memory = cls.client_decode.info("memory")["used_memory"] 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() - return {"used_memory": used_memory, "index_info": index_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/monitoring/gpu_wrapper.py b/monitoring/gpu_wrapper.py new file mode 100644 index 00000000..347ac3b0 --- /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() From 83210a2b01eed8000db9076fb0d8638af288edd6 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 16 May 2024 01:08:01 +0100 Subject: [PATCH 104/204] opensearch improvements --- engine/clients/opensearch/config.py | 38 +++++++++++++++++++++++--- engine/clients/opensearch/configure.py | 23 ++++------------ engine/clients/opensearch/search.py | 18 ++---------- engine/clients/opensearch/upload.py | 18 ++---------- 4 files changed, 43 insertions(+), 54 deletions(-) diff --git a/engine/clients/opensearch/config.py b/engine/clients/opensearch/config.py index 57001884..85dc8fea 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" +from opensearchpy import NotFoundError, OpenSearch +import os + + +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 bd550917..d4541e1b 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 8f388380..1536bb41 100644 --- a/engine/clients/opensearch/search.py +++ b/engine/clients/opensearch/search.py @@ -7,9 +7,7 @@ from engine.base_client.search import BaseSearcher from engine.clients.opensearch.config import ( OPENSEARCH_INDEX, - OPENSEARCH_PASSWORD, - OPENSEARCH_PORT, - OPENSEARCH_USER, + get_opensearch_client, ) from engine.clients.opensearch.parser import OpenSearchConditionParser @@ -30,19 +28,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 46a7151d..d03652a5 100644 --- a/engine/clients/opensearch/upload.py +++ b/engine/clients/opensearch/upload.py @@ -7,9 +7,7 @@ from engine.base_client.upload import BaseUploader from engine.clients.opensearch.config import ( OPENSEARCH_INDEX, - OPENSEARCH_PASSWORD, - OPENSEARCH_PORT, - OPENSEARCH_USER, + get_opensearch_client, ) @@ -28,19 +26,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 From b7a2c30c2c66764bdb6c68de434b2fca94f91e70 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 16 May 2024 01:28:11 +0100 Subject: [PATCH 105/204] Fixes per PR linter --- engine/clients/opensearch/config.py | 2 +- engine/clients/opensearch/search.py | 5 +---- engine/clients/opensearch/upload.py | 5 +---- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/engine/clients/opensearch/config.py b/engine/clients/opensearch/config.py index 85dc8fea..85af5959 100644 --- a/engine/clients/opensearch/config.py +++ b/engine/clients/opensearch/config.py @@ -1,6 +1,6 @@ -from opensearchpy import NotFoundError, OpenSearch import os +from opensearchpy import OpenSearch OPENSEARCH_PORT = int(os.getenv("OPENSEARCH_PORT", 9200)) OPENSEARCH_INDEX = os.getenv("OPENSEARCH_INDEX", "bench") diff --git a/engine/clients/opensearch/search.py b/engine/clients/opensearch/search.py index 1536bb41..0a46c5b0 100644 --- a/engine/clients/opensearch/search.py +++ b/engine/clients/opensearch/search.py @@ -5,10 +5,7 @@ from opensearchpy import OpenSearch from engine.base_client.search import BaseSearcher -from engine.clients.opensearch.config import ( - OPENSEARCH_INDEX, - get_opensearch_client, -) +from engine.clients.opensearch.config import OPENSEARCH_INDEX, get_opensearch_client from engine.clients.opensearch.parser import OpenSearchConditionParser diff --git a/engine/clients/opensearch/upload.py b/engine/clients/opensearch/upload.py index d03652a5..590242cc 100644 --- a/engine/clients/opensearch/upload.py +++ b/engine/clients/opensearch/upload.py @@ -5,10 +5,7 @@ from opensearchpy import OpenSearch from engine.base_client.upload import BaseUploader -from engine.clients.opensearch.config import ( - OPENSEARCH_INDEX, - get_opensearch_client, -) +from engine.clients.opensearch.config import OPENSEARCH_INDEX, get_opensearch_client class ClosableOpenSearch(OpenSearch): From 26b5f8cdd61c05556bd94c718b725bdc0d83a539 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 28 May 2024 18:19:23 +0100 Subject: [PATCH 106/204] Added redis-intel-hnsw* config --- experiments/configurations/create-intel.py | 33 + .../redis-intel-hnsw-single-node.json | 2756 +++++++++++++++++ 2 files changed, 2789 insertions(+) create mode 100644 experiments/configurations/create-intel.py create mode 100644 experiments/configurations/redis-intel-hnsw-single-node.json diff --git a/experiments/configurations/create-intel.py b/experiments/configurations/create-intel.py new file mode 100644 index 00000000..f6357203 --- /dev/null +++ b/experiments/configurations/create-intel.py @@ -0,0 +1,33 @@ +import json + +ms = [16, 64, 256] +ef_constructs = [16, 512, 1024] +ef_runtimes = [16, 32, 64, 128, 256, 512, 1024, 2048] + +for algo in ["hnsw"]: + configs = [] + for m in ms: + for ef_construct in ef_constructs: + config = { + "name": f"redis-intel-{algo}-m-{m}-ef-{ef_construct}", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": algo, + f"{algo}_config": {"M": m, "EF_CONSTRUCTION": ef_construct}, + }, + "search_params": [], + "upload_params": {"parallel": 128, "algorithm": algo}, + } + for client in [100, 200, 400, 800, 1600, 3200]: + for ef_runtime in ef_runtimes: + test_config = { + "parallel": client, + "search_params": {"ef": ef_runtime}, + } + 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/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json new file mode 100644 index 00000000..70319cb2 --- /dev/null +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -0,0 +1,2756 @@ +[ + { + "name": "redis-intel-hnsw-m-16-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-16-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-16-ef-1024", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 16, + "EF_CONSTRUCTION": 1024 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-64-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-64-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-64-ef-1024", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 1024 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-256-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 256, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-256-ef-512", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 256, + "EF_CONSTRUCTION": 512 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + }, + { + "name": "redis-intel-hnsw-m-256-ef-1024", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "hnsw_config": { + "M": 256, + "EF_CONSTRUCTION": 1024 + } + }, + "search_params": [ + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 400, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 800, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 1600, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 3200, + "search_params": { + "ef": 2048 + } + } + ], + "upload_params": { + "parallel": 128, + "algorithm": "hnsw" + } + } +] \ No newline at end of file From ec516a0668240ed027accc467d58eaf3814ddcf5 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 7 Jun 2024 10:31:30 +0100 Subject: [PATCH 107/204] Retrieving cloud usage when possible from qdrant --- engine/clients/qdrant/config.py | 22 ++++++++++++++++++++++ engine/clients/qdrant/configure.py | 2 +- engine/clients/qdrant/search.py | 2 +- engine/clients/qdrant/upload.py | 27 +++++++++++++++++++++++++-- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/engine/clients/qdrant/config.py b/engine/clients/qdrant/config.py index aa5afeeb..c48ff68a 100644 --- a/engine/clients/qdrant/config.py +++ b/engine/clients/qdrant/config.py @@ -1,5 +1,27 @@ import os +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) + + +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 diff --git a/engine/clients/qdrant/configure.py b/engine/clients/qdrant/configure.py index f89ecf65..2db16f40 100644 --- a/engine/clients/qdrant/configure.py +++ b/engine/clients/qdrant/configure.py @@ -5,8 +5,8 @@ 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, + QDRANT_COLLECTION_NAME, QDRANT_URL, ) diff --git a/engine/clients/qdrant/search.py b/engine/clients/qdrant/search.py index f98fd3b3..6ff38e25 100644 --- a/engine/clients/qdrant/search.py +++ b/engine/clients/qdrant/search.py @@ -8,8 +8,8 @@ from engine.base_client.search import BaseSearcher from engine.clients.qdrant.config import ( - QDRANT_COLLECTION_NAME, QDRANT_API_KEY, + QDRANT_COLLECTION_NAME, QDRANT_URL, ) from engine.clients.qdrant.parser import QdrantConditionParser diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index c81d4fa4..c209f050 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -7,9 +7,13 @@ from engine.base_client.upload import BaseUploader from engine.clients.qdrant.config import ( - QDRANT_COLLECTION_NAME, + QDRANT_ACCOUNT_ID, QDRANT_API_KEY, + QDRANT_AUTH_TOKEN, + QDRANT_CLUSTER_ID, + QDRANT_COLLECTION_NAME, QDRANT_URL, + get_qdrant_cloud_usage, ) @@ -30,7 +34,7 @@ def init_client(cls, host, distance, connection_params, upload_params): url=QDRANT_URL, api_key=QDRANT_API_KEY, prefer_grpc=True, - **connection_params + **connection_params, ) cls.upload_params = upload_params @@ -81,3 +85,22 @@ 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 = cls.client.collection_info(QDRANT_COLLECTION_NAME) + 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, + } From f9280951f4a4631ab604f3764a728e71beb0e8a0 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 7 Jun 2024 12:40:10 +0100 Subject: [PATCH 108/204] Fixed qdrant get_collection usage() --- engine/clients/qdrant/upload.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index c209f050..d33fdea9 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -87,7 +87,7 @@ def delete_client(cls): del cls.client def get_memory_usage(cls): - collection_info = cls.client.collection_info(QDRANT_COLLECTION_NAME) + collection_info = cls.client.get_collection(QDRANT_COLLECTION_NAME) used_memory = {} # Extract memory usage information if ( From bce646ff112db25618163971f2f9ccb785021c06 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 7 Jun 2024 14:26:02 +0100 Subject: [PATCH 109/204] Fixed qdrant get_collection usage() --- engine/clients/qdrant/upload.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index d33fdea9..3a874551 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -1,6 +1,7 @@ import os import time from typing import List, Optional +import json from qdrant_client import QdrantClient from qdrant_client.http.models import Batch, CollectionStatus, OptimizersConfigDiff @@ -87,7 +88,9 @@ def delete_client(cls): del cls.client def get_memory_usage(cls): - collection_info = cls.client.get_collection(QDRANT_COLLECTION_NAME) + collection_info = json.loads( + str(cls.client.get_collection(QDRANT_COLLECTION_NAME)) + ) used_memory = {} # Extract memory usage information if ( From 4d5ddfbea8cba4cc2611af0af930f4176b971fbd Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 7 Jun 2024 15:12:07 +0100 Subject: [PATCH 110/204] Fixed qdrant get_collection info() --- engine/clients/qdrant/config.py | 17 +++++++++++++++++ engine/clients/qdrant/upload.py | 7 ++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/engine/clients/qdrant/config.py b/engine/clients/qdrant/config.py index c48ff68a..01fc0466 100644 --- a/engine/clients/qdrant/config.py +++ b/engine/clients/qdrant/config.py @@ -10,6 +10,23 @@ QDRANT_AUTH_TOKEN = os.getenv("QDRANT_AUTH_TOKEN", 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" diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index 3a874551..b20df2b0 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -1,7 +1,7 @@ import os import time from typing import List, Optional -import json +import json from qdrant_client import QdrantClient from qdrant_client.http.models import Batch, CollectionStatus, OptimizersConfigDiff @@ -15,6 +15,7 @@ QDRANT_COLLECTION_NAME, QDRANT_URL, get_qdrant_cloud_usage, + get_collection_info, ) @@ -88,8 +89,8 @@ def delete_client(cls): del cls.client def get_memory_usage(cls): - collection_info = json.loads( - str(cls.client.get_collection(QDRANT_COLLECTION_NAME)) + collection_info = get_collection_info( + QDRANT_URL, QDRANT_COLLECTION_NAME, QDRANT_API_KEY ) used_memory = {} # Extract memory usage information From daac642f70e226591b0b57632c95f757caa8d1d8 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jun 2024 13:19:09 +0100 Subject: [PATCH 111/204] Added timeout parameter to collection_params. Included all combinations for m=[16,32,64] and ef=[128,256,512] --- .../configurations/qdrant-single-node.json | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/experiments/configurations/qdrant-single-node.json b/experiments/configurations/qdrant-single-node.json index b365ef58..f4e1ca47 100644 --- a/experiments/configurations/qdrant-single-node.json +++ b/experiments/configurations/qdrant-single-node.json @@ -4,6 +4,7 @@ "engine": "qdrant", "connection_params": { "timeout": 300 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 25000000 } }, "search_params": [ @@ -16,6 +17,7 @@ "engine": "qdrant", "connection_params": { "timeout": 300 }, "collection_params": { + "timeout": 300, "hnsw_config": { "m": 32, "ef_construct": 256 @@ -50,6 +52,7 @@ "engine": "qdrant", "connection_params": { "timeout": 30 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 10000000 } }, "search_params": [ @@ -64,6 +67,7 @@ "engine": "qdrant", "connection_params": { "timeout": 300 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 16, "ef_construct": 128 } }, @@ -73,11 +77,42 @@ ], "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": 300 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 128 } }, @@ -92,6 +127,7 @@ "engine": "qdrant", "connection_params": { "timeout": 300 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 256 } }, @@ -106,6 +142,7 @@ "engine": "qdrant", "connection_params": { "timeout": 300 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 32, "ef_construct": 512 } }, @@ -115,11 +152,27 @@ ], "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": 300 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 64, "ef_construct": 256 } }, @@ -134,6 +187,7 @@ "engine": "qdrant", "connection_params": { "timeout": 300 }, "collection_params": { + "timeout": 300, "optimizers_config": { "memmap_threshold": 25000000 }, "hnsw_config": { "m": 64, "ef_construct": 512 } }, From 562bf891e75cfd2f58ef8c771c5ae09d42f2209c Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 11 Jun 2024 18:38:59 +0100 Subject: [PATCH 112/204] Included all combinations for redis m=[16,32,64] and ef=[128,256,512] --- .../configurations/redis-single-node.json | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/experiments/configurations/redis-single-node.json b/experiments/configurations/redis-single-node.json index b42593ec..7a57247e 100644 --- a/experiments/configurations/redis-single-node.json +++ b/experiments/configurations/redis-single-node.json @@ -37,6 +37,19 @@ ], "upload_params": { "parallel": 16 } }, + { + "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": 16 } + }, { "name": "redis-m-32-ef-128", "engine": "redis", @@ -76,6 +89,19 @@ ], "upload_params": { "parallel": 16 } }, + { + "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": 16 } + }, { "name": "redis-m-64-ef-256", "engine": "redis", From 4fe7c0082ec8a724732744b5b50011430058ceec Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jun 2024 14:25:29 +0100 Subject: [PATCH 113/204] Added EF-64 variation for Redis --- .../configurations/redis-single-node.json | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/experiments/configurations/redis-single-node.json b/experiments/configurations/redis-single-node.json index 7a57247e..ba1ad884 100644 --- a/experiments/configurations/redis-single-node.json +++ b/experiments/configurations/redis-single-node.json @@ -1,15 +1,16 @@ [ { - "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, "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, "batch_size": 1024 } + "upload_params": { "parallel": 16 } }, { "name": "redis-m-16-ef-128", @@ -50,6 +51,19 @@ ], "upload_params": { "parallel": 16 } }, + { + "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": 16 } + }, { "name": "redis-m-32-ef-128", "engine": "redis", @@ -89,6 +103,19 @@ ], "upload_params": { "parallel": 16 } }, + { + "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": 16 } + }, { "name": "redis-m-64-ef-128", "engine": "redis", From 56021e8e94fe6afd2ca2b794c6222f4f82fd4158 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jun 2024 14:31:37 +0100 Subject: [PATCH 114/204] Enable optimization threads config on qdrant --- engine/clients/qdrant/config.py | 1 + engine/clients/qdrant/upload.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/engine/clients/qdrant/config.py b/engine/clients/qdrant/config.py index 01fc0466..a0cf53c3 100644 --- a/engine/clients/qdrant/config.py +++ b/engine/clients/qdrant/config.py @@ -8,6 +8,7 @@ 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): diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index b20df2b0..8dca606e 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -14,6 +14,7 @@ QDRANT_CLUSTER_ID, QDRANT_COLLECTION_NAME, QDRANT_URL, + QDRANT_MAX_OPTIMIZATION_THREADS, get_qdrant_cloud_usage, get_collection_info, ) @@ -56,11 +57,14 @@ def upload_batch( @classmethod def post_upload(cls, _distance): + max_optimization_threads = QDRANT_MAX_OPTIMIZATION_THREADS + if max_optimization_threads is not None: + max_optimization_threads = int(max_optimization_threads) cls.client.update_collection( collection_name=QDRANT_COLLECTION_NAME, optimizer_config=OptimizersConfigDiff( # indexing_threshold=10_000, - max_optimization_threads=1, + max_optimization_threads=max_optimization_threads, ), ) From f3d54f71d3cddafffd79e4f20869766405773c24 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 12 Jun 2024 14:38:18 +0100 Subject: [PATCH 115/204] included retry wrapper on recreate_collection --- engine/clients/qdrant/config.py | 20 ++++++++++++++++++++ engine/clients/qdrant/configure.py | 4 +++- engine/clients/qdrant/upload.py | 6 +++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/engine/clients/qdrant/config.py b/engine/clients/qdrant/config.py index a0cf53c3..b879b13a 100644 --- a/engine/clients/qdrant/config.py +++ b/engine/clients/qdrant/config.py @@ -1,4 +1,6 @@ import os +import random +import time import requests @@ -43,3 +45,21 @@ def get_qdrant_cloud_usage(account_id, cluster_id, token): 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 2db16f40..6a0b8161 100644 --- a/engine/clients/qdrant/configure.py +++ b/engine/clients/qdrant/configure.py @@ -8,6 +8,7 @@ QDRANT_API_KEY, QDRANT_COLLECTION_NAME, QDRANT_URL, + retry_with_exponential_backoff, ) @@ -40,7 +41,8 @@ def clean(self): res = self.client.delete_collection(collection_name=QDRANT_COLLECTION_NAME) def recreate(self, dataset: Dataset, collection_params): - self.client.recreate_collection( + retry_with_exponential_backoff( + self.client.recreate_collection, collection_name=QDRANT_COLLECTION_NAME, vectors_config=rest.VectorParams( size=dataset.config.vector_size, diff --git a/engine/clients/qdrant/upload.py b/engine/clients/qdrant/upload.py index 8dca606e..e280f45e 100644 --- a/engine/clients/qdrant/upload.py +++ b/engine/clients/qdrant/upload.py @@ -1,7 +1,7 @@ +import json import os import time from typing import List, Optional -import json from qdrant_client import QdrantClient from qdrant_client.http.models import Batch, CollectionStatus, OptimizersConfigDiff @@ -13,10 +13,10 @@ QDRANT_AUTH_TOKEN, QDRANT_CLUSTER_ID, QDRANT_COLLECTION_NAME, - QDRANT_URL, QDRANT_MAX_OPTIMIZATION_THREADS, - get_qdrant_cloud_usage, + QDRANT_URL, get_collection_info, + get_qdrant_cloud_usage, ) From bac6112643f9f329c12e1dfb73a87f58e6adf82d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 14 Jun 2024 01:28:15 +0100 Subject: [PATCH 116/204] Included 200 and 400 client variations on redis --- .../configurations/redis-single-node.json | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/experiments/configurations/redis-single-node.json b/experiments/configurations/redis-single-node.json index ba1ad884..2e23438a 100644 --- a/experiments/configurations/redis-single-node.json +++ b/experiments/configurations/redis-single-node.json @@ -7,10 +7,10 @@ "hnsw_config": { "M": 16, "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-16-ef-128", @@ -20,10 +20,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-16-ef-256", @@ -33,10 +33,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-16-ef-512", @@ -46,10 +46,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-32-ef-64", @@ -59,10 +59,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-32-ef-128", @@ -72,10 +72,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-32-ef-256", @@ -85,10 +85,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-32-ef-512", @@ -98,10 +98,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-64-ef-64", @@ -111,10 +111,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-64-ef-128", @@ -124,10 +124,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-64-ef-256", @@ -137,10 +137,10 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } }, { "name": "redis-m-64-ef-512", @@ -150,9 +150,9 @@ "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 } } + { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, + { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } ], - "upload_params": { "parallel": 16 } + "upload_params": { "parallel": 32 } } ] From 47c9d665b1457ac41b2254fc4e9d554838f5795d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 01:13:26 +0100 Subject: [PATCH 117/204] Included m=4 and m=10 configs for redis --- .../create-redis-same-azureai.py | 29 ++ .../redis-vs-azure-ai-search.json | 314 ++++++++++++++++++ 2 files changed, 343 insertions(+) create mode 100644 experiments/configurations/create-redis-same-azureai.py create mode 100644 experiments/configurations/redis-vs-azure-ai-search.json diff --git a/experiments/configurations/create-redis-same-azureai.py b/experiments/configurations/create-redis-same-azureai.py new file mode 100644 index 00000000..9e64079b --- /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, "config": {"EF": efSearch}} + multi_client_config = {"parallel": 50, "config": {"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/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json new file mode 100644 index 00000000..edc4cf8b --- /dev/null +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -0,0 +1,314 @@ +[ + { + "name": "redis-m-4-ef-100", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 100 + } + }, + "search_params": [ + { + "parallel": 1, + "config": { + "EF": 100 + } + }, + { + "parallel": 50, + "config": { + "EF": 100 + } + }, + { + "parallel": 1, + "config": { + "EF": 500 + } + }, + { + "parallel": 50, + "config": { + "EF": 500 + } + }, + { + "parallel": 1, + "config": { + "EF": 1000 + } + }, + { + "parallel": 50, + "config": { + "EF": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-4-ef-500", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 500 + } + }, + "search_params": [ + { + "parallel": 1, + "config": { + "EF": 100 + } + }, + { + "parallel": 50, + "config": { + "EF": 100 + } + }, + { + "parallel": 1, + "config": { + "EF": 500 + } + }, + { + "parallel": 50, + "config": { + "EF": 500 + } + }, + { + "parallel": 1, + "config": { + "EF": 1000 + } + }, + { + "parallel": 50, + "config": { + "EF": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-4-ef-1000", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 1000 + } + }, + "search_params": [ + { + "parallel": 1, + "config": { + "EF": 100 + } + }, + { + "parallel": 50, + "config": { + "EF": 100 + } + }, + { + "parallel": 1, + "config": { + "EF": 500 + } + }, + { + "parallel": 50, + "config": { + "EF": 500 + } + }, + { + "parallel": 1, + "config": { + "EF": 1000 + } + }, + { + "parallel": 50, + "config": { + "EF": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-10-ef-100", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 10, + "EF_CONSTRUCTION": 100 + } + }, + "search_params": [ + { + "parallel": 1, + "config": { + "EF": 100 + } + }, + { + "parallel": 50, + "config": { + "EF": 100 + } + }, + { + "parallel": 1, + "config": { + "EF": 500 + } + }, + { + "parallel": 50, + "config": { + "EF": 500 + } + }, + { + "parallel": 1, + "config": { + "EF": 1000 + } + }, + { + "parallel": 50, + "config": { + "EF": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-10-ef-500", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 10, + "EF_CONSTRUCTION": 500 + } + }, + "search_params": [ + { + "parallel": 1, + "config": { + "EF": 100 + } + }, + { + "parallel": 50, + "config": { + "EF": 100 + } + }, + { + "parallel": 1, + "config": { + "EF": 500 + } + }, + { + "parallel": 50, + "config": { + "EF": 500 + } + }, + { + "parallel": 1, + "config": { + "EF": 1000 + } + }, + { + "parallel": 50, + "config": { + "EF": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-10-ef-1000", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 10, + "EF_CONSTRUCTION": 1000 + } + }, + "search_params": [ + { + "parallel": 1, + "config": { + "EF": 100 + } + }, + { + "parallel": 50, + "config": { + "EF": 100 + } + }, + { + "parallel": 1, + "config": { + "EF": 500 + } + }, + { + "parallel": 50, + "config": { + "EF": 500 + } + }, + { + "parallel": 1, + "config": { + "EF": 1000 + } + }, + { + "parallel": 50, + "config": { + "EF": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + } +] \ No newline at end of file From 8371d268af5cfd02ff5edd0d180494ec3ff50eec Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 01:17:17 +0100 Subject: [PATCH 118/204] Fixed search params setting on redis --- experiments/configurations/create-redis-same-azureai.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/experiments/configurations/create-redis-same-azureai.py b/experiments/configurations/create-redis-same-azureai.py index 9e64079b..0290f598 100644 --- a/experiments/configurations/create-redis-same-azureai.py +++ b/experiments/configurations/create-redis-same-azureai.py @@ -17,8 +17,8 @@ } for efSearch in [100, 500, 1000]: - single_client_config = {"parallel": 1, "config": {"EF": efSearch}} - multi_client_config = {"parallel": 50, "config": {"EF": efSearch}} + 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 From b137ba0e40ecb52b8b5902faa7f8301e4c1519fa Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 01:18:27 +0100 Subject: [PATCH 119/204] Fixed search params setting on redis --- .../redis-vs-azure-ai-search.json | 144 +++++++++--------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json index edc4cf8b..3e2dedfb 100644 --- a/experiments/configurations/redis-vs-azure-ai-search.json +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -12,38 +12,38 @@ "search_params": [ { "parallel": 1, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 50, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 1, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 50, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 1, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } }, { "parallel": 50, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } } ], @@ -64,38 +64,38 @@ "search_params": [ { "parallel": 1, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 50, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 1, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 50, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 1, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } }, { "parallel": 50, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } } ], @@ -116,38 +116,38 @@ "search_params": [ { "parallel": 1, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 50, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 1, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 50, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 1, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } }, { "parallel": 50, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } } ], @@ -168,38 +168,38 @@ "search_params": [ { "parallel": 1, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 50, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 1, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 50, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 1, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } }, { "parallel": 50, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } } ], @@ -220,38 +220,38 @@ "search_params": [ { "parallel": 1, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 50, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 1, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 50, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 1, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } }, { "parallel": 50, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } } ], @@ -272,38 +272,38 @@ "search_params": [ { "parallel": 1, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 50, - "config": { - "EF": 100 + "search_params": { + "ef": 100 } }, { "parallel": 1, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 50, - "config": { - "EF": 500 + "search_params": { + "ef": 500 } }, { "parallel": 1, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } }, { "parallel": 50, - "config": { - "EF": 1000 + "search_params": { + "ef": 1000 } } ], From d025ab94d39b49a4b1ab1c9583b5a949aa07a8d9 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 21:53:30 +0100 Subject: [PATCH 120/204] Added m-64-ef-* changes --- .../redis-vs-azure-ai-search.json | 312 ++++++++++++++++++ 1 file changed, 312 insertions(+) diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json index 3e2dedfb..d750c1f4 100644 --- a/experiments/configurations/redis-vs-azure-ai-search.json +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -51,6 +51,58 @@ "parallel": 16 } }, + { + "name": "redis-m-4-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 4, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1000 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, { "name": "redis-m-4-ef-500", "engine": "redis", @@ -207,6 +259,58 @@ "parallel": 16 } }, + { + "name": "redis-m-10-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 10, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1000 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, { "name": "redis-m-10-ef-500", "engine": "redis", @@ -310,5 +414,213 @@ "upload_params": { "parallel": 16 } + }, + { + "name": "redis-m-64-ef-100", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 100 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1000 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-64-ef-256", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 256 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1000 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-64-ef-500", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 500 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1000 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } + }, + { + "name": "redis-m-64-ef-1000", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "hnsw_config": { + "M": 64, + "EF_CONSTRUCTION": 1000 + } + }, + "search_params": [ + { + "parallel": 1, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 100 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 500 + } + }, + { + "parallel": 1, + "search_params": { + "ef": 1000 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1000 + } + } + ], + "upload_params": { + "parallel": 16 + } } ] \ No newline at end of file From 570d7c93ab20259c37a1f35d59f7b109b25a1c53 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 21:56:26 +0100 Subject: [PATCH 121/204] Added m-64-ef-* changes --- .../redis-vs-azure-ai-search.json | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json index d750c1f4..58f73d0b 100644 --- a/experiments/configurations/redis-vs-azure-ai-search.json +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -48,7 +48,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -100,7 +101,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -152,7 +154,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -204,7 +207,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -256,7 +260,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -308,7 +313,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -360,7 +366,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -412,7 +419,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -464,7 +472,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -516,7 +525,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -568,7 +578,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } }, { @@ -620,7 +631,8 @@ } ], "upload_params": { - "parallel": 16 + "parallel": 16, + "batch_size": 1024 } } ] \ No newline at end of file From c0ecb6fb9efc3d0571cd74de54b681635a9145c6 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 21:59:21 +0100 Subject: [PATCH 122/204] Added m-64-ef-* changes --- .../redis-vs-azure-ai-search.json | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json index 58f73d0b..ad734af2 100644 --- a/experiments/configurations/redis-vs-azure-ai-search.json +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -49,7 +49,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -102,7 +102,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -155,7 +155,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -208,7 +208,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -261,7 +261,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -314,7 +314,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -367,7 +367,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -420,7 +420,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -473,7 +473,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -526,7 +526,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -579,7 +579,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } }, { @@ -632,7 +632,7 @@ ], "upload_params": { "parallel": 16, - "batch_size": 1024 + "batch_size": 10 } } ] \ No newline at end of file From 3d45ecbba11d019abfe32a7b54c9f8e5317d1a96 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 22:17:44 +0100 Subject: [PATCH 123/204] Added m-64-ef-* changes --- .../redis-vs-azure-ai-search.json | 300 +++++++++++++++++- 1 file changed, 294 insertions(+), 6 deletions(-) diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json index ad734af2..21e79e8a 100644 --- a/experiments/configurations/redis-vs-azure-ai-search.json +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -22,6 +22,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -34,6 +46,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -53,13 +77,13 @@ } }, { - "name": "redis-m-4-ef-256", + "name": "redis-m-4-ef-250", "engine": "redis", "connection_params": {}, "collection_params": { "hnsw_config": { "M": 4, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 250 } }, "search_params": [ @@ -75,6 +99,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -87,6 +123,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -128,6 +176,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -140,6 +200,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -181,6 +253,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -193,6 +277,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -234,6 +330,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -246,6 +354,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -265,13 +385,13 @@ } }, { - "name": "redis-m-10-ef-256", + "name": "redis-m-10-ef-250", "engine": "redis", "connection_params": {}, "collection_params": { "hnsw_config": { "M": 10, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 250 } }, "search_params": [ @@ -287,6 +407,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -299,6 +431,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -340,6 +484,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -352,6 +508,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -393,6 +561,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -405,6 +585,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -446,6 +638,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -458,6 +662,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -477,13 +693,13 @@ } }, { - "name": "redis-m-64-ef-256", + "name": "redis-m-64-ef-250", "engine": "redis", "connection_params": {}, "collection_params": { "hnsw_config": { "M": 64, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 250 } }, "search_params": [ @@ -499,6 +715,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -511,6 +739,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -552,6 +792,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -564,6 +816,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { @@ -605,6 +869,18 @@ "ef": 100 } }, + { + "parallel": 1, + "search_params": { + "ef": 250 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 250 + } + }, { "parallel": 1, "search_params": { @@ -617,6 +893,18 @@ "ef": 500 } }, + { + "parallel": 1, + "search_params": { + "ef": 750 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 750 + } + }, { "parallel": 1, "search_params": { From 2e39d77bff347eaeeeb1d5ec244bf4cd567866bc Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 22:39:16 +0100 Subject: [PATCH 124/204] Added m-16-ef-* changes --- .../redis-vs-azure-ai-search.json | 927 +----------------- 1 file changed, 1 insertion(+), 926 deletions(-) diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json index 21e79e8a..a55e3d35 100644 --- a/experiments/configurations/redis-vs-azure-ai-search.json +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -1,926 +1 @@ -[ - { - "name": "redis-m-4-ef-100", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 4, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-4-ef-250", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 4, - "EF_CONSTRUCTION": 250 - } - }, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-4-ef-500", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 4, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-4-ef-1000", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 4, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-10-ef-100", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 10, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-10-ef-250", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 10, - "EF_CONSTRUCTION": 250 - } - }, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-10-ef-500", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 10, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-10-ef-1000", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 10, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-64-ef-100", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 64, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-64-ef-250", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 250 - } - }, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-64-ef-500", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 64, - "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, - "batch_size": 10 - } - }, - { - "name": "redis-m-64-ef-1000", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "hnsw_config": { - "M": 64, - "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, - "batch_size": 10 - } - } -] \ No newline at end of file +[{"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}}] \ No newline at end of file From 6ef1e947d66e29c88b1987d7b0dc5d2b2eba2cbc Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 19 Jun 2024 22:39:31 +0100 Subject: [PATCH 125/204] Added m-16-ef-* changes --- experiments/configurations/redis-vs-azure-ai-search.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experiments/configurations/redis-vs-azure-ai-search.json b/experiments/configurations/redis-vs-azure-ai-search.json index a55e3d35..94f6b213 100644 --- a/experiments/configurations/redis-vs-azure-ai-search.json +++ b/experiments/configurations/redis-vs-azure-ai-search.json @@ -1 +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}}] \ No newline at end of file +[{"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 From 1dd987bdfab974eb049071b79fe857657b081079 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 8 Jul 2024 17:07:40 +0100 Subject: [PATCH 126/204] Added support for BFLOAT16 and FLOAT16 in Redis --- engine/clients/redis/configure.py | 3 +- engine/clients/redis/search.py | 12 +- engine/clients/redis/upload.py | 9 +- .../create-redis-vector-types.py | 37 + .../configurations/redis-vector-types.json | 2000 +++++++++++++++++ poetry.lock | 177 +- pyproject.toml | 3 +- 7 files changed, 2119 insertions(+), 122 deletions(-) create mode 100644 experiments/configurations/create-redis-vector-types.py create mode 100644 experiments/configurations/redis-vector-types.json diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index aeb03dbc..31b557cb 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -91,6 +91,7 @@ def recreate(self, dataset: Dataset, collection_params): 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 = [ @@ -98,7 +99,7 @@ def recreate(self, dataset: Dataset, collection_params): name="vector", algorithm=algo, attributes={ - "TYPE": "FLOAT32", + "TYPE": data_type, "DIM": dataset.config.vector_size, "DISTANCE_METRIC": self.DISTANCE_MAPPING[dataset.config.distance], **algorithm_config, diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 9629a078..c5820d2d 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -1,6 +1,6 @@ import random from typing import List, Tuple - +from ml_dtypes import bfloat16 import numpy as np from redis import Redis, RedisCluster from redis.commands.search.query import Query @@ -32,7 +32,15 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.algorithm = cls.search_params.get("algorithm", "hnsw").upper() if cls.algorithm == "HNSW": cls.knn_conditions = "EF_RUNTIME $EF" + cls.data_type = cls.search_params.get("data_type", "FLOAT32").upper() + print(f"data_type: {cls.data_type}; search_params: {cls.search_params}") + cls.np_data_type = np.float32 + 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 cls.conns = [cls.client] @@ -65,7 +73,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: .timeout(REDIS_QUERY_TIMEOUT) ) params_dict = { - "vec_param": np.array(vector).astype(np.float32).tobytes(), + "vec_param": np.array(vector).astype(cls.data_type).tobytes(), "K": top, **params, } diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 7bc89f05..7f60a09b 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -1,5 +1,6 @@ import time from typing import List, Optional +from ml_dtypes import bfloat16 import requests import json @@ -39,6 +40,12 @@ def init_client(cls, host, distance, connection_params, upload_params): ) 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 == "FLOAT16": + cls.np_data_type = np.float16 + if cls.data_type == "BFLOAT16": + cls.np_data_type = bfloat16 @classmethod def upload_batch( @@ -73,7 +80,7 @@ def upload_batch( cls.client.hset( str(idx), mapping={ - "vector": np.array(vec).astype(np.float32).tobytes(), + "vector": np.array(vec).astype(cls.np_data_type).tobytes(), **payload, **geopoints, }, diff --git a/experiments/configurations/create-redis-vector-types.py b/experiments/configurations/create-redis-vector-types.py new file mode 100644 index 00000000..944fc675 --- /dev/null +++ b/experiments/configurations/create-redis-vector-types.py @@ -0,0 +1,37 @@ +import json + +experiments = [] + +for data_type in ["FLOAT16", "BFLOAT16", "FLOAT32"]: + for m in [16,32,64]: + for efConstruction in [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 [64, 128, 256, 512]: + 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/redis-vector-types.json b/experiments/configurations/redis-vector-types.json new file mode 100644 index 00000000..14c0a8a7 --- /dev/null +++ b/experiments/configurations/redis-vector-types.json @@ -0,0 +1,2000 @@ +[ + { + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + } +] \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 5774bf0f..c35d4fd8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.5.1 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" @@ -11,9 +11,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" version = "4.3.0" @@ -40,7 +37,6 @@ trio = ["trio (>=0.23)"] name = "appnope" version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -109,7 +105,6 @@ tests = ["pytest"] name = "asttokens" version = "2.4.1" description = "Annotate AST trees with source code positions" -category = "main" optional = false python-versions = "*" files = [ @@ -128,7 +123,6 @@ test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] name = "async-timeout" version = "4.0.3" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -140,7 +134,6 @@ files = [ name = "authlib" version = "1.3.0" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -194,7 +187,6 @@ aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" -category = "main" optional = false python-versions = "*" files = [ @@ -203,38 +195,20 @@ files = [ ] [[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" +name = "backoff" +version = "2.2.1" +description = "Function decoration for backoff and retry" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7,<4.0" 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"}, + {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, + {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, ] -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "certifi" version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -246,7 +220,6 @@ files = [ name = "cffi" version = "1.16.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -311,7 +284,6 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -323,7 +295,6 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -423,7 +394,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -438,7 +408,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -450,7 +419,6 @@ files = [ name = "cryptography" version = "42.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -505,7 +473,6 @@ test-randomorder = ["pytest-randomly"] name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -517,7 +484,6 @@ files = [ name = "distlib" version = "0.3.8" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ @@ -529,7 +495,6 @@ files = [ name = "elastic-transport" version = "8.12.0" description = "Transport classes and utilities shared among Python Elastic client libraries" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -548,7 +513,6 @@ develop = ["aiohttp", "furo", "mock", "pytest", "pytest-asyncio", "pytest-cov", name = "elasticsearch" version = "8.12.1" description = "Python client for Elasticsearch" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -567,7 +531,6 @@ requests = ["requests (>=2.4.0,<3.0.0)"] name = "environs" version = "9.5.0" description = "simplified environment variable parsing" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -589,7 +552,6 @@ tests = ["dj-database-url", "dj-email-url", "django-cache-url", "pytest"] name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -604,7 +566,6 @@ test = ["pytest (>=6)"] name = "executing" version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -619,7 +580,6 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth name = "filelock" version = "3.13.1" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -636,7 +596,6 @@ typing = ["typing-extensions (>=4.8)"] name = "grpcio" version = "1.60.0" description = "HTTP/2-based RPC framework" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -718,7 +677,6 @@ protobuf = ">=4.21.6" name = "grpcio-tools" version = "1.60.0" description = "Protobuf code generator for gRPC" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -787,7 +745,6 @@ setuptools = "*" name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -799,7 +756,6 @@ files = [ name = "h2" version = "4.1.0" description = "HTTP/2 State-Machine based protocol implementation" -category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -815,7 +771,6 @@ hyperframe = ">=6.0,<7" name = "h5py" version = "3.10.0" description = "Read and write HDF5 files from Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -853,7 +808,6 @@ numpy = ">=1.17.3" name = "hpack" version = "4.0.0" description = "Pure-Python HPACK header compression" -category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -865,7 +819,6 @@ files = [ name = "httpcore" version = "1.0.4" description = "A minimal low-level HTTP client." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -887,7 +840,6 @@ trio = ["trio (>=0.22.0,<0.25.0)"] name = "httpx" version = "0.27.0" description = "The next generation HTTP client." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -905,15 +857,14 @@ sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +socks = ["socksio (==1.*)"] [[package]] name = "hyperframe" version = "6.0.1" description = "HTTP/2 framing layer for Python" -category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -925,7 +876,6 @@ files = [ name = "identify" version = "2.5.35" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -940,7 +890,6 @@ license = ["ukkonen"] name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -952,7 +901,6 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -964,7 +912,6 @@ files = [ name = "ipdb" version = "0.13.13" description = "IPython-enabled pdb" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -981,7 +928,6 @@ tomli = {version = "*", markers = "python_version > \"3.6\" and python_version < name = "ipython" version = "8.12.3" description = "IPython: Productive Interactive Computing" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1035,7 +981,6 @@ six = "*" name = "jedi" version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1055,7 +1000,6 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jsons" version = "1.6.3" description = "For serializing Python objects to JSON (dicts) and back" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1073,7 +1017,6 @@ test = ["attrs", "codecov", "coverage", "dataclasses", "pytest", "scons", "tzdat name = "marshmallow" version = "3.21.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1093,7 +1036,6 @@ tests = ["pytest", "pytz", "simplejson"] name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1122,11 +1064,46 @@ pycryptodome = "*" typing-extensions = "*" urllib3 = "*" +[[package]] +name = "ml-dtypes" +version = "0.4.0" +description = "" +optional = false +python-versions = ">=3.9" +files = [ + {file = "ml_dtypes-0.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:93afe37f3a879d652ec9ef1fc47612388890660a2657fbb5747256c3b818fd81"}, + {file = "ml_dtypes-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bb83fd064db43e67e67d021e547698af4c8d5c6190f2e9b1c53c09f6ff5531d"}, + {file = "ml_dtypes-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03e7cda6ef164eed0abb31df69d2c00c3a5ab3e2610b6d4c42183a43329c72a5"}, + {file = "ml_dtypes-0.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:a15d96d090aebb55ee85173d1775ae325a001aab607a76c8ea0b964ccd6b5364"}, + {file = "ml_dtypes-0.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bdf689be7351cc3c95110c910c1b864002f113e682e44508910c849e144f3df1"}, + {file = "ml_dtypes-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c83e4d443962d891d51669ff241d5aaad10a8d3d37a81c5532a45419885d591c"}, + {file = "ml_dtypes-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1e2f4237b459a63c97c2c9f449baa637d7e4c20addff6a9bac486f22432f3b6"}, + {file = "ml_dtypes-0.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:75b4faf99d0711b81f393db36d210b4255fd419f6f790bc6c1b461f95ffb7a9e"}, + {file = "ml_dtypes-0.4.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ee9f91d4c4f9959a7e1051c141dc565f39e54435618152219769e24f5e9a4d06"}, + {file = "ml_dtypes-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad6849a2db386b38e4d54fe13eb3293464561780531a918f8ef4c8169170dd49"}, + {file = "ml_dtypes-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaa32979ebfde3a0d7c947cafbf79edc1ec77ac05ad0780ee86c1d8df70f2259"}, + {file = "ml_dtypes-0.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:3b67ec73a697c88c1122038e0de46520e48dc2ec876d42cf61bc5efe3c0b7675"}, + {file = "ml_dtypes-0.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:41affb38fdfe146e3db226cf2953021184d6f0c4ffab52136613e9601706e368"}, + {file = "ml_dtypes-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43cf4356a0fe2eeac6d289018d0734e17a403bdf1fd911953c125dd0358edcc0"}, + {file = "ml_dtypes-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1724ddcdf5edbaf615a62110af47407f1719b8d02e68ccee60683acb5f74da1"}, + {file = "ml_dtypes-0.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:723af6346447268a3cf0b7356e963d80ecb5732b5279b2aa3fa4b9fc8297c85e"}, + {file = "ml_dtypes-0.4.0.tar.gz", hash = "sha256:eaf197e72f4f7176a19fe3cb8b61846b38c6757607e7bf9cd4b1d84cd3e74deb"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.23.3", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.2", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">1.20", markers = "python_version < \"3.10\""}, +] + +[package.extras] +dev = ["absl-py", "pyink", "pylint (>=2.6.0)", "pytest", "pytest-xdist"] + [[package]] name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -1141,7 +1118,6 @@ setuptools = "*" name = "numpy" version = "1.24.4" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1179,7 +1155,6 @@ files = [ name = "opensearch-py" version = "2.4.2" description = "Python client for OpenSearch" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" files = [ @@ -1204,7 +1179,6 @@ kerberos = ["requests-kerberos"] name = "packaging" version = "24.0" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1216,7 +1190,6 @@ files = [ name = "pandas" version = "2.0.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1249,9 +1222,9 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">=1.20.3", markers = "python_version < \"3.10\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -1284,7 +1257,6 @@ xml = ["lxml (>=4.6.3)"] name = "parso" version = "0.8.3" description = "A Python Parser" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1300,7 +1272,6 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pexpect" version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -category = "main" optional = false python-versions = "*" files = [ @@ -1328,7 +1299,6 @@ numpy = "*" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" -category = "main" optional = false python-versions = "*" files = [ @@ -1340,7 +1310,6 @@ files = [ name = "platformdirs" version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1356,7 +1325,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest- name = "pluggy" version = "1.4.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1372,7 +1340,6 @@ testing = ["pytest", "pytest-benchmark"] name = "portalocker" version = "2.8.2" description = "Wraps the portalocker recipe for easy usage" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1392,7 +1359,6 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p name = "pre-commit" version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1411,7 +1377,6 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.43" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -1426,7 +1391,6 @@ wcwidth = "*" name = "protobuf" version = "4.25.3" description = "" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1455,7 +1419,6 @@ files = [ ] [package.dependencies] -"backports.zoneinfo" = {version = ">=0.2.0", markers = "python_version < \"3.9\""} psycopg-binary = {version = "3.1.18", optional = true, markers = "implementation_name != \"pypy\" and extra == \"binary\""} typing-extensions = ">=4.1" tzdata = {version = "*", markers = "sys_platform == \"win32\""} @@ -1546,7 +1509,6 @@ files = [ name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -1558,7 +1520,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "main" optional = false python-versions = "*" files = [ @@ -1621,7 +1582,6 @@ numpy = ">=1.16.6,<2" name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1784,7 +1744,6 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1800,7 +1759,6 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pymilvus" version = "2.3.7" description = "Python Sdk for Milvus" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1813,7 +1771,6 @@ azure-storage-blob = "*" environs = "<=9.5.0" grpcio = ">=1.49.1,<=1.60.0" minio = ">=7.0.0" -numpy = {version = "<1.25.0", markers = "python_version <= \"3.8\""} pandas = ">=1.2.4" protobuf = ">=3.20.0" pyarrow = ">=12.0.0" @@ -1825,7 +1782,6 @@ ujson = ">=2.0.0" name = "pytest" version = "7.4.4" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1848,7 +1804,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "python-dateutil" version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1863,7 +1818,6 @@ six = ">=1.5" name = "python-dotenv" version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1878,7 +1832,6 @@ cli = ["click (>=5.0)"] name = "pytz" version = "2024.1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -1890,7 +1843,6 @@ files = [ name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" files = [ @@ -1914,7 +1866,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1923,6 +1874,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -1930,8 +1882,16 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -1948,6 +1908,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -1955,6 +1916,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -1964,7 +1926,6 @@ files = [ name = "qdrant-client" version = "1.8.0" description = "Client library for the Qdrant vector search engine" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1988,7 +1949,6 @@ fastembed = ["fastembed (==0.2.2)"] name = "redis" version = "5.0.3" description = "Python client for Redis database and key-value store" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2007,7 +1967,6 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2029,7 +1988,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "setuptools" version = "69.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2046,7 +2004,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2058,7 +2015,6 @@ files = [ name = "sniffio" version = "1.3.1" description = "Sniff out which async library your code is running under" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2070,7 +2026,6 @@ files = [ name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "main" optional = false python-versions = "*" files = [ @@ -2090,7 +2045,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "stopit" version = "1.1.2" description = "Timeout control decorator and context managers, raise any exception in another thread" -category = "main" optional = false python-versions = "*" files = [ @@ -2101,7 +2055,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2113,7 +2066,6 @@ files = [ name = "tqdm" version = "4.66.2" description = "Fast, Extensible Progress Meter" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2134,7 +2086,6 @@ telegram = ["requests"] name = "traitlets" version = "5.14.2" description = "Traitlets Python configuration system" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2150,7 +2101,6 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, name = "typer" version = "0.6.1" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2182,7 +2132,6 @@ files = [ name = "typish" version = "1.9.3" description = "Functionality for types" -category = "main" optional = false python-versions = "*" files = [ @@ -2196,7 +2145,6 @@ test = ["codecov", "coverage", "mypy", "nptyping (>=1.3.0)", "numpy", "pycodesty name = "tzdata" version = "2024.1" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -2208,7 +2156,6 @@ files = [ name = "ujson" version = "5.9.0" description = "Ultra fast JSON encoder and decoder for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2283,7 +2230,6 @@ files = [ name = "urllib3" version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2323,7 +2269,6 @@ tooling-extras = ["pyaml (>=23.7.0)", "pypandoc-binary (>=1.11)", "pytest (>=7.4 name = "virtualenv" version = "20.25.1" description = "Virtual Python Environment builder" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2344,7 +2289,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -2356,7 +2300,6 @@ files = [ name = "weaviate-client" version = "4.5.3" description = "A python native Weaviate client" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2376,5 +2319,5 @@ validators = "0.22.0" [metadata] lock-version = "2.0" -python-versions = ">=3.8,<3.12" -content-hash = "66b915f6915c79f83165dc5fb39f363ca53c493668ff87bb5b4953fb712cd4cc" +python-versions = ">=3.9,<3.12" +content-hash = "2cd84469db2650a089454f7537304f184f3e7df8b60e32f53e33cd98f1921b4a" diff --git a/pyproject.toml b/pyproject.toml index 05a407ca..7b245e57 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "" authors = ["Kacper Łukawski "] [tool.poetry.dependencies] -python = ">=3.8,<3.12" +python = ">=3.9,<3.12" qdrant-client = "^1.8.0" typer = "^0.6.1" jsons = "^1.6.3" @@ -21,6 +21,7 @@ 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.dev-dependencies] From 6e6da52906fbaea0aa50ff1070b69939db6b7f88 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 9 Jul 2024 23:03:44 +0100 Subject: [PATCH 127/204] Added FLOAT64 data type for redis. fixed search: TypeError: data type 'FLOAT32' not understood --- engine/clients/redis/search.py | 5 +++-- engine/clients/redis/upload.py | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index c5820d2d..d92fc8bb 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -33,8 +33,9 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic if cls.algorithm == "HNSW": cls.knn_conditions = "EF_RUNTIME $EF" cls.data_type = cls.search_params.get("data_type", "FLOAT32").upper() - print(f"data_type: {cls.data_type}; search_params: {cls.search_params}") 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": @@ -73,7 +74,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: .timeout(REDIS_QUERY_TIMEOUT) ) params_dict = { - "vec_param": np.array(vector).astype(cls.data_type).tobytes(), + "vec_param": np.array(vector).astype(cls.np_data_type).tobytes(), "K": top, **params, } diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 7f60a09b..80fd12a0 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -42,6 +42,8 @@ def init_client(cls, host, distance, connection_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": From aa48d4e5d1517de823d4ff02eeef6571edb81cb4 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 9 Jul 2024 23:07:16 +0100 Subject: [PATCH 128/204] Added FLOAT64 data type for redis. fixed search: TypeError: data type 'FLOAT32' not understood --- engine/clients/redis/search.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index d92fc8bb..873521d5 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -32,7 +32,11 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.algorithm = cls.search_params.get("algorithm", "hnsw").upper() if cls.algorithm == "HNSW": cls.knn_conditions = "EF_RUNTIME $EF" - cls.data_type = cls.search_params.get("data_type", "FLOAT32").upper() + 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 From 410527f7b3286e7ce7f400d2a7d332d1be46793a Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 9 Jul 2024 23:13:07 +0100 Subject: [PATCH 129/204] Include float64 redis data --- .../create-redis-vector-types.py | 2 +- .../configurations/redis-vector-types.json | 666 ++++++++++++++++++ 2 files changed, 667 insertions(+), 1 deletion(-) diff --git a/experiments/configurations/create-redis-vector-types.py b/experiments/configurations/create-redis-vector-types.py index 944fc675..85743993 100644 --- a/experiments/configurations/create-redis-vector-types.py +++ b/experiments/configurations/create-redis-vector-types.py @@ -2,7 +2,7 @@ experiments = [] -for data_type in ["FLOAT16", "BFLOAT16", "FLOAT32"]: +for data_type in ["FLOAT16", "BFLOAT16", "FLOAT32", "FLOAT64"]: for m in [16,32,64]: for efConstruction in [128, 256, 512]: search_params = [] diff --git a/experiments/configurations/redis-vector-types.json b/experiments/configurations/redis-vector-types.json index 14c0a8a7..060bfbfd 100644 --- a/experiments/configurations/redis-vector-types.json +++ b/experiments/configurations/redis-vector-types.json @@ -1996,5 +1996,671 @@ "parallel": 16, "data_type": "FLOAT32" } + }, + { + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "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": 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" + } + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } } ] \ No newline at end of file From 78d447ae4436a7507acf8996c21ca5078e983e5d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 11 Jul 2024 12:16:45 +0100 Subject: [PATCH 130/204] Included extra EF_CONSTRUCT 32, and extra EF_RUNTIME 16, 32 --- .../create-redis-vector-types.py | 6 +- .../configurations/redis-vector-types.json | 5156 +++++++++++++++-- 2 files changed, 4729 insertions(+), 433 deletions(-) diff --git a/experiments/configurations/create-redis-vector-types.py b/experiments/configurations/create-redis-vector-types.py index 85743993..ecebc9bd 100644 --- a/experiments/configurations/create-redis-vector-types.py +++ b/experiments/configurations/create-redis-vector-types.py @@ -3,8 +3,8 @@ experiments = [] for data_type in ["FLOAT16", "BFLOAT16", "FLOAT32", "FLOAT64"]: - for m in [16,32,64]: - for efConstruction in [128, 256, 512]: + for m in [16, 32, 64]: + for efConstruction in [32, 64, 128, 256, 512]: search_params = [] config = { "name": f"redis-{data_type.lower()}-m-{m}-ef-{efConstruction}", @@ -18,7 +18,7 @@ "upload_params": {"parallel": 16, "data_type": data_type}, } - for efSearch in [64, 128, 256, 512]: + for efSearch in [16, 32, 64, 128, 256, 512, 1024]: single_client_config = { "parallel": 1, "search_params": {"ef": efSearch, "data_type": data_type}, diff --git a/experiments/configurations/redis-vector-types.json b/experiments/configurations/redis-vector-types.json index 060bfbfd..8dcb2753 100644 --- a/experiments/configurations/redis-vector-types.json +++ b/experiments/configurations/redis-vector-types.json @@ -1,16 +1,44 @@ [ { - "name": "redis-float16-m-16-ef-128", + "name": "redis-float16-m-16-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { "M": 16, - "EF_CONSTRUCTION": 128 + "EF_CONSTRUCTION": 32 } }, "search_params": [ + { + "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": { @@ -66,6 +94,20 @@ "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": { @@ -74,17 +116,45 @@ } }, { - "name": "redis-float16-m-16-ef-256", + "name": "redis-float16-m-16-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { "M": 16, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 64 } }, "search_params": [ + { + "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": { @@ -140,6 +210,20 @@ "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": { @@ -148,17 +232,45 @@ } }, { - "name": "redis-float16-m-16-ef-512", + "name": "redis-float16-m-16-ef-128", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { "M": 16, - "EF_CONSTRUCTION": 512 + "EF_CONSTRUCTION": 128 } }, "search_params": [ + { + "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": { @@ -214,6 +326,20 @@ "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": { @@ -222,17 +348,45 @@ } }, { - "name": "redis-float16-m-32-ef-128", + "name": "redis-float16-m-16-ef-256", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 128 + "M": 16, + "EF_CONSTRUCTION": 256 } }, "search_params": [ + { + "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": { @@ -288,6 +442,20 @@ "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": { @@ -296,17 +464,45 @@ } }, { - "name": "redis-float16-m-32-ef-256", + "name": "redis-float16-m-16-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 256 + "M": 16, + "EF_CONSTRUCTION": 512 } }, "search_params": [ + { + "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": { @@ -362,6 +558,20 @@ "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": { @@ -370,17 +580,45 @@ } }, { - "name": "redis-float16-m-32-ef-512", + "name": "redis-float16-m-32-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { "M": 32, - "EF_CONSTRUCTION": 512 + "EF_CONSTRUCTION": 32 } }, "search_params": [ + { + "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": { @@ -436,6 +674,20 @@ "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": { @@ -444,144 +696,112 @@ } }, { - "name": "redis-float16-m-64-ef-128", + "name": "redis-float16-m-32-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 128 + "M": 32, + "EF_CONSTRUCTION": 64 } }, "search_params": [ { "parallel": 1, "search_params": { - "ef": 64, + "ef": 16, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64, + "ef": 16, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 128, + "ef": 32, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128, + "ef": 32, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 256, + "ef": 64, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256, + "ef": 64, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 512, + "ef": 128, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512, - "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": 64, - "data_type": "FLOAT16" - } - }, - { - "parallel": 100, - "search_params": { - "ef": 64, + "ef": 128, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 128, + "ef": 256, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128, + "ef": 256, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 256, + "ef": 512, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256, + "ef": 512, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 512, + "ef": 1024, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512, + "ef": 1024, "data_type": "FLOAT16" } } @@ -592,757 +812,4337 @@ } }, { - "name": "redis-float16-m-64-ef-512", + "name": "redis-float16-m-32-ef-128", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 512 + "M": 32, + "EF_CONSTRUCTION": 128 } }, "search_params": [ { "parallel": 1, "search_params": { - "ef": 64, + "ef": 16, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64, + "ef": 16, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 128, + "ef": 32, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128, + "ef": 32, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 256, + "ef": 64, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256, + "ef": 64, "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 512, + "ef": 128, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512, + "ef": 128, "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT16" - } - }, - { - "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": 64, - "data_type": "BFLOAT16" - } - }, - { - "parallel": 100, - "search_params": { - "ef": 64, - "data_type": "BFLOAT16" - } }, { "parallel": 1, "search_params": { - "ef": 128, - "data_type": "BFLOAT16" + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128, - "data_type": "BFLOAT16" + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 256, - "data_type": "BFLOAT16" + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256, - "data_type": "BFLOAT16" + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 512, - "data_type": "BFLOAT16" + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512, - "data_type": "BFLOAT16" + "ef": 1024, + "data_type": "FLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { - "name": "redis-bfloat16-m-16-ef-256", + "name": "redis-float16-m-32-ef-256", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT16", "hnsw_config": { - "M": 16, + "M": 32, "EF_CONSTRUCTION": 256 } }, "search_params": [ + { + "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": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "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": "BFLOAT16" + "data_type": "FLOAT16" } }, { - "name": "redis-bfloat16-m-16-ef-512", + "name": "redis-float16-m-32-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT16", "hnsw_config": { - "M": 16, + "M": 32, "EF_CONSTRUCTION": 512 } }, "search_params": [ + { + "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": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "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": "BFLOAT16" + "data_type": "FLOAT16" } }, { - "name": "redis-bfloat16-m-32-ef-128", + "name": "redis-float16-m-64-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT16", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 128 + "M": 64, + "EF_CONSTRUCTION": 32 } }, "search_params": [ { "parallel": 1, "search_params": { - "ef": 64, - "data_type": "BFLOAT16" + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64, - "data_type": "BFLOAT16" + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 128, - "data_type": "BFLOAT16" + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128, - "data_type": "BFLOAT16" + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 1, "search_params": { - "ef": 256, - "data_type": "BFLOAT16" + "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": 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": 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": 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": 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-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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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-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": 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": 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": 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": 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": 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": 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": 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": 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": "BFLOAT16" + "data_type": "FLOAT32" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256, + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { - "name": "redis-bfloat16-m-32-ef-256", + "name": "redis-float32-m-32-ef-256", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT32", "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 256 } }, "search_params": [ + { + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { - "name": "redis-bfloat16-m-32-ef-512", + "name": "redis-float32-m-32-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT32", "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 512 } }, "search_params": [ + { + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "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": 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": 256, - "data_type": "BFLOAT16" + "ef": 512, + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { - "ef": 512, - "data_type": "BFLOAT16" + "ef": 1024, + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { - "ef": 512, - "data_type": "BFLOAT16" + "ef": 1024, + "data_type": "FLOAT32" } } ], "upload_params": { "parallel": 16, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { - "name": "redis-bfloat16-m-64-ef-128", + "name": "redis-float32-m-64-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT32", "hnsw_config": { "M": 64, - "EF_CONSTRUCTION": 128 + "EF_CONSTRUCTION": 64 } }, "search_params": [ + { + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { - "name": "redis-bfloat16-m-64-ef-256", + "name": "redis-float32-m-64-ef-128", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT32", "hnsw_config": { "M": 64, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 128 } }, "search_params": [ + { + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { - "name": "redis-bfloat16-m-64-ef-512", + "name": "redis-float32-m-64-ef-256", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "BFLOAT16", + "data_type": "FLOAT32", "hnsw_config": { "M": 64, - "EF_CONSTRUCTION": 512 + "EF_CONSTRUCTION": 256 } }, "search_params": [ + { + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "BFLOAT16" + "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": "BFLOAT16" + "data_type": "FLOAT32" } }, { - "name": "redis-float32-m-16-ef-128", + "name": "redis-float32-m-64-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT32", "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 128 + "M": 64, + "EF_CONSTRUCTION": 512 } }, "search_params": [ + { + "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": { @@ -1398,6 +5198,20 @@ "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": { @@ -1406,309 +5220,477 @@ } }, { - "name": "redis-float32-m-16-ef-256", + "name": "redis-float64-m-16-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT64", "hnsw_config": { "M": 16, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 32 } }, "search_params": [ + { + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { - "name": "redis-float32-m-16-ef-512", + "name": "redis-float64-m-16-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT64", "hnsw_config": { "M": 16, - "EF_CONSTRUCTION": 512 + "EF_CONSTRUCTION": 64 } }, "search_params": [ + { + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { - "name": "redis-float32-m-32-ef-128", + "name": "redis-float64-m-16-ef-128", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT64", "hnsw_config": { - "M": 32, + "M": 16, "EF_CONSTRUCTION": 128 } }, "search_params": [ + { + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { - "name": "redis-float32-m-32-ef-256", + "name": "redis-float64-m-16-ef-256", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT64", "hnsw_config": { - "M": 32, + "M": 16, "EF_CONSTRUCTION": 256 } }, "search_params": [ + { + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { - "name": "redis-float32-m-32-ef-512", + "name": "redis-float64-m-16-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT64", "hnsw_config": { - "M": 32, + "M": 16, "EF_CONSTRUCTION": 512 } }, @@ -1716,299 +5698,379 @@ { "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" + "ef": 16, + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 256, - "data_type": "FLOAT32" + "ef": 16, + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 512, - "data_type": "FLOAT32" + "ef": 32, + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 512, - "data_type": "FLOAT32" + "ef": 32, + "data_type": "FLOAT64" } - } - ], - "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": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { - "name": "redis-float32-m-64-ef-256", + "name": "redis-float64-m-32-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT64", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 256 + "M": 32, + "EF_CONSTRUCTION": 32 } }, "search_params": [ + { + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { - "name": "redis-float32-m-64-ef-512", + "name": "redis-float64-m-32-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT64", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 512 + "M": 32, + "EF_CONSTRUCTION": 64 } }, "search_params": [ + { + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT32" + "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": "FLOAT32" + "data_type": "FLOAT64" } }, { - "name": "redis-float64-m-16-ef-128", + "name": "redis-float64-m-32-ef-128", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 16, + "M": 32, "EF_CONSTRUCTION": 128 } }, "search_params": [ + { + "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": { @@ -2064,6 +6126,20 @@ "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": { @@ -2072,17 +6148,45 @@ } }, { - "name": "redis-float64-m-16-ef-256", + "name": "redis-float64-m-32-ef-256", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 16, + "M": 32, "EF_CONSTRUCTION": 256 } }, "search_params": [ + { + "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": { @@ -2100,42 +6204,56 @@ { "parallel": 1, "search_params": { - "ef": 128, + "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": 128, + "ef": 256, "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 256, + "ef": 512, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 256, + "ef": 512, "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 512, + "ef": 1024, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 512, + "ef": 1024, "data_type": "FLOAT64" } } @@ -2146,13 +6264,13 @@ } }, { - "name": "redis-float64-m-16-ef-512", + "name": "redis-float64-m-32-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 16, + "M": 32, "EF_CONSTRUCTION": 512 } }, @@ -2160,130 +6278,98 @@ { "parallel": 1, "search_params": { - "ef": 64, + "ef": 16, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 64, + "ef": 16, "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 128, + "ef": 32, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 128, + "ef": 32, "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 256, + "ef": 64, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 256, - "data_type": "FLOAT64" - } - }, - { - "parallel": 1, - "search_params": { - "ef": 512, + "ef": 64, "data_type": "FLOAT64" } }, - { - "parallel": 100, - "search_params": { - "ef": 512, - "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": 64, + "ef": 128, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 64, + "ef": 128, "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 128, + "ef": 256, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 128, + "ef": 256, "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 256, + "ef": 512, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 256, + "ef": 512, "data_type": "FLOAT64" } }, { "parallel": 1, "search_params": { - "ef": 512, + "ef": 1024, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 512, + "ef": 1024, "data_type": "FLOAT64" } } @@ -2294,17 +6380,45 @@ } }, { - "name": "redis-float64-m-32-ef-256", + "name": "redis-float64-m-64-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 256 + "M": 64, + "EF_CONSTRUCTION": 32 } }, "search_params": [ + { + "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": { @@ -2360,6 +6474,20 @@ "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": { @@ -2368,17 +6496,45 @@ } }, { - "name": "redis-float64-m-32-ef-512", + "name": "redis-float64-m-64-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 512 + "M": 64, + "EF_CONSTRUCTION": 64 } }, "search_params": [ + { + "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": { @@ -2434,6 +6590,20 @@ "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": { @@ -2453,6 +6623,34 @@ } }, "search_params": [ + { + "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": { @@ -2508,6 +6706,20 @@ "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": { @@ -2527,6 +6739,34 @@ } }, "search_params": [ + { + "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": { @@ -2582,6 +6822,20 @@ "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": { @@ -2601,6 +6855,34 @@ } }, "search_params": [ + { + "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": { @@ -2656,6 +6938,20 @@ "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": { From 5be637a473bfa8a50c18bbb2f0bc6ed94e4dc9a4 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 11 Jul 2024 12:22:09 +0100 Subject: [PATCH 131/204] Included extra EF_CONSTRUCT 32, and extra EF_RUNTIME 16, 32 --- .../create-redis-vector-types.py | 5 +- .../configurations/redis-vector-types.json | 4664 +---------------- 2 files changed, 247 insertions(+), 4422 deletions(-) diff --git a/experiments/configurations/create-redis-vector-types.py b/experiments/configurations/create-redis-vector-types.py index ecebc9bd..1c66c227 100644 --- a/experiments/configurations/create-redis-vector-types.py +++ b/experiments/configurations/create-redis-vector-types.py @@ -4,7 +4,8 @@ for data_type in ["FLOAT16", "BFLOAT16", "FLOAT32", "FLOAT64"]: for m in [16, 32, 64]: - for efConstruction in [32, 64, 128, 256, 512]: + for efConstruction in [32, 64]: + #for efConstruction in [32, 64, 128, 256, 512]: search_params = [] config = { "name": f"redis-{data_type.lower()}-m-{m}-ef-{efConstruction}", @@ -17,7 +18,7 @@ "search_params": [], "upload_params": {"parallel": 16, "data_type": data_type}, } - +# for efSearch in [16, 32, 1024]: for efSearch in [16, 32, 64, 128, 256, 512, 1024]: single_client_config = { "parallel": 1, diff --git a/experiments/configurations/redis-vector-types.json b/experiments/configurations/redis-vector-types.json index 8dcb2753..0991fb9c 100644 --- a/experiments/configurations/redis-vector-types.json +++ b/experiments/configurations/redis-vector-types.json @@ -232,14 +232,14 @@ } }, { - "name": "redis-float16-m-16-ef-128", + "name": "redis-float16-m-32-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 128 + "M": 32, + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -348,14 +348,14 @@ } }, { - "name": "redis-float16-m-16-ef-256", + "name": "redis-float16-m-32-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 256 + "M": 32, + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -464,14 +464,14 @@ } }, { - "name": "redis-float16-m-16-ef-512", + "name": "redis-float16-m-64-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 512 + "M": 64, + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -580,14 +580,14 @@ } }, { - "name": "redis-float16-m-32-ef-32", + "name": "redis-float16-m-64-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 32 + "M": 64, + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -696,14 +696,14 @@ } }, { - "name": "redis-float16-m-32-ef-64", + "name": "redis-bfloat16-m-16-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT16", + "data_type": "BFLOAT16", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 64 + "M": 16, + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -711,115 +711,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { - "name": "redis-float16-m-32-ef-128", + "name": "redis-bfloat16-m-16-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT16", + "data_type": "BFLOAT16", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 128 + "M": 16, + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -827,115 +827,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { - "name": "redis-float16-m-32-ef-256", + "name": "redis-bfloat16-m-32-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT16", + "data_type": "BFLOAT16", "hnsw_config": { "M": 32, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -943,115 +943,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { - "name": "redis-float16-m-32-ef-512", + "name": "redis-bfloat16-m-32-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT16", + "data_type": "BFLOAT16", "hnsw_config": { "M": 32, - "EF_CONSTRUCTION": 512 + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -1059,112 +1059,112 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { - "name": "redis-float16-m-64-ef-32", + "name": "redis-bfloat16-m-64-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT16", + "data_type": "BFLOAT16", "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 32 @@ -1175,112 +1175,112 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { - "name": "redis-float16-m-64-ef-64", + "name": "redis-bfloat16-m-64-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT16", + "data_type": "BFLOAT16", "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 64 @@ -1291,4291 +1291,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT16" + "data_type": "BFLOAT16" } }, { "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": 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": 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": 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-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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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-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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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": 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-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": 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": 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": 16, - "data_type": "FLOAT64" - } - }, - { - "parallel": 100, - "search_params": { - "ef": 16, - "data_type": "FLOAT64" - } - }, - { - "parallel": 1, - "search_params": { - "ef": 32, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { - "name": "redis-float64-m-16-ef-256", + "name": "redis-float32-m-16-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT64", + "data_type": "FLOAT32", "hnsw_config": { "M": 16, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -5583,115 +1407,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { - "name": "redis-float64-m-16-ef-512", + "name": "redis-float32-m-16-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT64", + "data_type": "FLOAT32", "hnsw_config": { "M": 16, - "EF_CONSTRUCTION": 512 + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -5699,112 +1523,112 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { - "name": "redis-float64-m-32-ef-32", + "name": "redis-float32-m-32-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT64", + "data_type": "FLOAT32", "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 32 @@ -5815,112 +1639,112 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { - "name": "redis-float64-m-32-ef-64", + "name": "redis-float32-m-32-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT64", + "data_type": "FLOAT32", "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 64 @@ -5931,115 +1755,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { - "name": "redis-float64-m-32-ef-128", + "name": "redis-float32-m-64-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT64", + "data_type": "FLOAT32", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 128 + "M": 64, + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -6047,115 +1871,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { - "name": "redis-float64-m-32-ef-256", + "name": "redis-float32-m-64-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT64", + "data_type": "FLOAT32", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 256 + "M": 64, + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -6163,115 +1987,115 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 32, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 64, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 128, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 256, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 512, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 1, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { "ef": 1024, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT32" } }, { - "name": "redis-float64-m-32-ef-512", + "name": "redis-float64-m-16-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 512 + "M": 16, + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -6380,14 +2204,14 @@ } }, { - "name": "redis-float64-m-64-ef-32", + "name": "redis-float64-m-16-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 32 + "M": 16, + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -6496,14 +2320,14 @@ } }, { - "name": "redis-float64-m-64-ef-64", + "name": "redis-float64-m-32-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 64 + "M": 32, + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -6612,14 +2436,14 @@ } }, { - "name": "redis-float64-m-64-ef-128", + "name": "redis-float64-m-32-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 128 + "M": 32, + "EF_CONSTRUCTION": 64 } }, "search_params": [ @@ -6728,14 +2552,14 @@ } }, { - "name": "redis-float64-m-64-ef-256", + "name": "redis-float64-m-64-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { "M": 64, - "EF_CONSTRUCTION": 256 + "EF_CONSTRUCTION": 32 } }, "search_params": [ @@ -6844,14 +2668,14 @@ } }, { - "name": "redis-float64-m-64-ef-512", + "name": "redis-float64-m-64-ef-64", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { "M": 64, - "EF_CONSTRUCTION": 512 + "EF_CONSTRUCTION": 64 } }, "search_params": [ From 1403f0646b3a29c7501b461f0f3f2166c3a8b780 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 11 Jul 2024 22:51:30 +0100 Subject: [PATCH 132/204] temporary glove-100 index size --- .../configurations/redis-vector-types.json | 2812 ++--------------- 1 file changed, 206 insertions(+), 2606 deletions(-) diff --git a/experiments/configurations/redis-vector-types.json b/experiments/configurations/redis-vector-types.json index 0991fb9c..abb37111 100644 --- a/experiments/configurations/redis-vector-types.json +++ b/experiments/configurations/redis-vector-types.json @@ -1,13 +1,13 @@ [ { - "name": "redis-float16-m-16-ef-32", + "name": "redis-float16-m-128-ef-16", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 32 + "M": 128, + "EF_CONSTRUCTION": 16 } }, "search_params": [ @@ -24,206 +24,6 @@ "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": 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": { @@ -232,2334 +32,78 @@ } }, { - "name": "redis-float16-m-32-ef-32", + "name": "redis-float16-m-256-ef-16", "engine": "redis", "connection_params": {}, - "collection_params": { - "data_type": "FLOAT16", - "hnsw_config": { - "M": 32, - "EF_CONSTRUCTION": 32 - } - }, - "search_params": [ - { - "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": 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": 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": 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-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": 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": 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": 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": 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": 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": 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-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": 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": 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": 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": 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": 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": 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-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": 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": 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": 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": 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" - } - }, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 256, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 512, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT16" } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT16" + } + }, + { + "name": "redis-float16-m-512-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT16", + "hnsw_config": { + "M": 512, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 1024, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT16" } }, { - "name": "redis-float64-m-64-ef-32", + "name": "redis-bfloat16-m-128-ef-16", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT64", + "data_type": "BFLOAT16", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 32 + "M": 128, + "EF_CONSTRUCTION": 16 } }, "search_params": [ @@ -2567,97 +111,205 @@ "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "BFLOAT16" } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-256-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 256, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 32, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "BFLOAT16" } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-bfloat16-m-512-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "BFLOAT16", + "hnsw_config": { + "M": 512, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 64, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "BFLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "BFLOAT16" } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "BFLOAT16" + } + }, + { + "name": "redis-float32-m-128-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 128, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 128, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { - "ef": 128, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT32" } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-256-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 256, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 256, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { - "ef": 256, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT32" } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float32-m-512-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT32", + "hnsw_config": { + "M": 512, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 512, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT32" } }, { "parallel": 100, "search_params": { - "ef": 512, - "data_type": "FLOAT64" + "ef": 16, + "data_type": "FLOAT32" } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT32" + } + }, + { + "name": "redis-float64-m-128-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 128, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 1024, + "ef": 16, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 1024, + "ef": 16, "data_type": "FLOAT64" } } @@ -2668,14 +320,14 @@ } }, { - "name": "redis-float64-m-64-ef-64", + "name": "redis-float64-m-256-ef-16", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT64", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 64 + "M": 256, + "EF_CONSTRUCTION": 16 } }, "search_params": [ @@ -2692,88 +344,36 @@ "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" - } - }, + } + ], + "upload_params": { + "parallel": 16, + "data_type": "FLOAT64" + } + }, + { + "name": "redis-float64-m-512-ef-16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "data_type": "FLOAT64", + "hnsw_config": { + "M": 512, + "EF_CONSTRUCTION": 16 + } + }, + "search_params": [ { "parallel": 1, "search_params": { - "ef": 1024, + "ef": 16, "data_type": "FLOAT64" } }, { "parallel": 100, "search_params": { - "ef": 1024, + "ef": 16, "data_type": "FLOAT64" } } From a3284f82910e229262196923eb0ee18499193194 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 12 Jul 2024 06:53:59 +0100 Subject: [PATCH 133/204] Added more lower M configs for redis variations --- .../create-redis-vector-types.py | 10 +- .../configurations/redis-vector-types.json | 12564 +++++++++++++++- 2 files changed, 12335 insertions(+), 239 deletions(-) diff --git a/experiments/configurations/create-redis-vector-types.py b/experiments/configurations/create-redis-vector-types.py index 1c66c227..493ff5f0 100644 --- a/experiments/configurations/create-redis-vector-types.py +++ b/experiments/configurations/create-redis-vector-types.py @@ -3,9 +3,9 @@ experiments = [] for data_type in ["FLOAT16", "BFLOAT16", "FLOAT32", "FLOAT64"]: - for m in [16, 32, 64]: - for efConstruction in [32, 64]: - #for efConstruction in [32, 64, 128, 256, 512]: + 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}", @@ -18,8 +18,8 @@ "search_params": [], "upload_params": {"parallel": 16, "data_type": data_type}, } -# for efSearch in [16, 32, 1024]: - for efSearch in [16, 32, 64, 128, 256, 512, 1024]: + # 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}, diff --git a/experiments/configurations/redis-vector-types.json b/experiments/configurations/redis-vector-types.json index abb37111..92a00604 100644 --- a/experiments/configurations/redis-vector-types.json +++ b/experiments/configurations/redis-vector-types.json @@ -1,12 +1,12 @@ [ { - "name": "redis-float16-m-128-ef-16", + "name": "redis-float16-m-8-ef-16", "engine": "redis", "connection_params": {}, "collection_params": { "data_type": "FLOAT16", "hnsw_config": { - "M": 128, + "M": 8, "EF_CONSTRUCTION": 16 } }, @@ -14,35 +14,17 @@ { "parallel": 1, "search_params": { - "ef": 16, + "ef": 8, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, + "ef": 8, "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT16" - } - }, - { - "name": "redis-float16-m-256-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "FLOAT16", - "hnsw_config": { - "M": 256, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { @@ -56,324 +38,12438 @@ "ef": 16, "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT16" - } - }, - { - "name": "redis-float16-m-512-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "FLOAT16", - "hnsw_config": { - "M": 512, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, + "ef": 32, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, + "ef": 32, "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT16" - } - }, - { - "name": "redis-bfloat16-m-128-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "BFLOAT16", - "hnsw_config": { - "M": 128, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "BFLOAT16" + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, - "data_type": "BFLOAT16" + "ef": 64, + "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "BFLOAT16" - } - }, - { - "name": "redis-bfloat16-m-256-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "BFLOAT16", - "hnsw_config": { - "M": 256, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "BFLOAT16" + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, - "data_type": "BFLOAT16" + "ef": 128, + "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "BFLOAT16" - } - }, - { - "name": "redis-bfloat16-m-512-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "BFLOAT16", - "hnsw_config": { - "M": 512, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "BFLOAT16" + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, - "data_type": "BFLOAT16" + "ef": 256, + "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "BFLOAT16" - } - }, - { - "name": "redis-float32-m-128-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "FLOAT32", - "hnsw_config": { - "M": 128, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "FLOAT32" + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, - "data_type": "FLOAT32" + "ef": 512, + "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT32" - } - }, - { - "name": "redis-float32-m-256-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "FLOAT32", - "hnsw_config": { - "M": 256, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "FLOAT32" + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, - "data_type": "FLOAT32" + "ef": 1024, + "data_type": "FLOAT16" } } ], "upload_params": { "parallel": 16, - "data_type": "FLOAT32" + "data_type": "FLOAT16" } }, { - "name": "redis-float32-m-512-ef-16", + "name": "redis-float16-m-8-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { - "data_type": "FLOAT32", + "data_type": "FLOAT16", "hnsw_config": { - "M": 512, - "EF_CONSTRUCTION": 16 + "M": 8, + "EF_CONSTRUCTION": 32 } }, "search_params": [ { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "FLOAT32" + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, - "data_type": "FLOAT32" + "ef": 8, + "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT32" - } - }, - { - "name": "redis-float64-m-128-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "FLOAT64", - "hnsw_config": { - "M": 128, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { "ef": 16, - "data_type": "FLOAT64" + "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT64" - } - }, - { - "name": "redis-float64-m-256-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "FLOAT64", - "hnsw_config": { - "M": 256, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "FLOAT64" + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, - "data_type": "FLOAT64" + "ef": 32, + "data_type": "FLOAT16" } - } - ], - "upload_params": { - "parallel": 16, - "data_type": "FLOAT64" - } - }, - { - "name": "redis-float64-m-512-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "data_type": "FLOAT64", - "hnsw_config": { - "M": 512, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 1, "search_params": { - "ef": 16, - "data_type": "FLOAT64" + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16, + "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" } } From fd57559f8327549d2592bda3c3dbeed98c0d4b3c Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 16 Jul 2024 16:06:48 +0100 Subject: [PATCH 134/204] Added FLOAT16 intel config --- experiments/configurations/create-intel.py | 11 ++-- .../redis-intel-hnsw-single-node.json | 54 ++++++++++++------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/experiments/configurations/create-intel.py b/experiments/configurations/create-intel.py index f6357203..2fa887e1 100644 --- a/experiments/configurations/create-intel.py +++ b/experiments/configurations/create-intel.py @@ -3,21 +3,26 @@ ms = [16, 64, 256] ef_constructs = [16, 512, 1024] ef_runtimes = [16, 32, 64, 128, 256, 512, 1024, 2048] - +data_type = "FLOAT16" for algo in ["hnsw"]: configs = [] for m in ms: for ef_construct in ef_constructs: config = { - "name": f"redis-intel-{algo}-m-{m}-ef-{ef_construct}", + "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}, + "upload_params": { + "parallel": 128, + "algorithm": algo, + "data_type": data_type, + }, } for client in [100, 200, 400, 800, 1600, 3200]: for ef_runtime in ef_runtimes: diff --git a/experiments/configurations/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json index 70319cb2..8853e9c8 100644 --- a/experiments/configurations/redis-intel-hnsw-single-node.json +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -1,10 +1,11 @@ [ { - "name": "redis-intel-hnsw-m-16-ef-16", + "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 @@ -302,15 +303,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-16-ef-512", + "name": "redis-intel-float16-hnsw-m-16-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 512 @@ -608,15 +611,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-16-ef-1024", + "name": "redis-intel-float16-hnsw-m-16-ef-1024", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 1024 @@ -914,15 +919,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-64-ef-16", + "name": "redis-intel-float16-hnsw-m-64-ef-16", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 16 @@ -1220,15 +1227,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-64-ef-512", + "name": "redis-intel-float16-hnsw-m-64-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 512 @@ -1526,15 +1535,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-64-ef-1024", + "name": "redis-intel-float16-hnsw-m-64-ef-1024", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 1024 @@ -1832,15 +1843,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-256-ef-16", + "name": "redis-intel-float16-hnsw-m-256-ef-16", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 256, "EF_CONSTRUCTION": 16 @@ -2138,15 +2151,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-256-ef-512", + "name": "redis-intel-float16-hnsw-m-256-ef-512", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 256, "EF_CONSTRUCTION": 512 @@ -2444,15 +2459,17 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } }, { - "name": "redis-intel-hnsw-m-256-ef-1024", + "name": "redis-intel-float16-hnsw-m-256-ef-1024", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", + "data_type": "FLOAT16", "hnsw_config": { "M": 256, "EF_CONSTRUCTION": 1024 @@ -2750,7 +2767,8 @@ ], "upload_params": { "parallel": 128, - "algorithm": "hnsw" + "algorithm": "hnsw", + "data_type": "FLOAT16" } } ] \ No newline at end of file From f5efe5b25441e522c75de655cda2b45b044bfbf5 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 18 Jul 2024 19:03:00 +0100 Subject: [PATCH 135/204] m-16-ef-64 for milvus --- .../configurations/milvus-single-node.json | 39 +++++++++------ .../configurations/redis-single-node.json | 48 +++++++++---------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/experiments/configurations/milvus-single-node.json b/experiments/configurations/milvus-single-node.json index 229cd068..175965ef 100644 --- a/experiments/configurations/milvus-single-node.json +++ b/experiments/configurations/milvus-single-node.json @@ -5,19 +5,30 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, - { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "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 } } }, + { + "name": "milvus-m-16-ef-64", + "engine": "milvus", + "connection_params": {}, + "collection_params": {}, + "search_params": [ + { "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": 64, "M": 16 } } + }, { "name": "milvus-m-16-ef-128", "engine": "milvus", "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, - { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "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 +38,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, - { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "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 +49,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, - { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "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 +60,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, - { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "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 +71,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, - { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "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 +82,8 @@ "connection_params": {}, "collection_params": {}, "search_params": [ - { "parallel": 1, "params": { "ef": 128 } }, { "parallel": 1, "params": { "ef": 256 } }, { "parallel": 1, "params": { "ef": 512 } }, - { "parallel": 100, "params": { "ef": 128 } }, { "parallel": 100, "params": { "ef": 256 } }, { "parallel": 100, "params": { "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/redis-single-node.json b/experiments/configurations/redis-single-node.json index 2e23438a..30632555 100644 --- a/experiments/configurations/redis-single-node.json +++ b/experiments/configurations/redis-single-node.json @@ -7,8 +7,8 @@ "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 64 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -20,8 +20,8 @@ "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 128 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -33,8 +33,8 @@ "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 256 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -46,8 +46,8 @@ "hnsw_config": { "M": 16, "EF_CONSTRUCTION": 512 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -59,8 +59,8 @@ "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 64 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -72,8 +72,8 @@ "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 128 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -85,8 +85,8 @@ "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 256 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -98,8 +98,8 @@ "hnsw_config": { "M": 32, "EF_CONSTRUCTION": 512 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -111,8 +111,8 @@ "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 64 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -124,8 +124,8 @@ "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 128 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -137,8 +137,8 @@ "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 256 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } }, @@ -150,8 +150,8 @@ "hnsw_config": { "M": 64, "EF_CONSTRUCTION": 512 } }, "search_params": [ - { "parallel": 200, "search_params": { "ef": 64 } }, { "parallel": 200, "search_params": { "ef": 128 } }, { "parallel": 200, "search_params": { "ef": 256 } }, { "parallel": 200, "search_params": { "ef": 512 } }, - { "parallel": 400, "search_params": { "ef": 64 } }, { "parallel": 400, "search_params": { "ef": 128 } }, { "parallel": 400, "search_params": { "ef": 256 } }, { "parallel": 400, "search_params": { "ef": 512 } } + { "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 } } From a0c6ec8e4064386202e2abfe3f1bfa31a56a6cef Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 24 Jul 2024 15:09:56 +0100 Subject: [PATCH 136/204] Varying M/EF for intel/laion setup --- experiments/configurations/create-intel.py | 8 +- .../redis-intel-hnsw-single-node.json | 2326 ++++++++++++----- 2 files changed, 1669 insertions(+), 665 deletions(-) diff --git a/experiments/configurations/create-intel.py b/experiments/configurations/create-intel.py index 2fa887e1..a26f3a6e 100644 --- a/experiments/configurations/create-intel.py +++ b/experiments/configurations/create-intel.py @@ -1,8 +1,8 @@ import json -ms = [16, 64, 256] -ef_constructs = [16, 512, 1024] -ef_runtimes = [16, 32, 64, 128, 256, 512, 1024, 2048] +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 = [] @@ -24,7 +24,7 @@ "data_type": data_type, }, } - for client in [100, 200, 400, 800, 1600, 3200]: + for client in [50, 100, 200]: for ef_runtime in ef_runtimes: test_config = { "parallel": client, diff --git a/experiments/configurations/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json index 8853e9c8..8a5175b1 100644 --- a/experiments/configurations/redis-intel-hnsw-single-node.json +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -1,325 +1,337 @@ [ { - "name": "redis-intel-float16-hnsw-m-16-ef-16", + "name": "redis-intel-float16-hnsw-m-4-ef-4", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", "data_type": "FLOAT16", "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 16 + "M": 4, + "EF_CONSTRUCTION": 4 } }, "search_params": [ { - "parallel": 100, + "parallel": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 2048 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 32 + "ef": 8192 } - }, + } + ], + "upload_params": { + "parallel": 128, + "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": 1600, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 8 } - } - ], - "upload_params": { - "parallel": 128, - "algorithm": "hnsw", - "data_type": "FLOAT16" - } - }, - { - "name": "redis-intel-float16-hnsw-m-16-ef-512", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "hnsw", - "data_type": "FLOAT16", - "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 512 - } - }, - "search_params": [ + }, { "parallel": 100, "search_params": { @@ -368,6 +380,30 @@ "ef": 2048 } }, + { + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, { "parallel": 200, "search_params": { @@ -417,196 +453,252 @@ } }, { - "parallel": 400, + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } + } + ], + "upload_params": { + "parallel": 128, + "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": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 2048 } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } } ], "upload_params": { @@ -616,326 +708,338 @@ } }, { - "name": "redis-intel-float16-hnsw-m-16-ef-1024", + "name": "redis-intel-float16-hnsw-m-4-ef-32", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", "data_type": "FLOAT16", "hnsw_config": { - "M": 16, - "EF_CONSTRUCTION": 1024 + "M": 4, + "EF_CONSTRUCTION": 32 } }, "search_params": [ { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4 } }, { - "parallel": 100, + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 2048 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 32 + "ef": 8192 } - }, + } + ], + "upload_params": { + "parallel": 128, + "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": 1600, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 8 } - } - ], - "upload_params": { - "parallel": 128, - "algorithm": "hnsw", - "data_type": "FLOAT16" - } - }, - { - "name": "redis-intel-float16-hnsw-m-64-ef-16", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "hnsw", - "data_type": "FLOAT16", - "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 16 - } - }, - "search_params": [ + }, { "parallel": 100, "search_params": { @@ -984,6 +1088,30 @@ "ef": 2048 } }, + { + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, { "parallel": 200, "search_params": { @@ -1033,196 +1161,252 @@ } }, { - "parallel": 400, + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } + } + ], + "upload_params": { + "parallel": 128, + "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": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 2048 } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } } ], "upload_params": { @@ -1232,326 +1416,338 @@ } }, { - "name": "redis-intel-float16-hnsw-m-64-ef-512", + "name": "redis-intel-float16-hnsw-m-8-ef-16", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", "data_type": "FLOAT16", "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 512 + "M": 8, + "EF_CONSTRUCTION": 16 } }, "search_params": [ { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4 } }, { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8 } }, { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 16 } }, { - "parallel": 100, + "parallel": 50, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 2048 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 32 + "ef": 8192 } - }, + } + ], + "upload_params": { + "parallel": 128, + "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": 1600, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 8 } - } - ], - "upload_params": { - "parallel": 128, - "algorithm": "hnsw", - "data_type": "FLOAT16" - } - }, - { - "name": "redis-intel-float16-hnsw-m-64-ef-1024", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "hnsw", - "data_type": "FLOAT16", - "hnsw_config": { - "M": 64, - "EF_CONSTRUCTION": 1024 - } - }, - "search_params": [ + }, { "parallel": 100, "search_params": { @@ -1600,6 +1796,30 @@ "ef": 2048 } }, + { + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, { "parallel": 200, "search_params": { @@ -1649,196 +1869,252 @@ } }, { - "parallel": 400, + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } + } + ], + "upload_params": { + "parallel": 128, + "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": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 2048 } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } } ], "upload_params": { @@ -1848,38 +2124,122 @@ } }, { - "name": "redis-intel-float16-hnsw-m-256-ef-16", + "name": "redis-intel-float16-hnsw-m-16-ef-8", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", "data_type": "FLOAT16", "hnsw_config": { - "M": 256, - "EF_CONSTRUCTION": 16 + "M": 16, + "EF_CONSTRUCTION": 8 } }, "search_params": [ { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4 } }, { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8 } }, { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 16 } }, { - "parallel": 100, + "parallel": 50, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, "search_params": { "ef": 128 } @@ -1908,6 +2268,30 @@ "ef": 2048 } }, + { + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, { "parallel": 200, "search_params": { @@ -1957,195 +2341,723 @@ } }, { - "parallel": 400, + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } + } + ], + "upload_params": { + "parallel": 128, + "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": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 800, + "parallel": 50, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 100, "search_params": { "ef": 16 } }, { - "parallel": 800, + "parallel": 100, "search_params": { "ef": 32 } }, { - "parallel": 800, + "parallel": 100, "search_params": { "ef": 64 } }, { - "parallel": 800, + "parallel": 100, "search_params": { "ef": 128 } }, { - "parallel": 800, + "parallel": 100, "search_params": { "ef": 256 } }, { - "parallel": 800, + "parallel": 100, "search_params": { "ef": 512 } }, { - "parallel": 800, + "parallel": 100, "search_params": { "ef": 1024 } }, { - "parallel": 800, + "parallel": 100, "search_params": { "ef": 2048 } }, { - "parallel": 1600, + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { "ef": 2048 } }, { - "parallel": 3200, + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } + } + ], + "upload_params": { + "parallel": 128, + "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": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 3200, + "parallel": 50, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } + } + ], + "upload_params": { + "parallel": 128, + "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": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 2048 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 16 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 32 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 64 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 128 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 256 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 512 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 1024 + } + }, + { + "parallel": 200, "search_params": { - "ef": 512 + "ef": 2048 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4096 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8192 } } ], @@ -2156,326 +3068,338 @@ } }, { - "name": "redis-intel-float16-hnsw-m-256-ef-512", + "name": "redis-intel-float16-hnsw-m-32-ef-8", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": "hnsw", "data_type": "FLOAT16", "hnsw_config": { - "M": 256, - "EF_CONSTRUCTION": 512 + "M": 32, + "EF_CONSTRUCTION": 8 } }, "search_params": [ { - "parallel": 100, + "parallel": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 100, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 400, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 400, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 800, + "parallel": 200, "search_params": { "ef": 2048 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 32 + "ef": 8192 } - }, + } + ], + "upload_params": { + "parallel": 128, + "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": 1600, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 1600, + "parallel": 50, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 3200, + "parallel": 50, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 3200, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 8 } - } - ], - "upload_params": { - "parallel": 128, - "algorithm": "hnsw", - "data_type": "FLOAT16" - } - }, - { - "name": "redis-intel-float16-hnsw-m-256-ef-1024", - "engine": "redis", - "connection_params": {}, - "collection_params": { - "algorithm": "hnsw", - "data_type": "FLOAT16", - "hnsw_config": { - "M": 256, - "EF_CONSTRUCTION": 1024 - } - }, - "search_params": [ + }, { "parallel": 100, "search_params": { @@ -2524,6 +3448,30 @@ "ef": 2048 } }, + { + "parallel": 100, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8 + } + }, { "parallel": 200, "search_params": { @@ -2573,196 +3521,252 @@ } }, { - "parallel": 400, + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } + } + ], + "upload_params": { + "parallel": 128, + "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": 50, + "search_params": { + "ef": 4 + } + }, + { + "parallel": 50, + "search_params": { + "ef": 8 + } + }, + { + "parallel": 50, "search_params": { "ef": 16 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 32 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 64 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 128 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 256 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 512 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 1024 } }, { - "parallel": 400, + "parallel": 50, "search_params": { "ef": 2048 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 16 + "ef": 4096 } }, { - "parallel": 800, + "parallel": 50, "search_params": { - "ef": 32 + "ef": 8192 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 4 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 8 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 16 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 32 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 1024 + "ef": 64 } }, { - "parallel": 800, + "parallel": 100, "search_params": { - "ef": 2048 + "ef": 128 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 16 + "ef": 256 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 32 + "ef": 512 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 64 + "ef": 1024 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 128 + "ef": 2048 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 256 + "ef": 4096 } }, { - "parallel": 1600, + "parallel": 100, "search_params": { - "ef": 512 + "ef": 8192 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 1024 + "ef": 4 } }, { - "parallel": 1600, + "parallel": 200, "search_params": { - "ef": 2048 + "ef": 8 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 16 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 32 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 64 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 128 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 256 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 512 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 1024 } }, { - "parallel": 3200, + "parallel": 200, "search_params": { "ef": 2048 } + }, + { + "parallel": 200, + "search_params": { + "ef": 4096 + } + }, + { + "parallel": 200, + "search_params": { + "ef": 8192 + } } ], "upload_params": { From 47c08c9f6e3534d0bf059b9dea3ed517d5c86a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Wed, 7 Aug 2024 04:00:35 -0700 Subject: [PATCH 137/204] Add REDIS_KEEP_DOCUMENTS and --only-configure flag --- engine/base_client/client.py | 4 +++- engine/clients/redis/config.py | 1 + engine/clients/redis/configure.py | 19 ++++++++++++++++++- run.py | 3 ++- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index c071a9d1..62133b1a 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -85,6 +85,7 @@ def run_experiment( skip_upload: bool = False, skip_search: bool = False, skip_if_exists: bool = True, + only_configure: bool = False, parallels: [int] = [], ): execution_params = self.configurator.execution_params( @@ -102,10 +103,11 @@ def run_experiment( ) return - if not skip_upload: + if not (not only_configure and skip_upload): print("Experiment stage: Configure") self.configurator.configure(dataset) + if not skip_upload and not only_configure: print("Experiment stage: Upload") upload_stats = self.uploader.upload( distance=dataset.config.distance, records=reader.read_data() diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index a953deb0..e322511e 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -5,6 +5,7 @@ REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) +REDIS_KEEP_DOCUMENTS = os.getenv("REDIS_KEEP_DOCUMENTS", 0) GPU_STATS = bool(int(os.getenv("GPU_STATS", 0))) GPU_STATS_ENDPOINT = os.getenv("GPU_STATS_ENDPOINT", None) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 31b557cb..49992b25 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -1,4 +1,5 @@ import redis +import time from redis import Redis, RedisCluster from redis.commands.search.field import ( GeoField, @@ -16,6 +17,7 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, + REDIS_KEEP_DOCUMENTS, ) @@ -51,7 +53,10 @@ def clean(self): for conn in conns: index = conn.ft() try: - index.dropindex(delete_documents=True) + if REDIS_KEEP_DOCUMENTS: + index.dropindex(delete_documents=False) + else: + index.dropindex(delete_documents=True) except redis.ResponseError as e: str_err = e.__str__() if ( @@ -120,6 +125,18 @@ def recreate(self, dataset: Dataset, collection_params): except redis.ResponseError as e: if "Index already exists" not in e.__str__(): raise e + if REDIS_KEEP_DOCUMENTS: + percent_index = float(search_namespace.info().get("percent_indexed")) + while percent_index < 1.0: + print( + "waiting for index to be fully processed. current percent index: {}".format( + percent_index * 100.0 + ) + ) + time.sleep(5) + percent_index = float( + search_namespace.info().get("percent_indexed") + ) if __name__ == "__main__": diff --git a/run.py b/run.py index dbb9f178..49c60335 100644 --- a/run.py +++ b/run.py @@ -22,6 +22,7 @@ def run( skip_upload: bool = False, skip_search: bool = False, skip_if_exists: bool = True, + only_configure: bool = False, exit_on_error: bool = True, timeout: float = 86400.0, ): @@ -52,7 +53,7 @@ def run( try: with stopit.ThreadingTimeout(timeout) as tt: client.run_experiment( - dataset, skip_upload, skip_search, skip_if_exists, parallels + dataset, skip_upload, skip_search, skip_if_exists, only_configure, parallels ) client.delete_client() From 4d1b39c83318ad19d05d83a2ff1b1eb972e4d40b Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sun, 29 Sep 2024 23:15:34 +0100 Subject: [PATCH 138/204] Added h5-multi file reader --- benchmark/dataset.py | 241 +- dataset_reader/ann_h5_multi_reader.py | 131 + dataset_reader/splitter.py | 94 + dataset_reader/verify.py | 53 + datasets/datasets.json | 817 +++++ engine/base_client/client.py | 18 +- experiments/configurations/create-intel.py | 4 +- .../redis-intel-hnsw-single-node.json | 3100 +++++++++++++---- run.py | 18 +- run_laion_1b_upload.sh | 17 + 10 files changed, 3856 insertions(+), 637 deletions(-) create mode 100644 dataset_reader/ann_h5_multi_reader.py create mode 100644 dataset_reader/splitter.py create mode 100644 dataset_reader/verify.py create mode 100644 run_laion_1b_upload.sh diff --git a/benchmark/dataset.py b/benchmark/dataset.py index 41485369..8dc955e0 100644 --- a/benchmark/dataset.py +++ b/benchmark/dataset.py @@ -3,13 +3,16 @@ import tarfile import urllib.request from dataclasses import dataclass, field -from typing import Dict, Optional - +from typing import Dict, List, Optional, Union +import boto3 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 tqdm import tqdm +from pathlib import Path @dataclass @@ -18,67 +21,231 @@ class DatasetConfig: distance: str name: str type: str - path: str - link: Optional[str] = None + path: Dict[ + str, List[Dict[str, str]] + ] # Now path is expected to handle multi-file structure for h5-multi + link: Optional[Dict[str, List[Dict[str, str]]]] = None schema: Optional[Dict[str, str]] = field(default_factory=dict) -READER_TYPE = {"h5": AnnH5Reader, "jsonl": JSONReader, "tar": AnnCompoundReader} +READER_TYPE = { + "h5": AnnH5Reader, + "h5-multi": AnnH5MultiReader, + "jsonl": JSONReader, + "tar": AnnCompoundReader, +} -# prepare progressbar +# 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: + if is_s3_link(self.config.link): + print("Use boto3 to download from S3. Faster!") + self._download_from_s3(self.config.link, target_path) + else: + 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, None, show_progress - ) + 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/dataset_reader/ann_h5_multi_reader.py b/dataset_reader/ann_h5_multi_reader.py new file mode 100644 index 00000000..5bd3e4b9 --- /dev/null +++ b/dataset_reader/ann_h5_multi_reader.py @@ -0,0 +1,131 @@ +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) -> 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: + # 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 + + train_vectors = data["train"][file_data_start:file_data_end] + for i, vector in enumerate(train_vectors): + 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/splitter.py b/dataset_reader/splitter.py new file mode 100644 index 00000000..6df62257 --- /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 00000000..80555699 --- /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 752bd4c3..cd1cf414 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -103,6 +103,823 @@ "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": 25, + "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": "http://ann-benchmarks.com/glove-25-angular.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 c071a9d1..9c1fbbc2 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -62,17 +62,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, @@ -86,11 +88,12 @@ def run_experiment( skip_search: bool = False, skip_if_exists: bool = True, parallels: [int] = [], + upload_start_idx: int = 0, + upload_end_idx: int = -1, ): 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 +108,12 @@ def run_experiment( if not skip_upload: print("Experiment stage: Configure") self.configurator.configure(dataset) - - print("Experiment stage: Upload") + 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,6 +127,7 @@ def run_experiment( **self.uploader.upload_params, **self.configurator.collection_params, }, + upload_start_idx,upload_end_idx, ) if not skip_search: diff --git a/experiments/configurations/create-intel.py b/experiments/configurations/create-intel.py index a26f3a6e..d9233f49 100644 --- a/experiments/configurations/create-intel.py +++ b/experiments/configurations/create-intel.py @@ -24,11 +24,11 @@ "data_type": data_type, }, } - for client in [50, 100, 200]: + for client in [1, 50, 100, 200]: for ef_runtime in ef_runtimes: test_config = { "parallel": client, - "search_params": {"ef": ef_runtime}, + "search_params": {"ef": ef_runtime, "data_type": data_type}, } config["search_params"].append(test_config) configs.append(config) diff --git a/experiments/configurations/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json index 8a5175b1..1c5e4bfc 100644 --- a/experiments/configurations/redis-intel-hnsw-single-node.json +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -12,220 +12,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -248,220 +368,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -484,220 +724,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -720,220 +1080,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -956,220 +1436,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -1193,219 +1793,339 @@ }, "search_params": [ { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { - "parallel": 50, + "parallel": 1, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 8 + "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": 100, "search_params": { - "ef": 16 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 2048, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 4096, + "data_type": "FLOAT16" + } + }, + { + "parallel": 100, + "search_params": { + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -1428,220 +2148,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -1664,220 +2504,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -1900,220 +2860,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -2136,220 +3216,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -2372,220 +3572,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -2608,220 +3928,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -2844,220 +4284,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -3080,220 +4640,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -3316,220 +4996,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], @@ -3552,220 +5352,340 @@ } }, "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": 50, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 50, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4 + "ef": 4, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8 + "ef": 8, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 16 + "ef": 16, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 32 + "ef": 32, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 64 + "ef": 64, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 128 + "ef": 128, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 256 + "ef": 256, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 512 + "ef": 512, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 1024 + "ef": 1024, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 2048 + "ef": 2048, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 4096 + "ef": 4096, + "data_type": "FLOAT16" } }, { "parallel": 200, "search_params": { - "ef": 8192 + "ef": 8192, + "data_type": "FLOAT16" } } ], diff --git a/run.py b/run.py index dbb9f178..4d770b00 100644 --- a/run.py +++ b/run.py @@ -24,6 +24,8 @@ def run( skip_if_exists: bool = True, exit_on_error: bool = True, timeout: float = 86400.0, + upload_start_idx: int = 0, + upload_end_idx: int = -1, ): """ Example: @@ -47,12 +49,24 @@ def run( for dataset_name, dataset_config in selected_datasets.items(): print(f"Running experiment: {engine_name} - {dataset_name}") client = ClientFactory(host).build_client(engine_config) - dataset = Dataset(dataset_config) + dataset = Dataset( + dataset_config, + skip_upload, + skip_search, + upload_start_idx, + upload_end_idx, + ) dataset.download() try: with stopit.ThreadingTimeout(timeout) as tt: client.run_experiment( - dataset, skip_upload, skip_search, skip_if_exists, parallels + dataset, + skip_upload, + skip_search, + skip_if_exists, + parallels, + upload_start_idx, + upload_end_idx, ) client.delete_client() diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh new file mode 100644 index 00000000..5f3af834 --- /dev/null +++ b/run_laion_1b_upload.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -x + +part_size=10000000 # 10 million elements per part + +# Create the output directory if it doesn't exist + +for i in {0..99}; do + # Calculate the start and end indices for each part + start_idx=$((i * part_size)) + end_idx=$(((i + 1) * part_size)) + + # Launch each process in a new screen session + screen -dmS split_process_$i bash -c "python3 run.py --engines redis-intel-float16-hnsw-m-16-ef-32 --dataset laion-img-emb-768d-1Billion-cosine --skip-search --upload_start_idx $start_idx --upload_end_idx $end_idx --part $((i + 1))" +done + From 7e140c585387a5acd9b7f41378975be4c2f448ae Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 2 Oct 2024 13:23:50 +0100 Subject: [PATCH 139/204] Fixed positional arg issue --- engine/base_client/client.py | 3 ++- run_laion_1b_upload.sh | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 9c1fbbc2..c78b65bc 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -127,7 +127,8 @@ def run_experiment( **self.uploader.upload_params, **self.configurator.collection_params, }, - upload_start_idx,upload_end_idx, + upload_start_idx=upload_start_idx, + upload_end_idx=upload_end_idx, ) if not skip_search: diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index 5f3af834..a2337a7e 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -10,8 +10,7 @@ for i in {0..99}; do # Calculate the start and end indices for each part start_idx=$((i * part_size)) end_idx=$(((i + 1) * part_size)) - + # Launch each process in a new screen session - screen -dmS split_process_$i bash -c "python3 run.py --engines redis-intel-float16-hnsw-m-16-ef-32 --dataset laion-img-emb-768d-1Billion-cosine --skip-search --upload_start_idx $start_idx --upload_end_idx $end_idx --part $((i + 1))" + screen -dmS loader_$i bash -c "REDIS_PORT=30001 REDIS_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --dataset laion-img-emb-768d-1Billion-cosine --skip-search --upload_start_idx $start_idx --upload_end_idx $end_idx --part $((i + 1))" done - From 2d8e250746a831de8ebdd9625cc9a3278b1f3e8c Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 2 Oct 2024 13:28:26 +0100 Subject: [PATCH 140/204] Fixed some typos on loader script --- run_laion_1b_upload.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index a2337a7e..9582122a 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -12,5 +12,5 @@ for i in {0..99}; do end_idx=$(((i + 1) * part_size)) # Launch each process in a new screen session - screen -dmS loader_$i bash -c "REDIS_PORT=30001 REDIS_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --dataset laion-img-emb-768d-1Billion-cosine --skip-search --upload_start_idx $start_idx --upload_end_idx $end_idx --part $((i + 1))" + screen -dmS loader_$i bash -c "REDIS_PORT=30001 REDIS_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --datasets laion-img-emb-768d-1Billion-cosine --skip-search --upload-start-idx $start_idx --upload-end-idx $end_idx " done From 6f50710d5dcd3b6093416f1a047b2ffb8939e7ef Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 2 Oct 2024 13:40:10 +0100 Subject: [PATCH 141/204] using pipeline 1 and batch size 1 on CE upload --- .../configurations/create-intel-ce-edition.py | 39 +++++++++++++++ .../redis-intel-hnsw-single-node.json | 48 ++++++++++++------- 2 files changed, 71 insertions(+), 16 deletions(-) create mode 100644 experiments/configurations/create-intel-ce-edition.py diff --git a/experiments/configurations/create-intel-ce-edition.py b/experiments/configurations/create-intel-ce-edition.py new file mode 100644 index 00000000..75477f3f --- /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] +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": 1, + "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/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json index 1c5e4bfc..9fffc764 100644 --- a/experiments/configurations/redis-intel-hnsw-single-node.json +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -350,7 +350,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -706,7 +707,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -1062,7 +1064,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -1418,7 +1421,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -1774,7 +1778,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -2130,7 +2135,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -2486,7 +2492,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -2842,7 +2849,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -3198,7 +3206,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -3554,7 +3563,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -3910,7 +3920,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -4266,7 +4277,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -4622,7 +4634,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -4978,7 +4991,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -5334,7 +5348,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } @@ -5690,7 +5705,8 @@ } ], "upload_params": { - "parallel": 128, + "parallel": 1, + "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" } From f9e4e2df01bbee0de982fe3ddf1061b50f17d556 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 09:16:17 +0100 Subject: [PATCH 142/204] Fixed laion-1b queries and dimension --- datasets/datasets.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datasets/datasets.json b/datasets/datasets.json index cd1cf414..f9728a68 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -105,7 +105,7 @@ }, { "name": "laion-img-emb-768d-1Billion-cosine", - "vector_size": 25, + "vector_size": 768, "distance": "cosine", "type": "h5-multi", "path": { @@ -914,7 +914,7 @@ "queries": [ { "path": "laion-1b/laion-img-emb-768d-1Billion-cosine-queries.hdf5", - "link": "http://ann-benchmarks.com/glove-25-angular.hdf5", + "link": "https://s3.amazonaws.com/benchmarks.redislabs/vecsim/laion-1b/laion-img-emb-768d-1Billion-cosine-queries.hdf5", "file_size": "38.7 MB" } ] From c0a5ad30a829f830f94246648a14ff0bd934b040 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 10:52:59 +0100 Subject: [PATCH 143/204] control the number of concurrent screen sessions on the 1b loader --- run_laion_1b_upload.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index 9582122a..15cf2ec6 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -3,14 +3,30 @@ set -x part_size=10000000 # 10 million elements per part +max_screens=5 # Maximum number of screens running simultaneously + +# Function to wait until the number of running screens is below the limit +wait_for_available_screen_slot() { + echo "waiting for avaiable 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 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)) # Launch each process in a new screen session - screen -dmS loader_$i bash -c "REDIS_PORT=30001 REDIS_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --datasets laion-img-emb-768d-1Billion-cosine --skip-search --upload-start-idx $start_idx --upload-end-idx $end_idx " + screen -dmS loader_$i bash -c "REDIS_PORT=30001 REDIS_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --datasets laion-img-emb-768d-1Billion-cosine --skip-search --upload-start-idx $start_idx --upload-end-idx $end_idx" + + # Print progress + echo "Started screen loader_$i: uploading indices $start_idx to $end_idx" + echo "$((i+1))/100 processes started" done From 1448b729dfd6499d8c4c1fc3b5d22f4ac6e2ac2f Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 11:49:08 +0100 Subject: [PATCH 144/204] split hdf5 file into chunks for reads with less overhead --- dataset_reader/ann_h5_multi_reader.py | 31 +++++++++++++++++---------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/dataset_reader/ann_h5_multi_reader.py b/dataset_reader/ann_h5_multi_reader.py index 5bd3e4b9..984d3883 100644 --- a/dataset_reader/ann_h5_multi_reader.py +++ b/dataset_reader/ann_h5_multi_reader.py @@ -51,7 +51,9 @@ def read_queries(self) -> Iterator[Query]: expected_scores=expected_scores.tolist(), ) - def read_data(self, start_idx: int = 0, end_idx: int = None) -> Iterator[Record]: + def read_data( + self, start_idx: int = 0, end_idx: int = None, chunk_size: int = 10_000 + ) -> Iterator[Record]: """ Reads the 'train' data vectors from multiple HDF5 files based on the specified range. @@ -80,20 +82,27 @@ def read_data(self, start_idx: int = 0, end_idx: int = None) -> Iterator[Record] # 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 - train_vectors = data["train"][file_data_start:file_data_end] - for i, vector in enumerate(train_vectors): - if self.normalize: - vector /= np.linalg.norm(vector) - yield Record( - id=current_idx + vectors_yielded, - vector=vector.tolist(), - metadata=None, - ) - vectors_yielded += 1 + # 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__": From 0b01eb48a7288bd40fc9f5fa24e4ef0676084ce2 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 11:51:48 +0100 Subject: [PATCH 145/204] 5 clients per loader on CE loader --- .../configurations/create-intel-ce-edition.py | 2 +- .../redis-intel-hnsw-single-node.json | 32 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/experiments/configurations/create-intel-ce-edition.py b/experiments/configurations/create-intel-ce-edition.py index 75477f3f..3d972d4b 100644 --- a/experiments/configurations/create-intel-ce-edition.py +++ b/experiments/configurations/create-intel-ce-edition.py @@ -19,7 +19,7 @@ }, "search_params": [], "upload_params": { - "parallel": 1, + "parallel":5, "batch_size": 1, "algorithm": algo, "data_type": data_type, diff --git a/experiments/configurations/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json index 9fffc764..ce7d5388 100644 --- a/experiments/configurations/redis-intel-hnsw-single-node.json +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -350,7 +350,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -707,7 +707,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -1064,7 +1064,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -1421,7 +1421,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -1778,7 +1778,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -2135,7 +2135,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -2492,7 +2492,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -2849,7 +2849,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -3206,7 +3206,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -3563,7 +3563,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -3920,7 +3920,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -4277,7 +4277,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -4634,7 +4634,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -4991,7 +4991,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -5348,7 +5348,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -5705,7 +5705,7 @@ } ], "upload_params": { - "parallel": 1, + "parallel": 5, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" From 5e3b711171e4112ddb34bb174f334dd7e59c99ce Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 13:36:48 +0100 Subject: [PATCH 146/204] Using 50 concurrent loaders on laion-1b --- run_laion_1b_upload.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index 15cf2ec6..08fcae09 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -3,7 +3,7 @@ set -x part_size=10000000 # 10 million elements per part -max_screens=5 # Maximum number of screens running simultaneously +max_screens=50 # Maximum number of screens running simultaneously # Function to wait until the number of running screens is below the limit wait_for_available_screen_slot() { @@ -15,7 +15,7 @@ wait_for_available_screen_slot() { # Create the output directory if it doesn't exist -for i in {0..99}; do +for i in {10..99}; do # Wait until there's an available screen slot wait_for_available_screen_slot From 88552eb43f70da1bf1fc991c5daef8ce2b26e8a7 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 13:41:26 +0100 Subject: [PATCH 147/204] saving outputs of each loader --- run_laion_1b_upload.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index 08fcae09..dd64b42c 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -1,19 +1,19 @@ #!/bin/bash -set -x part_size=10000000 # 10 million elements per part max_screens=50 # Maximum number of screens running simultaneously # Function to wait until the number of running screens is below the limit wait_for_available_screen_slot() { - echo "waiting for avaiable screen." + 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 for i in {10..99}; do # Wait until there's an available screen slot @@ -23,8 +23,11 @@ for i in {10..99}; do start_idx=$((i * part_size)) end_idx=$(((i + 1) * part_size)) - # Launch each process in a new screen session - screen -dmS loader_$i bash -c "REDIS_PORT=30001 REDIS_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --datasets laion-img-emb-768d-1Billion-cosine --skip-search --upload-start-idx $start_idx --upload-end-idx $end_idx" + # Log file path + log_file="logs/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_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --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" From dca16d51fdb4d6c399ceee2af3130e248039df72 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 14:35:21 +0100 Subject: [PATCH 148/204] Adjust code for re-indexing --- engine/clients/redis/config.py | 2 +- engine/clients/redis/configure.py | 5 +- engine/clients/redis/upload.py | 88 ++++++++++++++++++------------- 3 files changed, 53 insertions(+), 42 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index e322511e..8fcf04c2 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -5,7 +5,7 @@ REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) -REDIS_KEEP_DOCUMENTS = os.getenv("REDIS_KEEP_DOCUMENTS", 0) +REDIS_KEEP_DOCUMENTS = bool(os.getenv("REDIS_KEEP_DOCUMENTS", 0)) GPU_STATS = bool(int(os.getenv("GPU_STATS", 0))) GPU_STATS_ENDPOINT = os.getenv("GPU_STATS_ENDPOINT", None) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index 49992b25..edcb20ae 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -53,10 +53,7 @@ def clean(self): for conn in conns: index = conn.ft() try: - if REDIS_KEEP_DOCUMENTS: - index.dropindex(delete_documents=False) - else: - index.dropindex(delete_documents=True) + index.dropindex(delete_documents=(not REDIS_KEEP_DOCUMENTS)) except redis.ResponseError as e: str_err = e.__str__() if ( diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 80fd12a0..39ecfa65 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -3,7 +3,7 @@ from ml_dtypes import bfloat16 import requests import json - +import random import numpy as np from redis import Redis, RedisCluster from engine.base_client.upload import BaseUploader @@ -14,6 +14,7 @@ REDIS_CLUSTER, GPU_STATS, GPU_STATS_ENDPOINT, + REDIS_KEEP_DOCUMENTS, ) from engine.clients.redis.helper import convert_to_redis_coords @@ -48,46 +49,50 @@ def init_client(cls, host, distance, connection_params, upload_params): 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, ids: List[int], vectors: List[list], metadata: Optional[List[dict]] ): - p = cls.client.pipeline(transaction=False) - for i in range(len(ids)): - idx = ids[i] - vec = vectors[i] - meta = metadata[i] if metadata else {} - geopoints = {} - payload = {} - if meta is not None: - for k, v in meta.items(): - # This is a patch for arxiv-titles dataset where we have a list of "labels", and - # we want to index all of them under the same TAG field (whose separator is ';'). - if k == "labels": - payload[k] = ";".join(v) - if ( - v is not None - and not isinstance(v, dict) - and not isinstance(v, list) - ): - payload[k] = v - # Redis treats geopoints differently and requires putting them as - # a comma-separated string with lat and lon coordinates - geopoints = { - k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) - for k, v in meta.items() - if isinstance(v, dict) - } - cls.client.hset( - str(idx), - mapping={ - "vector": np.array(vec).astype(cls.np_data_type).tobytes(), - **payload, - **geopoints, - }, - ) - p.execute() + # if we don't delete the docs we can skip sending them again + # By default we always send the docs + if REDIS_KEEP_DOCUMENTS is False: + p = cls.client.pipeline(transaction=False) + for i in range(len(ids)): + idx = ids[i] + vec = vectors[i] + meta = metadata[i] if metadata else {} + geopoints = {} + payload = {} + if meta is not None: + for k, v in meta.items(): + # This is a patch for arxiv-titles dataset where we have a list of "labels", and + # we want to index all of them under the same TAG field (whose separator is ';'). + if k == "labels": + payload[k] = ";".join(v) + if ( + v is not None + and not isinstance(v, dict) + and not isinstance(v, list) + ): + payload[k] = v + # Redis treats geopoints differently and requires putting them as + # a comma-separated string with lat and lon coordinates + geopoints = { + k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) + for k, v in meta.items() + if isinstance(v, dict) + } + cls.client.hset( + str(idx), + mapping={ + "vector": np.array(vec).astype(cls.np_data_type).tobytes(), + **payload, + **geopoints, + }, + ) + p.execute() @classmethod def post_upload(cls, _distance): @@ -120,7 +125,16 @@ def post_upload(cls, _distance): return {} def get_memory_usage(cls): - used_memory = cls.client_decode.info("memory")["used_memory"] + 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": From 7d53dab2a6ed28354b05f59d6578f72e826d2cce Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 18:47:17 +0100 Subject: [PATCH 149/204] increase client count per runner --- engine/clients/redis/upload.py | 6 ++-- .../configurations/create-intel-ce-edition.py | 2 +- .../redis-intel-hnsw-single-node.json | 32 +++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 39ecfa65..b7813897 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -58,7 +58,7 @@ def upload_batch( # if we don't delete the docs we can skip sending them again # By default we always send the docs if REDIS_KEEP_DOCUMENTS is False: - p = cls.client.pipeline(transaction=False) + #p = cls.client.pipeline(transaction=False) for i in range(len(ids)): idx = ids[i] vec = vectors[i] @@ -84,7 +84,7 @@ def upload_batch( for k, v in meta.items() if isinstance(v, dict) } - cls.client.hset( + cls.client.hsetnx( str(idx), mapping={ "vector": np.array(vec).astype(cls.np_data_type).tobytes(), @@ -92,7 +92,7 @@ def upload_batch( **geopoints, }, ) - p.execute() + #p.execute() @classmethod def post_upload(cls, _distance): diff --git a/experiments/configurations/create-intel-ce-edition.py b/experiments/configurations/create-intel-ce-edition.py index 3d972d4b..c451a683 100644 --- a/experiments/configurations/create-intel-ce-edition.py +++ b/experiments/configurations/create-intel-ce-edition.py @@ -19,7 +19,7 @@ }, "search_params": [], "upload_params": { - "parallel":5, + "parallel":10, "batch_size": 1, "algorithm": algo, "data_type": data_type, diff --git a/experiments/configurations/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json index ce7d5388..609efeea 100644 --- a/experiments/configurations/redis-intel-hnsw-single-node.json +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -350,7 +350,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -707,7 +707,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -1064,7 +1064,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -1421,7 +1421,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -1778,7 +1778,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -2135,7 +2135,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -2492,7 +2492,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -2849,7 +2849,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -3206,7 +3206,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -3563,7 +3563,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -3920,7 +3920,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -4277,7 +4277,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -4634,7 +4634,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -4991,7 +4991,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -5348,7 +5348,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" @@ -5705,7 +5705,7 @@ } ], "upload_params": { - "parallel": 5, + "parallel": 10, "batch_size": 1, "algorithm": "hnsw", "data_type": "FLOAT16" From 23e23010f11a97cc8f13c7c6c98079d65699ed8e Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 18:49:04 +0100 Subject: [PATCH 150/204] updated upload runner --- run_laion_1b_upload.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index dd64b42c..4794e80b 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -2,7 +2,7 @@ part_size=10000000 # 10 million elements per part -max_screens=50 # Maximum number of screens running simultaneously +max_screens=100 # Maximum number of screens running simultaneously # Function to wait until the number of running screens is below the limit wait_for_available_screen_slot() { @@ -15,7 +15,7 @@ wait_for_available_screen_slot() { # Create the output directory if it doesn't exist mkdir -p logs -for i in {10..99}; do +for i in {0..99}; do # Wait until there's an available screen slot wait_for_available_screen_slot From 38fb0c6523dbc4a8baec34a2146f0b7ab02e75ca Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 18:49:11 +0100 Subject: [PATCH 151/204] updated upload runner --- run_laion_1b_upload.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index 4794e80b..4970d4b4 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -13,7 +13,7 @@ wait_for_available_screen_slot() { } # Create the output directory if it doesn't exist -mkdir -p logs +mkdir -p logs-new for i in {0..99}; do # Wait until there's an available screen slot @@ -24,7 +24,7 @@ for i in {0..99}; do end_idx=$(((i + 1) * part_size)) # Log file path - log_file="logs/loader_$i.log" + 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_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --datasets laion-img-emb-768d-1Billion-cosine --skip-search --upload-start-idx $start_idx --upload-end-idx $end_idx &> $log_file" From 6ba28d44be80699a1e10c26528e2bf967413ea23 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 3 Oct 2024 18:52:26 +0100 Subject: [PATCH 152/204] using hsetnx to speedup load in case of vector present --- engine/clients/redis/upload.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index b7813897..33acaef3 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -86,11 +86,13 @@ def upload_batch( } cls.client.hsetnx( str(idx), - mapping={ - "vector": np.array(vec).astype(cls.np_data_type).tobytes(), - **payload, - **geopoints, - }, + "vector", + np.array(vec).astype(cls.np_data_type).tobytes() + # mapping={ + # "vector": np.array(vec).astype(cls.np_data_type).tobytes(), + # **payload, + # **geopoints, + # }, ) #p.execute() From e3386befa2fa6fb885488c067f4e449784257b3d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 4 Oct 2024 11:03:18 +0100 Subject: [PATCH 153/204] logging missing keys --- engine/clients/redis/upload.py | 68 +++++++++++++++++----------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 33acaef3..9b4f3f1d 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -61,39 +61,41 @@ def upload_batch( #p = cls.client.pipeline(transaction=False) for i in range(len(ids)): idx = ids[i] - vec = vectors[i] - meta = metadata[i] if metadata else {} - geopoints = {} - payload = {} - if meta is not None: - for k, v in meta.items(): - # This is a patch for arxiv-titles dataset where we have a list of "labels", and - # we want to index all of them under the same TAG field (whose separator is ';'). - if k == "labels": - payload[k] = ";".join(v) - if ( - v is not None - and not isinstance(v, dict) - and not isinstance(v, list) - ): - payload[k] = v - # Redis treats geopoints differently and requires putting them as - # a comma-separated string with lat and lon coordinates - geopoints = { - k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) - for k, v in meta.items() - if isinstance(v, dict) - } - cls.client.hsetnx( - str(idx), - "vector", - np.array(vec).astype(cls.np_data_type).tobytes() - # mapping={ - # "vector": np.array(vec).astype(cls.np_data_type).tobytes(), - # **payload, - # **geopoints, - # }, - ) + vector_key = str(idx) + if cls.client.exists(vector_key) is False: + print(f"Setting missing key: {vector_key}") + vec = vectors[i] + meta = metadata[i] if metadata else {} + geopoints = {} + payload = {} + if meta is not None: + for k, v in meta.items(): + # This is a patch for arxiv-titles dataset where we have a list of "labels", and + # we want to index all of them under the same TAG field (whose separator is ';'). + if k == "labels": + payload[k] = ";".join(v) + if ( + v is not None + and not isinstance(v, dict) + and not isinstance(v, list) + ): + payload[k] = v + # Redis treats geopoints differently and requires putting them as + # a comma-separated string with lat and lon coordinates + geopoints = { + k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) + for k, v in meta.items() + if isinstance(v, dict) + } + cls.client.hset( + vector_key, + mapping={ + "vector": np.array(vec).astype(cls.np_data_type).tobytes(), + **payload, + **geopoints, + }, + ) + #p.execute() @classmethod From 946ff604c4afa5a7a1ba1bf14487ad03e7dce546 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 4 Oct 2024 11:26:48 +0100 Subject: [PATCH 154/204] Setting REDIS_KEEP_DOCUMENTS=1 as default --- engine/clients/redis/config.py | 2 +- engine/clients/redis/upload.py | 77 ++++++++++++++++------------------ 2 files changed, 36 insertions(+), 43 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index 8fcf04c2..2fbcbf64 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -5,7 +5,7 @@ REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) -REDIS_KEEP_DOCUMENTS = bool(os.getenv("REDIS_KEEP_DOCUMENTS", 0)) +REDIS_KEEP_DOCUMENTS = bool(os.getenv("REDIS_KEEP_DOCUMENTS", 1)) GPU_STATS = bool(int(os.getenv("GPU_STATS", 0))) GPU_STATS_ENDPOINT = os.getenv("GPU_STATS_ENDPOINT", None) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 9b4f3f1d..3caa2876 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -55,48 +55,41 @@ def init_client(cls, host, distance, connection_params, upload_params): def upload_batch( cls, ids: List[int], vectors: List[list], metadata: Optional[List[dict]] ): - # if we don't delete the docs we can skip sending them again - # By default we always send the docs - if REDIS_KEEP_DOCUMENTS is False: - #p = cls.client.pipeline(transaction=False) - for i in range(len(ids)): - idx = ids[i] - vector_key = str(idx) - if cls.client.exists(vector_key) is False: - print(f"Setting missing key: {vector_key}") - vec = vectors[i] - meta = metadata[i] if metadata else {} - geopoints = {} - payload = {} - if meta is not None: - for k, v in meta.items(): - # This is a patch for arxiv-titles dataset where we have a list of "labels", and - # we want to index all of them under the same TAG field (whose separator is ';'). - if k == "labels": - payload[k] = ";".join(v) - if ( - v is not None - and not isinstance(v, dict) - and not isinstance(v, list) - ): - payload[k] = v - # Redis treats geopoints differently and requires putting them as - # a comma-separated string with lat and lon coordinates - geopoints = { - k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) - for k, v in meta.items() - if isinstance(v, dict) - } - cls.client.hset( - vector_key, - mapping={ - "vector": np.array(vec).astype(cls.np_data_type).tobytes(), - **payload, - **geopoints, - }, - ) - - #p.execute() + for i in range(len(ids)): + idx = ids[i] + vector_key = str(idx) + vec = vectors[i] + meta = metadata[i] if metadata else {} + geopoints = {} + payload = {} + if meta is not None: + for k, v in meta.items(): + # This is a patch for arxiv-titles dataset where we have a list of "labels", and + # we want to index all of them under the same TAG field (whose separator is ';'). + if k == "labels": + payload[k] = ";".join(v) + if ( + v is not None + and not isinstance(v, dict) + and not isinstance(v, list) + ): + payload[k] = v + # Redis treats geopoints differently and requires putting them as + # a comma-separated string with lat and lon coordinates + geopoints = { + k: ",".join(map(str, convert_to_redis_coords(v["lon"], v["lat"]))) + for k, v in meta.items() + if isinstance(v, dict) + } + cls.client.hset( + vector_key, + mapping={ + "vector": np.array(vec).astype(cls.np_data_type).tobytes(), + **payload, + **geopoints, + }, + ) + @classmethod def post_upload(cls, _distance): From 32b38432ccb5423238a5bd102e1eefd2aa8fc9cb Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Fri, 4 Oct 2024 11:35:10 +0100 Subject: [PATCH 155/204] Setting REDIS_KEEP_DOCUMENTS=1 as default --- engine/clients/redis/configure.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/engine/clients/redis/configure.py b/engine/clients/redis/configure.py index edcb20ae..5f0f8e51 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -66,7 +66,8 @@ def clean(self): print( "Given the FT.DROPINDEX command failed, we're flushing the entire DB..." ) - conn.flushall() + if REDIS_KEEP_DOCUMENTS is False: + conn.flushall() else: raise e @@ -122,18 +123,6 @@ def recreate(self, dataset: Dataset, collection_params): except redis.ResponseError as e: if "Index already exists" not in e.__str__(): raise e - if REDIS_KEEP_DOCUMENTS: - percent_index = float(search_namespace.info().get("percent_indexed")) - while percent_index < 1.0: - print( - "waiting for index to be fully processed. current percent index: {}".format( - percent_index * 100.0 - ) - ) - time.sleep(5) - percent_index = float( - search_namespace.info().get("percent_indexed") - ) if __name__ == "__main__": From 2617cb405395bd01def8f7840fc0cf58c662b8ac Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sat, 12 Oct 2024 08:27:22 +0100 Subject: [PATCH 156/204] Added MAX_QUERIES feature --- engine/base_client/search.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index a58d02d0..aa511be5 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: @@ -68,11 +71,15 @@ def search_all( self.setup_search() search_one = functools.partial(self.__class__._search_one, top=top) + used_queries = queries + if MAX_QUERIES > 0: + used_queries = queries[0:MAX_QUERIES-1] + print(f"limitting queries to [0:{MAX_QUERIES}]") 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 +98,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 From 03b742b38dc981377cec8fd3b9c6ada69330f8c1 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sat, 12 Oct 2024 08:31:43 +0100 Subject: [PATCH 157/204] fixed MAX_QUERIES --- engine/base_client/search.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index aa511be5..a52ab47d 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -2,6 +2,7 @@ import time from multiprocessing import get_context from typing import Iterable, List, Optional, Tuple +import itertools import numpy as np import tqdm @@ -72,9 +73,11 @@ def search_all( search_one = functools.partial(self.__class__._search_one, top=top) used_queries = queries + + if MAX_QUERIES > 0: - used_queries = queries[0:MAX_QUERIES-1] - print(f"limitting queries to [0:{MAX_QUERIES}]") + used_queries = itertools.islice(queries, MAX_QUERIES) + print(f"Limiting queries to [0:{MAX_QUERIES-1}]") if parallel == 1: start = time.perf_counter() From 353e125b138525c151f4444a1adc4d56dff75e1b Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Sun, 13 Oct 2024 17:15:47 +0100 Subject: [PATCH 158/204] Added REDIS_JUST_INDEX config to avoid resending duplicate data on the wire --- engine/clients/redis/config.py | 1 + engine/clients/redis/upload.py | 4 +- .../configurations/create-intel-ce-edition.py | 2 +- .../redis-intel-hnsw-single-node.json | 908 +++++++++++++++++- run_laion_1b_upload.sh | 3 +- 5 files changed, 909 insertions(+), 9 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index 2fbcbf64..4c101bcf 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -6,6 +6,7 @@ REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) REDIS_KEEP_DOCUMENTS = bool(os.getenv("REDIS_KEEP_DOCUMENTS", 1)) +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) diff --git a/engine/clients/redis/upload.py b/engine/clients/redis/upload.py index 3caa2876..e76e7da3 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -14,7 +14,7 @@ REDIS_CLUSTER, GPU_STATS, GPU_STATS_ENDPOINT, - REDIS_KEEP_DOCUMENTS, + REDIS_JUST_INDEX, ) from engine.clients.redis.helper import convert_to_redis_coords @@ -55,6 +55,8 @@ def init_client(cls, host, distance, connection_params, upload_params): def upload_batch( cls, ids: List[int], vectors: List[list], metadata: Optional[List[dict]] ): + if REDIS_JUST_INDEX: + return for i in range(len(ids)): idx = ids[i] vector_key = str(idx) diff --git a/experiments/configurations/create-intel-ce-edition.py b/experiments/configurations/create-intel-ce-edition.py index c451a683..61dcbf2c 100644 --- a/experiments/configurations/create-intel-ce-edition.py +++ b/experiments/configurations/create-intel-ce-edition.py @@ -2,7 +2,7 @@ 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] +ef_runtimes = [4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768] data_type = "FLOAT16" for algo in ["hnsw"]: configs = [] diff --git a/experiments/configurations/redis-intel-hnsw-single-node.json b/experiments/configurations/redis-intel-hnsw-single-node.json index 609efeea..d791e289 100644 --- a/experiments/configurations/redis-intel-hnsw-single-node.json +++ b/experiments/configurations/redis-intel-hnsw-single-node.json @@ -96,6 +96,20 @@ "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": { @@ -180,6 +194,20 @@ "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": { @@ -264,6 +292,20 @@ "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": { @@ -347,6 +389,20 @@ "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": { @@ -453,6 +509,20 @@ "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": { @@ -537,6 +607,20 @@ "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": { @@ -621,6 +705,20 @@ "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": { @@ -704,6 +802,20 @@ "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": { @@ -810,6 +922,20 @@ "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": { @@ -894,6 +1020,20 @@ "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": { @@ -978,6 +1118,20 @@ "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": { @@ -1061,6 +1215,20 @@ "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": { @@ -1167,6 +1335,20 @@ "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": { @@ -1251,6 +1433,20 @@ "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": { @@ -1335,6 +1531,20 @@ "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": { @@ -1418,6 +1628,20 @@ "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": { @@ -1524,6 +1748,20 @@ "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": { @@ -1608,6 +1846,20 @@ "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": { @@ -1692,6 +1944,20 @@ "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": { @@ -1775,6 +2041,20 @@ "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": { @@ -1881,6 +2161,20 @@ "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": { @@ -1966,14 +2260,28 @@ } }, { - "parallel": 100, + "parallel": 50, "search_params": { - "ef": 4, + "ef": 16384, "data_type": "FLOAT16" } }, { - "parallel": 100, + "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" @@ -2049,6 +2357,20 @@ "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": { @@ -2132,6 +2454,20 @@ "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": { @@ -2238,6 +2574,20 @@ "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": { @@ -2322,6 +2672,20 @@ "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": { @@ -2406,6 +2770,20 @@ "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": { @@ -2489,6 +2867,20 @@ "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": { @@ -2595,6 +2987,20 @@ "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": { @@ -2679,6 +3085,20 @@ "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": { @@ -2763,6 +3183,20 @@ "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": { @@ -2846,6 +3280,20 @@ "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": { @@ -2952,6 +3400,20 @@ "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": { @@ -3036,6 +3498,20 @@ "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": { @@ -3120,6 +3596,20 @@ "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": { @@ -3203,6 +3693,20 @@ "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": { @@ -3309,6 +3813,20 @@ "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": { @@ -3393,6 +3911,20 @@ "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": { @@ -3477,6 +4009,20 @@ "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": { @@ -3560,6 +4106,20 @@ "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": { @@ -3666,6 +4226,20 @@ "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": { @@ -3750,6 +4324,20 @@ "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": { @@ -3816,21 +4404,35 @@ { "parallel": 100, "search_params": { - "ef": 2048, + "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": 4096, + "ef": 16384, "data_type": "FLOAT16" } }, { "parallel": 100, "search_params": { - "ef": 8192, + "ef": 32768, "data_type": "FLOAT16" } }, @@ -3917,6 +4519,20 @@ "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": { @@ -4023,6 +4639,20 @@ "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": { @@ -4107,6 +4737,20 @@ "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": { @@ -4191,6 +4835,20 @@ "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": { @@ -4274,6 +4932,20 @@ "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": { @@ -4380,6 +5052,20 @@ "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": { @@ -4464,6 +5150,20 @@ "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": { @@ -4548,6 +5248,20 @@ "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": { @@ -4631,6 +5345,20 @@ "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": { @@ -4737,6 +5465,20 @@ "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": { @@ -4821,6 +5563,20 @@ "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": { @@ -4905,6 +5661,20 @@ "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": { @@ -4988,6 +5758,20 @@ "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": { @@ -5094,6 +5878,20 @@ "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": { @@ -5178,6 +5976,20 @@ "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": { @@ -5262,6 +6074,20 @@ "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": { @@ -5345,6 +6171,20 @@ "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": { @@ -5451,6 +6291,20 @@ "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": { @@ -5535,6 +6389,20 @@ "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": { @@ -5619,6 +6487,20 @@ "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": { @@ -5702,6 +6584,20 @@ "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": { diff --git a/run_laion_1b_upload.sh b/run_laion_1b_upload.sh index 4970d4b4..7c3bc7da 100644 --- a/run_laion_1b_upload.sh +++ b/run_laion_1b_upload.sh @@ -3,6 +3,7 @@ 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() { @@ -27,7 +28,7 @@ for i in {0..99}; do 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_CLUSTER=1 python3 run.py --host 192.168.2.6 --engines redis-intel-float16-hnsw-m-16-ef-32 --datasets laion-img-emb-768d-1Billion-cosine --skip-search --upload-start-idx $start_idx --upload-end-idx $end_idx &> $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" From db1896d602f30198cca217fec5052a21712617b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Tue, 15 Oct 2024 15:09:48 +0200 Subject: [PATCH 159/204] Add *args, **kwargs to read data method in reader interface (#10) --- dataset_reader/ann_h5_multi_reader.py | 2 +- dataset_reader/ann_h5_reader.py | 2 +- dataset_reader/base_reader.py | 2 +- dataset_reader/json_reader.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dataset_reader/ann_h5_multi_reader.py b/dataset_reader/ann_h5_multi_reader.py index 984d3883..64dfd7f9 100644 --- a/dataset_reader/ann_h5_multi_reader.py +++ b/dataset_reader/ann_h5_multi_reader.py @@ -52,7 +52,7 @@ def read_queries(self) -> Iterator[Query]: ) def read_data( - self, start_idx: int = 0, end_idx: int = None, chunk_size: int = 10_000 + 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. diff --git a/dataset_reader/ann_h5_reader.py b/dataset_reader/ann_h5_reader.py index 1d47bdd3..1bc984ac 100644 --- a/dataset_reader/ann_h5_reader.py +++ b/dataset_reader/ann_h5_reader.py @@ -27,7 +27,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 0a2617e3..e4c3ee60 100644 --- a/dataset_reader/base_reader.py +++ b/dataset_reader/base_reader.py @@ -18,7 +18,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 77a2eeb9..e6bab83e 100644 --- a/dataset_reader/json_reader.py +++ b/dataset_reader/json_reader.py @@ -60,7 +60,7 @@ def read_queries(self) -> Iterator[Query]: yield Query(vector=vector, meta_conditions=None, 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()) ): From 2f9753a80593df230f225135bc247011226e1e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Thu, 12 Dec 2024 17:13:37 +0100 Subject: [PATCH 160/204] If boto3 raises no credentials exception use urlib for downloading the dataset (#11) --- benchmark/dataset.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/benchmark/dataset.py b/benchmark/dataset.py index 8dc955e0..c71b19af 100644 --- a/benchmark/dataset.py +++ b/benchmark/dataset.py @@ -5,6 +5,7 @@ from dataclasses import dataclass, field from typing import Dict, List, Optional, Union 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 @@ -109,10 +110,15 @@ def download(self): return if self.config.link: + downloaded_withboto = False if is_s3_link(self.config.link): print("Use boto3 to download from S3. Faster!") - self._download_from_s3(self.config.link, target_path) - else: + 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 From a47d6d39ac1e6af7baa2b0dc7015d348b6caaea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Thu, 12 Dec 2024 17:14:13 +0100 Subject: [PATCH 161/204] Update dockerfile and add single case scenario test (#12) --- Dockerfile | 5 +++++ .../configurations/redis-hnsw-single-node.json | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/Dockerfile b/Dockerfile index 53f5bcc5..de3ad063 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,9 @@ ENV PYTHONFAULTHANDLER=1 \ PIP_DEFAULT_TIMEOUT=100 \ POETRY_VERSION=1.5.1 +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/experiments/configurations/redis-hnsw-single-node.json b/experiments/configurations/redis-hnsw-single-node.json index 77dbd6c2..9ae5e233 100644 --- a/experiments/configurations/redis-hnsw-single-node.json +++ b/experiments/configurations/redis-hnsw-single-node.json @@ -1,4 +1,17 @@ [ + { + "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", From aa9e3e294427d2de09e1a2ab5abf8f9b1fe859f3 Mon Sep 17 00:00:00 2001 From: DvirDukhan Date: Wed, 19 Mar 2025 20:20:49 +0200 Subject: [PATCH 162/204] vector sets --- engine/clients/client_factory.py | 9 + engine/clients/vectorsets/__init__.py | 3 + engine/clients/vectorsets/config.py | 9 + engine/clients/vectorsets/configure.py | 44 ++ engine/clients/vectorsets/search.py | 53 ++ engine/clients/vectorsets/upload.py | 48 ++ .../configurations/vectorsets-NOQUANT.json | 385 +++++++++ experiments/configurations/vectorsets-Q8.json | 385 +++++++++ .../configurations/vectorsets-bin.json | 385 +++++++++ scripts/process-benchmarks.ipynb | 730 +++++++++++++++++- 10 files changed, 2029 insertions(+), 22 deletions(-) create mode 100644 engine/clients/vectorsets/__init__.py create mode 100644 engine/clients/vectorsets/config.py create mode 100644 engine/clients/vectorsets/configure.py create mode 100644 engine/clients/vectorsets/search.py create mode 100644 engine/clients/vectorsets/upload.py create mode 100644 experiments/configurations/vectorsets-NOQUANT.json create mode 100644 experiments/configurations/vectorsets-Q8.json create mode 100644 experiments/configurations/vectorsets-bin.json diff --git a/engine/clients/client_factory.py b/engine/clients/client_factory.py index a74df2ab..90fe7ae8 100644 --- a/engine/clients/client_factory.py +++ b/engine/clients/client_factory.py @@ -31,6 +31,12 @@ WeaviateUploader, ) +from engine.clients.vectorsets import ( + RedisVsetConfigurator, + RedisVsetSearcher, + RedisVsetUploader, +) + ENGINE_CONFIGURATORS = { "qdrant": QdrantConfigurator, "weaviate": WeaviateConfigurator, @@ -39,6 +45,7 @@ "opensearch": OpenSearchConfigurator, "redis": RedisConfigurator, "pgvector": PgVectorConfigurator, + "vectorsets": RedisVsetConfigurator, } ENGINE_UPLOADERS = { @@ -49,6 +56,7 @@ "opensearch": OpenSearchUploader, "redis": RedisUploader, "pgvector": PgVectorUploader, + "vectorsets": RedisVsetUploader, } ENGINE_SEARCHERS = { @@ -59,6 +67,7 @@ "opensearch": OpenSearchSearcher, "redis": RedisSearcher, "pgvector": PgVectorSearcher, + "vectorsets": RedisVsetSearcher, } diff --git a/engine/clients/vectorsets/__init__.py b/engine/clients/vectorsets/__init__.py new file mode 100644 index 00000000..c21498cb --- /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 00000000..e9ef6075 --- /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 00000000..5c5a06ae --- /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 00000000..836a128d --- /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 00000000..ccd16dd9 --- /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/experiments/configurations/vectorsets-NOQUANT.json b/experiments/configurations/vectorsets-NOQUANT.json new file mode 100644 index 00000000..fa0ed882 --- /dev/null +++ b/experiments/configurations/vectorsets-NOQUANT.json @@ -0,0 +1,385 @@ +[ + { + "name": "vectorsets-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": 16, + "batch_size": 1024, + "hnsw_config": { + "quant": "NOQUANT" + } + } + }, + { + "name": "vectorsets-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": 16, + "hnsw_config": { + "quant": "NOQUANT", + "M": 32, + "EF_CONSTRUCTION": 128 + } + } + }, + { + "name": "vectorsets-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": 16, + "hnsw_config": { + "quant": "NOQUANT", + "M": 32, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-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": 16, + "hnsw_config": { + "quant": "NOQUANT", + "M": 32, + "EF_CONSTRUCTION": 512 + } + } + }, + { + "name": "vectorsets-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": 16, + "hnsw_config": { + "quant": "NOQUANT", + "M": 64, + "EF_CONSTRUCTION": 256 + } + } + }, + { + "name": "vectorsets-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": 16, + "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 00000000..fd6f64a0 --- /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": 16, + "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": 16, + "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": 16, + "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": 16, + "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": 16, + "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": 16, + "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 00000000..60da0d8a --- /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": 16, + "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": 16, + "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": 16, + "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": 16, + "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": 16, + "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": 16, + "hnsw_config": { + "quant": "BIN", + "M": 64, + "EF_CONSTRUCTION": 512 + } + } + } +] \ No newline at end of file diff --git a/scripts/process-benchmarks.ipynb b/scripts/process-benchmarks.ipynb index 8419a5f8..08594905 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,7 +290,7 @@ " with open(path, \"r\") as fp:\n", " stats = json.load(fp)\n", "\n", - " entry = [match[\"engine\"], match[\"m\"], match[\"ef\"], \n", + " entry = [match[\"engine\"], match[\"m\"], match[\"ef\"], match[\"quant\"],\n", " match[\"dataset\"], match[\"search_index\"], match[\"date\"], \n", " stats[\"params\"], stats[\"results\"]]\n", " if experiment[\"operation\"] == \"search\":\n", @@ -112,7 +303,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2022-08-05T10:03:54.157465Z", @@ -124,12 +315,12 @@ }, "outputs": [], "source": [ - "column_names = [\"engine\", \"m\", \"ef\", \"dataset\", \"search_index\", \"date\", \"params\", \"results\"]" + "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", @@ -139,13 +330,100 @@ "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, columns=column_names) \\\n", " .drop(columns=\"search_index\")\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", + " .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", @@ -167,12 +445,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, columns=column_names)\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", "print(len(search_df))\n", @@ -185,16 +796,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, 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", - "joined_df = _search.merge(_upload, on=[\"engine\", \"m\", \"ef\", \"dataset\"], how=\"left\", suffixes=(\"_search\", \"_upload\"))\n", - "print(len(joined_df))\n", - "joined_df" + "# 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 +858,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_all = []\n", "json_1_or_100_thread = []\n", @@ -252,7 +938,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -266,7 +952,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.18" + "version": "3.11.9" } }, "nbformat": 4, From 6e2b1121c1a03a592c1d7c69e9e5a83202bef5a9 Mon Sep 17 00:00:00 2001 From: DvirDukhan Date: Thu, 20 Mar 2025 10:16:32 +0200 Subject: [PATCH 163/204] git ignore vevn --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9c694280..2e741a46 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ results/* tools/custom/data.json *.png +venv/ From 4195d16ff155750214982d1ad46c2348bf7dd4aa Mon Sep 17 00:00:00 2001 From: Dvir Dukhan Date: Thu, 20 Mar 2025 14:38:51 +0000 Subject: [PATCH 164/204] fixed fp32 experiment file --- experiments/configurations/vectorsets-NOQUANT.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/experiments/configurations/vectorsets-NOQUANT.json b/experiments/configurations/vectorsets-NOQUANT.json index fa0ed882..9cb509c2 100644 --- a/experiments/configurations/vectorsets-NOQUANT.json +++ b/experiments/configurations/vectorsets-NOQUANT.json @@ -1,6 +1,6 @@ [ { - "name": "vectorsets-default", + "name": "vectorsets-fp32-default", "engine": "vectorsets", "connection_params": {}, "collection_params": {}, @@ -63,7 +63,7 @@ } }, { - "name": "vectorsets-m-32-ef-128", + "name": "vectorsets-fp32-m-32-ef-128", "engine": "vectorsets", "connection_params": {}, "collection_params": {}, @@ -127,7 +127,7 @@ } }, { - "name": "vectorsets-m-32-ef-256", + "name": "vectorsets-fp32-m-32-ef-256", "engine": "vectorsets", "connection_params": {}, "collection_params": {}, @@ -191,7 +191,7 @@ } }, { - "name": "vectorsets-m-32-ef-512", + "name": "vectorsets-fp32-m-32-ef-512", "engine": "vectorsets", "connection_params": {}, "collection_params": {}, @@ -255,7 +255,7 @@ } }, { - "name": "vectorsets-m-64-ef-256", + "name": "vectorset-fp32s-m-64-ef-256", "engine": "vectorsets", "connection_params": {}, "collection_params": {}, @@ -319,7 +319,7 @@ } }, { - "name": "vectorsets-m-64-ef-512", + "name": "vectorsets-fp32-m-64-ef-512", "engine": "vectorsets", "connection_params": {}, "collection_params": {}, From a1765b90d22129c3fb913211de735f3edb48d66f Mon Sep 17 00:00:00 2001 From: Dvir Dukhan Date: Thu, 20 Mar 2025 15:13:14 +0000 Subject: [PATCH 165/204] run script --- vectorsets.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 vectorsets.sh diff --git a/vectorsets.sh b/vectorsets.sh new file mode 100755 index 00000000..4be2cea7 --- /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 From c7ca3e332d200508eb9656f080a04b17ae224da1 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 26 Mar 2025 17:49:25 +0000 Subject: [PATCH 166/204] Updated weaviate client to use grpc --- engine/clients/weaviate/config.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index 7bbd3096..bddfdb68 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -1,24 +1,24 @@ import os -from weaviate import Client -from weaviate.auth import AuthApiKey +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_PORT = os.getenv("WEAVIATE_PORT", WEAVIATE_DEFAULT_PORT) +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_PORT) + port = connection_params.get("port", WEAVIATE_HTTP_PORT) if host.startswith("http"): url = "" else: url = "http://" url += f"{host}:{port}" - auth_client_secret = None - if WEAVIATE_API_KEY is not None: - auth_client_secret = AuthApiKey(WEAVIATE_API_KEY) - c = Client(url, auth_client_secret, **connection_params) + c = WeaviateClient( + ConnectionParams.from_url(url, WEAVIATE_GRPC_PORT), skip_init_checks=True + ) # Ping Weaviate's live state. assert c.is_live() is True return c From 8f033f0827a4c5099ca84ec7b78f50544b77e4f5 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 26 Mar 2025 17:51:33 +0000 Subject: [PATCH 167/204] using WEAVIATE GRPC and HTTP port configs --- engine/clients/weaviate/configure.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/engine/clients/weaviate/configure.py b/engine/clients/weaviate/configure.py index 85263b79..66ad1f7e 100644 --- a/engine/clients/weaviate/configure.py +++ b/engine/clients/weaviate/configure.py @@ -3,8 +3,6 @@ from engine.base_client.distances import Distance from engine.clients.weaviate.config import ( WEAVIATE_CLASS_NAME, - WEAVIATE_PORT, - WEAVIATE_API_KEY, setup_client, ) From 99b72f69d740e461b9ca1d1f6b7094165edb76e9 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 26 Mar 2025 17:56:46 +0000 Subject: [PATCH 168/204] ensuring the __del__ method only uses client when it's defined on weaviate --- engine/clients/weaviate/configure.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/clients/weaviate/configure.py b/engine/clients/weaviate/configure.py index 66ad1f7e..7c1df111 100644 --- a/engine/clients/weaviate/configure.py +++ b/engine/clients/weaviate/configure.py @@ -55,5 +55,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 From 2c405b948662c848a413025d66d80650b0d20ae2 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 26 Mar 2025 18:12:01 +0000 Subject: [PATCH 169/204] Updated upload and search steps on weaviate client to match latest client version --- engine/clients/weaviate/config.py | 1 + engine/clients/weaviate/configure.py | 2 ++ engine/clients/weaviate/search.py | 15 ++++++++------- engine/clients/weaviate/upload.py | 27 +++++++++++++++------------ 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/engine/clients/weaviate/config.py b/engine/clients/weaviate/config.py index bddfdb68..b317fc5b 100644 --- a/engine/clients/weaviate/config.py +++ b/engine/clients/weaviate/config.py @@ -19,6 +19,7 @@ def setup_client(connection_params, host): 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 7c1df111..cd2575a4 100644 --- a/engine/clients/weaviate/configure.py +++ b/engine/clients/weaviate/configure.py @@ -5,9 +5,11 @@ WEAVIATE_CLASS_NAME, setup_client, ) +from weaviate import WeaviateClient class WeaviateConfigurator(BaseConfigurator): + client: WeaviateClient = None DISTANCE_MAPPING = { Distance.L2: "l2-squared", Distance.COSINE: "cosine", diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index 08011f60..ca7dde35 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -5,7 +5,7 @@ from weaviate.classes.config import Reconfigure from weaviate.classes.query import MetadataQuery from weaviate.collections import Collection -from weaviate.connect import ConnectionParams +from dataset_reader.base_reader import Query from engine.base_client.search import BaseSearcher from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client @@ -16,7 +16,7 @@ class WeaviateSearcher(BaseSearcher): search_params = {} parser = WeaviateConditionParser() collection: Collection - client: WeaviateClient + client: WeaviateClient = None @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): @@ -26,10 +26,10 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic assert cls.client.is_ready() is True @classmethod - def search_one(self, vector, meta_conditions, top) -> List[Tuple[int, float]]: - res = self.collection.query.near_vector( - near_vector=vector, - filters=self.parser.parse(meta_conditions), + def search_one(cls, query: Query, top: int) -> List[Tuple[int, float]]: + res = cls.collection.query.near_vector( + near_vector=query.vector, + filters=cls.parser.parse(query.meta_conditions), limit=top, return_metadata=MetadataQuery(distance=True), return_properties=[], @@ -39,10 +39,11 @@ def search_one(self, vector, meta_conditions, top) -> List[Tuple[int, float]]: def setup_search(self): self.collection.config.update( vector_index_config=Reconfigure.VectorIndex.hnsw( - ef=self.search_params["vectorIndexConfig"]["ef"] + ef=self.search_params["config"]["ef"] ) ) + @classmethod def delete_client(cls): if cls.client is not None: diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index 9a6bc2bb..8c3665c3 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -1,13 +1,15 @@ import uuid -from typing import List, Optional -from weaviate import Client +from typing import List +from weaviate.classes.data import DataObject +from weaviate import WeaviateClient +from dataset_reader.base_reader import Record from engine.base_client.upload import BaseUploader from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client class WeaviateUploader(BaseUploader): - client: Client = None + client: WeaviateClient = None upload_params = {} collection = None @@ -21,15 +23,16 @@ def init_client(cls, host, distance, connection_params, upload_params): ) @classmethod - def upload_batch( - cls, ids: List[int], vectors: List[list], metadata: List[Optional[dict]] - ): - # Weaviate introduced the batch_size, so it can handle built-in client's - # multi-threading. That should make the upload faster. - cls.client.batch.configure( - batch_size=len(vectors), - timeout_retries=5, - ) + def upload_batch(cls, batch: List[Record]): + objects = [] + for record in batch: + _id = uuid.UUID(int=record.id) + _property = record.metadata or {} + objects.append( + DataObject(properties=_property, vector=record.vector, uuid=_id) + ) + if len(objects) > 0: + cls.collection.data.insert_many(objects) @classmethod def delete_client(cls): From 41d91bb1c671a2b46057b2a693bc678c1427ccbb Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 26 Mar 2025 18:17:42 +0000 Subject: [PATCH 170/204] Updated upload and search steps on weaviate client to match latest client version --- engine/clients/weaviate/search.py | 15 +++++++-------- engine/clients/weaviate/upload.py | 24 +++++++++++++----------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/engine/clients/weaviate/search.py b/engine/clients/weaviate/search.py index ca7dde35..08011f60 100644 --- a/engine/clients/weaviate/search.py +++ b/engine/clients/weaviate/search.py @@ -5,7 +5,7 @@ from weaviate.classes.config import Reconfigure from weaviate.classes.query import MetadataQuery from weaviate.collections import Collection -from dataset_reader.base_reader import Query +from weaviate.connect import ConnectionParams from engine.base_client.search import BaseSearcher from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client @@ -16,7 +16,7 @@ class WeaviateSearcher(BaseSearcher): search_params = {} parser = WeaviateConditionParser() collection: Collection - client: WeaviateClient = None + client: WeaviateClient @classmethod def init_client(cls, host, distance, connection_params: dict, search_params: dict): @@ -26,10 +26,10 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic assert cls.client.is_ready() is True @classmethod - def search_one(cls, query: Query, top: int) -> List[Tuple[int, float]]: - res = cls.collection.query.near_vector( - near_vector=query.vector, - filters=cls.parser.parse(query.meta_conditions), + def search_one(self, vector, meta_conditions, top) -> List[Tuple[int, float]]: + res = self.collection.query.near_vector( + near_vector=vector, + filters=self.parser.parse(meta_conditions), limit=top, return_metadata=MetadataQuery(distance=True), return_properties=[], @@ -39,11 +39,10 @@ def search_one(cls, query: Query, top: int) -> List[Tuple[int, float]]: def setup_search(self): self.collection.config.update( vector_index_config=Reconfigure.VectorIndex.hnsw( - ef=self.search_params["config"]["ef"] + ef=self.search_params["vectorIndexConfig"]["ef"] ) ) - @classmethod def delete_client(cls): if cls.client is not None: diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index 8c3665c3..a609d059 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -1,15 +1,13 @@ import uuid -from typing import List +from typing import List, Optional +from weaviate import Client -from weaviate.classes.data import DataObject -from weaviate import WeaviateClient -from dataset_reader.base_reader import Record from engine.base_client.upload import BaseUploader from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client - +from weaviate.classes.data import DataObject class WeaviateUploader(BaseUploader): - client: WeaviateClient = None + client: Client = None upload_params = {} collection = None @@ -23,13 +21,17 @@ def init_client(cls, host, distance, connection_params, upload_params): ) @classmethod - def upload_batch(cls, batch: List[Record]): + def upload_batch( + cls, ids: List[int], vectors: List[list], metadata: List[Optional[dict]] + ): objects = [] - for record in batch: - _id = uuid.UUID(int=record.id) - _property = record.metadata or {} + for pos, vector in enumerate(vectors): + _id = ids[pos] + _property = {} + if metadata is not None and len(metadata) >= pos: + _property = metadata[pos] objects.append( - DataObject(properties=_property, vector=record.vector, uuid=_id) + DataObject(properties=_property, vector=vector, uuid=_id) ) if len(objects) > 0: cls.collection.data.insert_many(objects) From 3b910479168c62b86b3d72f066c79fd3e1bac922 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Wed, 26 Mar 2025 18:22:06 +0000 Subject: [PATCH 171/204] use uuids on ingest --- engine/clients/weaviate/upload.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine/clients/weaviate/upload.py b/engine/clients/weaviate/upload.py index a609d059..362a6eda 100644 --- a/engine/clients/weaviate/upload.py +++ b/engine/clients/weaviate/upload.py @@ -1,13 +1,13 @@ import uuid from typing import List, Optional -from weaviate import Client +from weaviate import WeaviateClient from engine.base_client.upload import BaseUploader from engine.clients.weaviate.config import WEAVIATE_CLASS_NAME, setup_client from weaviate.classes.data import DataObject class WeaviateUploader(BaseUploader): - client: Client = None + client: WeaviateClient = None upload_params = {} collection = None @@ -26,7 +26,7 @@ def upload_batch( ): objects = [] for pos, vector in enumerate(vectors): - _id = ids[pos] + _id = uuid.UUID(ids[pos]) _property = {} if metadata is not None and len(metadata) >= pos: _property = metadata[pos] From 92b4c84dccc9e6213ff1162a10ec6eb8debe697d Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 31 Mar 2025 12:57:04 +0100 Subject: [PATCH 172/204] Allow specifying the hybrid policy --- engine/clients/redis/config.py | 4 +++- engine/clients/redis/search.py | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index 4c101bcf..e92388c3 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -4,7 +4,9 @@ REDIS_AUTH = os.getenv("REDIS_AUTH", None) REDIS_USER = os.getenv("REDIS_USER", None) REDIS_CLUSTER = bool(int(os.getenv("REDIS_CLUSTER", 0))) -REDIS_HYBRID_POLICY = os.getenv("REDIS_HYBRID_POLICY", None) +# 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", 1)) REDIS_JUST_INDEX = bool(os.getenv("REDIS_JUST_INDEX", 0)) GPU_STATS = bool(int(os.getenv("GPU_STATS", 0))) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 873521d5..675326a5 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -11,6 +11,7 @@ REDIS_AUTH, REDIS_USER, REDIS_CLUSTER, + REDIS_HYBRID_POLICY, ) from engine.clients.redis.parser import RedisConditionParser @@ -30,8 +31,13 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic cls.search_params = search_params cls.knn_conditions = "" cls.algorithm = cls.search_params.get("algorithm", "hnsw").upper() + cls.hybrid_policy = REDIS_HYBRID_POLICY + if cls.algorithm == "HNSW": - cls.knn_conditions = "EF_RUNTIME $EF" + # '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 = ( @@ -59,6 +65,9 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic @classmethod def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: 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 = {} @@ -67,7 +76,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: q = ( Query( - f"{prefilter_condition}=>[KNN $K @vector $vec_param {cls.knn_conditions} AS vector_score]" + 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) @@ -83,7 +92,9 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: **params, } if cls.algorithm == "HNSW": - params_dict["EF"] = cls.search_params["search_params"]["ef"] + # 'EF_RUNTIME' is irrelevant for 'ADHOC_BF' policy + if cls.hybrid_policy != "ADHOC_BF": + params_dict["EF"] = cls.search_params["search_params"]["ef"] results = cls._ft.search(q, query_params=params_dict) return [(int(result.id), float(result.vector_score)) for result in results.docs] From e4d93905098c2e1c4dbca8af1ce9b2adf21b494f Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 31 Mar 2025 13:09:57 +0100 Subject: [PATCH 173/204] catching 2.10 error message. setting default to flushall to mimic competiton --- engine/clients/redis/config.py | 4 ++-- engine/clients/redis/configure.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/engine/clients/redis/config.py b/engine/clients/redis/config.py index e92388c3..2bf68fc2 100644 --- a/engine/clients/redis/config.py +++ b/engine/clients/redis/config.py @@ -7,11 +7,11 @@ # 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", 1)) +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) # 60 seconds timeout -REDIS_QUERY_TIMEOUT = int(os.getenv("REDIS_QUERY_TIMEOUT", 60 * 1000)) +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 5f0f8e51..20544c3d 100644 --- a/engine/clients/redis/configure.py +++ b/engine/clients/redis/configure.py @@ -59,6 +59,7 @@ def clean(self): 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 From 0e9f9ad4b78ef0790313a4d9892f93a8d9558e58 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 31 Mar 2025 13:12:53 +0100 Subject: [PATCH 174/204] fixed missing } on hybrid policy --- engine/clients/redis/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 675326a5..c8a13ae4 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -67,7 +67,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: conditions = cls.parser.parse(meta_conditions) hybrid_policy = "" if cls.hybrid_policy != "": - hybrid_policy = '=>{$HYBRID_POLICY: {'+ cls.hybrid_policy + '}' + hybrid_policy = f"=>{{$HYBRID_POLICY: {{{cls.hybrid_policy}}}}}" if conditions is None: prefilter_condition = "*" params = {} From 4aef01708137da42865d76b77e372657285864f3 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 31 Mar 2025 13:15:58 +0100 Subject: [PATCH 175/204] fixed missing } on hybrid policy --- engine/clients/redis/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index c8a13ae4..cb5ac565 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -67,7 +67,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: conditions = cls.parser.parse(meta_conditions) hybrid_policy = "" if cls.hybrid_policy != "": - hybrid_policy = f"=>{{$HYBRID_POLICY: {{{cls.hybrid_policy}}}}}" + hybrid_policy = f"=>{{$HYBRID_POLICY: {{cls.hybrid_policy}} }}" if conditions is None: prefilter_condition = "*" params = {} From 92dee85d4d7e33103b9909465e44b38f13f8d9b1 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Mon, 31 Mar 2025 13:17:43 +0100 Subject: [PATCH 176/204] fixed missing } on hybrid policy --- engine/clients/redis/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index cb5ac565..60c21dca 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -67,7 +67,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: conditions = cls.parser.parse(meta_conditions) hybrid_policy = "" if cls.hybrid_policy != "": - hybrid_policy = f"=>{{$HYBRID_POLICY: {{cls.hybrid_policy}} }}" + hybrid_policy = '=>{$HYBRID_POLICY: '+ cls.hybrid_policy + ' }' if conditions is None: prefilter_condition = "*" params = {} From 312547da733ff438e2e84a2a49a39d1b93d2aaab Mon Sep 17 00:00:00 2001 From: root Date: Mon, 7 Apr 2025 13:39:03 -0700 Subject: [PATCH 177/204] adding laion dataset' --- datasets/datasets.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/datasets/datasets.json b/datasets/datasets.json index 7a165eb6..c776917d 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -322,5 +322,14 @@ "type": "tar", "link": "https://storage.googleapis.com/ann-filtered-benchmark/datasets/random_keywords_1m_vocab_10_no_filters.tgz", "path": "random-100-match-kw-small-vocab/random_keywords_1m_vocab_10_no_filters" + }, + { + "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" } + ] From 0c3670980f525efe0aefa56abd0527d5386a668f Mon Sep 17 00:00:00 2001 From: root Date: Mon, 7 Apr 2025 13:41:34 -0700 Subject: [PATCH 178/204] adding laion dataset 1M --- datasets/datasets.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datasets/datasets.json b/datasets/datasets.json index c776917d..ee7ce131 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -324,11 +324,11 @@ "path": "random-100-match-kw-small-vocab/random_keywords_1m_vocab_10_no_filters" }, { - "name": "laion-img-emb-512-100M-cosine", + "name": "laion-img-emb-512-1M-cosine", "vector_size": 512, "distance": "cosine", "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-100M-cosine.hdf5", + "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-100M-cosine.hdf5" } From 3b5e2c95563152f377e59e4917a4c4ae8ffcc0fd Mon Sep 17 00:00:00 2001 From: root Date: Mon, 7 Apr 2025 14:21:23 -0700 Subject: [PATCH 179/204] chunk up the iterable before starting the processes --- engine/base_client/search.py | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 93368a3f..93575420 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -2,6 +2,7 @@ import time from multiprocessing import get_context from typing import Iterable, List, Optional, Tuple +from itertools import islice import numpy as np import tqdm @@ -79,22 +80,31 @@ def search_all( else: ctx = get_context(self.get_mp_start_method()) - with ctx.Pool( - processes=parallel, - initializer=self.__class__.init_client, - initargs=( + def process_initializer(): + """Initialize each process before starting the search.""" + self.__class__.init_client( self.host, distance, self.connection_params, self.search_params, - ), + ) + self.setup_search() + + # Dynamically chunk the generator + query_chunks = list(chunked_iterable(queries, max(1, parallel))) + + with ctx.Pool( + processes=parallel, + initializer=process_initializer, ) as pool: if parallel > 10: 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))) + results = pool.starmap( + process_chunk, + [(chunk, search_one) for chunk in query_chunks], ) + precisions, latencies = zip(*[result for chunk in results for result in chunk]) total_time = time.perf_counter() - start @@ -123,3 +133,15 @@ def post_search(self): @classmethod def delete_client(cls): pass + + +def chunked_iterable(iterable, size): + """Yield successive chunks of a given size from an iterable.""" + it = iter(iterable) + while chunk := list(islice(it, size)): + yield chunk + + +def process_chunk(chunk, search_one): + """Process a chunk of queries using the search_one function.""" + return [search_one(query) for query in chunk] From 92b4ddb7dddba8496695cc17a1a565887e13d49a Mon Sep 17 00:00:00 2001 From: Martin Dimitrov Date: Mon, 7 Apr 2025 14:30:27 -0700 Subject: [PATCH 180/204] replace arbitrary 15 sec wait with barrier --- engine/base_client/search.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 93575420..30732650 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -1,6 +1,6 @@ import functools import time -from multiprocessing import get_context +from multiprocessing import get_context, Barrier from typing import Iterable, List, Optional, Tuple from itertools import islice @@ -80,6 +80,9 @@ def search_all( else: ctx = get_context(self.get_mp_start_method()) + # Create a Barrier to synchronize processes + barrier = Barrier(parallel) + def process_initializer(): """Initialize each process before starting the search.""" self.__class__.init_client( @@ -89,6 +92,7 @@ def process_initializer(): self.search_params, ) self.setup_search() + barrier.wait() # Wait for all processes to be ready # Dynamically chunk the generator query_chunks = list(chunked_iterable(queries, max(1, parallel))) @@ -97,8 +101,6 @@ def process_initializer(): processes=parallel, initializer=process_initializer, ) as pool: - if parallel > 10: - time.sleep(15) # Wait for all processes to start start = time.perf_counter() results = pool.starmap( process_chunk, From deaf5abaca3513ff24ff40e59e12be565acb3f40 Mon Sep 17 00:00:00 2001 From: Martin Dimitrov Date: Tue, 8 Apr 2025 11:06:54 -0700 Subject: [PATCH 181/204] fixed chunk to correct size --- engine/base_client/search.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 30732650..1ba7d51e 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -64,6 +64,9 @@ def search_all( parallel = self.search_params.get("parallel", 1) top = self.search_params.get("top", None) + # Convert queries to a list to calculate its length + queries = list(queries) # This allows us to calculate len(queries) + # setup_search may require initialized client self.init_client( self.host, distance, self.connection_params, self.search_params @@ -94,8 +97,9 @@ def process_initializer(): self.setup_search() barrier.wait() # Wait for all processes to be ready - # Dynamically chunk the generator - query_chunks = list(chunked_iterable(queries, max(1, parallel))) + # Dynamically calculate chunk size + chunk_size = max(1, len(queries) // parallel) + query_chunks = list(chunked_iterable(queries, chunk_size)) with ctx.Pool( processes=parallel, From 4c1d080cf960cdcc5b52ae45ebf85e3595eb1e43 Mon Sep 17 00:00:00 2001 From: Martin Dimitrov Date: Tue, 8 Apr 2025 14:18:55 -0700 Subject: [PATCH 182/204] implemented custom process management , instead of using pool --- datasets/datasets.json | 8 +++++ engine/base_client/client.py | 9 ++++-- engine/base_client/search.py | 59 ++++++++++++++++++++++-------------- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/datasets/datasets.json b/datasets/datasets.json index ee7ce131..453e8c6b 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -330,6 +330,14 @@ "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-100M-cosine.hdf5" + }, + { + "name": "laion-img-emb-512-1M-100ktrain-cosine", + "vector_size": 512, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-512/laion-img-emb-512-1M-100ktrain-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100M-cosine.hdf5" } ] diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 0f262d34..26d2a0e5 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -36,8 +36,9 @@ def save_search_results( ): now = datetime.now() timestamp = now.strftime("%Y-%m-%d-%H-%M-%S") + pid = os.getpid() # Get the current process ID experiments_file = ( - f"{self.name}-{dataset_name}-search-{search_id}-{timestamp}.json" + f"{self.name}-{dataset_name}-search-{search_id}-{pid}-{timestamp}.json" ) result_path = RESULTS_DIR / experiments_file with open(result_path, "w") as out: @@ -89,7 +90,8 @@ def run_experiment( reader = dataset.get_reader(execution_params.get("normalize", False)) if skip_if_exists: - glob_pattern = f"{self.name}-{dataset.config.name}-search-*-*.json" + pid = os.getpid() # Get the current process ID + glob_pattern = f"{self.name}-{dataset.config.name}-search-{pid}-*-*.json" existing_results = list(RESULTS_DIR.glob(glob_pattern)) if len(existing_results) == len(self.searchers): print( @@ -124,8 +126,9 @@ def run_experiment( for search_id, searcher in enumerate(self.searchers): if skip_if_exists: + pid = os.getpid() # Get the current process ID glob_pattern = ( - f"{self.name}-{dataset.config.name}-search-{search_id}-*.json" + f"{self.name}-{dataset.config.name}-search-{search_id}-{pid}-*.json" ) existing_results = list(RESULTS_DIR.glob(glob_pattern)) print("Pattern", glob_pattern, "Results:", existing_results) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 1ba7d51e..c1408b29 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -1,6 +1,6 @@ import functools import time -from multiprocessing import get_context, Barrier +from multiprocessing import get_context, Barrier, Process, Queue from typing import Iterable, List, Optional, Tuple from itertools import islice @@ -75,19 +75,21 @@ def search_all( search_one = functools.partial(self.__class__._search_one, top=top) + # Initialize the start time + start = time.perf_counter() + if parallel == 1: - start = time.perf_counter() + # Single-threaded execution precisions, latencies = list( zip(*[search_one(query) for query in tqdm.tqdm(queries)]) ) else: - ctx = get_context(self.get_mp_start_method()) - - # Create a Barrier to synchronize processes - barrier = Barrier(parallel) + # Dynamically calculate chunk size + chunk_size = max(1, len(queries) // parallel) + query_chunks = list(chunked_iterable(queries, chunk_size)) - def process_initializer(): - """Initialize each process before starting the search.""" + # Function to be executed by each worker process + def worker_function(chunk, result_queue): self.__class__.init_client( self.host, distance, @@ -95,22 +97,30 @@ def process_initializer(): self.search_params, ) self.setup_search() - barrier.wait() # Wait for all processes to be ready + results = process_chunk(chunk, search_one) + result_queue.put(results) - # Dynamically calculate chunk size - chunk_size = max(1, len(queries) // parallel) - query_chunks = list(chunked_iterable(queries, chunk_size)) + # Create a queue to collect results + result_queue = Queue() - with ctx.Pool( - processes=parallel, - initializer=process_initializer, - ) as pool: - start = time.perf_counter() - results = pool.starmap( - process_chunk, - [(chunk, search_one) for chunk in query_chunks], - ) - precisions, latencies = zip(*[result for chunk in results for result in chunk]) + # Create and start worker processes + processes = [] + for chunk in query_chunks: + process = Process(target=worker_function, args=(chunk, result_queue)) + processes.append(process) + process.start() + + # Collect results from all worker processes + results = [] + for _ in processes: + results.extend(result_queue.get()) + + # Wait for all worker processes to finish + for process in processes: + process.join() + + # Extract precisions and latencies + precisions, latencies = zip(*results) total_time = time.perf_counter() - start @@ -151,3 +161,8 @@ def chunked_iterable(iterable, size): def process_chunk(chunk, search_one): """Process a chunk of queries using the search_one function.""" return [search_one(query) for query in chunk] + + +def process_chunk_wrapper(chunk, search_one): + """Wrapper to process a chunk of queries.""" + return process_chunk(chunk, search_one) From 0d513c26683181c90f88afed279ab29baf55256b Mon Sep 17 00:00:00 2001 From: Martin Dimitrov Date: Tue, 8 Apr 2025 14:31:40 -0700 Subject: [PATCH 183/204] measure time only during the critical work --- engine/base_client/search.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index c1408b29..3eae6539 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -75,14 +75,11 @@ def search_all( search_one = functools.partial(self.__class__._search_one, top=top) - # Initialize the start time - start = time.perf_counter() - if parallel == 1: # Single-threaded execution - precisions, latencies = list( - zip(*[search_one(query) for query in tqdm.tqdm(queries)]) - ) + start = time.perf_counter() + results = [search_one(query) for query in tqdm.tqdm(queries)] + total_time = time.perf_counter() - start else: # Dynamically calculate chunk size chunk_size = max(1, len(queries) // parallel) @@ -110,6 +107,9 @@ def worker_function(chunk, result_queue): processes.append(process) process.start() + # Start measuring time for the critical work + start = time.perf_counter() + # Collect results from all worker processes results = [] for _ in processes: @@ -119,10 +119,11 @@ def worker_function(chunk, result_queue): for process in processes: process.join() - # Extract precisions and latencies - precisions, latencies = zip(*results) + # Stop measuring time for the critical work + total_time = time.perf_counter() - start - total_time = time.perf_counter() - start + # Extract precisions and latencies (outside the timed section) + precisions, latencies = zip(*results) self.__class__.delete_client() From 2c592a09b3ea094034bd3e015bdbb8589e8da344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Wed, 9 Apr 2025 09:22:19 -0700 Subject: [PATCH 184/204] Add itertools before islice function --- engine/base_client/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index b0c153c3..7cde4e6e 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -166,7 +166,7 @@ def delete_client(cls): def chunked_iterable(iterable, size): """Yield successive chunks of a given size from an iterable.""" it = iter(iterable) - while chunk := list(islice(it, size)): + while chunk := list(itertools.islice(it, size)): yield chunk From 83e3f3e123dabd45896010fa324304409971a4fd Mon Sep 17 00:00:00 2001 From: Dvir Dukhan Date: Mon, 21 Apr 2025 09:45:08 +0000 Subject: [PATCH 185/204] update vset tests --- experiments/configurations/vectorsets-NOQUANT.json | 12 ++++++------ experiments/configurations/vectorsets-bin.json | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/experiments/configurations/vectorsets-NOQUANT.json b/experiments/configurations/vectorsets-NOQUANT.json index 9cb509c2..31b48676 100644 --- a/experiments/configurations/vectorsets-NOQUANT.json +++ b/experiments/configurations/vectorsets-NOQUANT.json @@ -55,7 +55,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "batch_size": 1024, "hnsw_config": { "quant": "NOQUANT" @@ -118,7 +118,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "NOQUANT", "M": 32, @@ -182,7 +182,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "NOQUANT", "M": 32, @@ -246,7 +246,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "NOQUANT", "M": 32, @@ -310,7 +310,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "NOQUANT", "M": 64, @@ -374,7 +374,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "NOQUANT", "M": 64, diff --git a/experiments/configurations/vectorsets-bin.json b/experiments/configurations/vectorsets-bin.json index 60da0d8a..4638976c 100644 --- a/experiments/configurations/vectorsets-bin.json +++ b/experiments/configurations/vectorsets-bin.json @@ -55,7 +55,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "batch_size": 1024, "hnsw_config": { "quant": "BIN" @@ -118,7 +118,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "BIN", "M": 32, @@ -182,7 +182,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "BIN", "M": 32, @@ -246,7 +246,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "BIN", "M": 32, @@ -310,7 +310,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "BIN", "M": 64, @@ -374,7 +374,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "BIN", "M": 64, From 2f1a6fb1cc2856e5ed5afbe113e08cb268d2809d Mon Sep 17 00:00:00 2001 From: Dvir Dukhan Date: Mon, 21 Apr 2025 09:45:20 +0000 Subject: [PATCH 186/204] adding q8 --- experiments/configurations/vectorsets-Q8.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/experiments/configurations/vectorsets-Q8.json b/experiments/configurations/vectorsets-Q8.json index fd6f64a0..9c19e7fe 100644 --- a/experiments/configurations/vectorsets-Q8.json +++ b/experiments/configurations/vectorsets-Q8.json @@ -55,7 +55,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "batch_size": 1024, "hnsw_config": { "quant": "Q8" @@ -118,7 +118,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "Q8", "M": 32, @@ -182,7 +182,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "Q8", "M": 32, @@ -246,7 +246,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "Q8", "M": 32, @@ -310,7 +310,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "Q8", "M": 64, @@ -374,7 +374,7 @@ } ], "upload_params": { - "parallel": 16, + "parallel": 32, "hnsw_config": { "quant": "Q8", "M": 64, From 20cea001f78f0ba98172b40e9816d0e1ab8c7dab Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Tue, 22 Apr 2025 15:43:05 +0100 Subject: [PATCH 187/204] Revert "Merge pull request #16 from mpozniak95/fix-sync" This reverts commit 85a6bc7ccfde0f53c06484a974cb3a6d814a7b9c, reversing changes made to ba175b1654cd8b14f38c45f38f2e76c8403192cc. --- datasets/datasets.json | 17 -------- engine/base_client/client.py | 9 ++-- engine/base_client/search.py | 80 ++++++++---------------------------- 3 files changed, 20 insertions(+), 86 deletions(-) diff --git a/datasets/datasets.json b/datasets/datasets.json index 71da5d2e..f9728a68 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -1203,22 +1203,5 @@ "type": "tar", "link": "https://storage.googleapis.com/ann-filtered-benchmark/datasets/random_keywords_1m_vocab_10_no_filters.tgz", "path": "random-100-match-kw-small-vocab/random_keywords_1m_vocab_10_no_filters" - }, - { - "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-100M-cosine.hdf5" - }, - { - "name": "laion-img-emb-512-1M-100ktrain-cosine", - "vector_size": 512, - "distance": "cosine", - "type": "h5", - "path": "laion-img-emb-512/laion-img-emb-512-1M-100ktrain-cosine.hdf5", - "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-512-100M-cosine.hdf5" } - ] diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 1d0fa69b..c78b65bc 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -40,9 +40,8 @@ def save_search_results( ): now = datetime.now() timestamp = now.strftime("%Y-%m-%d-%H-%M-%S") - pid = os.getpid() # Get the current process ID experiments_file = ( - f"{self.name}-{dataset_name}-search-{search_id}-{pid}-{timestamp}.json" + f"{self.name}-{dataset_name}-search-{search_id}-{timestamp}.json" ) result_path = RESULTS_DIR / experiments_file with open(result_path, "w") as out: @@ -98,8 +97,7 @@ def run_experiment( reader = dataset.get_reader(execution_params.get("normalize", False)) if skip_if_exists: - pid = os.getpid() # Get the current process ID - glob_pattern = f"{self.name}-{dataset.config.name}-search-{pid}-*-*.json" + glob_pattern = f"{self.name}-{dataset.config.name}-search-*-*.json" existing_results = list(RESULTS_DIR.glob(glob_pattern)) if len(existing_results) == len(self.searchers): print( @@ -137,9 +135,8 @@ def run_experiment( print("Experiment stage: Search") for search_id, searcher in enumerate(self.searchers): if skip_if_exists: - pid = os.getpid() # Get the current process ID glob_pattern = ( - f"{self.name}-{dataset.config.name}-search-{search_id}-{pid}-*.json" + f"{self.name}-{dataset.config.name}-search-{search_id}-*.json" ) existing_results = list(RESULTS_DIR.glob(glob_pattern)) print("Pattern", glob_pattern, "Results:", existing_results) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 7cde4e6e..a52ab47d 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -1,6 +1,6 @@ import functools import time -from multiprocessing import get_context, Barrier, Process, Queue +from multiprocessing import get_context from typing import Iterable, List, Optional, Tuple import itertools @@ -65,10 +65,6 @@ def search_all( ): parallel = self.search_params.get("parallel", 1) top = self.search_params.get("top", None) - - # Convert queries to a list to calculate its length - queries = list(queries) # This allows us to calculate len(queries) - # setup_search may require initialized client self.init_client( self.host, distance, self.connection_params, self.search_params @@ -84,56 +80,31 @@ def search_all( print(f"Limiting queries to [0:{MAX_QUERIES-1}]") if parallel == 1: - # Single-threaded execution start = time.perf_counter() - - results = [search_one(query) for query in tqdm.tqdm(queries)] - total_time = time.perf_counter() - start - + precisions, latencies = list( + zip(*[search_one(query) for query in tqdm.tqdm(used_queries)]) + ) else: - # Dynamically calculate chunk size - chunk_size = max(1, len(queries) // parallel) - query_chunks = list(chunked_iterable(queries, chunk_size)) + ctx = get_context(self.get_mp_start_method()) - # Function to be executed by each worker process - def worker_function(chunk, result_queue): - self.__class__.init_client( + with ctx.Pool( + processes=parallel, + initializer=self.__class__.init_client, + initargs=( self.host, distance, self.connection_params, self.search_params, + ), + ) as pool: + if parallel > 10: + 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(used_queries))) ) - self.setup_search() - results = process_chunk(chunk, search_one) - result_queue.put(results) - - # Create a queue to collect results - result_queue = Queue() - - # Create and start worker processes - processes = [] - for chunk in query_chunks: - process = Process(target=worker_function, args=(chunk, result_queue)) - processes.append(process) - process.start() - - # Start measuring time for the critical work - start = time.perf_counter() - # Collect results from all worker processes - results = [] - for _ in processes: - results.extend(result_queue.get()) - - # Wait for all worker processes to finish - for process in processes: - process.join() - - # Stop measuring time for the critical work - total_time = time.perf_counter() - start - - # Extract precisions and latencies (outside the timed section) - precisions, latencies = zip(*results) + total_time = time.perf_counter() - start self.__class__.delete_client() @@ -161,20 +132,3 @@ def post_search(self): @classmethod def delete_client(cls): pass - - -def chunked_iterable(iterable, size): - """Yield successive chunks of a given size from an iterable.""" - it = iter(iterable) - while chunk := list(itertools.islice(it, size)): - yield chunk - - -def process_chunk(chunk, search_one): - """Process a chunk of queries using the search_one function.""" - return [search_one(query) for query in chunk] - - -def process_chunk_wrapper(chunk, search_one): - """Wrapper to process a chunk of queries.""" - return process_chunk(chunk, search_one) From 8a2150892b4d1af72fbc31b570ee86e40bf80795 Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 22:34:46 +0100 Subject: [PATCH 188/204] Optimize client imports to only load engines specified in command line --- engine/clients/client_factory.py | 127 +++++++++++++++---------------- run.py | 1 + 2 files changed, 62 insertions(+), 66 deletions(-) diff --git a/engine/clients/client_factory.py b/engine/clients/client_factory.py index 90fe7ae8..e92bd7af 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,68 +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, -) -from engine.clients.vectorsets import ( - RedisVsetConfigurator, - RedisVsetSearcher, - RedisVsetUploader, -) +# 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] -ENGINE_CONFIGURATORS = { - "qdrant": QdrantConfigurator, - "weaviate": WeaviateConfigurator, - "milvus": MilvusConfigurator, - "elasticsearch": ElasticConfigurator, - "opensearch": OpenSearchConfigurator, - "redis": RedisConfigurator, - "pgvector": PgVectorConfigurator, - "vectorsets": RedisVsetConfigurator, -} - -ENGINE_UPLOADERS = { - "qdrant": QdrantUploader, - "weaviate": WeaviateUploader, - "milvus": MilvusUploader, - "elasticsearch": ElasticUploader, - "opensearch": OpenSearchUploader, - "redis": RedisUploader, - "pgvector": PgVectorUploader, - "vectorsets": RedisVsetUploader, -} - -ENGINE_SEARCHERS = { - "qdrant": QdrantSearcher, - "weaviate": WeaviateSearcher, - "milvus": MilvusSearcher, - "elasticsearch": ElasticSearcher, - "opensearch": OpenSearchSearcher, - "redis": RedisSearcher, - "pgvector": PgVectorSearcher, - "vectorsets": RedisVsetSearcher, -} + # 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): @@ -78,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", {})}, @@ -87,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", {})}, @@ -96,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/run.py b/run.py index 4d770b00..30fe29bb 100644 --- a/run.py +++ b/run.py @@ -39,6 +39,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() From 075c5c090d458e8c6b638c639aede238028151c9 Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 22:48:27 +0100 Subject: [PATCH 189/204] Add --queries option to specify number of queries to run --- engine/base_client/client.py | 3 ++- engine/base_client/search.py | 33 +++++++++++++++++++++++++++++---- run.py | 2 ++ 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index c78b65bc..54a825d4 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -90,6 +90,7 @@ def run_experiment( parallels: [int] = [], upload_start_idx: int = 0, upload_end_idx: int = -1, + num_queries: int = -1, ): execution_params = self.configurator.execution_params( distance=dataset.config.distance, vector_size=dataset.config.vector_size @@ -161,7 +162,7 @@ def run_experiment( ) search_stats = searcher.search_all( - dataset.config.distance, reader.read_queries() + dataset.config.distance, reader.read_queries(), num_queries ) # ensure we specify the client count in the results search_params["parallel"] = client_count diff --git a/engine/base_client/search.py b/engine/base_client/search.py index a52ab47d..32964192 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -2,11 +2,10 @@ import time from multiprocessing import get_context from typing import Iterable, List, Optional, Tuple -import itertools import numpy as np import tqdm -import os +import os from dataset_reader.base_reader import Query @@ -62,6 +61,7 @@ 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) @@ -72,13 +72,38 @@ def search_all( self.setup_search() search_one = functools.partial(self.__class__._search_one, top=top) - used_queries = queries + # Convert queries to a list for potential reuse + queries_list = list(queries) + # Handle MAX_QUERIES environment variable if MAX_QUERIES > 0: - used_queries = itertools.islice(queries, MAX_QUERIES) + 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( diff --git a/run.py b/run.py index 30fe29bb..005dc6be 100644 --- a/run.py +++ b/run.py @@ -26,6 +26,7 @@ def run( timeout: float = 86400.0, 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."), ): """ Example: @@ -68,6 +69,7 @@ def run( parallels, upload_start_idx, upload_end_idx, + queries, ) client.delete_client() From a8d26cd42e309cd696f2a9bb644b7cba7b99a724 Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 22:55:42 +0100 Subject: [PATCH 190/204] Add --ef-runtime option to filter search experiments by ef values --- engine/base_client/client.py | 9 +++++++++ run.py | 2 ++ 2 files changed, 11 insertions(+) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 54a825d4..c07f3d64 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -91,6 +91,7 @@ def run_experiment( 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 @@ -152,10 +153,18 @@ def run_experiment( 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}" diff --git a/run.py b/run.py index 005dc6be..5a33d288 100644 --- a/run.py +++ b/run.py @@ -27,6 +27,7 @@ def run( 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."), ): """ Example: @@ -70,6 +71,7 @@ def run( upload_start_idx, upload_end_idx, queries, + ef_runtime, ) client.delete_client() From 0209d919aa2a06120a05997e5a97f3f031309271 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 7 Apr 2025 14:21:23 -0700 Subject: [PATCH 191/204] cd /home/fco/redislabs/vector-db-benchmark && git status cd /home/fco/redislabs/vector-db-benchmark && git add engine/base_client/search.py engine/base_client/client.py chunk up the iterable before starting the processes --- engine/base_client/search.py | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 32964192..6bb1ec68 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -2,6 +2,7 @@ import time from multiprocessing import get_context from typing import Iterable, List, Optional, Tuple +from itertools import islice import numpy as np import tqdm @@ -112,22 +113,31 @@ def search_all( else: ctx = get_context(self.get_mp_start_method()) - with ctx.Pool( - processes=parallel, - initializer=self.__class__.init_client, - initargs=( + def process_initializer(): + """Initialize each process before starting the search.""" + self.__class__.init_client( self.host, distance, self.connection_params, self.search_params, - ), + ) + self.setup_search() + + # Dynamically chunk the generator + query_chunks = list(chunked_iterable(used_queries, max(1, len(used_queries) // parallel))) + + with ctx.Pool( + processes=parallel, + initializer=process_initializer, ) as pool: if parallel > 10: 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(used_queries))) + results = pool.starmap( + process_chunk, + [(chunk, search_one) for chunk in query_chunks], ) + precisions, latencies = zip(*[result for chunk in results for result in chunk]) total_time = time.perf_counter() - start @@ -157,3 +167,15 @@ def post_search(self): @classmethod def delete_client(cls): pass + + +def chunked_iterable(iterable, size): + """Yield successive chunks of a given size from an iterable.""" + it = iter(iterable) + while chunk := list(islice(it, size)): + yield chunk + + +def process_chunk(chunk, search_one): + """Process a chunk of queries using the search_one function.""" + return [search_one(query) for query in chunk] From 534de8cc98948d5575d1942f905831f4d9d9abb3 Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 23:17:36 +0100 Subject: [PATCH 192/204] Restore performance optimizations from PR #16 (85a6bc7) --- engine/base_client/client.py | 9 +++-- engine/base_client/search.py | 65 +++++++++++++++++++++++------------- 2 files changed, 48 insertions(+), 26 deletions(-) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index c07f3d64..879a6e7d 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -40,8 +40,9 @@ def save_search_results( ): now = datetime.now() timestamp = now.strftime("%Y-%m-%d-%H-%M-%S") + pid = os.getpid() # Get the current process ID experiments_file = ( - f"{self.name}-{dataset_name}-search-{search_id}-{timestamp}.json" + f"{self.name}-{dataset_name}-search-{search_id}-{pid}-{timestamp}.json" ) result_path = RESULTS_DIR / experiments_file with open(result_path, "w") as out: @@ -99,7 +100,8 @@ def run_experiment( reader = dataset.get_reader(execution_params.get("normalize", False)) if skip_if_exists: - glob_pattern = f"{self.name}-{dataset.config.name}-search-*-*.json" + pid = os.getpid() # Get the current process ID + glob_pattern = f"{self.name}-{dataset.config.name}-search-*-{pid}-*.json" existing_results = list(RESULTS_DIR.glob(glob_pattern)) if len(existing_results) == len(self.searchers): print( @@ -137,8 +139,9 @@ def run_experiment( print("Experiment stage: Search") for search_id, searcher in enumerate(self.searchers): if skip_if_exists: + pid = os.getpid() # Get the current process ID glob_pattern = ( - f"{self.name}-{dataset.config.name}-search-{search_id}-*.json" + f"{self.name}-{dataset.config.name}-search-{search_id}-{pid}-*.json" ) existing_results = list(RESULTS_DIR.glob(glob_pattern)) print("Pattern", glob_pattern, "Results:", existing_results) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 6bb1ec68..44bb195f 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -1,6 +1,6 @@ import functools import time -from multiprocessing import get_context +from multiprocessing import Process, Queue from typing import Iterable, List, Optional, Tuple from itertools import islice @@ -106,15 +106,17 @@ def search_all( used_queries = queries_list if parallel == 1: + # Single-threaded execution start = time.perf_counter() - precisions, latencies = list( - zip(*[search_one(query) for query in tqdm.tqdm(used_queries)]) - ) + results = [search_one(query) for query in tqdm.tqdm(used_queries)] + total_time = time.perf_counter() - start else: - ctx = get_context(self.get_mp_start_method()) + # Dynamically calculate chunk size + chunk_size = max(1, len(used_queries) // parallel) + query_chunks = list(chunked_iterable(used_queries, chunk_size)) - def process_initializer(): - """Initialize each process before starting the search.""" + # Function to be executed by each worker process + def worker_function(chunk, result_queue): self.__class__.init_client( self.host, distance, @@ -122,24 +124,36 @@ def process_initializer(): self.search_params, ) self.setup_search() + results = process_chunk(chunk, search_one) + result_queue.put(results) - # Dynamically chunk the generator - query_chunks = list(chunked_iterable(used_queries, max(1, len(used_queries) // parallel))) - - with ctx.Pool( - processes=parallel, - initializer=process_initializer, - ) as pool: - if parallel > 10: - time.sleep(15) # Wait for all processes to start - start = time.perf_counter() - results = pool.starmap( - process_chunk, - [(chunk, search_one) for chunk in query_chunks], - ) - precisions, latencies = zip(*[result for chunk in results for result in chunk]) + # Create a queue to collect results + result_queue = Queue() + + # Create and start worker processes + processes = [] + for chunk in query_chunks: + process = Process(target=worker_function, args=(chunk, result_queue)) + processes.append(process) + process.start() + + # Start measuring time for the critical work + start = time.perf_counter() - total_time = time.perf_counter() - start + # Collect results from all worker processes + results = [] + for _ in processes: + results.extend(result_queue.get()) + + # Wait for all worker processes to finish + for process in processes: + process.join() + + # Stop measuring time for the critical work + total_time = time.perf_counter() - start + + # Extract precisions and latencies (outside the timed section) + precisions, latencies = zip(*results) self.__class__.delete_client() @@ -179,3 +193,8 @@ def chunked_iterable(iterable, size): def process_chunk(chunk, search_one): """Process a chunk of queries using the search_one function.""" return [search_one(query) for query in chunk] + + +def process_chunk_wrapper(chunk, search_one): + """Wrapper to process a chunk of queries.""" + return process_chunk(chunk, search_one) From 71c1f3b2b7c0a1080413b1cdaae2f0cd0a13191f Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 23:25:21 +0100 Subject: [PATCH 193/204] Add real-time progress bar with throughput display for parallel execution --- engine/base_client/search.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 44bb195f..b1e62641 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -140,10 +140,20 @@ def worker_function(chunk, result_queue): # Start measuring time for the critical work start = time.perf_counter() + # Create a progress bar for the total number of queries + total_queries = len(used_queries) + pbar = tqdm.tqdm(total=total_queries, desc="Processing queries", unit="queries") + # Collect results from all worker processes results = [] for _ in processes: - results.extend(result_queue.get()) + chunk_results = result_queue.get() + results.extend(chunk_results) + # Update the progress bar with the number of processed queries in this chunk + pbar.update(len(chunk_results)) + + # Close the progress bar + pbar.close() # Wait for all worker processes to finish for process in processes: @@ -192,6 +202,7 @@ def chunked_iterable(iterable, size): def process_chunk(chunk, search_one): """Process a chunk of queries using the search_one function.""" + # No progress bar in worker processes to avoid cluttering the output return [search_one(query) for query in chunk] From 2eda5b752dbd1bb74dc23b85763f33027a65563d Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 23:28:14 +0100 Subject: [PATCH 194/204] Add test script for multiprocessing with progress bar --- test_multiprocessing.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 test_multiprocessing.py diff --git a/test_multiprocessing.py b/test_multiprocessing.py new file mode 100644 index 00000000..40384946 --- /dev/null +++ b/test_multiprocessing.py @@ -0,0 +1,36 @@ +from engine.base_client.search import BaseSearcher +from dataset_reader.base_reader import Query +import time + +class TestSearcher(BaseSearcher): + @classmethod + def init_client(cls, host, distance, connection_params, search_params): + pass + + @classmethod + def search_one(cls, vector, meta_conditions, top): + return [] + + @classmethod + def _search_one(cls, query, top=None): + # Add a small delay to simulate real work + time.sleep(0.001) + return 1.0, 0.1 + + def setup_search(self): + pass + +# Create test queries +queries = [Query(vector=[0.1]*10, meta_conditions=None, expected_result=None) for _ in range(1000)] + +# Create a searcher with parallel=10 +searcher = TestSearcher('localhost', {}, {'parallel': 10}) + +# Run the search_all method +start = time.perf_counter() +results = searcher.search_all('cosine', queries) +total_time = time.perf_counter() - start + +print(f'Number of queries: {len(results["latencies"])}') +print(f'Total time: {total_time:.6f} seconds') +print(f'Throughput: {results["rps"]:.2f} queries/sec') From 6127e847306e3506469dd2f7bf196a9870128ae5 Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 23:33:10 +0100 Subject: [PATCH 195/204] Optimize query cycling for large query counts using generators --- engine/base_client/search.py | 70 ++++++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 19 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index b1e62641..6a512722 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -84,36 +84,69 @@ def search_all( # Handle num_queries parameter if num_queries > 0: - # If we need more queries than available, cycle through the list + # If we need more queries than available, use a cycling generator 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 + print(f"Using a cycling generator to efficiently process queries.") + + # Create a cycling generator function + def cycling_query_generator(queries, total_count): + """Generate queries by cycling through the available ones.""" + count = 0 + while count < total_count: + for query in queries: + if count < total_count: + yield query + count += 1 + else: + break + + # Use the generator instead of creating a full list + used_queries = cycling_query_generator(queries_list, num_queries) + # We need to know the total count for the progress bar + total_query_count = num_queries else: used_queries = queries_list[:num_queries] + total_query_count = len(used_queries) print(f"Using {num_queries} queries") else: used_queries = queries_list + total_query_count = len(used_queries) if parallel == 1: # Single-threaded execution start = time.perf_counter() - results = [search_one(query) for query in tqdm.tqdm(used_queries)] + + # Create a progress bar with the correct total + pbar = tqdm.tqdm(total=total_query_count, desc="Processing queries", unit="queries") + + # Process queries with progress updates + results = [] + for query in used_queries: + results.append(search_one(query)) + pbar.update(1) + + # Close the progress bar + pbar.close() + total_time = time.perf_counter() - start else: - # Dynamically calculate chunk size - chunk_size = max(1, len(used_queries) // parallel) - query_chunks = list(chunked_iterable(used_queries, chunk_size)) + # Dynamically calculate chunk size based on total_query_count + chunk_size = max(1, total_query_count // parallel) + + # If used_queries is a generator, we need to handle it differently + if hasattr(used_queries, '__next__'): + # For generators, we'll create chunks on-the-fly + query_chunks = [] + remaining = total_query_count + while remaining > 0: + current_chunk_size = min(chunk_size, remaining) + chunk = [next(used_queries) for _ in range(current_chunk_size)] + query_chunks.append(chunk) + remaining -= current_chunk_size + else: + # For lists, we can use the chunked_iterable function + query_chunks = list(chunked_iterable(used_queries, chunk_size)) # Function to be executed by each worker process def worker_function(chunk, result_queue): @@ -141,8 +174,7 @@ def worker_function(chunk, result_queue): start = time.perf_counter() # Create a progress bar for the total number of queries - total_queries = len(used_queries) - pbar = tqdm.tqdm(total=total_queries, desc="Processing queries", unit="queries") + pbar = tqdm.tqdm(total=total_query_count, desc="Processing queries", unit="queries") # Collect results from all worker processes results = [] From 343e906f9d7a78afc6321b745902dec515fc37ef Mon Sep 17 00:00:00 2001 From: fcostaoliveira Date: Tue, 6 May 2025 23:33:53 +0100 Subject: [PATCH 196/204] Update test script to test query cycling optimization --- test_multiprocessing.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test_multiprocessing.py b/test_multiprocessing.py index 40384946..341289ec 100644 --- a/test_multiprocessing.py +++ b/test_multiprocessing.py @@ -20,15 +20,15 @@ def _search_one(cls, query, top=None): def setup_search(self): pass -# Create test queries -queries = [Query(vector=[0.1]*10, meta_conditions=None, expected_result=None) for _ in range(1000)] +# Create a small set of test queries +queries = [Query(vector=[0.1]*10, meta_conditions=None, expected_result=None) for _ in range(10)] # Create a searcher with parallel=10 searcher = TestSearcher('localhost', {}, {'parallel': 10}) -# Run the search_all method +# Run the search_all method with a large num_queries parameter start = time.perf_counter() -results = searcher.search_all('cosine', queries) +results = searcher.search_all('cosine', queries, num_queries=1000) total_time = time.perf_counter() - start print(f'Number of queries: {len(results["latencies"])}') From 7640df06e67e2c86f485b4f0aa49afa5b61653ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Thu, 12 Jun 2025 16:43:42 +0200 Subject: [PATCH 197/204] Add SVS support (#23) --- engine/clients/redis/search.py | 9 ++++- engine/clients/redis/upload.py | 10 ++--- experiments/configurations/create-svs.py | 51 ++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 experiments/configurations/create-svs.py diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 60c21dca..374f4222 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -37,7 +37,10 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic # 'EF_RUNTIME' is irrelevant for 'ADHOC_BF' policy if cls.hybrid_policy != "ADHOC_BF": cls.knn_conditions = "EF_RUNTIME $EF" - + elif cls.algorithm == "SVS": + cls.knn_conditions = "WS_SEARCH $WS_SEARCH" + elif cls.algorithm == "SVS_TIERED": + cls.knn_conditions = "WS_SEARCH $WS_SEARCH" cls.data_type = "FLOAT32" if "search_params" in cls.search_params: cls.data_type = ( @@ -95,6 +98,10 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: # 'EF_RUNTIME' is irrelevant for 'ADHOC_BF' policy if cls.hybrid_policy != "ADHOC_BF": params_dict["EF"] = cls.search_params["search_params"]["ef"] + if cls.algorithm == "SVS": + params_dict["WS_SEARCH"] = cls.search_params["search_params"]["WS_SEARCH"] + if cls.algorithm == "SVS_TIERED": + params_dict["WS_SEARCH"] = cls.search_params["search_params"]["WS_SEARCH"] results = cls._ft.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 e76e7da3..beb4bb9d 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -95,13 +95,13 @@ def upload_batch( @classmethod def post_upload(cls, _distance): - if cls.algorithm != "HNSW" and cls.algorithm != "FLAT": + if cls.algorithm != "HNSW" and cls.algorithm != "FLAT" and cls.algorithm != "SVS" and cls.algorithm != "SVS_TIERED": 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"]) + if "percent_indexed" in index_info: + percent_index = float(index_info["percent_indexed"]) while percent_index < 1.0: print( "waiting for index to be fully processed. current percent index: {}".format( @@ -109,7 +109,7 @@ def post_upload(cls, _distance): ) ) time.sleep(1) - percent_index = float(cls.client.ft().info()["percent_index"]) + percent_index = float(cls.client.ft().info()["percent_indexed"]) # memorydb if "current_lag" in index_info: current_lag = float(index_info["current_lag"]) @@ -136,7 +136,7 @@ def get_memory_usage(cls): used_memory.append(used_memory_shard) index_info = {} device_info = {} - if cls.algorithm != "HNSW" and cls.algorithm != "FLAT": + if cls.algorithm != "HNSW" and cls.algorithm != "FLAT" and cls.algorithm != "SVS" and cls.algorithm != "SVS_TIERED": print(f"TODO: FIXME!! Avoiding calling ft.info for {cls.algorithm}...") else: index_info = cls.client_decode.ft().info() diff --git a/experiments/configurations/create-svs.py b/experiments/configurations/create-svs.py new file mode 100644 index 00000000..e84d0200 --- /dev/null +++ b/experiments/configurations/create-svs.py @@ -0,0 +1,51 @@ +import json + +threads = [16] +ws_constructs = [100] +ws_search = [32, 40, 48, 64] +#ws_search = [48] +graph_degree = [32] +#quantization = ["0", "4x4", "4x8", "8", "4"] +quantization = ["8"] +topKs = [10] +data_types = ["FLOAT32"] + +for algo in ["svs_tiered"]: + for data_type in data_types: + for ws_construct in ws_constructs: + for graph_d in graph_degree: + for quant in quantization: + configs = [] + for thread in threads: + config = { + "name": f"svs-test-algo-{algo}-graph-{graph_d}-ws-con-{ws_construct}-quant-{quant}-threads-{thread}-dt-{data_type}", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": algo, + "data_type": data_type, + f"{algo}_config": {"NUM_THREADS": thread, "GRAPH_DEGREE": graph_d, "WS_CONSTRUCTION": ws_construct, "QUANTIZATION": quant}, + }, + "search_params": [], + "upload_params": { + "parallel": 128, + "data_type": data_type, + "algorithm": algo, + }, + } + for client in [1, 8, 16, 32, 64, 128]: + for ws_s in ws_search: + for top in topKs: + test_config = { + "algorithm": algo, + "parallel": client, + "top": top, + "search_params": {"WS_SEARCH": ws_s, "data_type": data_type}, + } + config["search_params"].append(test_config) + configs.append(config) + + fname = f"svs-test-algo-{algo}-graph-{graph_d}-ws-con-{ws_construct}-quant-{quant}-threads-{thread}-dt-{data_type}.json" + with open(fname, "w") as json_fd: + json.dump(configs, json_fd, indent=2) + print(f"Created {len(configs)} configs for {fname}.") \ No newline at end of file From fd59cd86fa140f164f328f1123224bcf595217ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Thu, 12 Jun 2025 16:44:39 +0200 Subject: [PATCH 198/204] Add reporting memory usage to vectorsets upload, fix running vectorsets with --skip-search --skip-upload (#22) * Add script for creating vectorsets configuration, do not flush database on init, make noquant default * Add topKs to create-vectorsets script * Add get_memory_usage function to vectorsets * Add empty line --- engine/clients/vectorsets/configure.py | 2 - engine/clients/vectorsets/upload.py | 25 ++++++++++- .../configurations/create-vectorsets.py | 41 +++++++++++++++++++ 3 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 experiments/configurations/create-vectorsets.py diff --git a/engine/clients/vectorsets/configure.py b/engine/clients/vectorsets/configure.py index 5c5a06ae..95d111ba 100644 --- a/engine/clients/vectorsets/configure.py +++ b/engine/clients/vectorsets/configure.py @@ -20,7 +20,6 @@ def __init__(self, host, collection_params: dict, connection_params: dict): self.client = redis_constructor( host=host, port=REDIS_PORT, password=REDIS_AUTH, username=REDIS_USER ) - self.client.flushall() def clean(self): conns = [self.client] @@ -30,7 +29,6 @@ def clean(self): for node in self.client.get_primaries() ] for conn in conns: - index = conn.ft() try: conn.flushall() except redis.ResponseError as e: diff --git a/engine/clients/vectorsets/upload.py b/engine/clients/vectorsets/upload.py index ccd16dd9..aec62dfb 100644 --- a/engine/clients/vectorsets/upload.py +++ b/engine/clients/vectorsets/upload.py @@ -23,7 +23,15 @@ 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.client_decode = redis_constructor( + host=host, + port=REDIS_PORT, + password=REDIS_AUTH, + username=REDIS_USER, + decode_responses=True, + ) cls.upload_params = upload_params + cls._is_cluster = True if REDIS_CLUSTER else False @classmethod def upload_batch( @@ -33,7 +41,7 @@ def upload_batch( 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") + quant = hnsw_params.get("quant", "NOQUANT") p = cls.client.pipeline(transaction=False) for i in range(len(ids)): @@ -46,3 +54,18 @@ def upload_batch( @classmethod def post_upload(cls, _distance): 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) + + return {"used_memory": sum(used_memory), + "shards": len(used_memory)} diff --git a/experiments/configurations/create-vectorsets.py b/experiments/configurations/create-vectorsets.py new file mode 100644 index 00000000..70393e7e --- /dev/null +++ b/experiments/configurations/create-vectorsets.py @@ -0,0 +1,41 @@ +import json + +ms = [16] +ef_constructs = [100] +ef_runtimes = [40, 80] +# qants = ["NOQUANT", "Q8", "BIN"] +qants = ["NOQUANT"] +configs = [] +topKs = [10] +for m in ms: + for ef_construct in ef_constructs: + for quant in qants: + config = { + "name": f"redis-intel-vectorsets-m-{m}-ef-{ef_construct}-quant-{quant}", + "engine": "vectorsets", + "connection_params": {}, + "collection_params": {}, + "search_params": [], + "upload_params": { + "parallel": 128, + "hnsw_config": { + "M": m, + "EF_CONSTRUCTION": ef_construct, + "quant": quant, + }, + }, + } + for client in [1, 8]: + for top in topKs: + for ef_runtime in ef_runtimes: + test_config = { + "top": top, + "parallel": client, + "search_params": {"ef": ef_runtime}, + } + config["search_params"].append(test_config) + configs.append(config) + fname = f"redis-intel-vectorsets.json" + with open(fname, "w") as json_fd: + json.dump(configs, json_fd, indent=2) + print(f"created {len(configs)} configs for {fname}.") From 878f46d23a09706652c56866ff42603ede5a4c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mihai=20Capot=C4=83?= Date: Fri, 13 Jun 2025 08:50:09 -0700 Subject: [PATCH 199/204] Record start time before query processing starts (#21) Also record end time immediately after obtaining results, before joining the processes. Also remove progress bar because all processes do not report intermediate progress and all processes finish in a similar time. --- engine/base_client/search.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/engine/base_client/search.py b/engine/base_client/search.py index 6a512722..c50b3391 100644 --- a/engine/base_client/search.py +++ b/engine/base_client/search.py @@ -163,37 +163,32 @@ def worker_function(chunk, result_queue): # Create a queue to collect results result_queue = Queue() - # Create and start worker processes + # Create worker processes processes = [] for chunk in query_chunks: process = Process(target=worker_function, args=(chunk, result_queue)) processes.append(process) - process.start() # Start measuring time for the critical work start = time.perf_counter() - # Create a progress bar for the total number of queries - pbar = tqdm.tqdm(total=total_query_count, desc="Processing queries", unit="queries") + # Start worker processes + for process in processes: + process.start() # Collect results from all worker processes results = [] for _ in processes: chunk_results = result_queue.get() results.extend(chunk_results) - # Update the progress bar with the number of processed queries in this chunk - pbar.update(len(chunk_results)) - # Close the progress bar - pbar.close() + # Stop measuring time for the critical work + total_time = time.perf_counter() - start # Wait for all worker processes to finish for process in processes: process.join() - # Stop measuring time for the critical work - total_time = time.perf_counter() - start - # Extract precisions and latencies (outside the timed section) precisions, latencies = zip(*results) From 5544ec09ee28ae0231f8db90b7ee582ebfb0d6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Tue, 24 Jun 2025 19:14:20 +0200 Subject: [PATCH 200/204] Add laion 768-1M and dbpedia 1536 100 neighbors datasets (#24) --- datasets/datasets.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/datasets/datasets.json b/datasets/datasets.json index f9728a68..784cab9b 100644 --- a/datasets/datasets.json +++ b/datasets/datasets.json @@ -103,6 +103,14 @@ "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-768-1M-cosine", + "vector_size": 768, + "distance": "cosine", + "type": "h5", + "path": "laion-img-emb-768/laion-img-emb-768-1M-cosine.hdf5", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/laion-img-emb-768-1M-cosine.hdf5" + }, { "name": "laion-img-emb-768d-1Billion-cosine", "vector_size": 768, @@ -947,6 +955,14 @@ "path": "dbpedia-openai-1M-1536-angular/dbpedia_openai_1M", "link": "https://storage.googleapis.com/ann-filtered-benchmark/datasets/dbpedia_openai_1M.tgz" }, + { + "name": "dbpedia-openai-1M-1536-angular-100neighbors", + "vector_size": 1536, + "distance": "cosine", + "type": "tar", + "path": "dbpedia-openai-1M-1536-angular-100neighbors/dbpedia_openai_1M", + "link": "http://benchmarks.redislabs.s3.amazonaws.com/vecsim/laion400m/dbpedia_openai_1M.tgz" + }, { "name": "h-and-m-2048-angular-filters", "vector_size": 2048, From 5aa9552304f51b940ca27675fd7548f2d56f6dcb Mon Sep 17 00:00:00 2001 From: Marcin Pozniak Date: Wed, 25 Jun 2025 02:00:26 -0700 Subject: [PATCH 201/204] Remove SVS and SVS_TIERED add SVS-VAMANA algorithm --- engine/clients/redis/search.py | 10 +++------- engine/clients/redis/upload.py | 4 ++-- experiments/configurations/create-svs.py | 10 +++++----- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 374f4222..3f22fe94 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -37,10 +37,8 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic # 'EF_RUNTIME' is irrelevant for 'ADHOC_BF' policy if cls.hybrid_policy != "ADHOC_BF": cls.knn_conditions = "EF_RUNTIME $EF" - elif cls.algorithm == "SVS": - cls.knn_conditions = "WS_SEARCH $WS_SEARCH" - elif cls.algorithm == "SVS_TIERED": - cls.knn_conditions = "WS_SEARCH $WS_SEARCH" + elif cls.algorithm == "SVS-VAMANA": + cls.knn_conditions = "WS_SEARCH $SEARCH_WINDOW_SIZE" cls.data_type = "FLOAT32" if "search_params" in cls.search_params: cls.data_type = ( @@ -99,9 +97,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: if cls.hybrid_policy != "ADHOC_BF": params_dict["EF"] = cls.search_params["search_params"]["ef"] if cls.algorithm == "SVS": - params_dict["WS_SEARCH"] = cls.search_params["search_params"]["WS_SEARCH"] - if cls.algorithm == "SVS_TIERED": - params_dict["WS_SEARCH"] = cls.search_params["search_params"]["WS_SEARCH"] + params_dict["SEARCH_WINDOW_SIZE"] = cls.search_params["search_params"]["SEARCH_WINDOW_SIZE"] results = cls._ft.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 beb4bb9d..2022290c 100644 --- a/engine/clients/redis/upload.py +++ b/engine/clients/redis/upload.py @@ -95,7 +95,7 @@ def upload_batch( @classmethod def post_upload(cls, _distance): - if cls.algorithm != "HNSW" and cls.algorithm != "FLAT" and cls.algorithm != "SVS" and cls.algorithm != "SVS_TIERED": + if cls.algorithm != "HNSW" and cls.algorithm != "FLAT" and cls.algorithm != "SVS-VAMANA": print(f"TODO: FIXME!! Avoiding calling ft.info for {cls.algorithm}...") return {} index_info = cls.client.ft().info() @@ -136,7 +136,7 @@ def get_memory_usage(cls): used_memory.append(used_memory_shard) index_info = {} device_info = {} - if cls.algorithm != "HNSW" and cls.algorithm != "FLAT" and cls.algorithm != "SVS" and cls.algorithm != "SVS_TIERED": + if cls.algorithm != "HNSW" and cls.algorithm != "FLAT" and cls.algorithm != "SVS-VAMANA": print(f"TODO: FIXME!! Avoiding calling ft.info for {cls.algorithm}...") else: index_info = cls.client_decode.ft().info() diff --git a/experiments/configurations/create-svs.py b/experiments/configurations/create-svs.py index e84d0200..105bc97b 100644 --- a/experiments/configurations/create-svs.py +++ b/experiments/configurations/create-svs.py @@ -5,12 +5,12 @@ ws_search = [32, 40, 48, 64] #ws_search = [48] graph_degree = [32] -#quantization = ["0", "4x4", "4x8", "8", "4"] -quantization = ["8"] +#quantization = ["NO_COMPRESSION", "LVQ4x4", "LVQ4x8", "LVQ4", "LVQ8", "LeanVec4x8", "LeanVec8x8"] +quantization = ["LVQ4x8"] topKs = [10] data_types = ["FLOAT32"] -for algo in ["svs_tiered"]: +for algo in ["svs-vamana"]: for data_type in data_types: for ws_construct in ws_constructs: for graph_d in graph_degree: @@ -24,7 +24,7 @@ "collection_params": { "algorithm": algo, "data_type": data_type, - f"{algo}_config": {"NUM_THREADS": thread, "GRAPH_DEGREE": graph_d, "WS_CONSTRUCTION": ws_construct, "QUANTIZATION": quant}, + f"{algo}_config": {"NUM_THREADS": thread, "GRAPH_MAX_DEGREE": graph_d, "CONSTRUCTION_WINDOW_SIZE": ws_construct, "COMPRESSION": quant}, }, "search_params": [], "upload_params": { @@ -40,7 +40,7 @@ "algorithm": algo, "parallel": client, "top": top, - "search_params": {"WS_SEARCH": ws_s, "data_type": data_type}, + "search_params": {"SEARCH_WINDOW_SIZE": ws_s, "data_type": data_type}, } config["search_params"].append(test_config) configs.append(config) From 0fae9e1a17f7d12e3f6a5585c3000399ffcde7ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mihai=20Capot=C4=83?= Date: Wed, 25 Jun 2025 18:26:12 -0700 Subject: [PATCH 202/204] Fix SVS-VAMANA algorithm name --- engine/clients/redis/search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 3f22fe94..88fef8a2 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -96,7 +96,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: # 'EF_RUNTIME' is irrelevant for 'ADHOC_BF' policy if cls.hybrid_policy != "ADHOC_BF": params_dict["EF"] = cls.search_params["search_params"]["ef"] - if cls.algorithm == "SVS": + if cls.algorithm == "SVS-VAMANA": params_dict["SEARCH_WINDOW_SIZE"] = cls.search_params["search_params"]["SEARCH_WINDOW_SIZE"] results = cls._ft.search(q, query_params=params_dict) From c444cbbe500136a303ae944791f695c8c327509d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mihai=20Capot=C4=83?= Date: Wed, 25 Jun 2025 19:07:23 -0700 Subject: [PATCH 203/204] Add calibration --- engine/base_client/client.py | 68 ++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/engine/base_client/client.py b/engine/base_client/client.py index 879a6e7d..4f097bfc 100644 --- a/engine/base_client/client.py +++ b/engine/base_client/client.py @@ -7,7 +7,9 @@ from benchmark import ROOT_DIR from benchmark.dataset import Dataset +from dataset_reader.base_reader import BaseReader from engine.base_client.configure import BaseConfigurator +from engine.base_client.distances import Distance from engine.base_client.search import BaseSearcher from engine.base_client.upload import BaseUploader @@ -168,6 +170,23 @@ def run_experiment( 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 + + if (precision := search_params.get("calibration_precision", None)) is not None: + top = search_params["top"] + calibration_param = search_params["calibration_param"] + calibration_value, calibration_precision = calibrate( + searcher, + calibration_param, + top, + precision, + dataset.config.distance, + reader, + ) + print( + f"Calibrated {top=} {precision=} {calibration_value=} {calibration_precision=!s}" + ) + searcher.search_params["search_params"][calibration_param] = calibration_value + for repetition in range(1, REPETITIONS + 1): print( f"\tRunning repetition {repetition} ef runtime: {ef}; #clients {client_count}" @@ -196,3 +215,52 @@ def delete_client(self): for s in self.searchers: s.delete_client() + +def calibrate( + searcher: BaseSearcher, + calibration_param: str, + min_value: int, + precision: float, + distance: Distance, + reader: BaseReader, + max_value: int = 1000, +) -> tuple[int, float]: + """Calibrate searcher for a given precision.""" + if min_value > max_value: + raise ValueError( + f"{min_value=} cannot be greater than {max_value=}" + ) + lower_bound = min_value + upper_bound = max_value + lower_bound_visited = False + upper_bound_visited = False + current = (lower_bound + upper_bound) // 2 + previous = current + current_precision = 0 + while True: + searcher.search_params["search_params"][calibration_param] = current + search_stats = searcher.search_all(distance, reader.read_queries()) + previous_precision = current_precision + current_precision = search_stats["mean_precisions"] + if current_precision == precision: + return current, current_precision + elif current_precision > precision: + upper_bound = current + upper_bound_visited = True + else: + lower_bound = current + lower_bound_visited = True + next_value = (lower_bound + upper_bound) // 2 + if ( + (lower_bound_visited and next_value == lower_bound) + or (upper_bound_visited and next_value == upper_bound) + ): + if abs(previous_precision - precision) < abs(current_precision - precision): + final_precision = previous_precision + final_value = previous + else: + final_precision = current_precision + final_value = current + return final_value, final_precision + previous = current + current = next_value From 0590e976d146f56a6af508f02e3a69e45d185eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Po=C5=BAniak?= Date: Thu, 26 Jun 2025 20:07:09 +0200 Subject: [PATCH 204/204] Dbpedia configuration (#28) * Add dbpedia calibration json * Add LVQ's to dbpedia-calibration configuration * Fix create-svs * Add LeanVec4X8 --- engine/clients/redis/search.py | 4 +- experiments/configurations/create-svs.py | 26 +- .../configurations/dbpedia-calibration.json | 324 ++++++++++++++++++ 3 files changed, 339 insertions(+), 15 deletions(-) create mode 100644 experiments/configurations/dbpedia-calibration.json diff --git a/engine/clients/redis/search.py b/engine/clients/redis/search.py index 88fef8a2..31cf27bd 100644 --- a/engine/clients/redis/search.py +++ b/engine/clients/redis/search.py @@ -38,7 +38,7 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic if cls.hybrid_policy != "ADHOC_BF": cls.knn_conditions = "EF_RUNTIME $EF" elif cls.algorithm == "SVS-VAMANA": - cls.knn_conditions = "WS_SEARCH $SEARCH_WINDOW_SIZE" + cls.knn_conditions = "WS_SEARCH $WS_SEARCH" cls.data_type = "FLOAT32" if "search_params" in cls.search_params: cls.data_type = ( @@ -97,7 +97,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]: if cls.hybrid_policy != "ADHOC_BF": params_dict["EF"] = cls.search_params["search_params"]["ef"] if cls.algorithm == "SVS-VAMANA": - params_dict["SEARCH_WINDOW_SIZE"] = cls.search_params["search_params"]["SEARCH_WINDOW_SIZE"] + params_dict["WS_SEARCH"] = cls.search_params["search_params"]["WS_SEARCH"] results = cls._ft.search(q, query_params=params_dict) return [(int(result.id), float(result.vector_score)) for result in results.docs] diff --git a/experiments/configurations/create-svs.py b/experiments/configurations/create-svs.py index 105bc97b..b904de3b 100644 --- a/experiments/configurations/create-svs.py +++ b/experiments/configurations/create-svs.py @@ -1,14 +1,14 @@ import json threads = [16] -ws_constructs = [100] -ws_search = [32, 40, 48, 64] +ws_constructs = [200] +ws_search = [177] #ws_search = [48] graph_degree = [32] -#quantization = ["NO_COMPRESSION", "LVQ4x4", "LVQ4x8", "LVQ4", "LVQ8", "LeanVec4x8", "LeanVec8x8"] -quantization = ["LVQ4x8"] -topKs = [10] -data_types = ["FLOAT32"] +#quantization = ["LVQ4X4", "LVQ4x8", "LVQ8", "LVQ4"] +quantization = ["LVQ4X4"] +topKs = [100] +data_types = ["FLOAT16", "FLOAT32"] for algo in ["svs-vamana"]: for data_type in data_types: @@ -18,34 +18,34 @@ configs = [] for thread in threads: config = { - "name": f"svs-test-algo-{algo}-graph-{graph_d}-ws-con-{ws_construct}-quant-{quant}-threads-{thread}-dt-{data_type}", + "name": f"svs-{algo}-quant-{quant}-dt-{data_type}", "engine": "redis", "connection_params": {}, "collection_params": { "algorithm": algo, "data_type": data_type, - f"{algo}_config": {"NUM_THREADS": thread, "GRAPH_MAX_DEGREE": graph_d, "CONSTRUCTION_WINDOW_SIZE": ws_construct, "COMPRESSION": quant}, + f"{algo}_config": {"NUM_THREADS": thread, "GRAPH_MAX_DEGREE": graph_d, "CONSTRUCTION_WINDOW_SIZE": ws_construct, "compression": quant}, }, "search_params": [], "upload_params": { - "parallel": 128, + "parallel": 100, "data_type": data_type, "algorithm": algo, }, } - for client in [1, 8, 16, 32, 64, 128]: + for client in [100]: for ws_s in ws_search: for top in topKs: test_config = { "algorithm": algo, "parallel": client, "top": top, - "search_params": {"SEARCH_WINDOW_SIZE": ws_s, "data_type": data_type}, + "search_params": {"WS_SEARCH": ws_s, "data_type": data_type}, } config["search_params"].append(test_config) configs.append(config) - fname = f"svs-test-algo-{algo}-graph-{graph_d}-ws-con-{ws_construct}-quant-{quant}-threads-{thread}-dt-{data_type}.json" + fname = f"svs-{algo}-quant-{quant}-dt-{data_type}.json" with open(fname, "w") as json_fd: json.dump(configs, json_fd, indent=2) - print(f"Created {len(configs)} configs for {fname}.") \ No newline at end of file + print(f"Created {len(configs)} configs for {fname}.") diff --git a/experiments/configurations/dbpedia-calibration.json b/experiments/configurations/dbpedia-calibration.json new file mode 100644 index 00000000..a315de2e --- /dev/null +++ b/experiments/configurations/dbpedia-calibration.json @@ -0,0 +1,324 @@ +[ + { + "name": "dbpedia-cal-hnsw-float16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT16", + "hnsw_config": { + "M": 16, + "DISTANCE_METRIC": "L2", + "EF_CONSTRUCTION": 200 + } + }, + "search_params": [ + { + "parallel": 100, + "top": 100, + "calibration_param": "ef", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 100, + "algorithm": "hnsw", + "data_type": "FLOAT16" + } + }, + { + "name": "dbpedia-cal-hnsw-float32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "hnsw", + "data_type": "FLOAT32", + "hnsw_config": { + "M": 16, + "DISTANCE_METRIC": "L2", + "EF_CONSTRUCTION": 200 + } + }, + "search_params": [ + { + "parallel": 100, + "top": 100, + "calibration_param": "ef", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 100, + "algorithm": "hnsw", + "data_type": "FLOAT32" + } + }, +{ + "name": "dbpedia-cal-svs-noquant-float16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT16", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200 + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT16", + "algorithm": "svs-vamana" + } + }, + { + "name": "dbpedia-cal-svs-noquant-float32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT32", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200 + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT32", + "algorithm": "svs-vamana" + } + }, + { + "name": "dbpedia-cal-svs-LVQ4X8-float16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT16", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200, + "compression": "LVQ4X8" + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT16", + "algorithm": "svs-vamana" + } + }, + { + "name": "dbpedia-cal-svs-LVQ4X8-float32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT32", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200, + "compression": "LVQ4X8" + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT32", + "algorithm": "svs-vamana" + } + }, + { + "name": "dbpedia-cal-svs-LVQ4X4-float32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT32", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200, + "compression": "LVQ4X4" + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT32", + "algorithm": "svs-vamana" + } + }, + { + "name": "dbpedia-cal-svs-LVQ4X4-float16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT16", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200, + "compression": "LVQ4X4" + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT16", + "algorithm": "svs-vamana" + } + }, + { + "name": "dbpedia-cal-svs-LeanVec4x8-float16", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT16", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200, + "compression": "LeanVec4x8" + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT16" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT16", + "algorithm": "svs-vamana" + } + }, + { + "name": "dbpedia-cal-svs-LeanVec4x8-float32", + "engine": "redis", + "connection_params": {}, + "collection_params": { + "algorithm": "svs-vamana", + "data_type": "FLOAT32", + "svs-vamana_config": { + "NUM_THREADS": 16, + "DISTANCE_METRIC": "L2", + "GRAPH_MAX_DEGREE": 32, + "CONSTRUCTION_WINDOW_SIZE": 200, + "compression": "LeanVec4x8" + } + }, + "search_params": [ + { + "algorithm": "svs-vamana", + "parallel": 100, + "top": 100, + "calibration_param": "WS_SEARCH", + "calibration_precision": 0.95, + "search_params": { + "data_type": "FLOAT32" + } + } + ], + "upload_params": { + "parallel": 100, + "data_type": "FLOAT32", + "algorithm": "svs-vamana" + } + } +] \ No newline at end of file