La recherche d'embeddings est facile avec 10K vecteurs. À 100M vecteurs avec un P99 inférieur à 100 ms, c'est un problème d'infrastructure — et c'est ce que ce modèle résout.
Votre pipeline RAG ou votre système de recommandation fonctionne parfaitement en développement avec quelques milliers de vecteurs. Maintenant, vous avez 50 millions d'embeddings, les requêtes nécessitent une latence inférieure à 100 ms, l'index continue de croître, et vous épuisez la mémoire. Vous avez besoin d'une architecture de base de données vectorielle qui évolue horizontalement, gère efficacement la mémoire (tout n'a pas besoin de vivre en RAM), gère les écritures concurrentes pendant l'ingestion sans dégrader les performances des requêtes, et ne coûte pas 10K $ par mois en infrastructure pour ce qui est fondamentalement un index de recherche.
Explore more design patterns and system architectures
Nos architectes peuvent vous aider à concevoir et construire des systèmes utilisant ce modèle pour vos besoins spécifiques.
Contactez-nous
L'architecture de base de données vectorielle évolutive répond aux défis de l'exploitation de la recherche vectorielle à l'échelle de production : partitionnement de l'index sur plusieurs nœuds (sharding), stockage étagé (segments chauds en mémoire, chauds sur SSD, froids sur S3), routage des requêtes avec équilibrage de charge, et autoscaling basé sur la charge des requêtes et la taille de l'index. Le modèle couvre la topologie de déploiement, la planification de la capacité, l'isolation écriture/lecture et l'optimisation des coûts. C'est la couche d'infrastructure qui rend les systèmes RAG et de recommandation viables à l'échelle.
L'architecture déploie des nœuds de base de données vectorielle dans une topologie en cluster avec une séparation entre les nœuds de requête (chemin de lecture) et les nœuds de données (chemin d'écriture). Un pipeline d'ingestion gère la génération d'embeddings et les upserts par lots avec une mise en mémoire tampon des écritures pour éviter d'impacter la latence des requêtes. Un routeur de requêtes distribue les recherches sur les répliques de lecture avec un parallélisme au niveau des shards. Le stockage étagé déplace les segments rarement accédés de la mémoire vers les SSD puis vers S3, avec un chargement transparent au moment de la requête. L'autoscaling ajuste le nombre de répliques en fonction du QPS des requêtes et de la latence P99.

