Ce chapitre introduit le démarrage rapide de la base de données vectorielle Qdrant et comment opérer la base de données vectorielle basée sur l'API RESTful.

Installation de Qdrant

Remarque : Ce tutoriel est basé sur l'installation de la base de données Qdrant en utilisant Docker. Veuillez installer Docker avant de continuer.

Téléchargez l'image qdrant

docker pull qdrant/qdrant

Démarrez le service de la base de données vectorielle qdrant

docker run -p 6333:6333 \
    -v $(pwd)/qdrant_storage:/qdrant/storage:z \
    qdrant/qdrant

Par défaut, nous cartographions le répertoire de fichiers local sur le conteneur, et toutes les données sont stockées dans le répertoire ./qdrant_storage.

Vous pouvez maintenant accéder à Qdrant via localhost:6333.

La base de données vectorielle Qdrant prend en charge l'API RESTful pour les opérations de base de données, ainsi que les SDK pour des langages de programmation tels que Python, Go, etc. Ce tutoriel se concentre principalement sur l'explication de l'utilisation de l'API RESTful.

Exemple d'accès à l'API

curl -X PUT 'http://localhost:6333/collections/test_collection' \
  -H 'Content-Type: application/json' \
  --data-raw '{
    "vectors": {
      "size": 4,
      "distance": "Dot"
    }
  }'

Interface utilisateur Web de Qdrant

Accédez à l'interface utilisateur Web via l'adresse http://localhost:6333/dashboard

Interface utilisateur Web de Qdrant

Création de Collections

Le concept de collections dans la base de données vectorielle Qdrant peut être comparé à la structure de table de MYSQL, utilisée pour stocker uniformément le même type de données vectorielles. Chaque donnée stockée dans la collection, appelée points dans Qdrant, a une signification similaire aux points dans l'espace géométrique mathématique, représentant la représentation du vecteur dans l'espace géométrique (il suffit de le traiter comme une donnée).

PUT /collections/{collection_name}

{
    "vectors": {
      "size": 300,
      "distance": "Cosine"
    }
}

Explication des paramètres :

Paramètre Description
collection_name Nom de la collection (obligatoire)
vectors Définition des paramètres du vector (obligatoire)
vectors.size Représente la taille du vecteur (ou la dimension du vecteur)
vectors.distance Représente l'algorithme de similarité vectorielle, comprenant principalement trois algorithmes : "Cosinus", "Euclid", "Dot"

Ajout de Vecteurs (Points)

Après la création d'une collection, nous pouvons ajouter des données vectorielles à la collection. Dans Qdrant, les données vectorielles sont représentées à l'aide de points, où chaque donnée de point comprend trois parties : id, payload (données associées) et données vectorielles.

Exemple

PUT /collections/{collection_name}/points

{
    "points": [
        {
            "id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
            "payload": {"color": "red"}, // Données attributaires associées, généralement des attributs commerciaux associés, tels que : ID de commande, ID de produit, titre, etc.
            "vector": [0.9, 0.1, 0.1] // Données vectorielles représentant les caractéristiques des données commerciales actuelles
        }
    ]
}

Recherche Vectorielle

Après l'ajout de données vectorielles, nous pouvons effectuer une recherche de similarité sémantique à l'aide de vecteurs.

Exemple

// collection_name - nom de la collection
POST /collections/{collection_name}/points/search

{
    "vector": [0.2, 0.1, 0.9, 0.7], // paramètre de vecteur
    "limit": 3 // Renvoie les 3 premières données ayant la plus grande similarité
}

Description des paramètres :

  • vector : Paramètre de vecteur utilisé pour rechercher du contenu similaire à ce vecteur. Par exemple : vous pouvez convertir les mots-clés que les utilisateurs doivent rechercher en vecteurs, puis rechercher du contenu lié à la saisie de l'utilisateur.

Filtrage des attributs

Lors de la recherche de données, en plus d'effectuer des recherches de similarité en utilisant des vecteurs, parfois nous voulons également exécuter un filtrage d'attributs similaire à la clause WHERE de SQL pour filtrer certains attributs. Qdrant prend en charge les requêtes de filtrage pour filtrer les attributs associés à la charge utile du point.

Exemple

// collection_name - nom de la collection
POST /collections/{collection_name}/points/search

{
    "filter": { // Cela est principalement utilisé pour filtrer les attributs associés de la charge utile, et le format de syntaxe global est similaire à la syntaxe Elasticsearch. Ce paramètre est facultatif.
        "must": [ // Filtrer les données du point avec color=red
            {
                "key": "color",
                "match": {
                    "value": "red"
                }
            }
        ]
    },
    "vector": [0.2, 0.1, 0.9, 0.7], // Paramètre du vecteur
    "limit": 3
}

Pour des tutoriels plus détaillés, veuillez vous référer aux chapitres suivants.