Filtro dei metadati
Nota
Amazon S3 Vectors è disponibile in versione di anteprima per Amazon Simple Storage Service ed è soggetto a modifiche.
Il filtro dei metadati consente di filtrare i risultati delle query in base ad attributi specifici associati ai vettori. È possibile utilizzare i filtri dei metadati con le operazioni di query per trovare vettori che soddisfino sia i criteri di somiglianza sia le condizioni specifiche dei metadati.
S3 Vectors supporta due tipi di metadati: filtrabili e non filtrabili. La differenza fondamentale è che i metadati filtrabili possono essere utilizzati nei filtri di query ma hanno limiti di dimensione più rigorosi, mentre i metadati non filtrabili non possono essere utilizzati nei filtri ma possono archiviare grandi quantità di dati entro i limiti di dimensione. Per ulteriori informazioni sui limiti dei metadati, inclusi i limiti di dimensione per vettore e il numero massimo di chiavi di metadati per vettore, consulta Limitazioni e restrizioni.
S3 Vectors esegue la ricerca vettoriale e la valutazione dei filtri contemporaneamente. S3 Vectors cerca i vettori candidati nell’indice per trovare i primi K vettori simili e contemporaneamente verifica se ogni vettore candidato soddisfa le condizioni di filtro dei metadati. Ad esempio, se cerchi embedding di film simili e filtri per genre='mystery', S3 Vectors restituisce solo embedding di film simili in cui i metadati di genere corrispondono a 'mystery'. A differenza dell’utilizzo del filtro dei metadati dopo la ricerca vettoriale, questo approccio di filtro ha maggiori probabilità di trovare risultati corrispondenti. Nota: le query con filtri possono restituire un numero inferiore ai primi K risultati quando l’indice vettoriale contiene pochissimi risultati corrispondenti.
Metadati filtrabili
I metadati filtrabili consentono di filtrare i risultati delle query in base a valori di metadati specifici. Per impostazione predefinita, tutti i campi di metadati sono filtrabili in una query di somiglianza, a meno che non siano stati esplicitamente specificati come non filtrabili durante la creazione dell’indice vettoriale. S3 Vectors supporta i metadati di tipo stringa, numerico, booleano ed elenco con un limite di dimensione per vettore. Il tipo di metadati è ideale per definire gli attributi in base ai quali si desidera filtrare, come categorie, timestamp o valori di stato.
Se la dimensione dei metadati supera i limiti supportati, l’operazione API PutVectors restituirà un errore 400 Bad Request. Per ulteriori informazioni sul limite di dimensione dei metadati filtrabili per vettore, consulta Limitazioni e restrizioni.
Con i metadati filtrabili si possono utilizzare le operazioni indicate di seguito.
| Operatore | Tipi di input validi | Descrizione |
|---|---|---|
$eq |
Stringa, numero, booleano | Confronto delle corrispondenze esatte per singoli valori. Quando si confronta con un valore di metadati di un’array, restituisce true se il valore di input corrisponde a un elemento dell’array. Ad esempio, |
$ne |
Stringa, numero, booleano | Confronto non uguale |
$gt |
Numero | Confronto maggiore di |
$gte |
Numero | Confronto maggiore di o uguale a |
$lt |
Numero | Confronto minore di |
$lte |
Numero | Confronto minore di o uguale a |
$in |
Array di primitivi non vuota | Corrispondenza con un valore dell’array |
$nin |
Array di primitivi non vuota | Corrispondenza con nessun valore dell’array |
$exists |
Booleano | Controllo dell’esistenza del campo |
$and |
Array di filtri non vuota | AND logico di più condizioni |
$or |
Array di filtri non vuota | OR logico di più condizioni |
Esempi di metadati filtrabili validi
- Uguaglianza semplice
-
{"genre": "documentary"}Questo filtro corrisponde i vettori in cui la chiave di metadati genre è uguale a “documentary”. Quando non si specifica un operatore, S3 Vectors utilizza automaticamente l’operatore $eq.
- Uguaglianza esplicita
-
// Example: Exact match {"genre": {"$eq": "documentary"}}// Example: Not equal to {"genre": {"$ne": "drama"}} - Confronto numerico
-
{"year": {"$gt": 2019}}{"year": {"$gte": 2020}}{"year": {"$lt": 2020}}{"year": {"$lte": 2020}} - Operazioni di array
-
{"genre": {"$in": ["comedy", "documentary"]}}{"genre": {"$nin": ["comedy", "documentary"]}} - Controllo dell’esistenza
-
{"genre": {"$exists": true}}Il filtro
$existscorrisponde i vettori che hanno la chiave di metadati “genre”, indipendentemente dal valore archiviato per la chiave di metadati. - Operazioni logiche
-
{"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}{"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]} - Intervallo di prezzo (più condizioni sullo stesso campo)
-
{"price": {"$gte": 10, "$lte": 50}}
Per ulteriori informazioni su come eseguire query sui vettori con il filtro dei metadati, consulta Filtro dei metadati.
Metadati non filtrabili
I metadati non filtrabili non possono essere utilizzati nei filtri di query, ma possono archiviare quantità maggiori di dati contestuali rispetto ai metadati filtrabili. Sono l’ideale per archiviare blocchi di testo di grandi dimensioni, descrizioni dettagliate o altre informazioni contestuali che non devono necessariamente essere ricercabili ma possono essere restituiti con i risultati delle query. Ad esempio, è possibile archiviare il testo completo di un documento, le descrizioni di immagini o le specifiche dettagliate del prodotto come metadati non filtrabili.
Le chiavi di metadati non filtrabili devono essere configurate in modo esplicito durante la creazione dell’indice vettoriale. Una volta che una chiave di metadati è stata definita come non filtrabile durante la creazione dell’indice, non può essere modificata in un secondo momento per renderla filtrabile. Per ogni indice vettoriale è possibile configurare più chiavi di metadati come non filtrabili, con ciascun nome di chiave di metadati limitato a 63 caratteri. Per ulteriori informazioni sul numero massimo di chiavi di metadati non filtrabili consentite per indice vettoriale, consulta Limitazioni e restrizioni.
Sebbene non sia possibile filtrare i metadati non filtrabili, è possibile recuperarli insieme ai risultati delle query utilizzando il parametro return-metadata. È possibile utilizzare i metadati non filtrabili per alcuni casi d’uso, come descritto di seguito.
-
Per fornire un contesto all’applicazione senza analizzare origini dati separate.
-
Per archiviare grandi blocchi di testo che supererebbero i limiti di dimensione dei metadati filtrabili.
-
Per includerli nelle esportazioni di vettori utilizzando l’operazione API ListVectors.
Per ulteriori informazioni sulla configurazione dei metadati non filtrabili, consulta Creazione di un indice vettoriale in un bucket vettoriale.