Accéder au contenu principal

Comment stocker et interroger des intégrations dans MongoDB

Découvrez comment stocker, indexer et interroger des intégrations dans MongoDB à l'aide d'Atlas Vector Search.
Actualisé 19 déc. 2025  · 8 min lire

L'essor des modèles linguistiques à grande échelle (LLM) et de la recherche sémantique a profondément transformé la manière dont nous concevons les systèmes de recherche, de recommandation et de récupération. La recherche traditionnelle par mot-clé, qu'elle soit effectuée via SQL LIKE, Lucene inverted ou des index plein texte, s'avère de plus en plus insuffisante lorsque les utilisateurs attendent une compréhension du langage naturel.

C'est ici que les intégrations et les les bases de données vectorielles entrent en jeu.

MongoDB a connu une évolution rapide dans ce domaine avec Atlas Vector Search, offrant aux développeurs une base de données unique pour les documents, les métadonnées et les vecteurs, le tout sous une seule API. Dans ce guide, nous aborderons les points suivants :

  • Qu'est-ce que MongoDB ?
  • Qu'est-ce que les intégrations de requêtes et pourquoi sont-elles importantes ?
  • Quand utiliser les intégrations.
  • Comment stocker des intégrations dans MongoDB.
  • Comment les générer et les interroger à l'aide de Python.

Ce tutoriel est pratique et prêt à être intégré dans votre génération augmentée par la recherche (RAG), à la recherche par similarité ou à votre pipeline de recommandations.

Qu'est-ce que MongoDB ?

MongoDB est une base de données nosql orientée documents qui stocke les données dans des documentsBSONflexibles .BSON est un format binaire codé JavaScript Object Notation (JSON) — une notation d'objet textuelle largement utilisée pour transmettre et stocker des données dans les applications Web. Contrairement aux bases de données relationnelles rigides, MongoDB simplifie l'évolution des schémas et offre les avantages suivants :

  • Évolutivité horizontale (sharding).
  • Cadre d'agrégation complet.
  • Recherche en texte intégral.
  • Recherche vectorielle.
  • Collections de séries chronologiques.
  • Flexibilité du schéma.

