diff --git a/alloydb/notebooks/alloydb_vector_search_benchmark.ipynb b/alloydb/notebooks/alloydb_vector_search_benchmark.ipynb
new file mode 100644
index 0000000000..c495ccfc70
--- /dev/null
+++ b/alloydb/notebooks/alloydb_vector_search_benchmark.ipynb
@@ -0,0 +1,2288 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "source": [
+ "# Copyright 2026 Google LLC\n",
+ "#\n",
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "metadata": {
+ "id": "3344f376"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "# \ud83d\ude80 AlloyDB Vector Search Benchmark\n",
+ "\n",
+ "[](https://colab.research.google.com/github/GoogleCloudPlatform/python-docs-samples/blob/main/alloydb/notebooks/alloydb_vector_search_benchmark.ipynb)\n",
+ "\n",
+ "---\n",
+ "This interactive notebook measures the performance impact of **AlloyDB's Columnar Engine** on **pgvector HNSW** indexes.\n",
+ "\n",
+ "\ud83d\udea8 **IMPORTANT PREREQUISITES:**\n",
+ "\n",
+ "Ensure that **Public IP is enabled** on the instance *(Note: there is no need to authorize any networks!)* and the following database flags are set on your AlloyDB primary instance:\n",
+ "* `google_columnar_engine.enabled` = `on`\n",
+ "* `google_columnar_engine.enable_index_caching` = `on`\n",
+ "* `google_columnar_engine.memory_size_in_mb` = `1024` (or greater)\n",
+ "\n",
+ "\ud83d\udcda **Helpful Resources:**\n",
+ "\n",
+ "* [Accelerate vector search with the columnar engine](https://docs.cloud.google.com/alloydb/docs/ai/accelerate-with-ce)\n",
+ "* [pgvector](https://github.com/pgvector/pgvector)\n",
+ "---"
+ ],
+ "metadata": {
+ "id": "markdown-header"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "# @title \u2699\ufe0f Benchmark Execution\n",
+ "# ==========================================\n",
+ "# 1. CONFIGURATION\n",
+ "# ==========================================\n",
+ "# @markdown ### **\u2699\ufe0f 1. Cluster Configuration**\n",
+ "project_id = \"my-project-id\" # @param {type:\"string\"}\n",
+ "region = \"my-region\" # @param {type:\"string\"}\n",
+ "cluster_id = \"my-cluster\" # @param {type:\"string\"}\n",
+ "instance_id = \"my-primary\" # @param {type:\"string\"}\n",
+ "\n",
+ "# @markdown ### **\ud83d\udd10 2. Database Credentials**\n",
+ "db_user = \"my-database-user\" # @param {type:\"string\"}\n",
+ "db_name = \"my-database\" # @param {type:\"string\"}\n",
+ "\n",
+ "# @markdown ### **\u2699\ufe0f 3. Benchmark Settings**\n",
+ "# @markdown *Note: Increasing these values will provide more intensive testing, but will slow down the benchmark runtime.*\n",
+ "test_queries = 1000 # @param {type:\"integer\"}\n",
+ "search_limit = 10 # @param {type:\"integer\"}\n",
+ "vector_dim = 100 # Fixed for GloVe-100 dataset\n",
+ "\n",
+ "import getpass\n",
+ "# Prompt for password upfront so user doesn't wait for the pip installation\n",
+ "db_pass = getpass.getpass(\"\ud83d\udd11 Enter Database Password for AlloyDB: \")\n",
+ "\n",
+ "# ==========================================\n",
+ "# 2. SETUP & AUTHENTICATION\n",
+ "# ==========================================\n",
+ "import os\n",
+ "print(\"\ud83d\udce6 Installing dependencies silently... (This takes ~15 seconds)\")\n",
+ "os.system(\"pip install -q h5py matplotlib asyncpg google-cloud-alloydb-connector[asyncpg] tqdm rich pgvector\")\n",
+ "\n",
+ "print(\"\ud83d\udd10 Authenticating with Google Cloud...\")\n",
+ "from google.colab import auth\n",
+ "auth.authenticate_user()\n",
+ "\n",
+ "from IPython.display import clear_output\n",
+ "clear_output()\n",
+ "print(\"\u2705 Output cleared. Colab Setup successful!\")\n",
+ "\n",
+ "# ==========================================\n",
+ "# 3. LATE IMPORTS (Post-Installation)\n",
+ "# ==========================================\n",
+ "import asyncio\n",
+ "import urllib.request\n",
+ "import shutil\n",
+ "import h5py\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import matplotlib.ticker as ticker\n",
+ "from tqdm.notebook import tqdm\n",
+ "from rich.console import Console\n",
+ "from rich.panel import Panel\n",
+ "from google.cloud.alloydb.connector import AsyncConnector\n",
+ "import pgvector.asyncpg\n",
+ "from pgvector.asyncpg import register_vector\n",
+ "\n",
+ "console = Console()\n",
+ "\n",
+ "# ==========================================\n",
+ "# 4. SQL DEFINITIONS (Optimized with Array Intersection)\n",
+ "# ==========================================\n",
+ "SQL_MEASURE_RECALL = \"\"\"\n",
+ "CREATE OR REPLACE FUNCTION measure_recall(ef INT, num_q INT) RETURNS FLOAT AS $func$\n",
+ "DECLARE\n",
+ " q_rec record; total_recall FLOAT := 0; retrieved_ids INT[]; intersect_count INT;\n",
+ "BEGIN\n",
+ " PERFORM set_config('hnsw.ef_search', ef::text, false);\n",
+ "\n",
+ " FOR q_rec IN SELECT embedding, ground_truth FROM glove_test ORDER BY id LIMIT num_q LOOP\n",
+ " SELECT array_agg(sub.id) INTO retrieved_ids FROM (\n",
+ " SELECT id FROM glove ORDER BY embedding <=> q_rec.embedding LIMIT __SEARCH_LIMIT__\n",
+ " ) sub;\n",
+ "\n",
+ " -- Instant Intersection of retrieved array and ground_truth[1:search_limit]\n",
+ " SELECT count(*) INTO intersect_count\n",
+ " FROM unnest(retrieved_ids) as r\n",
+ " JOIN unnest(q_rec.ground_truth[1:__SEARCH_LIMIT__]) as g ON r = g;\n",
+ "\n",
+ " total_recall := total_recall + (intersect_count::FLOAT / __SEARCH_LIMIT__);\n",
+ " END LOOP;\n",
+ "\n",
+ " RETURN total_recall / num_q;\n",
+ "END;\n",
+ "$func$ LANGUAGE plpgsql;\n",
+ "\"\"\".replace(\"__SEARCH_LIMIT__\", str(search_limit))\n",
+ "\n",
+ "SQL_MEASURE_QPS = \"\"\"\n",
+ "CREATE OR REPLACE FUNCTION measure_qps(ef INT, num_q INT) RETURNS FLOAT AS $func$\n",
+ "DECLARE\n",
+ " start_time timestamp; end_time timestamp; q_vec halfvec;\n",
+ "BEGIN\n",
+ " PERFORM set_config('hnsw.ef_search', ef::text, false);\n",
+ "\n",
+ " start_time := clock_timestamp();\n",
+ " FOR q_vec IN SELECT embedding FROM glove_test LIMIT num_q LOOP\n",
+ " PERFORM id FROM glove ORDER BY embedding <=> q_vec LIMIT __SEARCH_LIMIT__;\n",
+ " END LOOP;\n",
+ " end_time := clock_timestamp();\n",
+ "\n",
+ " RETURN num_q / (extract(epoch from end_time) - extract(epoch from start_time));\n",
+ "END;\n",
+ "$func$ LANGUAGE plpgsql;\n",
+ "\"\"\".replace(\"__SEARCH_LIMIT__\", str(search_limit))\n",
+ "\n",
+ "# ==========================================\n",
+ "# 5. CORE FUNCTIONS\n",
+ "# ==========================================\n",
+ "async def verify_columnar_flags(conn):\n",
+ " console.print(\"\\n[bold blue]Step 2/9:[/bold blue] \ud83d\udd0d Verifying Columnar Engine Flags...\")\n",
+ " enabled = await conn.fetchval(\"SELECT current_setting('google_columnar_engine.enabled', true);\")\n",
+ " caching = await conn.fetchval(\"SELECT current_setting('google_columnar_engine.enable_index_caching', true);\")\n",
+ " mem_size = await conn.fetchval(\"SELECT current_setting('google_columnar_engine.memory_size_in_mb', true);\")\n",
+ "\n",
+ " warnings = []\n",
+ " if enabled != 'on': warnings.append(\"\u274c google_columnar_engine.enabled is NOT 'on'\")\n",
+ " if caching != 'on': warnings.append(\"\u274c google_columnar_engine.enable_index_caching is NOT 'on'\")\n",
+ " try:\n",
+ " if not mem_size or int(mem_size) < 1024:\n",
+ " warnings.append(f\"\u274c memory_size_in_mb is '{mem_size}' (Must be at least 1024)\")\n",
+ " except ValueError:\n",
+ " warnings.append(f\"\u274c Could not parse memory_size_in_mb: {mem_size}\")\n",
+ "\n",
+ " if warnings:\n",
+ " for w in warnings: console.print(f\"[bold red]{w}[/bold red]\")\n",
+ " raise RuntimeError(\"Missing required Database Flags. Please update your cluster settings and restart.\")\n",
+ " else:\n",
+ " console.print(\" [bold green]\u2705 All strict Columnar Engine flags are properly configured![/bold green]\")\n",
+ "\n",
+ "async def fast_bulk_insert_train(conn, data_array, batch_size=10000, desc=\"\"):\n",
+ " for i in tqdm(range(0, len(data_array), batch_size), desc=desc, leave=True, colour='#1f77b4'):\n",
+ " batch = data_array[i:i + batch_size]\n",
+ " records = [(i + j + 1, emb.tolist()) for j, emb in enumerate(batch)]\n",
+ " await conn.copy_records_to_table(\"glove\", columns=[\"id\", \"embedding\"], records=records)\n",
+ "\n",
+ "async def fast_bulk_insert_test(conn, data_array, neighbors_array, batch_size=10000, desc=\"\"):\n",
+ " for i in tqdm(range(0, len(data_array), batch_size), desc=desc, leave=True, colour='#1f77b4'):\n",
+ " batch_d = data_array[i:i + batch_size]\n",
+ " batch_n = neighbors_array[i:i + batch_size]\n",
+ " records = [(i + j + 1, emb.tolist(), [int(x+1) for x in nbr]) for j, (emb, nbr) in enumerate(zip(batch_d, batch_n))]\n",
+ " await conn.copy_records_to_table(\"glove_test\", columns=[\"id\", \"embedding\", \"ground_truth\"], records=records)\n",
+ "\n",
+ "async def prepare_dataset(conn):\n",
+ " console.print(\"[bold blue]Step 4/9:[/bold blue] \ud83d\udce5 Preparing GloVe Dataset...\")\n",
+ " if not os.path.exists(\"glove-100-angular.hdf5\"):\n",
+ " console.print(\" [dim]Downloading dataset (1.2GB) from ann-benchmarks.com...[/dim]\")\n",
+ " url = \"http://ann-benchmarks.com/glove-100-angular.hdf5\"\n",
+ " req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})\n",
+ " with urllib.request.urlopen(req) as response, open(\"glove-100-angular.hdf5\", \"wb\") as out_file:\n",
+ " shutil.copyfileobj(response, out_file)\n",
+ "\n",
+ " console.print(\"[bold blue]Step 5/9:[/bold blue] \ud83d\udcc2 Loading dataset and inserting via COPY...\")\n",
+ " with h5py.File(\"glove-100-angular.hdf5\", \"r\") as f:\n",
+ " train_data = f['train'][:]\n",
+ " test_data = f['test'][:]\n",
+ " neighbors_data = f['neighbors'][:]\n",
+ "\n",
+ " await fast_bulk_insert_train(conn, train_data, desc=\"COPY Training Data\")\n",
+ " await fast_bulk_insert_test(conn, test_data, neighbors_data, desc=\"COPY Test Queries & Ground Truth\")\n",
+ "\n",
+ "async def monitor_index_progress(connector):\n",
+ " try:\n",
+ " poll_conn = await connector.connect(\n",
+ " f\"projects/{project_id}/locations/{region}/clusters/{cluster_id}/instances/{instance_id}\",\n",
+ " \"asyncpg\", user=db_user, password=db_pass, db=db_name, ip_type=\"PUBLIC\"\n",
+ " )\n",
+ " except Exception:\n",
+ " return\n",
+ " \n",
+ " try:\n",
+ " with tqdm(total=100, desc=\"Building HNSW Index\", colour='#00ff00') as pbar:\n",
+ " while True:\n",
+ " try:\n",
+ " progress = await poll_conn.fetchrow(\"\"\"\n",
+ " SELECT blocks_done, blocks_total, phase \n",
+ " FROM pg_stat_progress_create_index \n",
+ " WHERE relid = 'glove'::regclass\n",
+ " \"\"\")\n",
+ " if progress and progress['blocks_total'] > 0:\n",
+ " percent = (progress['blocks_done'] / progress['blocks_total']) * 100\n",
+ " pbar.n = round(percent, 1)\n",
+ " pbar.set_postfix_str(f\"Phase: {progress['phase']}\")\n",
+ " pbar.refresh()\n",
+ " except Exception:\n",
+ " pass\n",
+ " await asyncio.sleep(1)\n",
+ " except asyncio.CancelledError:\n",
+ " pass\n",
+ " finally:\n",
+ " try:\n",
+ " await poll_conn.close()\n",
+ " except Exception:\n",
+ " pass\n",
+ "\n",
+ "async def build_index(conn, connector):\n",
+ " console.print(\"[bold blue]Step 6/9:[/bold blue] \ud83e\uddf9 Updating database planner statistics...\")\n",
+ " await conn.execute(\"VACUUM (DISABLE_PAGE_SKIPPING, ANALYZE) glove;\")\n",
+ " await conn.execute(\"VACUUM (DISABLE_PAGE_SKIPPING, ANALYZE) glove_test;\")\n",
+ "\n",
+ " console.print(\"[bold blue]Step 7/9:[/bold blue] \ud83c\udfd7\ufe0f Building HNSW Index...\")\n",
+ " await conn.execute(\"DROP INDEX IF EXISTS my_hnsw_idx;\")\n",
+ " await conn.execute(\"SET max_parallel_maintenance_workers = 16;\")\n",
+ " await conn.execute(\"SET maintenance_work_mem = '3GB';\")\n",
+ " \n",
+ " monitor_task = asyncio.create_task(monitor_index_progress(connector))\n",
+ " try:\n",
+ " await conn.execute(\"CREATE INDEX my_hnsw_idx ON glove USING hnsw (embedding halfvec_cosine_ops) WITH (m = 24, ef_construction = 256);\")\n",
+ " finally:\n",
+ " monitor_task.cancel()\n",
+ "\n",
+ "async def run_evaluations(conn, ef_values, test_queries):\n",
+ " console.print(\"[bold blue]Step 8/9:[/bold blue] \u2699\ufe0f Deploying Benchmark PL/pgSQL Functions...\")\n",
+ " await conn.execute(SQL_MEASURE_RECALL)\n",
+ " await conn.execute(SQL_MEASURE_QPS)\n",
+ "\n",
+ " console.print(\"\\n[bold blue]Step 9/9:[/bold blue] \u23f1\ufe0f Running Benchmarks...\")\n",
+ " results_without_ce = []\n",
+ " results_with_ce = []\n",
+ "\n",
+ " # Run WITHOUT Columnar Engine\n",
+ " await conn.execute(\"SELECT google_columnar_engine_drop_index('my_hnsw_idx');\")\n",
+ " for ef in tqdm(ef_values, desc=\"Without Columnar Engine\", leave=True, colour='#1f77b4'):\n",
+ " recall = await conn.fetchval(f\"SELECT measure_recall({ef}, {test_queries});\")\n",
+ " qps = await conn.fetchval(f\"SELECT measure_qps({ef}, {test_queries});\")\n",
+ " console.log(\"ef: %d | qps: %d | recall: %.3f\" % (ef, qps, recall))\n",
+ " results_without_ce.append((ef, recall, qps))\n",
+ "\n",
+ " # Run WITH Columnar Engine\n",
+ " await conn.execute(\"SELECT google_columnar_engine_add_index('my_hnsw_idx');\")\n",
+ " for ef in tqdm(ef_values, desc=\"WITH Columnar Engine\", leave=True, colour='#ff7f0e'):\n",
+ " recall = await conn.fetchval(f\"SELECT measure_recall({ef}, {test_queries});\")\n",
+ " qps = await conn.fetchval(f\"SELECT measure_qps({ef}, {test_queries});\")\n",
+ " console.log(\"ef: %d | qps: %d | recall: %.3f\" % (ef, qps, recall))\n",
+ " results_with_ce.append((ef, recall, qps))\n",
+ "\n",
+ " return results_without_ce, results_with_ce\n",
+ "\n",
+ "def plot_results(results_without_ce, results_with_ce):\n",
+ " \"\"\"Renders the final performance plot outside the async block.\"\"\"\n",
+ " console.print(\"\\n[bold green]\ud83d\udcca Generating Final Plot & Summary...[/bold green]\")\n",
+ " import numpy as np\n",
+ " import matplotlib.patheffects as patheffects\n",
+ " \n",
+ " ef_wo = [p[0] for p in results_without_ce]\n",
+ " recalls_wo = [p[1] for p in results_without_ce]\n",
+ " qps_wo = [p[2] for p in results_without_ce]\n",
+ "\n",
+ " ef_wi = [p[0] for p in results_with_ce]\n",
+ " recalls_wi = [p[1] for p in results_with_ce]\n",
+ " qps_wi = [p[2] for p in results_with_ce]\n",
+ "\n",
+ " plt.rc('font', size=14)\n",
+ " plt.rc('axes', titlesize=18)\n",
+ " plt.rc('axes', labelsize=16)\n",
+ " plt.rc('xtick', labelsize=14)\n",
+ " plt.rc('ytick', labelsize=14)\n",
+ " plt.rc('legend', fontsize=14)\n",
+ " plt.figure(figsize=(12, 7))\n",
+ "\n",
+ " # Google brand colors\n",
+ " color_wi = '#ff7f0e' # Orange\n",
+ " color_wo = '#1f77b4' # Blue\n",
+ " color_ar = '#2ca02c' # Green\n",
+ "\n",
+ " plt.plot(recalls_wi, qps_wi, marker='D', linewidth=3, markersize=10,\n",
+ " color=color_wi, label='With Columnar Engine')\n",
+ " plt.plot(recalls_wo, qps_wo, marker='o', linewidth=3, markersize=10,\n",
+ " color=color_wo, label='Without Columnar Engine')\n",
+ "\n",
+ " plt.xlabel('Recall (Accuracy)')\n",
+ " plt.ylabel('Queries Per Second (QPS)')\n",
+ " plt.title(f'HNSW Recall vs QPS\\\\n(GloVe 100, LIMIT {search_limit}, {test_queries} Tests)', pad=20, fontweight='bold')\n",
+ "\n",
+ " max_qps = max(max(qps_wi, default=0), max(qps_wo, default=0))\n",
+ " min_recall = min(min(recalls_wi, default=1), min(recalls_wo, default=1))\n",
+ " \n",
+ " plt.ylim(0, max_qps + 500)\n",
+ " plt.xlim(min_recall - 0.015, 1.015)\n",
+ " \n",
+ " plt.gca().yaxis.set_major_locator(ticker.MultipleLocator(1000))\n",
+ " plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(0.05))\n",
+ "\n",
+ " # Clean up spines (borders)\n",
+ " plt.gca().spines['top'].set_visible(False)\n",
+ " plt.gca().spines['right'].set_visible(False)\n",
+ " plt.gca().spines['left'].set_color('#cccccc')\n",
+ " plt.gca().spines['bottom'].set_color('#cccccc')\n",
+ "\n",
+ " pe = [patheffects.withStroke(linewidth=3, foreground='white', alpha=0.9)]\n",
+ "\n",
+ " # --- 1. Annotate QPS improvement at the same Recall (Vertical Gap) ---\n",
+ " for r_wi, q_wi, q_wo in zip(recalls_wi, qps_wi, qps_wo):\n",
+ " multiplier = q_wi / q_wo if q_wo > 0 else 0\n",
+ " if multiplier > 0:\n",
+ " plt.text(r_wi * 1.001, q_wi + (max_qps * 0.04), f'{multiplier:.1f}x QPS', color=color_wi,\n",
+ " fontsize=12, fontweight='bold', ha='center', va='bottom', path_effects=pe)\n",
+ "\n",
+ " # --- 2. Annotate Recall improvement at the same QPS (Horizontal Gap) ---\n",
+ " if len(qps_wo) > 0 and len(qps_wi) > 0:\n",
+ " idx_min_recall_wo = np.argmin(recalls_wo)\n",
+ " r_wo_min = recalls_wo[idx_min_recall_wo]\n",
+ " q_target = qps_wo[idx_min_recall_wo]\n",
+ " \n",
+ " # Check if q_target is within the range of orange line's QPS\n",
+ " if min(qps_wi) <= q_target <= max(qps_wi):\n",
+ " wi_sort = np.argsort(qps_wi)\n",
+ " r_wi_interp = np.interp(q_target, np.array(qps_wi)[wi_sort], np.array(recalls_wi)[wi_sort])\n",
+ " \n",
+ " if (r_wi_interp - r_wo_min) > 0.005:\n",
+ " plt.annotate('', xy=(r_wi_interp, q_target), xytext=(r_wo_min, q_target),\n",
+ " arrowprops=dict(arrowstyle=\"<->\", color=color_ar, lw=1.5, linestyle='--'))\n",
+ " plt.text((r_wo_min + r_wi_interp) / 2, q_target + (max_qps * 0.015), f'+{r_wi_interp - r_wo_min:.3f} Recall',\n",
+ " color=color_ar, fontsize=11, fontweight='bold', ha='center', va='bottom', path_effects=pe)\n",
+ "\n",
+ " plt.legend(loc='upper right', frameon=True, edgecolor='#cccccc')\n",
+ " plt.grid(True, which='both', color='#f0f0f0', linestyle='-', linewidth=1.5)\n",
+ " plt.tight_layout()\n",
+ " plt.show()\n",
+ "\n",
+ "# ==========================================\n",
+ "# 6. MAIN EXECUTION PIPELINE\n",
+ "# ==========================================\n",
+ "async def run_benchmark():\n",
+ " connector = None\n",
+ " conn = None\n",
+ " try:\n",
+ " console.print(Panel(\n",
+ " \"[bold green]\u2705 GCP Authentication Successful![/bold green]\\n\"\n",
+ " \"[bold default]\ud83d\ude80 Starting AlloyDB Benchmark Pipeline (Asyncpg + COPY)...[/bold default]\",\n",
+ " border_style=\"green\", expand=False\n",
+ " ))\n",
+ "\n",
+ " console.print(\"\\n[bold blue]Step 1/9:[/bold blue] \ud83d\udd0c Initializing AlloyDB AsyncConnector...\")\n",
+ " connector = AsyncConnector()\n",
+ " conn = await connector.connect(\n",
+ " f\"projects/{project_id}/locations/{region}/clusters/{cluster_id}/instances/{instance_id}\",\n",
+ " \"asyncpg\", user=db_user, password=db_pass, db=db_name, ip_type=\"PUBLIC\"\n",
+ " )\n",
+ "\n",
+ " await verify_columnar_flags(conn)\n",
+ "\n",
+ " console.print(\"[bold blue]Step 3/9:[/bold blue] \ud83d\udee0\ufe0f Setting up extensions & tables...\")\n",
+ " await conn.execute(\"CREATE EXTENSION IF NOT EXISTS vector;\")\n",
+ " await conn.execute(\"CREATE EXTENSION IF NOT EXISTS google_columnar_engine;\")\n",
+ " await conn.execute(\"DROP TABLE IF EXISTS glove CASCADE;\")\n",
+ " await conn.execute(\"DROP TABLE IF EXISTS glove_test CASCADE;\")\n",
+ " await conn.execute(f\"CREATE TABLE glove (id BIGINT PRIMARY KEY, embedding halfvec({vector_dim}));\")\n",
+ " await conn.execute(f\"CREATE TABLE glove_test (id BIGINT PRIMARY KEY, embedding halfvec({vector_dim}), ground_truth INT[]);\")\n",
+ "\n",
+ " await register_vector(conn)\n",
+ "\n",
+ " await prepare_dataset(conn)\n",
+ " await build_index(conn, connector)\n",
+ "\n",
+ " ef_values = [40, 100, 200, 400, 800]\n",
+ " # Return results to pass into synchronous plotter\n",
+ " return await run_evaluations(conn, ef_values, test_queries)\n",
+ "\n",
+ " except Exception as e:\n",
+ " console.print(f\"\\n[bold red]\u274c ERROR:[/bold red] {str(e)}\")\n",
+ " return None, None\n",
+ " finally:\n",
+ " if conn: await conn.close()\n",
+ " if connector: await connector.close()\n",
+ "\n",
+ "# Evaluate the benchmark (Async Loop)\n",
+ "results_wo, results_wi = await run_benchmark()\n",
+ "\n",
+ "# Guarantee Plot renders perfectly (Sync Thread)\n",
+ "if results_wo and results_wi:\n",
+ " plot_results(results_wo, results_wi)\n",
+ ""
+ ],
+ "metadata": {
+ "cellView": "form",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000,
+ "referenced_widgets": [
+ "18472968b9e44fbca0a5d3b0744c7e9d",
+ "d727b28eaad140d7ad6f27c13ddecd55",
+ "b3ec8add6c4644f496d3fc0537bab6ac",
+ "79e3bfabf2c045fbaeaaaade102d7c84",
+ "73fe028a01f44414a89fafc5bac1b585",
+ "35da0a1afb584d8f90dbaa42a3739de9",
+ "8ec6b9a2176a4183868a1b72a20fbc7b",
+ "e9dc88e59cfc4473996c60211b17b5a4",
+ "d2879953a5ad4a78a75536ef9a7c3ca7",
+ "39718ecd0a164dd1863aac958ba807bc",
+ "9fc193872f4441a29c76b773f062f830",
+ "c32c95073cee4958b2262763d9b91e06",
+ "2587fd5359964511974f9c3367374ccd",
+ "e4e6db33e9fa4b3585bf83cd3f892a70",
+ "aec9695ad4044c4a97216fb1c8b7e742",
+ "d8489e9f624143489a6e88976b50e9b9",
+ "08869a816e924374b5e32a5a3b487405",
+ "29de62fdbe1848589d312b3b9d19114d",
+ "a64d1a4867a14051bf8c4e7bf866645c",
+ "a16bbd5c7d584d8f9fadd1d02288ddf5",
+ "87d8fbd2e27d4d9b9c651b4346f7252c",
+ "ddf4e256cc1e46b5acda89a950384e72",
+ "7a69b559161f4ad9b7fb2e97839ee81a",
+ "cb729b199fdb41f983b0b76ccda942ac",
+ "e9ed923cde2a4fccbcb6688a07c8dab7",
+ "85e252232e2d43408cfffc735ed25953",
+ "c31bedc8fd434beca5e9f15cdbc0f114",
+ "970e9ba9e3f4457d97f22a554b3a39af",
+ "b1f9f2e17cc44526b79c44cf2cd527af",
+ "a59d14efbbbb4663a5d0afd99134914e",
+ "5d414ac7168f4361b39b9400d745aa6a",
+ "0399d15d2ccb4740917a831362a650d0",
+ "39ebb56381d1465ab922a068ccea99f9",
+ "ea548c029dd741d7ba55470c7cea0999",
+ "07a613b8aa05473291633831c085961e",
+ "7c1ceb0996e84a9ab8a6953193835cbd",
+ "7e7000ead4154e129c98e44afa13b25c",
+ "acca9136fa724599a9df3b2607fa0f91",
+ "cd25eb42f4594915af7a6700115bd91a",
+ "4567aeea2a6b42f8be822d6ea26f2150",
+ "ee1700a7d0764a10bd5939fbaf70a1db",
+ "3e243b39eaa544779a159c7ac1098dc1",
+ "569881fe3ab24204864e0d7d00739358",
+ "8a554e88c012432699f84093a99b6d2e"
+ ]
+ },
+ "executionInfo": {
+ "elapsed": 328384,
+ "status": "ok",
+ "timestamp": 1784450353789,
+ "user": {
+ "displayName": "",
+ "userId": ""
+ },
+ "user_tz": -330
+ },
+ "id": "KOs-ppVTCKTu",
+ "jupyter": {
+ "source_hidden": true
+ },
+ "outputId": "80ebd93d-69e5-4a2f-d27a-01c97e7526a0",
+ "tags": [
+ "hide-input"
+ ]
+ },
+ "execution_count": null,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "\u2705 Output cleared. Colab Setup successful!\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[32m\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\u001b[0m\n",
+ "\u001b[32m\u2502\u001b[0m \u001b[1;32m\u2705 GCP Authentication Successful!\u001b[0m \u001b[32m\u2502\u001b[0m\n",
+ "\u001b[32m\u2502\u001b[0m \u001b[1;39m\ud83d\ude80 Starting AlloyDB Benchmark Pipeline (Asyncpg + COPY)...\u001b[0m \u001b[32m\u2502\u001b[0m\n",
+ "\u001b[32m\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\u001b[0m\n"
+ ],
+ "text/html": [
+ "
\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n",
+ "\u2502 \u2705 GCP Authentication Successful! \u2502\n",
+ "\u2502 \ud83d\ude80 Starting AlloyDB Benchmark Pipeline (Asyncpg + COPY)... \u2502\n",
+ "\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\n",
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m1\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \ud83d\udd0c Initializing AlloyDB AsyncConnector\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "\n",
+ "Step 1/9: \ud83d\udd0c Initializing AlloyDB AsyncConnector...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\n",
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m2\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \ud83d\udd0d Verifying Columnar Engine Flags\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "\n",
+ "Step 2/9: \ud83d\udd0d Verifying Columnar Engine Flags...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " \u001b[1;32m\u2705 All strict Columnar Engine flags are properly configured!\u001b[0m\n"
+ ],
+ "text/html": [
+ " \u2705 All strict Columnar Engine flags are properly configured!\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m3\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \ud83d\udee0\ufe0f Setting up extensions & tables\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "Step 3/9: \ud83d\udee0\ufe0f Setting up extensions & tables...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m4\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \ud83d\udce5 Preparing GloVe Dataset\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "Step 4/9: \ud83d\udce5 Preparing GloVe Dataset...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m5\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \ud83d\udcc2 Loading dataset and inserting via COPY\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "Step 5/9: \ud83d\udcc2 Loading dataset and inserting via COPY...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "COPY Training Data: 0%| | 0/119 [00:00, ?it/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "7215583ba2d64686a2efe242478225b5"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "COPY Test Queries & Ground Truth: 0%| | 0/1 [00:00, ?it/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "2e17a3f7a1e641169785b0898f6c70fe"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m6\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \ud83e\uddf9 Updating database planner statistics\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "Step 6/9: \ud83e\uddf9 Updating database planner statistics...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m7\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \ud83c\udfd7\ufe0f Building HNSW Index\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "Step 7/9: \ud83c\udfd7\ufe0f Building HNSW Index...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Building HNSW Index: 0%| | 0/100 [00:00, ?it/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "884fa48289da4d45b47383d8abfd6eb6"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m8\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \u2699\ufe0f Deploying Benchmark PL/pgSQL Functions\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "Step 8/9: \u2699\ufe0f Deploying Benchmark PL/pgSQL Functions...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\n",
+ "\u001b[1;34mStep \u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m/\u001b[0m\u001b[1;34m9\u001b[0m\u001b[1;34m:\u001b[0m \u23f1\ufe0f Running Benchmarks\u001b[33m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "\n",
+ "Step 9/9: \u23f1\ufe0f Running Benchmarks...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "Without Columnar Engine: 0%| | 0/5 [00:00, ?it/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "291deee35cd54e5ea2324c953f68827e"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:55:10]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m40\u001b[0m | qps: \u001b[1;36m874\u001b[0m | recall: \u001b[1;36m0.796\u001b[0m \u001b]8;id=623700;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=386806;file:///tmp/ipykernel_3140/1890890931.py#224\u001b\\\u001b[2m224\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:55:10] ef: 40 | qps: 874 | recall: 0.796 1890890931.py:224\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:55:15]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m100\u001b[0m | qps: \u001b[1;36m436\u001b[0m | recall: \u001b[1;36m0.880\u001b[0m \u001b]8;id=32999;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=439909;file:///tmp/ipykernel_3140/1890890931.py#224\u001b\\\u001b[2m224\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:55:15] ef: 100 | qps: 436 | recall: 0.880 1890890931.py:224\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:55:23]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m200\u001b[0m | qps: \u001b[1;36m241\u001b[0m | recall: \u001b[1;36m0.925\u001b[0m \u001b]8;id=764291;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=314561;file:///tmp/ipykernel_3140/1890890931.py#224\u001b\\\u001b[2m224\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:55:23] ef: 200 | qps: 241 | recall: 0.925 1890890931.py:224\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:55:39]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m400\u001b[0m | qps: \u001b[1;36m130\u001b[0m | recall: \u001b[1;36m0.957\u001b[0m \u001b]8;id=650240;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=931060;file:///tmp/ipykernel_3140/1890890931.py#224\u001b\\\u001b[2m224\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:55:39] ef: 400 | qps: 130 | recall: 0.957 1890890931.py:224\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:56:07]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m800\u001b[0m | qps: \u001b[1;36m69\u001b[0m | recall: \u001b[1;36m0.979\u001b[0m \u001b]8;id=503685;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=724977;file:///tmp/ipykernel_3140/1890890931.py#224\u001b\\\u001b[2m224\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:56:07] ef: 800 | qps: 69 | recall: 0.979 1890890931.py:224\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "WITH Columnar Engine: 0%| | 0/5 [00:00, ?it/s]"
+ ],
+ "application/vnd.jupyter.widget-view+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "model_id": "044a70e7dcc64ec08a285fc3a9538644"
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:56:11]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m40\u001b[0m | qps: \u001b[1;36m6879\u001b[0m | recall: \u001b[1;36m0.796\u001b[0m \u001b]8;id=835839;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=395833;file:///tmp/ipykernel_3140/1890890931.py#232\u001b\\\u001b[2m232\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:56:11] ef: 40 | qps: 6879 | recall: 0.796 1890890931.py:232\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m100\u001b[0m | qps: \u001b[1;36m3395\u001b[0m | recall: \u001b[1;36m0.880\u001b[0m \u001b]8;id=5948;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=927283;file:///tmp/ipykernel_3140/1890890931.py#232\u001b\\\u001b[2m232\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ " ef: 100 | qps: 3395 | recall: 0.880 1890890931.py:232\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:56:12]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m200\u001b[0m | qps: \u001b[1;36m1876\u001b[0m | recall: \u001b[1;36m0.925\u001b[0m \u001b]8;id=721426;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=156886;file:///tmp/ipykernel_3140/1890890931.py#232\u001b\\\u001b[2m232\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:56:12] ef: 200 | qps: 1876 | recall: 0.925 1890890931.py:232\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:56:15]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m400\u001b[0m | qps: \u001b[1;36m1008\u001b[0m | recall: \u001b[1;36m0.957\u001b[0m \u001b]8;id=809315;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=544485;file:///tmp/ipykernel_3140/1890890931.py#232\u001b\\\u001b[2m232\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:56:15] ef: 400 | qps: 1008 | recall: 0.957 1890890931.py:232\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\u001b[2;36m[12:56:19]\u001b[0m\u001b[2;36m \u001b[0mef: \u001b[1;36m800\u001b[0m | qps: \u001b[1;36m513\u001b[0m | recall: \u001b[1;36m0.979\u001b[0m \u001b]8;id=233898;file:///tmp/ipykernel_3140/1890890931.py\u001b\\\u001b[2m1890890931.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=988281;file:///tmp/ipykernel_3140/1890890931.py#232\u001b\\\u001b[2m232\u001b[0m\u001b]8;;\u001b\\\n"
+ ],
+ "text/html": [
+ "[12:56:19] ef: 800 | qps: 513 | recall: 0.979 1890890931.py:232\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "\n",
+ "\u001b[1;32m\ud83d\udcca Generating Final Plot & Summary\u001b[0m\u001b[1;32m...\u001b[0m\n"
+ ],
+ "text/html": [
+ "\n",
+ "\ud83d\udcca Generating Final Plot & Summary...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABJoAAAKlCAYAAACDlYbEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xl8TNf/x/HXJJFFNvuuYitqi32rROyqraqtlhZFlba01Y0vFWppi1bRXVuKlqIUtROx76L2nVJrLLHLdn9/5JeRyUySSUwWvJ+PxzzM3HPuvZ97M+ea+cw555oMwzAQERERERERERF5QE6ZHYCIiIiIiIiIiDwalGgSERERERERERGHUKJJREREREREREQcQokmERERERERERFxCCWaRERERERERETEIZRoEhERERERERERh1CiSUREREREREREHEKJJhERERERERERcQglmkRERERERERExCGUaBIREYfo1q0bJpPJ/GjQoIFVnYTlJpOJKVOmZHic8vC6dOkSvr6+5vfPK6+8ku77nDJlitX7VkREJCs6cuQIzs7O5v+vBg0alNkhyWNKiSaRh1iDBg3s/gJ08uRJq7rdunWzqufn52dV74UXXkhyu4nrBgcHJ1l34cKFdOrUiSeffBJvb29cXV3Jly8fZcuWpUGDBrz11lv89NNPHDp0yGK9X375xWo///77r819lCtXzqJe/vz5bda7fv06Li4uFnUnTpyYZOy2JE6sJHw4OTnh5eVFsWLFaN68OV988QXXrl1L1fbl0bBkyRL69u1L5cqVyZcvH66uruTIkYNSpUrRoUMHfvjhB27dupXsNoKDg5N8r5lMJlxcXMiZMydVq1blzTffZOvWrclu7/bt23z//fc888wzFClSBA8PDzw8PChcuDAVK1bkmWeeYeDAgcyaNYuLFy+a15s5c6Z5n9OnT3fI+UmN4OBgrl+/DoCTk5NdH6APHjzI8OHDad68OX5+fvj6+uLi4oKPjw+lSpWiWbNmDB48mJCQEGJjY9P7EKzMnz/f6u/5ww8/pLjeggULrNabNGlSBkR838aNG5kwYQIvv/wyZcuWxcnJKcVkc1LCw8MZNmwYtWrVIk+ePLi5uVGoUCGaN2/ODz/8QFRUlF3bWbx4MZ06dcLPzw8PDw98fX156qmneOutt9i7d28ajzR1Ev9dUnMeHuT/apPJxG+//Zbktg3DoEyZMjbXS5z0TymO5K5H9jxSc04ALl68yJw5c/jwww9p2LChRcI5/rFmzRq7t5cV3icREREsXLiQjz/+mBYtWpAnT54H+jFmw4YN9OjRg9KlS+Pl5YWXlxelS5emZ8+ebNy40a5t3Lx5k3HjxhEYGEj+/PlxdXUlf/78BAYGMm7cuBT/r3JkLInZSvqn9pGZP27Nnz+f4OBg8yO9YildujTt27c3vx4/fjynT59Ol32JJMsQkYdWYGCgAVg8knLixAmrul27drWqV6xYMat6gLFp0yab201cb+jQoVZ1IiIijEaNGtncrq1HmzZtLNY/cuSIVZ1p06ZZ7efixYs2t3fw4EGruosXL7aqFxYWluT5s6Vr1652HxNg5M6d21i/fn2q9vEwSXw+AgMDreokPie//PJLhseZUXbs2GFUqlTJrvdGrly5jG+//TbJbQ0dOjRV7zXA6NatmxEZGWm1rT179hjFixe3ezsTJ040rxsREWG4urrabKfp7eDBg4aLi4s5rnbt2iVb/9SpU0bLli0Nk8lk97GWKFHCaju//PKL3dfZtIiMjDTy5s1rsf2nn346xfXatm1rsY6rq6tx+fJlh8aWkpTOp61rgC3z5883cuTIkey2ypQpYxw+fDjJbdy8edN49tlnk92Gs7Oz8fHHHzvo6JOW1vNgGA/+f3WdOnWS3Lat//eSuhanFEdqr0cPck4Mw75rYEhISIrbyUrvE1vXlpT+LrZERUUZPXv2THFbvXr1MqKjo5PczsaNG42CBQsmu41ChQol+XnQkbGk9Xw54nymF3s+IznKnj17LPb18ssvp9u+RJKiHk0iYpePPvoozeu+/PLLrFq1Ks3rlypVioIFC1osW7t2rVW99evX21x/3bp1VssSr+/r60vFihXTHKM9Ll++TLt27ez+RVAeXvPmzaNu3br8888/dtW/cuUKffr04fXXX3dYDFOmTOGNN96wWHbjxg2aN2/OiRMn0rRNHx8fgoKCAFi2bBl379594DjtNW7cOKKjo82ve/XqlWTd1atXU6lSJf7++28Mw7B7HxcuXHigGNMiW7ZsdOrUyWLZhg0bkv0bXbt2jYULF1ose+6558iVK1e6xJieVq5cSdu2bVPs8Xno0CECAgI4f/68VVlsbCzPPfccixYtSnYbMTExDB8+nGHDhj1IyFnapk2b2LFjh82y1PbafdQ8qu+Tnj17Mnny5BTr/fjjj/Ts2dNm2d69e2natCnnzp1Ldhtnz56lSZMmSfb6ckQs8uAqVKhAnTp1zK9/++03zpw5k4kRyeNIiSYRsUtoaChLlixJ9Xp79uxhwYIFFstat27N4sWL2bt3LwcPHmTt2rV8/fXXtGnTBm9vb5vbqV+/vsVrW4kmWwmlpJYnXr9evXo4OT34JXHdunWcOHGCPXv28PPPP5MnTx6L8nPnzrFs2bIH3o9kXWFhYXTp0oV79+5ZLG/fvj3Lli3j0KFDbNy4kffffx9XV1eLOt9//z3jx4+3az+///47J06c4MSJE2zatIm3337bqs7kyZMtEhZTpkzhv//+M792cnLigw8+YO3atRw6dIg9e/awdOlSRo8eTcOGDXFxcbHaZvxQ2ps3b7Jy5Uq7Yn1Q169ftxgSVKBAARo2bGiz7u7du3nhhReIiIiwWF6oUCGGDRtGSEgIBw8eZO/evaxatYqxY8fSuHFjm8eaURIPjTIMg2nTpiVZf/bs2VbvL1vDq9Kbr68vDRs25MMPP2T27NlUq1YtVevfuXOHHj16WCQQn3jiCRYsWMCBAweYNGkSbm5u5rLz58/Tv39/q+18++23hISEWCx74403+Oeff9iwYYPVMK0RI0bYnQR+GNlKKB05coSlS5c6bB/x157Ej8Rq1apls97MmTNTtT8nJyfKli1Lly5d+Oqrr/jyyy9THXNWe5+YTCaKFy9O+/bt+fzzz9M0HPnvv/9m6tSpFsvatWvHjh072L59O23btrUomzJlis3Pcq+++io3b940v86ZMyczZszgwIEDTJ8+nRw5cpjLbt68SY8ePdItlqS0bdvW5ntpzJgxVnXHjBljs27iGB5lnTt3Nj+PiYmxa0i2iENldpcqEUm7jBw6Bxj+/v5GbGysRf3EdRIPnfv6668tykuUKGG1jYRu3bplbN261Wr5pEmTrPZ14cIFizrVq1c3lxUpUsT8vHjx4hb17ty5Yx7+E/8YPXp0kjElxdbQuRMnTljUmTBhglWdzz77LMltRkdHG7NmzTLatWtn+Pn5GdmzZzfc3d0NPz8/o2PHjsby5ctTjCs2NtZYvHix8corrxhly5Y1fH19jWzZshkFCxY0atasaXzwwQfG7t27LdY5ceKE8dVXXxndunUzqlevbhQrVszw9vY2XFxcjJw5cxpVqlQx+vTpY/Nvk9T5cPTQubCwMKv1//nnH5t1f/75Z4t63t7exs2bN83lBw8eNPr3729UqVLFyJEjh+Hi4mL4+PgYJUuWNAIDA40BAwYYs2bNsljHXkFBQVZxjhgxwmbdlStXGs7OzhZ1fXx8rIZA2Ro2YmuYSJcuXazq/fjjj+bydu3aWZR169Yt2WM5e/ascejQIatl8cPRevTokeS6ISEhNtvH2bNnjX79+hklSpQw3NzcjNy5cxvPPfecsXnz5iS39e2331ps580330yybp06daz2+/zzzxs3btxI9lj/++8/m8NlUjN07sqVK8bnn39uNGrUyMifP7/h6upqeHl5GaVKlTK6dOliLF26NMl1K1eubLGP0qVLJ1m3fv36FnULFChgREVFWdRxxLUkJYmv5Yn/T0ppaMjUqVOtzu3q1ast6gwaNMii3MnJyTh58qRFDCVKlLCoExAQYLGNK1euGF5eXhZ1Xn311Qc7+GQkPqaMGDqXcIiou7u7cenSJYv6/fr1s1k3qWuxvXE48tiTk/i9Zuv6ktzQuaz4Pkl8TLbOeUr/Ryb+/6ZkyZIW14LIyEjDz8/Pok7Dhg0tthEaGmq1359//tmizg8//GBVZ+3atQ6PJS1sXaOTO28RERHGl19+aTRt2tQoUKCA4erqanh7exvly5c33njjDePAgQNJrhsbG2vMnTvXaNOmjVGyZEkje/bshouLi5EvXz6jfPnyRuvWrY3Ro0dbTJNg67N6Uo+E7+Fbt24ZX331ldG4cWOjUKFChpubm+Hm5mYULlzYqFKlitG1a1dj0qRJVv9Hx7t48aJFWy9UqJARExOT6vMrklZKNIk8xDIi0eTu7m7xesaMGRb1E28zcaJp5MiRFuVFihQx7ty5k+pj3b17t9W+5syZYy6/ceOGxRf2r776yqLu6dOnzXVtfUBNy9xJ9iSabM2J8c0339jc3sGDB+2a06d169bG9evXbW7j+PHjRu3atVPcRv/+/S3W+/LLL+36EGQymYx3333XrvORHnM0Va1a1WL9jz76yGa9xo0bW9Tr2bOnuWzu3LlWicakHsnNRWGLrfdp5cqVk/1w17dvX6t1xo0bZ1HH3kSTrYTsqFGjzOVNmjSxKEvrPEvx77F8+fIleWy22tnkyZMNHx8fm+fa1dXVWLZsmc1tPf/88xZ1//jjD5v1Vq1aZbXdJ5980rh9+3aajtMw7E80zZ07N8V5hgCjUaNGVklyw7DdBjdu3GhV7+TJk1aJggEDBljUccS1JC1Sm2hKPFdOnjx5rOrYSjAnbB/bt2+3Kk84r1i8F154waKOr69vsj96PIjE8WREoqlRo0YWc5glbPfXr1+3aHfNmzdP8Vqc1RJNiaU20ZQV3yeJpTbRdOnSpRSvBYZhGG+//bZFHZPJZISHh5vL33zzTavyiIgIi21cvXrVal9vvfWWw2NJi9QkmhYuXGjkzp072euik5OTMXz4cKt1Y2NjrX6sSepRpkwZ83ppSTRdvHjRKFeunF3r9O7dO8lzk3gbu3btepBTLZIqGjonIslq1aoVhQsXNr/++OOP7b77D8QNcUnozJkzVK1alU8//ZT169dbdNVOTsWKFcmZM6fFsoTD3zZu3EhMTAwA7u7u9OrVCx8fH3N5wuFziYfNubu7U6NGDfsOKJUOHjxotczf399q2b///kuDBg3s6qY/b9482rZtaz7eeP/99x8BAQFs3rw5zfGmxDAMvvjiC3766ad020dyXn31VYvXM2fOtJqD5/z581bDI+LXi4yMpFevXkRGRqZLfLaGRXbt2jXZYZmJjwlI85C0ffv2WS1L2G4St8e5c+fStGlTvvvuO3bv3m0xhCk58cPnLl68yIYNG+yOr1evXua7xiUWGRnJa6+9ZvW+jo2NtRr+WqtWLZvbSDxvEcA777yDh4eH3TGmxYIFC2jXrp1dd5ZctWoVzZs3t5qrrXPnzmTLls1ima3hc9OnT7d6zyccNueIa0lG2bZtm8Xrp556yqrOU089ZXVH1YTrJd4GQPny5a2WVahQweJ1REQEhw8fTlW8WVmRIkUs7hD77bffmv+uU6dOtWh3b731VkaHl+kexffJ9u3bra4F9hyTYRhs377d/DrxuSlatKjF5yeAHDlyWHwWTLyeo2JJT0uWLOGFF17g8uXLydaLjY3l448/5pNPPrFY/ueffzJ79uz0DNFs+PDhHDhw4IG3k/j/ytTcmVHkQSnRJPKISeqWrsWLF0/T9tzd3QkODja/PnbsGD/++KPd67do0cJijg2AAwcOMHDgQOrXr4+vry/ly5fn9ddfZ9myZUneXtxkMlGvXj2LZQkTRgm/iNaqVQsPDw/q1q1rszxxoqlmzZpWc+Wk1ZkzZzh58iR79+7l559/ZsSIERblDRs2tJigMV6/fv0sJrktWLAgP/zwA7t37yYsLIwxY8ZYnMfly5dbzYXQv39/q8keq1atysyZMzlw4AB79+7lt99+o2XLllZf3FxdXWnYsCFffPEFf//9N1u3buXIkSPs3LmTX3/91eoDo605ETJC586dcXd3N78+efKk1a2S//jjD4svzuXKlTOf871793LlyhVzWa5cuZgxYwb79u3j0KFDrFu3ju+//54uXbqkaWJlWxOkppTErFy5stX7z1bCKDkXLlzgq6++sjkHQ8L5zRJ+EY23YsUK+vTpg7+/P15eXtStW5dBgwaxe/fuJPeXcDvz58+3O07DMOjUqRPbtm1jw4YNBAYGWpSfOnXK6u955MgRrl69an7t6+vLE088YXP7YWFhVssaN25stez8+fOcPHnS5iM8PNzu4wG4desWr732msW1y83NjTFjxrBz505WrFhBs2bNLNbZtWuXVRvKmzcvzzzzjMWyWbNmWSVFEyefqlWrZvHlzRHXkoxw584dq8nX8+XLZ1UvW7ZsVj8yJJwLyNa8QLa2Y2tZWifFz6r69etnfn769Gn++usvDMNg0qRJ5uWNGjWymdB71D2K7xNHHVPi7diqb2v5w9QO4+eDS/jZoFatWsybN48DBw6wadMmq8nJhw0bZpFkDA0NtShv2rQpa9as4fDhw+zZs4e///6bESNGEBQUZDHn38yZMzlx4gRt2rSxWN/W/GW1a9e2ua+3336bbdu2mT+XzZ49mwEDBlCxYkWrz3MJVa5c2eL1li1bkjtNIo6VaX2pROSBpaY7rq2HPd3xu3btakRHRxtly5Y1LytQoIB57prE20w8dM4wbM9TlNSjfPnyxvbt220e7+eff27VvfnatWtW52Lw4MGGYRjGqFGjzMsqVKhgGEbcHAGenp4W2/nf//6XpvNva+hcco+WLVtadUc3DMM4ffq0VV1bcyENHjzYok61atXMZWfOnLHaRu3atY27d+/ajP3q1aupOlZbww7Onz+f7PlIj6FzhmEYHTt2tNhG3759Lcpr1aplUT5mzBhz2ZYtWyzKmjdvnuR+IiMjUz3Ms0WLFlbHmNT8CQkVKFDAYp3s2bNblNtza29bj1atWllsJzY21mjbtq3d6z///PM2h3kZhmG+JpQsWdJmua2hLXXq1LEYhnLx4kWrOpMmTUp2O6VKlUryPD711FNW27M1bC65a2fi62JKQ+d+/fVXq/LJkydb1ImOjraKLX/+/FZDcubNm2e1rT///NNcvnXrVqvyhMN/HHEteRCpGTp37tw5q1iTugV3wjn3wHJYSu/eva22c+zYMattTJ482are77///sDHbEvi/WTE0Ln4Ov7+/uZlDRo0MJYuXWpR76+//rJriNajNnQuK75PEkvt0LnRo0db1V+1apVVvZUrV1rVSzgvpZubm0VZ/fr1be7v6aeftqjn5ubm8FjSwp6hc9OmTbMoz5s3r3Hr1q0UjzHh8L8+ffpYlM2cOTPJmGwNSbbnM1K8xEPeEn/eSmlf8RIfd4MGDZKsK+Jo6tEkIilydnZm5MiR5tfnz5+3+85YENdNf8GCBXb9irpv3z4aNWpk8xeugIAAi9exsbFs2LCByMhIi19p4ntwJKy/b98+rly5ws6dO62GrCS+o116eO+991i4cKFVd3Sw/uUK4npZJe6Vlrh31K5du8xDD211hx46dKhVb7J4Ce8gE+/YsWP873//o379+hQsWBAPDw/zvqtXr25VP7NulZt4qNns2bPNQ76OHz9u8V7Ili0br7zyivn1U089ZTGMaunSpdSvX5/33nuPH374gdDQUPPdyrJly2bReyojOWIoU1BQEL/++qvFMpPJxKxZsxgzZgx58+ZNcRsLFiygefPmNofUxfdqOnbsGHv27LErpjfeeMPi19e8efOSO3duizoJey8BXLp0yeJ1anuaJfdrryMkbr/u7u4W7zmIu4Ym/rX8woULVkNyWrZsafV3SdiDKfFdqVxdXenUqVOSsUDqryWZyUg09Cal5anZTmq38bBKOCxuzZo1vPfee+bXxYsX59lnn82MsLKkR/F94ohjehTbYeJr46VLl/D09LS6Nq5fv96iXsIe8InvqtmzZ086dOjA8OHDmTlzJv/884/5/+6k7qBsr8T7ql69Oj179mTMmDEsWLCA48ePm8uS21fi/18vXrz4QHGJpIYSTSKPmKRuOZx4jpPUevHFF6lZs6b59ZgxYyyGIKXkueeeY9++fWzbto1PP/2U559/nvz589usGxERwbhx46yWV61alezZs1ssW7t2Ldu3b+fu3btA3Be6+GFSNWrUMCcVDMNgw4YNVsPmnJ2dLYbYpZexY8fSunVrmwmEhLebT43Y2Fjz0JOzZ89a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119/WdQJCgqy6F2auB0ahsGcOXMsltkaSp5wPUfFkl4Sx3bw4EHOnj2b5HWxWLFiHDlyxCL+S5cuWfQccnV15amnnuK5555j8ODBfPDBBxb7OHDggMXrxHeXTa4XaeJh1d7e3lSrVo327dvz5ZdfWt2hNPG+4iW+e2ziH3VF0pMSTSKSKlWqVKFDhw52179x4wbjxo2jWLFiBAQEMGrUKJYvX86+ffs4ePAgy5Yto02bNla/ctkavgNQu3btZL8QJf6SX6dOnVTVd7SOHTtafbj95ZdfLCbSLlq0KM8995xFncGDB9OrVy9WrlzJoUOH2Lt3L4sXL2b48OHUqFGDChUqWHwhK1y4MC+++KLFNjZu3Ei9evWYPXs2hw4dYv/+/cydO5c2bdowbNgwc73EQ5P279/P+PHj2b9/P1u3bmXQoEEMGjTogc+FoyUeBnLw4EGL14kTTxD3wa5IkSK0aNGCcePGsWLFCvbt28fRo0fZsGGDxUS68Tw9PVMV1xdffGE1Cfu7777LK6+8wsqVKzly5AibN2/mo48+sjnR9rhx42zOreQIp06don///uTPn582bdowadIk1q1bx6FDh9izZw+zZs2iSZMmVommpNpjUFCQOQmUXokmJycnq3a6devWJOt/++23Vn+zmTNnUr58eb744gtzT73du3czc+bMB57f4sUXX7RKxL311luMHTuWsLAwVq1aRcuWLS1620Fcr5OkvsB27tzZ6rqVOFFma9icI64lqXHmzBlOnjxpfiT+8eHu3bsW5YlvINCuXTuKFi1qsax79+4sXLiQgwcPMmnSJKvhq23atLEY7mgymXj33Xct6qxbt4433niDPXv2sHHjRl588UWLXnkuLi7079/f6nj8/PwsJgYODg5O1flISuLzkPiRHr0BBw8ezIABAxgwYABjxoyx62YcWdnNmzctztn58+et6pw/f96iTsJ5BLPi+ySl9gFxPTgT1kn4IxHAgAEDLF4fP36cTp06sXPnTnbs2EGnTp04depUsusEBARY9Wp6//33mTFjBocOHWLGjBl8+OGHFuU1a9a0+qHOEbGklxdffNGiN49hGLRs2ZLhw4ezYcMGjhw5wq5du/jjjz945513KFGiBE2bNrVom7NmzaJw4cL07NmTqVOnsmnTJg4fPszBgwf5888/+eabbyz2mXjew8SftcLCwpg7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UFAQdP+FCxfEoUOHxIULFwK2r1+/XgAQw4cPFzabzbf9888/FwDEmDFjAtrzXlkTgyaKGevXrxdqtVrEx8eL2267TcydO1dkZ2cLAGLBggUBbfPz84NeND7//HOhUqkEADFq1Cjxt7/9TfzpT38S6enpAoCYMmVKjdddvHixACDS09PF3XffLe6++26Rnp4uJEkSy5Yta8q3TBTTotEn8/PzRVpampg4caK45557xNy5c0VeXp6QJEkoFArx6quvNvXbJopZkeiTixcvFp06dRL5+fni4YcfDuiPTzzxRNDX5X2SKLRo9EveK4lCe+ONN0R+fr7Iz88Xl19+uQAghgwZ4tvm/8vP+fPnCwBi/vz5NZ7n1ltvFQBEnz59xIMPPij+8Ic/CI1GI1JSUsRPP/1Uoz3vlYEYNFFM+e6778TYsWNFQkKC0Ov14oorrhAffPBBjXahbtRCCLF9+3Zxww03iPbt2wuVSiWMRqMYNGiQ+M9//iOcTmfQ1129erUYNmyYiIuLE0ajUeTm5gaMsiBqq5q7T65YsUJMmDBBdOnSRcTFxQm1Wi06deokpk+fLr777rumeptELUZj++TevXvFddddJ9q3by/UarVIS0sT1113nVi/fn3Y1+V9kii05u6XvFcShebtZ6H+5Ofn+9qGC5pcLpf497//Lfr06SO0Wq1ITU0V06ZNCztakPfKKpIQQjTZvDwiIiIiIiIiImozWAyciIiIiIiIiIgigkETERERERERERFFBIMmIiIiIiIiIiKKCAZNREREREREREQUEQyaiIiIiIiIiIgoIhg0ERERERERERFRRDBoIiIiIiIiIiKiiGDQREREREREREREEcGgiYiIiIiIiIiIIoJBExERETWJzp07Q5KkgD9arRYdO3bEhAkT8Omnn0b7FBvE+16qGzFiBCRJwsaNGxv0vJMmTYJer8fp06fDths/frzvHPbv39+g16LGOX78ODQaDW688cZonwoREVHMYdBERERETWrIkCHIz89Hfn4+xo0bB5VKhY8//hjXX3895s6dG+3TiwlffvklPvroI9x9993o2LFjyHa//fYbPv/8c9/j//f//l9znB5V06VLF9x+++348MMPsWnTpmifDhERUUxh0ERERERN6tZbb8WiRYuwaNEirFy5Ej///DPuvvtuAMD//d//YceOHVE+w+i77777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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": [
+ {
+ "file_id": "https://gist.github.com/vinay0410/c4fa6b0ce026a6f8f572e370abf295cd#file-copy-of-columnar-engine-accelerated-hnsw-vector-search-ipynb",
+ "timestamp": 1784452329950
+ }
+ ],
+ "name": "Columnar Engine accelerated Hnsw Vector Search",
+ "authorship_tag": "ABX9TyMSKWplzgNypWNVOtXyCm1l"
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ },
+ "widgets": {
+ "application/vnd.jupyter.widget-state+json": {
+ "version_major": 2,
+ "version_minor": 0,
+ "state": {
+ "18472968b9e44fbca0a5d3b0744c7e9d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_d727b28eaad140d7ad6f27c13ddecd55",
+ "IPY_MODEL_b3ec8add6c4644f496d3fc0537bab6ac",
+ "IPY_MODEL_79e3bfabf2c045fbaeaaaade102d7c84"
+ ],
+ "layout": "IPY_MODEL_73fe028a01f44414a89fafc5bac1b585"
+ }
+ },
+ "d727b28eaad140d7ad6f27c13ddecd55": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_35da0a1afb584d8f90dbaa42a3739de9",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_8ec6b9a2176a4183868a1b72a20fbc7b",
+ "value": "COPY\u2007Training\u2007Data:\u2007100%"
+ }
+ },
+ "b3ec8add6c4644f496d3fc0537bab6ac": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_e9dc88e59cfc4473996c60211b17b5a4",
+ "max": 119,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_d2879953a5ad4a78a75536ef9a7c3ca7",
+ "value": 119
+ }
+ },
+ "79e3bfabf2c045fbaeaaaade102d7c84": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_39718ecd0a164dd1863aac958ba807bc",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_9fc193872f4441a29c76b773f062f830",
+ "value": "\u2007119/119\u2007[00:58<00:00,\u2007\u20072.27it/s]"
+ }
+ },
+ "73fe028a01f44414a89fafc5bac1b585": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "35da0a1afb584d8f90dbaa42a3739de9": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8ec6b9a2176a4183868a1b72a20fbc7b": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "e9dc88e59cfc4473996c60211b17b5a4": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d2879953a5ad4a78a75536ef9a7c3ca7": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": "#1f77b4",
+ "description_width": ""
+ }
+ },
+ "39718ecd0a164dd1863aac958ba807bc": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "9fc193872f4441a29c76b773f062f830": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "c32c95073cee4958b2262763d9b91e06": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_2587fd5359964511974f9c3367374ccd",
+ "IPY_MODEL_e4e6db33e9fa4b3585bf83cd3f892a70",
+ "IPY_MODEL_aec9695ad4044c4a97216fb1c8b7e742"
+ ],
+ "layout": "IPY_MODEL_d8489e9f624143489a6e88976b50e9b9"
+ }
+ },
+ "2587fd5359964511974f9c3367374ccd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_08869a816e924374b5e32a5a3b487405",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_29de62fdbe1848589d312b3b9d19114d",
+ "value": "COPY\u2007Test\u2007Queries\u2007&\u2007Ground\u2007Truth:\u2007100%"
+ }
+ },
+ "e4e6db33e9fa4b3585bf83cd3f892a70": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a64d1a4867a14051bf8c4e7bf866645c",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_a16bbd5c7d584d8f9fadd1d02288ddf5",
+ "value": 1
+ }
+ },
+ "aec9695ad4044c4a97216fb1c8b7e742": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_87d8fbd2e27d4d9b9c651b4346f7252c",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_ddf4e256cc1e46b5acda89a950384e72",
+ "value": "\u20071/1\u2007[00:01<00:00,\u2007\u20071.53s/it]"
+ }
+ },
+ "d8489e9f624143489a6e88976b50e9b9": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "08869a816e924374b5e32a5a3b487405": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "29de62fdbe1848589d312b3b9d19114d": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a64d1a4867a14051bf8c4e7bf866645c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a16bbd5c7d584d8f9fadd1d02288ddf5": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": "#1f77b4",
+ "description_width": ""
+ }
+ },
+ "87d8fbd2e27d4d9b9c651b4346f7252c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ddf4e256cc1e46b5acda89a950384e72": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "7a69b559161f4ad9b7fb2e97839ee81a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_cb729b199fdb41f983b0b76ccda942ac",
+ "IPY_MODEL_e9ed923cde2a4fccbcb6688a07c8dab7",
+ "IPY_MODEL_85e252232e2d43408cfffc735ed25953"
+ ],
+ "layout": "IPY_MODEL_c31bedc8fd434beca5e9f15cdbc0f114"
+ }
+ },
+ "cb729b199fdb41f983b0b76ccda942ac": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_970e9ba9e3f4457d97f22a554b3a39af",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_b1f9f2e17cc44526b79c44cf2cd527af",
+ "value": "Without\u2007Columnar\u2007Engine:\u2007100%"
+ }
+ },
+ "e9ed923cde2a4fccbcb6688a07c8dab7": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a59d14efbbbb4663a5d0afd99134914e",
+ "max": 8,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5d414ac7168f4361b39b9400d745aa6a",
+ "value": 8
+ }
+ },
+ "85e252232e2d43408cfffc735ed25953": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_0399d15d2ccb4740917a831362a650d0",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_39ebb56381d1465ab922a068ccea99f9",
+ "value": "\u20078/8\u2007[01:37<00:00,\u200719.89s/it]"
+ }
+ },
+ "c31bedc8fd434beca5e9f15cdbc0f114": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "970e9ba9e3f4457d97f22a554b3a39af": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "b1f9f2e17cc44526b79c44cf2cd527af": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "a59d14efbbbb4663a5d0afd99134914e": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "5d414ac7168f4361b39b9400d745aa6a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": "#1f77b4",
+ "description_width": ""
+ }
+ },
+ "0399d15d2ccb4740917a831362a650d0": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "39ebb56381d1465ab922a068ccea99f9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "ea548c029dd741d7ba55470c7cea0999": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HBoxModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_07a613b8aa05473291633831c085961e",
+ "IPY_MODEL_7c1ceb0996e84a9ab8a6953193835cbd",
+ "IPY_MODEL_7e7000ead4154e129c98e44afa13b25c"
+ ],
+ "layout": "IPY_MODEL_acca9136fa724599a9df3b2607fa0f91"
+ }
+ },
+ "07a613b8aa05473291633831c085961e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_cd25eb42f4594915af7a6700115bd91a",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_4567aeea2a6b42f8be822d6ea26f2150",
+ "value": "WITH\u2007Columnar\u2007Engine:\u2007100%"
+ }
+ },
+ "7c1ceb0996e84a9ab8a6953193835cbd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "FloatProgressModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_ee1700a7d0764a10bd5939fbaf70a1db",
+ "max": 8,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_3e243b39eaa544779a159c7ac1098dc1",
+ "value": 8
+ }
+ },
+ "7e7000ead4154e129c98e44afa13b25c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "HTMLModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_569881fe3ab24204864e0d7d00739358",
+ "placeholder": "\u200b",
+ "style": "IPY_MODEL_8a554e88c012432699f84093a99b6d2e",
+ "value": "\u20078/8\u2007[00:14<00:00,\u2007\u20072.97s/it]"
+ }
+ },
+ "acca9136fa724599a9df3b2607fa0f91": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "cd25eb42f4594915af7a6700115bd91a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "4567aeea2a6b42f8be822d6ea26f2150": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "ee1700a7d0764a10bd5939fbaf70a1db": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "3e243b39eaa544779a159c7ac1098dc1": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "ProgressStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": "#ff7f0e",
+ "description_width": ""
+ }
+ },
+ "569881fe3ab24204864e0d7d00739358": {
+ "model_module": "@jupyter-widgets/base",
+ "model_name": "LayoutModel",
+ "model_module_version": "1.2.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8a554e88c012432699f84093a99b6d2e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_name": "DescriptionStyleModel",
+ "model_module_version": "1.5.0",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ }
+ }
+ }
+ }
+ },
+ "nbformat_minor": 0,
+ "nbformat": 4
+}
diff --git a/alloydb/notebooks/e2e_test.py b/alloydb/notebooks/e2e_test.py
index 34516188c4..59095531ea 100644
--- a/alloydb/notebooks/e2e_test.py
+++ b/alloydb/notebooks/e2e_test.py
@@ -153,3 +153,37 @@ async def test_embeddings_batch_processing(
)
await conn.commit()
await pool.dispose()
+
+@pytest.mark.asyncio
+async def test_alloydb_vector_search_benchmark(
+ project_id: str,
+ cluster_name: str,
+ instance_name: str,
+ region: str,
+ database_name: str,
+ password: str,
+) -> None:
+ # Run the benchmark notebook with significantly reduced parameters
+ # to allow CI to complete quickly without OOMs or timeouts
+ conftest.run_notebook(
+ "alloydb_vector_search_benchmark.ipynb",
+ variables={
+ "project_id": project_id,
+ "region": region,
+ "cluster_id": cluster_name,
+ "instance_id": instance_name,
+ "db_name": database_name,
+ "db_user": "postgres",
+ "test_queries": 10,
+ },
+ preprocess=preprocess,
+ skip_shell_commands=True,
+ replace={
+ 'db_pass = getpass.getpass("🔑 Enter Database Password for AlloyDB: ")': f"db_pass = '{password}'",
+ "train_data = f['train'][:]": "train_data = f['train'][:1000]",
+ "test_data = f['test'][:]": "test_data = f['test'][:100]",
+ "neighbors_data = f['neighbors'][:]": "neighbors_data = f['neighbors'][:100]",
+ "ef_values = [40, 60, 100, 200, 400]": "ef_values = [40]"
+ },
+ until_end=True,
+ )