KMeans
Overview
kmeans is a selection algorithm that uses cluster-based routing to assign queries to candidate models. It partitions the query embedding space into clusters and maps each cluster to the best-performing model.
It aligns to config/algorithm/selection/kmeans.yaml.
Implementation: Rust via Linfa (linfa-clustering).
Key Advantages
- Efficient inference: O(k×d) per query (k = clusters, d = embedding dimension).
- Natural grouping of query patterns into clusters.
- Works well when prompt traffic naturally falls into recurring categories.
- Efficiency weight parameter allows quality vs. throughput tradeoff.
Algorithm Principle
- Training: K-Means partitions training queries into
num_clustersclusters using Lloyd's algorithm. - Cluster-Model Assignment: Each cluster is mapped to the best-performing model based on historical outcome quality.
- Inference: New queries are embedded and assigned to the nearest cluster centroid. The cluster's mapped model is selected.
When efficiency_weight > 0, the scoring blends cluster assignment with model efficiency:
Select Flow
What Problem Does It Solve?
Some prompt traffic naturally falls into recurring regions where the same model tends to win, but per-request learned ranking would be unnecessary overhead. kmeans turns those recurring regions into cluster-to-model assignments for fast, stable routing.
When to Use
- Prompt traffic naturally groups into repeatable classes (e.g., math, coding, creative writing).
- You have a cluster-based selector for candidate models.
- You need efficient O(k×d) inference per request.
- Quality-weighted cluster assignment is sufficient (vs. non-linear MLP boundaries).