code: def for_dataset(
      dataset: Dataset, batch_size: int = 0, clusters: int = 1
  ) -> Evaluation:
      tasks = []
      add = AddTask(vectors=dataset.vectors, keys=dataset.keys)
      search = SearchTask(
          queries=dataset.queries, neighbors=dataset.neighbors
      )
  
      if batch_size:
          tasks.extend(add.slices(batch_size))
          tasks.extend(search.slices(batch_size))
      elif clusters != 1:
          tasks.extend(add.clusters(clusters))
          print(tasks)
          tasks.append(search)
      else:
          tasks.append(add)
          tasks.append(search)
  
      return Evaluation(
          tasks=tasks,
          count=add.count,
          ndim=add.ndim,
      )
  
imports: from __future__ import annotations
  from time import time_ns
  from typing import Tuple, Any, Callable, Union, Optional, List
  from dataclasses import dataclass, asdict
  from collections import defaultdict
  from math import ceil
  import numpy
  from usearch.io import load_matrix
  from usearch.index import Index, Matches, BatchMatches, MetricKind, MetricKindBitwise, Key
label_desc: Use image node_id 1 for calling the Evaluation obj's underlying member method code with example usage: obj.for_dataset(dataset, batch_size, clusters) and returns: Evaluation