turbovec
turbovec
Active

turbovec

turbovec est un index vectoriel Rust/Python local implémentant la compression TurboQuant, l'ingestion en ligne, les identifiants externes stables, la persistance et la recherche SIMD filtrée par liste blanche. Cette revue explique l'algorithme, les limites du benchmark, l'évaluation RAG, les intégrations et quand FAISS ou une base de données vectorielles complète est un meilleur ajustement.

42

Views

0

Likes

Jun 2026

Added

github.com

Website

Tags

recherche vectorielleinfrastructure RAGTurboQuantoutillage AI Rust

Product Preview

A quick visual look at turbovec before you visit the official site.

Published 6/10/2026
turbovec screenshot

Editorial Review

About turbovec

turbovec est un index vectoriel en cours de processus open source écrit en Rust avec des liaisons Python. Il implémente l'approche TurboQuant de Google Research pour compresser les vecteurs denses sans phase distincte de formation du livre de codes, puis recherche les codes compressés avec les noyaux SIMD spécifiques à l'architecture. Son attrait pratique réside dans une combinaison d'ingestion en ligne, de stockage 2 bits ou 4 bits, de persistance, d'identifiants externes stables, de prise en charge de la suppression, de recherche filtrée par liste d'autorisation et d'adaptateurs pour les frameworks RAG courants.

Il est important de le classer correctement. turbovec est une bibliothèque d'index, pas une base de données vectorielles hébergée ou un service de récupération complet. Il ne fournit pas à lui seul la réplication distribuée, le partitionnement multi-nœuds, les sauvegardes, l'authentification, l'administration des locataires, les APIs réseau, la recherche lexicale hybride, l'observabilité ou un plan de contrôle. Les équipes gagnent en contrôle local et en efficacité de mémoire en échange de la possession des préoccupations environnantes.

Hand-drawn diagram showing TurboVec normalization, random rotation, TQ+ calibration, Lloyd-Max 2-bit or 4-bit quantization and SIMD query scoring
Pipeline conceptuel TurboVec. Le projet compresse la direction du vecteur, préserve les métadonnées de correction et note directement les codes compressés ; la mémoire réelle comprend également les identifiants, les normes, les métadonnées d'étalonnage et d'index.

Comment fonctionne la compression TurboQuant

L’idée sous-jacente est qu’une rotation orthogonale aléatoire fait que les coordonnées des vecteurs unitaires de grande dimension suivent une distribution prévisible. turbovec sépare d'abord la norme de chaque vecteur de sa direction. Il applique une rotation aléatoire partagée, puis quantifie les coordonnées pivotées à l'aide de compartiments Lloyd–Max précalculés. Deux bits fournissent quatre valeurs par coordonnée ; quatre bits en fournissent seize. Les codes sont remplis de bits et une correction par vecteur supprime le rétrécissement systématique du produit interne introduit par la quantification.

Le projet ajoute l'étalonnage TQ+ : lors du premier ajout, il estime un décalage et une échelle pour chaque coordonnée à l'aide de quantiles empiriques, puis gèle ces valeurs pour des ingérations ultérieures. Ce n’est pas la même chose qu’une formation conventionnelle à la quantification de produits, mais le premier lot influence l’étalonnage. Un premier ajout minuscule ou non représentatif peut donc être une mauvaise initialisation de la production. Ensemencer l'index avec un échantillon représentatif et tester la dérive de distribution.

ScèneStocké ou calculéConséquence opérationnelle
NormaliserDirection de l'unité plus norme d'originePréserve la magnitude tout en quantifiant la structure angulaire
Rotation aléatoireTransformation orthogonale partagéeRend les distributions de coordonnées prévisibles sur des données d'entrée arbitraires
TQ+ étalonnageDécalage et échelle par coordonnées appris lors du premier ajoutAméliore le comportement fini/de faible dimension ; nécessite une initialisation représentative
Lloyd–Max quantificationCodes de coordonnées 2 bits ou 4 bitsRéduction importante de la mémoire avec perte de rappel dépendante de l'ensemble de données
Correction de longueurUn scalaire par vecteurCorrige les estimations du produit interne biaisées à la baisse
SIMD rechercheRequête pivotée et notation de table de recherche sur des codes compressésÉvite la décompression complète ; les performances dépendent de l'architecture du processeur

