Bien démarrer avec Qdrant !

Search for a command to run...

No comments yet. Be the first to comment.
L’année 2025 marque un tournant décisif dans l’histoire économique française, celui de l’industrialisation massive de l’intelligence artificielle au sein du tissu productif. Après une période d’expérimentation intense marquée par l’éclosion des modèl...

Les MCP : vers une nouvelle génération d'assistants plus puissants et fiables ? 1. Fonctionnement technique détaillé du MCP Le Model Context Protocol (MCP) est un protocole ouvert standardisé, proposé par Anthropic fin 2024, qui vise à connecter de f...

Voici un exposé simplifié et pédagogique sur les Agents IA dans n8n, leurs différents types, et dans quels cas les utiliser. L’objectif est de comprendre les principes généraux et d’avoir des pistes concrètes d’utilisation. Qu’est-ce qu’un Agent IA ...

Le récent phénomène des "lanternes rouges" fait référence à une forme de protestation initiée par des commerçants en France, particulièrement visible à Aix-en-Provence. Ces entrepreneurs allument des lanternes rouges devant leurs établissements pour ...

Traditionnellement, les bases de données relationnelles (SQL) ou NoSQL gèrent des données structurées ou semi-structurées. Cependant, avec l’avènement des modèles de langage (LLM) et de l’IA, nous avons besoin de stocker et de rechercher des données sous forme de vecteurs (embeddings). Les bases de données vectorielles (ou vector stores) sont conçues pour :
Enregistrer des vecteurs de grande dimension (ex. 768, 1536, 2048 dimensions…).
Offrir une recherche de similarité efficace (e.g. similarité cosinus, distance Euclidienne, etc.).
Permettre une mise à l’échelle pour gérer des millions (voire des milliards) de vecteurs.
Qdrant est l’une de ces bases de données vectorielles, libre et open source, qui se distingue par sa simplicité d’utilisation et ses performances.
Qdrant est un moteur de recherche vectorielle et de recommandation. Ses points forts :
Open Source (Licence Apache 2.0).
Performant pour des recherches de similarité (ANN: Approximate Nearest Neighbor).
API REST et client officiel (en Python, Go, JavaScript, etc.) simples à utiliser.
Scalabilité : Qdrant propose une version Cloud managée, ou vous pouvez héberger vous-même (docker, etc.).
Terminologie :
Collection : c’est l’équivalent d’une “table” dans Qdrant. Chaque collection stocke des points (ou documents vectorisés) ayant la même dimension pour les vecteurs.
Points (ou documents) : chaque point possède :
Un id unique,
Un vecteur (la représentation numérique de votre texte / image / etc.),
Un payload (métadonnées libres au format JSON).
Distance : la métrique de comparaison entre vecteurs (COSINE, Euclidean, Dot, etc.).
Il existe plusieurs manières d’utiliser Qdrant :
Localement : via Docker ou un binaire à installer.
Qdrant Cloud : solution managée (vous créez un compte, vous obtenez une URL et une clé API).
bashCopierModifierdocker run -p 6333:6333 \
-v $(pwd)/qdrant_storage:/qdrant/storage \
qdrant/qdrant
Le serveur Qdrant écoute alors par défaut sur le port 6333.
Les données sont persistées dans le dossier qdrant_storage.
Vous pouvez maintenant appeler l’API REST sur http://localhost:6333.
Pour vérifier que ça fonctionne, lancez un :
bashCopierModifiercurl http://localhost:6333/collections
Vous devriez recevoir quelque chose comme :
jsonCopierModifier{
"status": "ok",
"result": {
"collections": []
}
}
Cela signifie que vous n’avez aucune collection pour le moment, ce qui est normal.
Pour travailler avec Qdrant, il y a deux moyens courants :
API REST (via requêtes HTTP).
Clients officiels (Python, Go, Node.js, etc.).
Dans ce cours d’initiation, on va surtout montrer la version Python (car c’est souvent le langage privilégié dans les projets IA), mais le principe est le même avec l’API REST ou un autre client.
bashCopierModifierpip install qdrant-client
pythonCopierModifierfrom qdrant_client import QdrantClient
# Si Qdrant tourne en local :
qdrant_client = QdrantClient(url="http://localhost:6333")
# Si vous avez un compte Qdrant Cloud :
# qdrant_client = QdrantClient(url="https://<CLUSTER_ID>.cloud.qdrant.io", api_key="VOTRE_CLE_API")
Imaginons que nous travaillons avec des embeddings de dimension 1536 (comme ceux produits par le modèle OpenAI text-embedding-ada-002). On crée une collection nommée "my_collection" :
pythonCopierModifierfrom qdrant_client.models import VectorParams, Distance
qdrant_client.recreate_collection(
collection_name="my_collection",
vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)
size=1536 : la dimension du vecteur.
distance=Distance.COSINE : la métrique de similarité (distance cosinus).
Remarque : recreate_collection supprime la collection si elle existe déjà et la recrée. Vous pouvez utiliser create_collection si vous ne voulez pas la recréer à chaque fois.
Pour alimenter Qdrant, on stocke des “points”, c’est-à-dire :
id : un identifiant unique (entier ou chaîne de caractères).
vector : la liste (un tableau) de dimensions = 1536 (dans notre exemple).
payload : un dictionnaire JSON contenant des métadonnées arbitraires.
Imaginons que vous avez déjà généré un embedding pour une phrase :
Embedding (1536 floats)
Métadonnées : { "text": "Ceci est un texte", "source": "wiki" }
On peut faire un upsert :
pythonCopierModifierpoints = [
{
"id": 1,
"vector": [0.1, 0.2, 0.3, ..., 0.0005], # 1536 valeurs
"payload": {
"text": "Ceci est un texte",
"source": "wiki"
}
},
{
"id": 2,
"vector": [0.07, 0.22, 0.31, ..., 0.0012], # 1536 valeurs
"payload": {
"text": "Un autre exemple de phrase",
"source": "blog"
}
}
]
qdrant_client.upsert(
collection_name="my_collection",
points=points
)
Le paramètre upsert signifie : “insérer ou mettre à jour”. Si l’id existe déjà, il sera mis à jour.
La fonctionnalité clé de Qdrant est la recherche de similarité. On lui fournit un vecteur de requête, et il renvoie les points (documents) les plus proches selon la métrique définie.
Principe :
Vous générez l’embedding de votre requête (ou d’un nouveau texte).
Vous appelez la fonction search en passant le vecteur.
Qdrant renvoie un classement (score) des points les plus similaires.
pythonCopierModifierquery_vector = [0.12, 0.29, 0.05, ..., 0.00009] # 1536 valeurs
search_results = qdrant_client.search(
collection_name="my_collection",
query_vector=query_vector,
limit=3 # récupérer les 3 plus proches
)
for result in search_results:
print("ID:", result.id)
print("Score:", result.score)
print("Payload:", result.payload)
print("------")
result.score représente la distance ou la similarité (selon la métrique choisie).
result.payload contient vos métadonnées (text, source, etc.).
Vous pouvez filtrer les points selon leurs métadonnées. Par exemple, récupérer uniquement les points dont source = "wiki" :
pythonCopierModifierfrom qdrant_client.models import Filter, FieldCondition, MatchValue
search_results = qdrant_client.search(
collection_name="my_collection",
query_vector=query_vector,
limit=3,
query_filter=Filter(
must=[
FieldCondition(
key="source",
match=MatchValue(value="wiki")
)
]
)
)
Mise à jour : On utilise à nouveau upsert pour réécrire un point avec le même id.
Suppression :
pythonCopierModifierqdrant_client.delete(
collection_name="my_collection",
points_selector=[1, 2] # liste des ids à supprimer
)
Pour importer des milliers (ou millions) de points, il est préférable de faire du batch (par paquets) au lieu de one-by-one. Qdrant gère aussi l’import via CSV ou un dump complet, mais dans de nombreux scénarios, on utilise un script Python en batch.
Si vous ne voulez pas gérer l’infrastructure vous-même, vous pouvez vous inscrire sur Qdrant Cloud. Vous obtiendrez :
Une URL de type https://<cluster_id>.cloud.qdrant.io
Une clé API associée
Cela permet d’utiliser la même API et le même client Python, avec du SSL/TLS et une gestion scalable.
En local, Qdrant ne nécessite pas d’authentification (par défaut).
En production, vous devriez le protéger derrière un proxy ou un pare-feu, ou activer l’authentification.
Dans Qdrant Cloud, il faut un api_key pour chaque requête.
Embeddings : vous générez les embeddings de textes, d’articles, de documents, en utilisant par exemple OpenAI, Hugging Face, etc.
Stockage : vous insérez ces embeddings dans Qdrant (chaque embedding dans une collection, payload = contenu original ou métadonnées).
Recherche de similarité : quand un utilisateur pose une question, vous générez l’embedding de la question, vous interrogez Qdrant pour obtenir les chunks les plus similaires, puis vous donnez ces informations à un modèle de langage (LLM) pour formuler une réponse enrichie.
C’est la base des “chatbots connectés à une base documentaire” ou de la “recherche sémantique” dans des documents.
Qdrant est une solution pratique et performante pour :
Gérer des données sous forme de vecteurs.
Effectuer des recherches de similarité (ANN) rapides.
Gérer l’évolutivité grâce à son mode Cloud ou en local (conteneur Docker).
Le flux de travail type :
Préparer vos données (textes, images, etc.) et générer les embeddings.
Créer une collection dans Qdrant (choisir la bonne dimension et la métrique).
Upsert (insérer) vos vecteurs avec un ID et des métadonnées (payload).
Rechercher par similarité à l’aide de search.
(Optionnel) Gérer des filtres, la mise à jour et la suppression de points.
Site officiel : qdrant.tech
Documentation : Qdrant Documentation
Exemples en Python : Qdrant GitHub
Blog / Tutoriels : Qdrant Blog
Qdrant + LangChain : des intégrations existent pour gérer le stockage vectoriel et la recherche dans LangChain (VectorStore).
Vous avez maintenant les bases pour commencer à utiliser Qdrant. Bon apprentissage !