MongoDB Atlas, le service cloud entièrement géré, complète cette offre avec :

  • Recherche Atlas (développée sur Lucene).
  • Recherche vectorielle Atlas (recherche sémantique via l'indexation HNSW).
  • Mise à l'échelle automatique, sauvegardes, sécurité et surveillance.

MongoDB est devenu un choix privilégié pour les charges de travail liées à l'IA, car les vecteurs coexistent souvent avec les métadonnées, et MongoDB Atlas regroupe tous ces éléments dans un seul système.

Que sont les plongées et pourquoi utilisons-nous les plongées de requêtes ?

Lorsque vous travaillez avec la recherche ou la récupération dans des applications d'IA, l'un des premiers concepts que vous rencontrez est celui des l'intégration

Un encodage est essentiellement une représentation numérique, une longue liste de valeurs à virgule flottante, qui capture la signification d'un fragment de texte (ou d'une image, d'un fichier audio, etc.). Au lieu de se concentrer sur les mots exacts, les représentations vectoriales transforment le texte en un espace vectoriel où les idées similaires se retrouvent proches les unes des autres. Prenons par exemple trois déclarations d'utilisateurs différentes :

  • Problème de facturation
  • Erreur de paiement
  • Salaire non versé

Bien que les termes soient différents, les trois décrivent un problème financier. Un modèle d'intégration efficace place ces textes à proximité les uns des autres dans l'espace vectoriel, ce qui vous permet de les récupérer en fonction de leur signification plutôt que de mots-clés.

Cela revêt une importance particulière lorsque l'utilisateur effectue une recherche. Le texte qu'ils saisissent — « Pourquoi mon salaire est-il en retard ? » — est également converti en un élément intégré. Ce nouveau vecteur est appelé « vecteurde requête d' » ( query embedding). Vous comparez ensuite ce vecteur de requête à tous les encodages stockés afin d'identifier les documents sémantiquement similaires. Plus les vecteurs sont proches, plus le résultat est pertinent.

MongoDB Atlas simplifie considérablement l'ensemble de ce processus grâce à Atlas Vector Search. Après avoir stocké vos documents et leurs intégrations dans une collection MongoDB, Atlas crée unindex vectoriel d' , qui utilise HNSW en arrière-plan et permet de récupérer rapidement des documents similaires à grande échelle. Par exemple, si vous stockez des articles d'assistance avec leurs intégrations, une requête telle que...

query = "Why isn't my salary showing up this month?"
query_vec = get_embedding(query) # Explained in below examples

…peut être utilisé directement dans MongoDB :

results = collection.aggregate([
    {
        "$vectorSearch": {
            "path": "embedding",
            "queryVector": query_vec,
            "index": "vector_index",
            "limit": 3
        }
    }
])

MongoDB renverra automatiquement les trois articles d'assistance dont les intégrations sont les plus proches de la requête, sans que vous ayez à effectuer de correspondance de mots-clés ou de notation manuelle.

C'est là toute la puissance des intégrations dans MongoDB Atlas : vous stockez du sens, pas seulement du texte, et vous effectuez des requêtes en fonction de l'intention, pas seulement des mots. Cette évolution explique pourquoi les intégrations sont devenues un élément central de la recherche sémantique, des systèmes RAG, des assistants IA et des bases de connaissances intelligentes.

Quand utiliser les intégrations de requêtes

Utilisez les représentations lorsque vous souhaitez similitude sémantique, par exemple :

Génération augmentée par la récupération (RAG)

  • Veuillez fournir à votre LLM un contexte précis à partir de votre base de connaissances.
  • Remplacer la recherche par mot-clé fragile

Les chatbots qui nécessitent une compréhension approfondie

  • Service d'assistance du portail
  • Service clientèle

Recommandation de produit

  • « articles similaires à cet article »

Détection de documents ou de doublons

  • Regroupement
  • Regroupement par thème

Lorsque la recherche par mot-clé échoue

  • Questions telles que « retard dans le versement du salaire » ou « problème de traitement des paiements »

Veuillez n' n'utilisez pas d'imbrications lorsque :

  • Vous avez besoin d'une correspondance exacte (identifiants, numéros de facture).
  • Votre ensemble de données est restreint (une recherche simple fonctionne).
  • Vous avez besoin d'un filtrage/de comparaisons numériques (les métadonnées devraient permettre cela).

Comment stocker des intégrations dans MongoDB

La particularité de MongoDB réside dans le fait que les intégrations s'intègrent naturellement dans les documents. Il suffit de les stocker sous forme de tableaux de nombres flottants.

Exemple de schéma de document

Voici une structure de document type :

{
  "_id": "uuid-123",
  "text": "This is a sample document about MongoDB vector search.",
  "embedding": [0.123, -0.241, 0.998, ...],
  "tags": ["mongodb", "vector", "ai"],
  "createdAt": "2025-01-01T10:20:00Z"
}

Éléments importants à retenir :

  • Chaque intégration dans une collection doit avoir la même dimensionnalité.
  • Les intégrations devraient idéalement être stockées sous forme de float32 (MongoDB les convertira en interne en float64).
  • Si vos documents sont volumineux, divisez-les avant de les intégrer.
  • Veuillez stocker les métadonnées séparément : balises, catégorie, URL, horodatages, etc. Cela rend la recherche hybride particulièrement efficace.

Création d'un index vectoriel dans MongoDB (étape essentielle)

Avant de stocker ou d'interroger des intégrations, il est nécessaire de créer un index de recherche vectorielle dans MongoDB Atlas.

Dans MongoDB Atlas, veuillez vous rendre à l'adresse suivante : Atlas → Base de données → Collections → Recherche → Créer un index de recherche

Veuillez utiliser une définition telle que :

{
  "fields": [
    {
      "type": "vector",
      "path": "embedding",
      "numDimensions": 1536,
      "similarity": "cosine"
    }
  ]
}

Cela indique à MongoDB :

  • Le domaine contenant des vecteurs contient des vecteurs.
  • Chaque vecteur possède 1536 dimensions.
  • Veuillez utiliser la similarité cosinus pour le classement.

Cet index alimente toutes les requêtes de recherche vectorielle.

MongoDB intègre des fonctionnalités natives de recherche vectorielle prenant en charge :

  • Similitude cosinus.
  • Distance euclidienne.
  • Notation par produit scalaire.

Choisissez en fonction de votre modèle d'intégration, mais comment déterminer le choix approprié ? Approfondissons la question.

Similitude cosinus

Ce qu'il mesure

Il mesure le degré d'alignement entre deux vecteurs, c'est-à-dire l'angle qui les sépare. Il ne tient pas compte de l'amplitude et se concentre uniquement sur la direction.

Intuition

  • Si deux vecteurs pointent dans la même direction → similitude proche de 1
  • Directions opposées → –1
  • Orthogonal (sans rapport) → 0

Quand utiliser

Utilisez le cosinus lorsque l'amplitude n'a pas d'importance, seule la motif ou concept exprimé.

Utilisations courantes

  • Intégration de texte/Traitement du langage naturel
  • Recherche sémantique
  • Systèmes de recommandation basés sur le sens, et non sur l'échelle

Cosine est le paramètre par défaut le plus sûr pour la plupart des modèles d'intégration.

Distance euclidienne

Ce qu'il mesure

Il mesure la distance en ligne droite entre deux vecteurs dans l'espace.

Intuition

  • Petite distance → les vecteurs sont similaires
  • Grande distance → les vecteurs sont éloignés les uns des autres

Quand utiliser

Utilisez Euclide lorsque les valeurs absolues et les grandeurs sont importantes, et pas seulement la direction.

Utilisations courantes

  • Intégration d'images
  • Mesures physiques/données des capteurs
  • Algorithmes de regroupement tels que K-means (qui utilise Euclide en interne)

Si vos données sont naturellement organisées selon une espace géométrique (par exemple, les intensités de pixels), l'espace euclidien est souvent plus pertinent.

Produit scalaire

Ce qu'il mesure

Il mesure une combinaison de similitude et de magnitude. 

Mathématiquement : dot(u, v) = |u| × |v| × cos(θ)

Intuition

  • Magnitude plus importante ET alignement → score plus élevé
  • Sensible à la longueur du vecteur
  • Non normalisé automatiquement

Quand utiliser

Utilisez le produit scalaire lorsque vous souhaitez que les vecteurs plus longs aient plus d'influence ou lorsque le modèle d'intégration est formé en tenant compte du produit scalaire.

Utilisations courantes

  • Les intégrations de grands modèles linguistiques qui supposent produit scalaire .
  • Couches de similarité des réseaux neuronaux
  • Modèles de recommandation où la « force » des caractéristiques est significative

Règle empirique rapide

Système métrique

Idéal pour

Veuillez éviter lorsque

Cosine

Texte, recherche sémantique, intégrations générales

L'importance de l'ampleur

euclidien

Images, caractéristiques géométriques, regroupement

Les données sont à l'échelle arbitraire

Produit scalaire

Modèles entraînés avec produit scalaire, recsys

Les grandeurs déforment la similitude

Générer, stocker et interroger des intégrations dans MongoDB (tutoriel Python)

Examinons cela comme si nous construisions un système réel.

Veuillez installer les dépendances.

pip install pymongo openai

Générer des intégrations

Utilisation d'OpenAI (remplacez par le fournisseur d'intégration de votre choix) :