Mathématiques de mémoire sans raccourci marketing

Un vecteur float32 de 1 536 dimensions utilise 6 144 octets pour les coordonnées brutes. Ses codes de coordonnées nécessitent 384 octets à 2 bits ou 768 octets à 4 bits avant les métadonnées. Il s’agit d’une réduction théorique de 16× ou 8× pour la charge utile coordonnée. Le titre du référentiel indique qu'un corpus float32 de 10 millions de documents occupant environ 31 Go peut contenir environ 4 Go ; cet exemple reflète une dimension et une représentation particulières et ne doit pas être généralisé à tous les corpus.

La planification de la capacité doit ajouter des ID externes, des valeurs de correction/norme par vecteur, des données d'étalonnage, l'alignement, la surcharge de l'allocateur, les emplacements supprimés, les métadonnées d'application, les tampons de requête et le magasin de documents d'origine. Les intégrations représentent rarement la totalité de la facture de mémoire RAG. Mesurez la taille de l’ensemble résident après avoir chargé l’index persistant réel et répondu aux requêtes simultanées.

Ce que API prend en charge

importer numpy en tant que np
à partir de turbovec importer IdMapIndex

index = IdMapIndex(dim=1536, bit_width=4)
index.add_with_ids(vectors.astype(np.float32), ids.astype(np.uint64))
scores, result_ids = index.search(query.astype(np.float32), k=10)
index.remove(document_id)
index.write("corpus.tvim")
restauré = IdMapIndex.load("corpus.tvim")

Le Python API rejette délibérément les vecteurs non-float32 au lieu de les convertir silencieusement. Les ID stables sont importants car les emplacements internes peuvent changer après les suppressions et la maintenance. La persistance rend le redémarrage local pratique, mais les applications nécessitent toujours une publication atomique, des sommes de contrôle, une politique de sauvegarde/version et des tests de compatibilité entre les mises à niveau de bibliothèque.

La récupération filtrée est un différenciateur significatif

Pour une récupération multi-tenant, par fenêtre temporelle ou basée sur les autorisations, l'application peut d'abord produire un ensemble d'ID autorisés à partir de SQL, BM25, d'un service ACL ou d'un autre système, puis demander à turbovec de classer uniquement ces candidats. Le filtrage s'effectue à l'intérieur du chemin SIMD avec une granularité de bloc de 32 vecteurs. Les blocs vides peuvent être ignorés et les emplacements non autorisés sont rejetés avant l'insertion du tas, de sorte que les filtres sélectifs peuvent éviter une grande partie du travail de notation dense.

C'est mieux que de récupérer un top-k global et de rejeter les résultats non autorisés, qui peuvent renvoyer trop peu de documents valides et risquer de divulguer des informations de classement. Il incombe toujours à l'appelant de construire correctement la liste d'autorisation, de la lier au locataire authentifié et de tester les ensembles vides, minuscules, énormes et évoluant rapidement. N'utilisez jamais le filtrage des métadonnées comme seul contrôle d'autorisation lors de la récupération du document final.

Comment lire les benchmarks publiés

RéclamationLimite de test publiéeCe qui reste à prouver
Rappel compétitif avec FAISS PQ100 000 vecteurs, k = 64 ; OpenAI cote 1536/3072 et GloVe cote 200 ; débit binaire adaptéVotre modèle d'intégration, distribution du corpus, k, étiquettes de métrique et de pertinence
10 à 19 % plus rapide sur ARMApple M3 Max contre FAISS IndexPQFastScan dans les configurations de référentielAutres puces Apple, filtres de concurrence, d'état thermique et de production
Vitesse x86 compétitiveXeon Platine 8481C ; gains signalés pour 4 bits, pertes modestes dans certains cas 2 bitsVotre génération de CPU, chemin AVX, cœurs, NUMA et lot de requêtes
Pas de formation/reconstructionQuantificateur à distribution connue avec calibrage TQ+ en premier ajout et ajouts en ligneImpact d’un premier lot non représentatif ou d’un changement de distribution important
La recherche filtrée évite la récupération excessiveListe d'autorisation gérée dans le scoring de bloc et l'insertion de tasCoût SQL/ACL de bout en bout et filtres non sélectifs dans le pire des cas