System Architecture Overview
| Couche | Technologies |
|---|---|
| Base de Données Vectorielle | Milvus (distribué), Qdrant (nœud unique/petit cluster), Pinecone (géré) |
| Backend de Stockage | MinIO / S3 (stockage de segments), SSD (couche tiède), RAM (couche chaude) |
| Coordination | etcd (métadonnées Milvus), Pulsar/Kafka (journal d'événements) |
| Modèles d'Embedding | OpenAI text-embedding-3-large, Cohere embed-v4, BGE-M3, E5-large-v2 |
| Infrastructure | Kubernetes (EKS/GKE) avec des nœuds GPU pour l'embedding, des nœuds optimisés en mémoire pour la requête |
| Monitoring | Grafana + exportateur de métriques Milvus, tableaux de bord P99/rappel personnalisés |
| Utiliser Quand | Éviter Quand |
|---|---|
| Le nombre de vecteurs dépasse 5M et continue de croître, nécessitant un scaling horizontal | Vous avez moins de 1M vecteurs — pgvector sur votre PostgreSQL existant est suffisant |
| Une latence P99 des requêtes inférieure à 100 ms est une exigence stricte | Une latence des requêtes de 500 ms+ est acceptable — des options plus simples fonctionnent |
| Plusieurs applications/locataires partagent l'infrastructure vectorielle | Une seule application avec une seule collection — utilisez un service géré |
| L'optimisation des coûts nécessite un stockage étagé (pas tout en RAM) | Le budget permet des services entièrement gérés et la tarification du fournisseur fonctionne à votre échelle |
MW conçoit l'infrastructure de base de données vectorielle avec une approche "dimensionner correctement dès le premier jour, scaler quand c'est mesuré". Nous commençons par la planification de la capacité basée sur le nombre de vecteurs, la dimensionnalité, le type d'index et la latence cible — pas par des conjectures. Nos déploiements Milvus sur Kubernetes incluent des tableaux de bord Grafana qui suivent le nombre de segments, l'utilisation de la mémoire, les percentiles de latence des requêtes et les estimations de rappel. Nous avons mis en œuvre des clusters Milvus autoscaling qui gèrent des pics de trafic 10x pendant les heures de bureau et se réduisent pendant la nuit, réduisant ainsi les coûts d'infrastructure de 40 à 60 % par rapport à un provisionnement statique.
Donnez à votre LLM accès à vos données sans fine-tuning. Le RAG comble le fossé entre les modèles de langage à usage général et les connaissances spécifiques à un domaine.
MicrocosmWorks recommande généralement pgvector pour les projets de moins de 5 à 10 millions de vecteurs lorsque l'équipe utilise déjà PostgreSQL, car cela évite d'introduire un nouveau composant d'infrastructure et prend en charge nativement les requêtes hybrides SQL-plus-vector. Au-delà de 10 millions de vecteurs ou lorsque vous avez besoin d'une latence p99 inférieure à 50 ms à haute concurrence, une base de données vectorielle spécialement conçue comme Qdrant, Weaviate ou Milvus offre des performances nettement supérieures grâce à des algorithmes d'indexation optimisés et une recherche accélérée par GPU. Nous aidons nos clients à prendre cette décision lors de l'examen de l'architecture en évaluant leurs modèles de requêtes réels et leurs projections de croissance.
MicrocosmWorks conçoit des clusters de bases de données vectorielles avec des stratégies de sharding basées sur le hachage ou les métadonnées qui distribuent les vecteurs sur les nœuds tout en conservant les données sémantiquement liées co-localisées pour une recherche efficace. Nous implémentons des couches de routage des requêtes qui répartissent les demandes de recherche vers les shards pertinents et fusionnent les résultats à l'aide d'une agrégation top-K globale, en maintenant une latence inférieure à 100 ms même sur des dizaines de shards. Nos tableaux de bord de surveillance suivent l'équilibre des shards, la distribution des requêtes et le délai de réplication pour éviter les hotspots à mesure que votre ensemble de données évolue.
MicrocosmWorks applique la scalar quantization (réduisant float32 à int8) et la product quantization pour compresser le stockage de vecteurs de 4 à 8 fois avec généralement moins de 2 % de dégradation du recall, ce que nous validons par des A/B testing sur votre charge de travail de requêtes réelle avant de déployer en production. Nous mettons également en œuvre une approche de retrieval en deux étapes où les vecteurs quantifiés servent au retrieval initial des candidats et les full-precision vectors sont utilisés uniquement pour le re-ranking final des meilleurs résultats. Cette stratégie hybride permet aux clients de stocker des centaines de millions de vecteurs pour une fraction du coût tout en maintenant une qualité de recherche indiscernable d'une opération non compressée.
MicrocosmWorks déploie des bases de données vectorielles dans des configurations multi-répliques avec une réplication synchrone pour la durabilité des écritures et des répliques en lecture réparties sur plusieurs zones de disponibilité pour la tolérance aux pannes et l'équilibrage de charge. Nous configurons un basculement automatique avec une élection du leader pilotée par des vérifications d'état de santé de sorte qu'une défaillance d'un nœud entraîne moins de 10 secondes d'indisponibilité en lecture et aucune perte de données. Nos modèles d'infrastructure-as-code incluent des planifications de sauvegarde préconfigurées, la récupération à un instant précis et des runbooks de reprise après sinistre adaptés à chaque moteur de base de données vectorielle.
MicrocosmWorks conçoit des déploiements de bases de données vectorielles multi-collections où chaque application ou modèle d'embedding obtient sa propre collection isolée avec des configurations d'index appropriées, tout en partageant l'infrastructure de cluster sous-jacente pour l'efficacité des coûts. Nous mettons en œuvre une passerelle de requête unifiée qui achemine les requêtes vers la collection correcte en fonction du contexte de l'application et applique un pré-traitement spécifique à la collection, tel que l'embedding de requête avec le modèle correspondant. Cette approche de base de données vectorielle multi-locataire réduit généralement les coûts d'infrastructure de 40 à 60 % par rapport à l'exécution de clusters distincts par application.