MCPcopy Create free account
hub / github.com/cosdata/cosdata / generate_brute_force_results

Function generate_brute_force_results

tests/test-dataset.py:319–411  ·  view source on GitHub ↗

Generate brute force results by processing dataset in chunks

(dataset_name, quick_test=False)

Source from the content-addressed store, hash-verified

317
318
319def generate_brute_force_results(dataset_name, quick_test=False):
320 """Generate brute force results by processing dataset in chunks"""
321 print("Generating brute force results using chunk processing...")
322
323 dataset_config = datasets[dataset_name]
324 dataset_dir = os.path.join("datasets", dataset_name)
325
326 # Determine sample size
327 k = 10 if quick_test else 100
328 reservoir = []
329 total_vectors = 0
330 file_count = 0
331
332 # Pass 1: Reservoir sampling to select query vectors
333 random.seed(42)
334 while True:
335 path = os.path.join(dataset_dir, f"test{file_count}.parquet")
336 if not os.path.exists(path):
337 break
338
339 df = pd.read_parquet(path)
340 for index, row in df.iterrows():
341 total_vectors += 1
342 # Get vector data
343 id_val = row[dataset_config["id"]] if dataset_config["id"] else index
344 embedding = row[dataset_config["embeddings"]]
345 vector = pre_process_vector(id_val, embedding)
346
347 # Reservoir sampling
348 if len(reservoir) < k:
349 reservoir.append((vector["id"], vector["dense_values"]))
350 else:
351 j = random.randint(0, total_vectors-1)
352 if j < k:
353 reservoir[j] = (vector["id"], vector["dense_values"])
354 file_count += 1
355
356 # Prepare query data
357 query_ids = [item[0] for item in reservoir]
358 query_vectors = np.array([item[1] for item in reservoir], dtype=np.float32)
359
360 # Initialize heaps for each query (min-heap for top-k)
361 heaps = [[] for _ in range(len(query_vectors))]
362
363 # Pass 2: Process dataset in chunks to find top matches
364 file_count = 0
365 while True:
366 path = os.path.join(dataset_dir, f"test{file_count}.parquet")
367 if not os.path.exists(path):
368 break
369
370 df = pd.read_parquet(path)
371 chunk_vectors = []
372 chunk_ids = []
373
374 for index, row in df.iterrows():
375 id_val = row[dataset_config["id"]] if dataset_config["id"] else index
376 embedding = row[dataset_config["embeddings"]]

Callers 1

test-dataset.pyFile · 0.70

Calls 2

pre_process_vectorFunction · 0.70
appendMethod · 0.45

Tested by

no test coverage detected