La référence de comparaison est FAISS IndicePQ/IndexPQFastScan, pas tous les types d'index FAISS. La recherche exacte plate, HNSW, IVF-PQ, les index GPU et les bases de données gérées résolvent différents points sur la courbe de rappel, de latence, de mémoire et d'opérations. Reproduisez d'abord les références du référentiel, puis remplacez vos données et votre cible d'acceptation un facteur à la fois.

Un protocole d’évaluation RAG utile

  1. Geler les intégrations. Utilisez le modèle exact, la normalisation, la dimension et la convention de distance prévus pour la production.
  2. Créez une vérité terrain. Calculez les meilleurs voisins exacts avec une implémentation plate fiable et gérez séparément les jugements de pertinence des tâches.
  3. Testez les deux largeurs de bits. Comparez 2 bits et 4 bits avec float32 ou une recherche exacte, pas seulement les uns contre les autres.
  4. Stratifiez les requêtes. Incluez les cas courants, rares, multilingues, courts, longs, dupliqués et hors domaine.
  5. Ingestion d’exercice. Initialisez avec un lot représentatif, ajoutez des distributions ultérieures, supprimez des identifiants, conservez, rechargez et vérifiez le comportement déterministe.
  6. Filtres de référence. Mesurez l'absence de filtre et les listes autorisées à une couverture de 0 %, 0,1 %, 1 %, 10 %, 50 % et 100 %, y compris les dispositions de blocs contradictoires.
  7. Test de charge. Enregistrez la latence p50/p95/p99, le débit, l'utilisation du processeur, la mémoire résidente et le comportement de la queue en simultanéité réelle.
  8. Évaluez la réponse. Mesurez le rappel de récupération, la qualité du reclassement, l’exactitude des citations et le succès de la réponse finale. Les voisins approximatifs plus rapides n'ont de valeur que si le résultat de l'application survit.

Métriques de décision

MétriqueDéfinitionRapports suggérés
Rappel@kVoisins top-k exacts récupérés par recherche approximativePar tranche d'ensemble de données, largeur de bits et sélectivité du filtre
Rappel de tâcheRequêtes dont les pièces justificatives requises sont récupéréesPlus significatif que le seul chevauchement vecteur-voisin
Mémoire par vecteurTraiter RSS delta / vecteurs consultables chargésInclure les identifiants, les emplacements supprimés et la surcharge des métadonnées
Latence de queueTemps de requête de bout en bout p95/p99Avec une concurrence réaliste et un mélange de listes autorisées
Coût de mise à jourTemps et mémoire maximale pour les ajouts, suppressions, sauvegardes et rechargementsInclut le calibrage du premier ajout et la récupération après incident
Coût par requête acceptéeInfrastructure plus opérations d'ingénierie / résultats corrects des tâchesComparez avec FAISS et les alternatives gérées

Intégrations de framework

Le référentiel documente les adaptateurs pour LangChain, LlamaIndex, Haystack et Agno qui remplacent leurs magasins de référence en mémoire tout en conservant les interfaces familières. Cela peut accélérer une preuve de concept, mais « drop-in » fait référence à une surface logicielle publique – et non à une notation, un filtrage, une suppression, une persistance, un thread ou une sémantique d'échec identiques. Exécutez les tests de récupération de chaque framework et épinglez les versions compatibles avant le déploiement.

Alternatives

OptionsPréférez-le quandCompromis
turbovecLa recherche locale en cours de processus, la compression extrême, les ajouts en ligne et le filtrage des listes d'autorisation s'adaptent à la charge de travail.Vous possédez les contrôles de service, de réplication et opérationnels
FAISSVous avez besoin de choix d'indexation mature exact, FIV, PQ, HNSW ou GPULa configuration et la formation peuvent être plus complexes ; la mémoire varie selon l'index
hnswlibUn rappel élevé et une recherche de graphiques à faible latence sont plus importants qu'un stockage compactLa surcharge du graphique peut consommer beaucoup plus de mémoire
Qdrant, Weaviate ou MilvusUn service réseau, des filtres de métadonnées, une réplication et des opérations sont requisPlus d'infrastructure et de mémoire qu'une petite bibliothèque intégrée
Base de données vectorielles géréeL'équipe souhaite une mise à l'échelle, des sauvegardes, une authentification et une assistance hébergéesCoût récurrent, résidence des données et dépendance aux fournisseurs
PostgreSQL avec pgvectorLes vecteurs doivent rester proches des données relationnelles et des opérations existantesPeut ne pas correspondre à un index compressé spécialisé à grande échelle

Limites et risques de production

  • Une compression approximative peut modifier l'ordre du voisin le plus proche, en particulier en cas de largeur de bit agressive ou de faible dimension.
  • Les noyaux spécifiques au processeur signifient que les résultats des tests ne doivent pas être transférés entre le matériel ARM, AVX2 et AVX-512.
  • L'étalonnage du premier ajout, la modification des modèles d'intégration et la dérive du corpus nécessitent des tests de migration explicites.
  • Le déploiement local maintient les vecteurs sous votre contrôle mais n'ajoute pas automatiquement le cryptage, le contrôle d'accès ou les sauvegardes sécurisées.
  • Un crash en cours de processus affecte l'application hôte à moins que les limites du service et la stratégie de récupération ne soient délibérément conçues.
  • Le projet évolue ; épingler les versions, inspecter les journaux de modifications/les conseils de sécurité et valider la compatibilité des index persistants.

Questions fréquemment posées

turbovec est-il une base de données vectorielle ?

Non, il s’agit d’une bibliothèque d’index vectoriels. Les applications doivent fournir des opérations de stockage de documents, de mise en réseau, d’autorisation, de réplication, de surveillance et de cycle de vie selon les besoins.

Cela nécessite-t-il une étape de formation hors ligne ?

Il évite la formation conventionnelle sur les livres de codes et prend en charge les ajouts en ligne. TQ+ calibre les valeurs par coordonnées lors du premier ajout, de sorte que le lot d'initialisation mérite toujours du soin.

Dois-je choisir 2 bits ou 4 bits ?

Utilisez 2 bits lorsque la mémoire est la contrainte contraignante et que votre rappel de tâche mesuré reste acceptable. Quatre bits achètent généralement plus de fidélité pour environ deux fois le stockage du code de coordonnées. Comparez les deux.

La recherche filtrée renforce-t-elle la sécurité des locataires ?

Il peut efficacement restreindre le classement à une liste verte. L'application doit créer la liste correcte et revérifier l'autorisation avant de renvoyer le contenu source.

Ses revendications de vitesse FAISS sont-elles universelles ?

Les résultats publiés couvrent le matériel nommé, les ensembles de données, les dimensions, les largeurs de bits et les configurations FAISS PQ/FastScan. Les résultats x86 2 bits incluent les cas où FAISS est plus rapide.

Peut-il être doté d'un espace d'air ?

L'index s'exécute localement et ne nécessite pas de service géré. Une pile RAG complète et isolée nécessite également des intégrations locales, des documents, la provenance du package/modèle et des mises à jour contrôlées.

Sources primaires

Dernière révision le 25 juillet 2026. Les déclarations de performances s'appliquent à la configuration publiée du référentiel, sauf indication contraire. Reproduisez sur votre corpus, en intégrant le modèle, le matériel et la distribution des filtres avant adoption.

Ready to try turbovec?

Visit the official website to get started

Visit turbovec

Quick Info

Added
6/10/2026
Published
6/10/2026
Updated
7/25/2026

Share This Tool

Have an AI tool to share?

Submit it to AI Dreamhub

Get your product in front of people actively exploring AI tools.

Submit Your Tool

Related Tools

Perplexity

Perplexity

AI-driven conversational search engine. - Outil IA intelligent pour améliorer votre productivité.

ai-searchfree
590
You.com

You.com

Skip the groundwork with our AI-ready API platform and ultra-specific vertical indexes, delivering advanced search capabilities to power your next product. - Outil IA intelligent pour améliorer votre productivité.

ai-searchfree
600
Morphik

Morphik

Open source AI-driven search engine for private documents - Outil IA intelligent pour améliorer votre productivité.

ai-searchfree
530
Firecrawl

Firecrawl

Une API conçue pour les agents IA qui transforme des sites web entiers en markdown ou en données structurées prêts pour les LLM.

web-scrapingIAmarkdown
520