Intermédiaire 10 minStack

Qdrant : la base vectorielle d'un RAG local

Qdrant est une base de données vectorielle écrite en Rust, publiée sous licence Apache 2.0, qu'on installe en une commande et qui tient sans broncher des corpus que les bibliothèques en mémoire ne supportent plus. Dans une chaîne de recherche documentaire locale, c'est la pièce qui stocke les vecteurs de vos documents et qui retrouve, pour chaque question, les passages les plus proches. Voici ce qu'elle fait bien, et quand une solution plus simple suffit.

Par Mohamed Meguedmi·Màj 2026-09-20·Testé sur Windows, macOS, Linux

#À quoi sert une base vectorielle

Un modèle d'embedding convertit un texte en une liste de nombres — un vecteur — telle que deux textes de sens proche donnent deux vecteurs proches. Retrouver les passages pertinents pour une question revient alors à chercher les vecteurs les plus proches de celui de la question. Sur mille passages, un simple calcul sur l'ensemble suffit. Sur un million, il faut une structure d'index, et c'est le métier d'une base vectorielle.

Cette étape conditionne tout le reste : un modèle excellent qui reçoit les mauvais passages répond mal, et aucune consigne de prompt ne rattrape une récupération défaillante.

#Ce que Qdrant apporte

Le kit RAG Local

Tes documents, ton IA : un RAG local fiable sur tes PDF, notes et mails — sans rien envoyer dans le cloud.

  • Espace en ligne à vie
  • PDF + fichiers
  • Remboursé 30 j
Un serveur autonome
Un conteneur, une API HTTP et gRPC, des clients dans les langages courants. Il vit indépendamment de votre application, qui peut redémarrer sans perdre l'index.
Le filtrage par payload
Chaque vecteur porte des métadonnées — auteur, date, service, type de document — sur lesquelles on filtre pendant la recherche, pas après. C'est la différence entre une recherche utilisable en entreprise et une démonstration.
La quantification des vecteurs
Compresser les vecteurs pour diviser l'empreinte mémoire par un facteur important, au prix d'une perte de précision contrôlée.
La recherche hybride
Combiner la similarité sémantique et la correspondance de mots exacts, ce qui rattrape les références, numéros de pièce et noms propres que le sémantique seul manque.
Instantanés et reprise
Sauvegarder une collection et la restaurer ailleurs, ce qui compte le jour où réindexer coûterait des heures de GPU.

#Démarrer en local

Le chemin le plus court est le conteneur officiel, avec un volume pour que les données survivent au redémarrage. Une interface web intégrée permet ensuite d'inspecter les collections sans écrire une ligne de code — c'est le meilleur outil de diagnostic quand une réponse est mauvaise : on regarde ce qui a réellement été retrouvé.

Lancer Qdrant avec persistance
docker run -p 6333:6333 -p 6334:6334 \
  -v "$(pwd)/qdrant_storage:/qdrant/storage" \
  qdrant/qdrant

Le client Python sait aussi fonctionner sans serveur du tout, en écrivant dans un dossier local ou en mémoire. C'est précieux pour un prototype ou des tests automatisés : le même code passe ensuite au serveur en changeant une ligne de connexion.

i
La dimension du vecteur n'est pas un détail
Une collection est créée pour une taille de vecteur et une mesure de distance données, qui dépendent du modèle d'embedding choisi. Changer de modèle d'embedding impose de recréer la collection et de tout réindexer : ce choix se fait au début, pas en cours de route.

#Le filtrage par métadonnées, la fonction qu'on regrette d'avoir négligée

En situation réelle, une question n'est presque jamais posée sur la totalité du corpus. On cherche dans les documents d'un service, postérieurs à une date, d'un type donné, ou accessibles à l'utilisateur qui pose la question. Qdrant applique ces conditions pendant la recherche vectorielle, ce qui donne toujours le bon nombre de résultats pertinents — là où un filtrage effectué après coup peut ne rien laisser.

Le contrôle d'accès mérite une mention à part : si plusieurs personnes interrogent le même index, le filtre sur les droits est ce qui empêche un modèle de citer à quelqu'un un document qu'il n'a pas le droit de lire. Aucune consigne de prompt ne remplace ce filtre.

#Tenir en mémoire : la quantification des vecteurs

Ordre de grandeur pour 1 million de passages, vecteurs de 1 024 dimensions
Stockage des vecteursEmpreinte approximativeEffet sur la qualité
Flottants 32 bits, bruts≈ 4 GoRéférence
Quantification scalaire 8 bits≈ 1 GoPerte le plus souvent négligeable
Quantification binaire≈ 128 MoPerte réelle, à rattraper par une vérification des meilleurs candidats

La pratique courante consiste à chercher sur les vecteurs compressés, puis à réordonner les quelques dizaines de meilleurs candidats avec les vecteurs d'origine. On garde l'essentiel de la précision en divisant la mémoire par quatre ou plus — ce qui, sur une machine qui héberge aussi un modèle, n'est pas un luxe.

#Qdrant ou une autre

Choisir selon la situation, pas selon la mode
SituationCe qui convient
Prototype, quelques milliers de passages, un seul scriptUne bibliothèque en mémoire ou un fichier local suffit
Vous avez déjà PostgreSQL et peu de vecteursUne extension vectorielle dans votre base existante
Service partagé, filtrage fin, corpus qui granditQdrant
Application embarquée, sans serveur à administrerUne base vectorielle embarquée

#FAQ

Qdrant est-il gratuit ?+
Oui, le moteur est open source sous licence Apache 2.0 et s'auto-héberge sans coût de licence. Une offre infonuagique payante existe en parallèle ; elle n'est pas nécessaire pour un usage local.
Faut-il un GPU pour Qdrant ?+
Non. La recherche vectorielle est une charge de processeur et de mémoire. Le GPU sert à calculer les embeddings et à faire tourner le modèle, deux étapes distinctes de la base.
Qdrant ou Chroma ?+
Chroma va plus vite à mettre en place pour un prototype en Python. Qdrant tient mieux la charge, filtre plus finement sur les métadonnées et s'administre comme un vrai service. Le point de bascule arrive généralement avec le multi-utilisateur ou quelques centaines de milliers de passages.
Combien de mémoire vive faut-il ?+
Cela dépend du nombre de vecteurs et de leur dimension. Un million de vecteurs de 1 024 dimensions occupe environ 4 Go bruts, et quatre fois moins avec une quantification 8 bits. Ajoutez la place de l'index et des métadonnées.
Peut-on l'utiliser sans serveur ?+
Oui, le client Python peut travailler en mémoire ou sur un dossier local, ce qui convient aux prototypes et aux tests. Le passage au serveur ne change ensuite que la connexion.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.