Qu'est-ce qu'un Vecteur ?#
Lorsqu'on entend le mot « vecteur » pour la première fois, la plupart des gens n'ont aucune idée de ce dont il s'agit. Les personnes issues d'une filière scientifique au lycée s'en souviennent peut-être vaguement grâce aux cours de mathématiques (algèbre et géométrie), mais pour les profils littéraires, cela paraît totalement obscur. La façon la plus simple de comprendre un vecteur est de visualiser une carte.
Imaginez une carte devant vous et tracez une ligne reliant la gare de Tokyo à celle d'Ikebukuro. C'est exactement le concept fondamental d'un vecteur. Numériquement parlant, il s'agit d'une flèche tracée sur la diagonale d'un rectangle de 3 cm de large sur 5 cm de haut. En résumé, un vecteur représente une « direction et une grandeur (longueur) » d'un point à un autre. Sur une carte, c'est en 2D (horizontal et vertical), mais si on y ajoute la hauteur, cela devient 3D, ce qui est couramment utilisé en physique pour modéliser le déplacement des objets.
La poche à 4 dimensions de Doraemon repose sans doute sur 4 axes : longueur, largeur, hauteur et temps (selon Einstein, la 4e dimension est le temps, bien que chez Doraemon il s'agisse d'un espace 4D autonome). En stockant plusieurs valeurs au-delà de simples dimensions 2D ou 3D, nous pouvons mathématiquement représenter des vecteurs à plusieurs dimensions. La 3D est intuitive car c'est notre monde réel, mais en fixant un nombre de dimensions élevé — comme 1024, 1536 ou 4096 dimensions —, on obtient un vecteur extrêmement précis. Il vaut mieux considérer ces dimensions élevées comme un moyen de représentation mathématique. Chercher à se le représenter comme un espace physique 3D serait source de confusion. Retenez simplement qu'il représente une « direction et une quantité ».
C'est également utilisé dans les IA modernes (LLM)#
Une étape majeure dans l'IA moderne a été la vectorisation du texte. Transformer des phrases en vecteurs plutôt qu'en simples mots permet de calculer et prédire facilement la phrase suivante : c'est le cœur des grands modèles de langage (LLM). De même, pour la recherche vectorielle, gérer le sens des phrases sous forme de vecteurs améliore la précision et permet de saisir fidèlement le sens contextuel.
Ceci concerne l'IA textuelle ; la génération d'images repose sur des modèles de diffusion complètement différents.
Spécifications actuelles et mise en œuvre#
L'environnement de développement de Kurousagi est hébergé sur Cloudflare, utilisant la base SQLite Cloudflare D1 pour gérer les spécifications. Au début, les spécifications étaient réparties dans les dépôts sous forme de fichiers Markdown ou HTML. Cependant, avec la multiplication des projets et bibliothèques, les documents étaient dispersés, obsolètes ou dupliqués, rendant la gestion très complexe.
Nous avons donc adopté une approche Monorepo et conçu un portail interne de développement. La création et l'édition des spécifications via API et interface web ont permis une gestion centralisée et des filtres avancés, rendant chaque document immédiatement accessible.
Cependant, dans un flux de développement assisté par IA, faire parcourir chaque document par l'IA consomme beaucoup trop de tokens. Pour optimiser cela, nous avons introduit la recherche vectorielle afin d'améliorer l'efficacité : tel est l'objectif de cette architecture.
Fonctionnement de base#
Les spécifications sont stockées dans la base D1. Nous y avons associé Cloudflare Vectorize, un service de base de données vectorielle dédiée. Nous extrayons le texte depuis D1, le traitons avec Cloudflare Workers AI, puis stockons les embeddings dans Cloudflare Vectorize (appelé CF Vectorize).
Quota gratuit de Cloudflare Workers AI
- 10 000 Neurons gratuits par jour et par compte sur l'ensemble de Workers AI
- Facturation à l'usage au-delà du quota gratuit
- Réinitialisation quotidienne à 00:00 UTC (09:00 heure du Japon)
- Partagé entre tous les modèles Workers AI du compte
Nous utilisons le modèle d'embedding @cf/baai/bge-m3. Ce modèle convertit le sens des phrases en séquences numériques. BGE-M3 étant multilingue, les spécifications et les requêtes de recherche sont alignées dans le même espace vectoriel.
Quota gratuit de Cloudflare Vectorize
- Stockage : 5 millions de dimensions vectorielles
- Recherche : 30 millions de dimensions vectorielles par mois
- Dépassement : Aucun surcoût automatique (passage au plan payant nécessaire pour continuer)
- Egress, CPU et maintenance d'index : Aucun coût supplémentaire
Le compte de Kurousagi étant un compte payant, il s'intègre parfaitement dans la limite de 10 millions de dimensions, mais cela dépasserait le quota gratuit standard. Le fonctionnement est direct : un cron extrait les spécifications modifiées depuis D1 via Workers AI, les vectorise et les enregistre dans Vectorize. Lors d'une recherche, la requête est vectorisée par Workers AI, comparée dans Vectorize, puis les spécifications correspondantes sont récupérées depuis D1 et affichées.
Retour d'expérience#
Notre impression après avoir testé la recherche vectorielle : c'est super pratique ! Alors qu'une recherche par mots-clés classique nécessitait de chercher « terminal » ou « perte », on peut désormais chercher « gestion des comptes en cas de perte de terminal » pour obtenir directement les spécifications pertinentes. Toutefois, le quota gratuit de Vectorize étant restreint, un volume important de documents nécessitera un forfait payant.
Cette capture montre le tableau de bord de gestion de la recherche vectorielle, où l'on constate le dépassement du quota gratuit. Alors que Workers AI se réinitialise quotidiennement, les données vectorielles sont persistantes.
En conclusion, c'est un outil très performant pour les utilisateurs d'un plan payant, mais le plan gratuit seul présente des limites strictes. Nous espérons que ce retour d'expérience vous sera utile !