Mise à l'échelle pour le volume de requêtes
Problème : Lorsqu'une requête a une limite élevée (par exemple 1000) et qu'il y a plusieurs shards (par exemple 10), naïvement chaque shard doit retourner les 1000 résultats complets — totalisant 10 000 points notés transférés et fusionnés. C'est inefficace puisque les données sont distribuées aléatoirement entre les auto-shards.
Idée centrale
Au lieu de demander à chaque shard la limite complète, demander à chaque shard une limite plus petite calculée via les statistiques de distribution de Poisson, puis fusionner. C'est sûr car l'auto-sharding garantit une distribution de données aléatoire et indépendante.
Quand il s'active
- Plus d'1 shard
- L'auto-sharding est en cours d'utilisation (tous les shards interrogés partagent la même clé de shard)
- La limite + décalage de la requête >= SHARD_QUERY_SUBSAMPLING_LIMIT (128)
- La requête n'est pas exacte
Compromis clé
La stratégie échange une petite probabilité de résultats légèrement incomplets contre une réduction importante du transfert de données inter-shards, particulièrement pour les requêtes à limite élevée sur plusieurs shards. Le facteur de sécurité 1.2x et le seuil Poisson à 99,9 % maintiennent le taux d'erreur très bas — comparable aux imprécisions déjà introduites par les indices de vecteurs approximatifs comme HNSW.