QGraph (Quantized Graph) utilise une structure de graphe HNSW (Hierarchical Navigable Small World) avec une quantification optionnelle. Configurez les paramètres de construction et de recherche ci-dessous pour équilibrer les performances, le taux de rappel et la taille de l'index en fonction de votre charge de travail.
Paramètres de construction de l'index
Les paramètres de construction sont définis lors de la création de l'index. Toute modification nécessite une reconstruction complète de l'index.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
proxima.hnsw.builder.max_neighbor_count |
uint32 | 100 | Nombre maximal de voisins par nœud du graphe. Des valeurs plus élevées améliorent la connectivité du graphe, mais augmentent le temps de construction et la taille de l'index. |
proxima.hnsw.builder.efconstruction |
uint32 | 500 | Taille de la zone d'analyse des voisins lors de la construction du graphe. Des valeurs plus élevées produisent un graphe de meilleure qualité, mais ralentissent la construction de l'index. Commencez par la valeur 400. |
proxima.hnsw.builder.thread_count |
uint32 | 0 | Nombre de threads utilisés pendant la construction. La valeur 0 utilise le nombre de cœurs CPU disponibles. |
proxima.qgraph.builder.quantizer_class |
string | None | Quantificateur appliqué à l'index. Options disponibles : Int4QuantizerConverter, Int8QuantizerConverter, HalfFloatConverter. Consultez la section Choisir un quantificateur. |
Paramètres de recherche de l'index
Les paramètres de recherche peuvent être ajustés sans reconstruire l'index.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
proxima.hnsw.searcher.ef |
uint32 | 500 | Nombre de candidats voisins les plus proches analysés lors d'une recherche en ligne. Des valeurs plus élevées améliorent le taux de rappel, mais réduisent les performances de recherche. Définissez une valeur comprise entre 100 et 1000. |
proxima.hnsw.searcher.max_scan_ratio |
float | None | Proportion de points analysés lors d'une recherche en ligne. Des valeurs plus élevées améliorent le taux de rappel, mais réduisent les performances de recherche. |
proxima.hnsw.searcher.brute_force_threshold |
uint32 | None | Nombre minimal de points analysés lors d'une recherche en ligne. Lorsque cette valeur dépasse le nombre de documents dans un shard, la recherche bascule en mode force brute. |
Choisir un quantificateur
La quantification réduit la taille de l'index et améliore les performances de recherche, au détriment du taux de rappel. Choisissez en fonction de votre budget mémoire et de vos exigences en matière de précision.
| Classe de quantificateur | Taille de l'index | Performances de recherche | Taux de rappel |
|---|---|---|---|
Int4QuantizerConverter |
La plus petite | Les plus élevées | Le plus faible |
Int8QuantizerConverter |
Moyenne | Moyennes | Moyen |
HalfFloatConverter |
Proche de la non-quantification | Proches de la non-quantification | Proche de la non-quantification |
Remarque : En raison des contraintes liées au jeu d'instructions CPU,HalfFloatConverteroffre des performances et un taux de rappel presque identiques à ceux d'une absence de quantification. UtilisezInt8QuantizerConverterpour une réduction significative de la taille, ouInt4QuantizerConverterpour obtenir l'index le plus compact possible.
Guide d'optimisation
La configuration appropriée dépend de votre débit de requêtes, de la fréquence d'écriture et de l'objectif de rappel visé. Utilisez ce tableau comme point de départ.
| Débit de requêtes | Fréquence d'écriture | Objectif de rappel | Configuration recommandée |
|---|---|---|---|
| Faible | Faible | Faible | Maintenez les valeurs de efconstruction et de ef basses. Une machine de moindre capacité suffit. |
| Faible | Faible | Élevé | Augmentez les valeurs de efconstruction et de ef jusqu'à ce que le taux de rappel atteigne votre objectif. |
| Faible | Élevée | Faible | Maintenez la valeur de efconstruction basse. Ajustez la valeur de ef à la hausse pour atteindre le taux de rappel souhaité. |
| Faible | Élevée | Élevé | Maintenez la valeur de efconstruction basse. Augmentez significativement la valeur de ef. |
| Élevé | Faible | Faible | Un débit de requêtes élevé nécessite une valeur de ef faible. Un faible taux de rappel permet d'utiliser une valeur de efconstruction basse. |
| Élevé | Toutes | Élevé | Scénario le plus exigeant. Maintenez les valeurs de efconstruction et de ef aussi basses que possible tout en respectant votre objectif de rappel. |
Principes généraux :
Le paramètre
efconstitue le principal levier d'ajustement lors de la recherche. Augmentez sa valeur pour améliorer le taux de rappel ; diminuez-la pour optimiser les performances de recherche.Les paramètres
max_scan_ratioetbrute_force_thresholdoffrent des contrôles d'analyse supplémentaires pour les cas d'utilisation avancés.