import os
from openai import OpenAI

os.environ["OPENAI_API_KEY"] = "your_api_key_here"
client = OpenAI()

def get_embedding(text: str):
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding

Connectez-vous à MongoDB et insérez des documents.

Utilisation d'OpenAI (remplacez par le fournisseur d'intégration de votre choix) :

from pymongo import MongoClient
import uuid

mongo = MongoClient("<MONGODB_ATLAS_URI>")
db = mongo["vector_db"]
collection = db["documents"]

text = "This is a sample document about MongoDB vector search."
embedding = get_embedding(text)

document = {
    "_id": str(uuid.uuid4()),
    "text": text,
    "embedding": embedding,
    "tags": ["mongodb", "search"],
}

collection.insert_one(document)
print("Document inserted successfully!")

À ce stade, vos données sont prêtes pour la recherche sémantique.

Interrogation des intégrations dans MongoDB

Maintenant, voici la partie intéressante : récupérer des documents similaires à l'aide d'une requête vectorielle. MongoDB utilise $vectorSearch dans un pipeline d'agrégation.

Générer un vecteur de requête

from pymongo import MongoClient
query = "How does MongoDB handle semantic search?"
query_vec = get_embedding(query)

Effectuer une recherche vectorielle (intégrations de requêtes)

results = collection.aggregate([
    {
        "$vectorSearch": {
            "index": "vector_index",
            "path": "embedding",
            "queryVector": query_vec,
            "numCandidates": 100,
            "limit": 5,
            "similarity": "cosine"
        }
    },
    {
        "$project": {
            "text": 1,
            "score": {"$meta": "vectorSearchScore"}
        }
    }
])

for r in results:
    print(r)

Cela renvoie les cinq documents les plus proches sur le plan sémantique.

Ceci est particulièrement efficace pour les pipelines RAG où une recherche sémantique est souhaitée.

Explication étape par étape de la requête ci-dessus

$vectorSearch → Recherche les documents dont l' champ d'intégration est le plus proche de queryVector en utilisant la métrique de similarité spécifiée.

numCandidates → Nombre de correspondances potentielles que le moteur doit prendre en compte avant de sélectionner les meilleurs résultats

limite → Nombre de résultats similaires finaux à renvoyer

