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
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.