Questo capitolo introduce l'avvio rapido del database vettoriale Qdrant e come operare il database vettoriale tramite API RESTful.

Installazione di Qdrant

Nota: Questo tutorial si basa sull'installazione del database Qdrant utilizzando Docker. Si prega di installare Docker prima di procedere.

Scaricare l'immagine Qdrant

docker pull qdrant/qdrant

Avviare il servizio del database vettoriale Qdrant

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

Per impostazione predefinita, mappiamo la directory del file locale al container e tutti i dati sono archiviati nella directory ./qdrant_storage.

È ora possibile accedere a Qdrant tramite localhost:6333.

Il database vettoriale Qdrant supporta API RESTful per le operazioni del database, nonché SDK per linguaggi di programmazione come Python, Go, ecc. Questo tutorial si concentra principalmente sull'illustrazione dell'uso dell'API RESTful.

Esempio di accesso all'API

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

Interfaccia utente Web di Qdrant

Accedi all'interfaccia utente web tramite l'indirizzo http://localhost:6333/dashboard

Interfaccia utente web di Qdrant

Creazione di Collezioni

Il concetto di collezioni nel database vettoriale Qdrant può essere paragonato alla struttura della tabella di MYSQL, utilizzata per memorizzare in modo uniforme lo stesso tipo di dati vettoriali. Ogni dato memorizzato nella collezione, denominato punti in Qdrant, ha un significato simile ai punti nello spazio geometrico matematico, rappresentando la rappresentazione del vettore nello spazio geometrico (trattalo semplicemente come un pezzo di dati).

PUT /collections/{collection_name}

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

Spiegazione dei parametri:

Parametro Descrizione
collection_name Nome della collezione (obbligatorio)
vectors Definizione dei parametri del vettore (obbligatorio)
vectors.size Rappresenta la dimensione del vettore (o la dimensione del vettore)
vectors.distance Rappresenta l'algoritmo di similarità del vettore, includendo principalmente tre algoritmi: "Cosine," "Euclid," "Dot"

Aggiunta di Vettori (Punti)

Dopo aver creato una collezione, è possibile aggiungere dati vettoriali alla collezione. In Qdrant, i dati vettoriali sono rappresentati utilizzando punti, dove ciascun dato punto include tre parti: id, payload (dati associati) e dati vettoriali.

Esempio

PUT /collections/{collection_name}/points

{
    "points": [
        {
            "id": "5c56c793-69f3-4fbf-87e6-c4bf54c28c26", // id
            "payload": {"color": "red"}, // Dati attributo associati, di solito attributi di business correlati, come: ID ordine, ID prodotto, titolo, ecc.
            "vector": [0.9, 0.1, 0.1] // Dati vettoriali che rappresentano le caratteristiche dei dati di business attuali
        }
    ]
}

Ricerca Vettoriale

Dopo aver aggiunto dati vettoriali, è possibile eseguire una ricerca di similarità semantica utilizzando i vettori.

Esempio

// collection_name - nome della collezione
POST /collections/{collection_name}/points/search

{
    "vector": [0.2, 0.1, 0.9, 0.7], // parametro vettore
    "limit": 3 // Restituire i primi 3 dati con la massima similarità
}

Descrizione dei parametri:

  • vettore: Parametro del vettore utilizzato per cercare contenuti simili a questo vettore. Ad esempio: Puoi convertire le parole chiave che gli utenti devono cercare in vettori e quindi cercare i contenuti correlati all'input dell'utente.

Filtraggio degli attributi

Quando si ricerca dei dati, oltre a eseguire ricerche di similarità utilizzando vettori, a volte è necessario eseguire un filtraggio degli attributi simile alla clausola WHERE di SQL per filtrare alcuni attributi. Qdrant supporta le query di filtraggio per filtrare gli attributi associati ai payload dei punti.

Esempio

// collection_name - nome della collezione
POST /collections/{collection_name}/points/search

{
    "filter": { // Questo è principalmente utilizzato per filtrare gli attributi associati al payload, e il formato sintattico complessivo è simile alla sintassi di Elasticsearch. Questo parametro è opzionale.
        "must": [ // Filtra i dati del punto con il colore=rosso
            {
                "key": "color",
                "match": {
                    "value": "red"
                }
            }
        ]
    },
    "vector": [0.2, 0.1, 0.9, 0.7], // Parametro vettore
    "limit": 3
}

Per tutorial più dettagliati, consultare i capitoli seguenti.