$project → Renvoie le texte original ainsi qu'un champ spécial appelé score

Qu'est-ce qu'un champ de score ?

La recherche vectorielle MongoDB Atlas renvoie un champ de métadonnées spécifique, « score » : {« $meta » : « vectorSearchScore »}, qui vous indique le degré de similitude un vecteur stocké est à votre vecteur de requête.

La signification du score dépend de la mesure de similarité que vous choisissez, comme expliqué ci-dessous :

Mesure de similarité

Que signifie le score ?

Un score plus élevé = plus de similitudes ?

Plage de scores

cosinus

Similitude angulaire entre vecteurs

Oui

De -1 à +1

euclidien

Distance L2 négative

Non — plus proche de 0 = plus similaire

–∞ à 0

dotProduct

Alignement de la magnitude vectorielle

Oui

–∞ à +∞

Meilleures pratiques

  • Documents volumineux (300 à 500 tokens chacun) : Meilleure pertinence + évite l'intégration de longs blobs
  • Veuillez stocker les métadonnées séparément : Facilite le filtrage et le classement
  • Génération d'intégration par lots : Améliore le débit et réduit le coût du modèle
  • Veuillez utiliser des intégrations float32 dans votre modèle : MongoDB utilise en interne le type float64, mais accepte les tableaux float32.
  • Indexer uniquement le champ vectoriel : Les champs supplémentaires dans l'index augmentent la mémoire et la latence.

Erreurs courantes à éviter

Problème

Pourquoi cela se produit-il ?

Incompatibilité de dimensions

Dimension du vecteur de requête ≠ dimension de l'index

Résultats non pertinents

Utilisation de différents modèles pour le stockage et la requête

Recherche lente

Nombre excessif de candidats ou exigences relatives aux grands clusters

Document trop volumineux

Limite de 16 Mo par document

Mesure de similarité incorrecte

Modèle formé pour le cosinus mais utilisant le produit scalaire

Conclusions finales

Les intégrations et la recherche sémantique sont désormais des éléments fondamentaux des produits d'IA modernes. Que vous développiez un chatbot, un pipeline RAG, un moteur de recommandation ou une couche de recherche intelligente, vous avez besoin d'un moyen fiable pour stocker des vecteurs et les interroger efficacement.

MongoDB vous offre une plateforme unifiée où :

  • Votre texte est vivant.
  • Vos métadonnées sont conservées.
  • Vos intégrations sont actives.
  • Votre recherche vectorielle est en cours d'exécution.
  • Tout évolue de manière coordonnée.

Cela évite la complexité liée à la gestion simultanée de plusieurs bases de données distinctes et vous permet de vous concentrer sur le développement des fonctionnalités du produit plutôt que sur l'infrastructure.

Questions fréquentes

Ai-je besoin d'une base de données vectorielle distincte si j'utilise MongoDB pour les intégrations ?

Non. MongoDB Atlas Vector Search est intégré, ce qui vous permet de stocker des documents, des métadonnées et des vecteurs au même endroit sans avoir recours à une base de données vectorielle distincte telle que Pinecone ou Milvus.

Quelle dimensionnalité d'intégration devrais-je utiliser dans MongoDB ?

Veuillez utiliser la dimensionnalité fournie par votre modèle d'intégration (par exemple, 768 ou 1536). Tous les documents d'une collection doivent utiliser la même dimension que l'index vectoriel.

MongoDB est-il capable d'effectuer des recherches hybrides (métadonnées + recherche vectorielle) ?

Vous pouvez filtrer avec $match, puis appliquer $vectorSearch dans le même pipeline d'agrégation, ce qui est idéal pour les systèmes RAG et de recommandation.

MongoDB est-il adapté aux charges de travail de recherche vectorielle à grande échelle ?

Oui. MongoDB utilise l'indexation basée sur HNSW dans Atlas Search, qui s'adapte parfaitement à des millions de documents. Le débit dépend de la taille de l'index, du niveau de cluster et des modèles de charge de travail.

Puis-je utiliser n'importe quel modèle d'intégration avec MongoDB ?

Tout à fait. MongoDB est indépendant du modèle. Vous pouvez utiliser OpenAI, HuggingFace, Cohere, des modèles locaux ou des intégrations personnalisées, à condition que les dimensions correspondent à l'index.


Nilesh Soni's photo
Author
Nilesh Soni

Ingénieur logiciel senior chez Uber

Sujets

Meilleurs cours DataCamp

Cours

Introduction to MongoDB in Python

3 h
22.7K
Learn to manipulate and analyze flexibly structured data with MongoDB.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow