Open source · Compression vectorielle
Semafold : des vecteurs plus petits, des compromis mesurables
Semafold est notre bibliothèque Python open source pour compresser les représentations numériques utilisées par les systèmes d’IA. Elle réduit le stockage des embeddings et permet d’explorer des tenseurs de cache d’attention plus petits, en mesurant ensemble les octets économisés et l’erreur de reconstruction.
Mesure synthétique · rapport source 0.1.0 du 31 mars 2026 · bibliothèque examinée en 0.2.0
Question de recherche
Quel espace peut-on économiser pour les vecteurs d’IA en comptant la représentation compressée complète, métadonnées comprises ?
Méthode
Le rapport source utilise des données synthétiques : 128 vecteurs de 1 536 valeurs et des paires de tenseurs clé/valeur de forme (4, 8, 256, 128). Les encodages vectoriels à 2, 3 et 4 bits sont comparés au stockage dense float32 et 16 bits. Les tailles incluent les données compressées, les valeurs auxiliaires et les métadonnées. La qualité est évaluée par les erreurs de reconstruction et de similarité.
Résultats
À 3 bits, la représentation des embeddings passe de 786 432 à 74 738 octets : 90,50 % de moins qu’en float32 et 80,99 % de moins qu’en 16 bits. La paire clé/valeur étudiée passe de 8 388 608 à 885 734 octets. Ces mesures de stockage sur données synthétiques ne démontrent ni un gain de vitesse applicative ni une meilleure qualité des réponses.
Cas d’utilisation
Les archives d’embeddings, la mémoire vectorielle des agents et les chaînes de recherche personnalisées sont des points d’intégration possibles. Une API en préversion traite les tenseurs clé et valeur du mécanisme d’attention. Semafold compresse des nombres ; il ne résume pas les documents et ne raccourcit pas les prompts.
Choisir le compromis entre taille et fidélité
Dans le test de reconstruction, l’encodage à 2 bits occupe 50 077 octets avec une erreur quadratique moyenne de 0,1178 ; à 3 bits, 74 738 octets avec 0,0348 ; à 4 bits, 99 484 octets avec 0,0098. Plus de bits préservent mieux les valeurs d’origine. Ces erreurs ne mesurent ni le rappel de recherche ni l’exactitude des réponses.
Une bibliothèque Python aux limites explicites
Python 3.10+ et NumPy suffisent pour le cœur. La version 0.2.0 ajoute une accélération facultative via PyTorch (CUDA/MPS) ou MLX (Metal). L’API racine documentée fournit des contrats typés d’encodage et de décodage, ainsi que le décompte des octets. Les codecs TurboQuant et l’API clé/valeur sont des modules en préversion sans garantie de compatibilité. Aucun gain de vitesse GPU n’a été mesuré dans ce rapport.
Limites
La compression entraîne une perte d’information. La qualité de recherche et le comportement du modèle doivent être évalués sur les données visées. Les très petits blocs de cache peuvent dépasser le stockage 16 bits à cause des métadonnées. Les API de compression et de cache restent en préversion ; les intégrations prêtes à l’emploi pour l’inférence sont hors du périmètre de ce rapport.
À propos de ce rapport
Ce rapport technique n’a pas été évalué par les pairs. Les chiffres proviennent du rapport de mesure 0.1.0 du dépôt ; les tests n’ont pas été relancés pour ce site. Le code, les exemples, les scripts de mesure et la politique de stabilité des API sont publics sous Apache-2.0.
- Découvrir Semafold sur GitHub ↗
- Rapport de mesure original ↗
- Exemples Python exécutables ↗
- Politique de stabilité des API ↗
- Apache-2.0 ↗
Notes techniques et sources
Mesure synthétique · rapport source 0.1.0 du 31 mars 2026 · bibliothèque examinée en 0.2.0
Les noms de fichiers et les empreintes SHA-256 identifient les versions exactes des sources utilisées pour préparer ce rapport.
- benchmarks/turboquant_benchmark_report.md
SHA-256: ef384c74195d3f0944b36b1d2cf75baa78ca77e6e29009faa1f08ed3d648f1ad - STABILITY.md
SHA-256: f085264ec4f6c0a0b3e962e8cccea470fd6e11fdb501f3492b4b4865ae6885e7 - CHANGELOG.md
SHA-256: b52cccda6dc65f2d5f8de5f31d7c44a634d1250dcd61c5b1cd1c5ebd46b603f6 - pyproject.toml
SHA-256: b5ed5776e2bdde03a2ff6b62176ed687993b9a7bc39e4e74721f49c8763950ce
