Funzionalità di ricerca avanzate con un motore vettoriale Amazon S3 - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzionalità di ricerca avanzate con un motore vettoriale Amazon S3

Amazon OpenSearch Service offre la possibilità di utilizzare Amazon S3 come motore vettoriale per indici vettoriali. Questa funzionalità consente di scaricare dati vettoriali su Amazon S3 mantenendo funzionalità di ricerca vettoriale in meno di un secondo a costi contenuti.

Con questa funzionalità, OpenSearch archivia gli incorporamenti vettoriali in un indice vettoriale Amazon S3 mantenendo altri campi del documento nello OpenSearch storage del cluster. Questa architettura offre i seguenti vantaggi:

  • Durabilità: i dati scritti su S3 Vectors vengono archiviati su S3, progettato per 11 secondi di durata dei dati.

  • Scalabilità: trasferisci set di dati vettoriali di grandi dimensioni su S3 senza consumare lo storage del cluster.

  • Convenienza: ottimizza i costi di archiviazione per carichi di lavoro con molti vettori.

OpenSearch presenta i seguenti requisiti per l'utilizzo degli indici vettoriali S3:

  • OpenSearch versione 2.19 o successiva

  • OpenSearch Istanze ottimizzate

  • Versione della patch più recente per la tua OpenSearch versione

Abilitazione dei vettori S3

Quando crei un nuovo dominio o aggiorni un dominio esistente, puoi scegliere l'opzione Abilita i vettori S3 come motore nella sezione Funzioni avanzate. Questa impostazione consente di OpenSearch creare un bucket vettoriale S3 quando utilizzi S3 Vectors come motore. Quando abiliti questa opzione, OpenSearch configura S3 Vectors per il tuo dominio tramite:

  1. Creando due nuove concessioni sulla AWS KMS chiave configurata con il tuo dominio:

    • Una sovvenzione per i lavori di indicizzazione in background di S3 Vectors con privilegi di decrittografia

    • Una sovvenzione per creare bucket vettoriali S3 con autorizzazioni OpenSearch GenerateDataKey

  2. Configurazione della chiave KMS utilizzata dal OpenSearch dominio come CMK per la crittografia del resto di tutti i dati dell'indice vettoriale.

Creazione di indici con il motore vettoriale S3

Dopo aver configurato un dominio, puoi creare uno o più indici k-NN con campi da utilizzare s3vector come motore vettoriale di backend nelle mappature degli indici. Puoi configurare diversi campi vettoriali con diversi tipi di motore in base al tuo caso d'uso.

Importante

È possibile utilizzare il s3vector motore solo per mappare una definizione di campo durante la creazione dell'indice. Non è possibile aggiungere o aggiornare la mappatura con il s3vector motore dopo la creazione dell'indice.

Ecco alcuni esempi che creano indici di motori vettoriali S3.

Esempio: creazione di un indice k-NN con il motore vettoriale S3

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } } }

Esempio: creazione di un indice k-NN con motori vettoriali S3 e FAISS

Questo esempio evidenzia il fatto che è possibile utilizzare più motori vettoriali all'interno dello stesso indice.

PUT my-vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" }, "my_vector_2": { "type": "knn_vector", "dimension": 2, "space_type": "cosine", "method": { "name": "hnsw", "engine": "faiss", "parameters": { "ef_construction": 128, "m": 24 } } } } } }

Esempio non supportato: aggiunta del motore vettoriale S3 dopo la creazione dell'indice

Il seguente approccio non è supportato e avrà esito negativo.

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } } } PUT my-first-s3vector-index/_mapping { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } }

Limitazioni funzionali

Considerate le seguenti limitazioni prima di utilizzare s3vector il motore in un indice:

Caratteristiche e comportamenti non supportati dal motore s3vector
Funzionalità Comportamento

indice Split/Shrink/Clone

Questi APIs falliscono se utilizzati con un indice configurato con s3vector il motore in campo. knn_vector

Snapshot

Gli indici che utilizzano il s3vector motore non supportano le istantanee. Per i domini gestiti:

  • Le istantanee automatizzate includono solo gli indici che non utilizzano il motore. s3vector

  • Le richieste manuali di istantanee per s3vector gli indici hanno esito negativo.

Nota

Sebbene le istantanee non siano supportate per il point-in-time ripristino, s3vector Engine, insieme alle istanze OpenSearch Optimized, offre 11 livelli di durabilità.

UltraWarm livello

Gli indici configurati con il s3vector motore non possono migrare al UltraWarm livello.

Replica tra cluster

Gli indici configurati con il s3vector motore non supportano la replica tra cluster.

Protezione da eliminazione accidentale

Poiché le istantanee non sono supportate per gli indici che utilizzano il s3vector motore, la protezione da eliminazione accidentale non è disponibile. Puoi comunque ripristinare altri indici nel dominio.

Ricerca radiale

Le query con ricerca radiale non sono supportate nei campi che utilizzano il motore. s3vector

Indicizzazione dei documenti

Dopo aver creato un indice con il motore vettoriale S3, puoi importare documenti utilizzando l'API standard. _bulk OpenSearch scarica automaticamente i dati vettoriali dei knn_vector campi che utilizzano il s3vector motore all'indice vettoriale S3 in tempo reale. I dati che appartengono ad altri campi o ai knn_vector campi che utilizzano motori diversi verranno conservati OpenSearch nel relativo livello di archiviazione.

Per tutte le richieste di massa che vengono riconosciute, OpenSearch garantisce che tutti i dati (vettoriali e non vettoriali) siano durevoli. Se una richiesta riceve un riscontro negativo, non vi sono garanzie sulla durabilità dei documenti contenuti nella richiesta di massa. È consigliabile riprovare tali richieste preferibilmente dopo aver eliminato la precedente richiesta non riuscita utilizzando l'ID del documento per evitare documenti duplicati in questi rari casi.

Esempio di indicizzazione in blocco

POST _bulk { "index": { "_index": "my-first-s3vector-index", "_id": "1" } } { "my_vector_1": [1.5, 2.5], "price": 12.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "2" } } { "my_vector_1": [2.5, 3.5], "price": 7.1 } { "index": { "_index": "my-first-s3vector-index", "_id": "3" } } { "my_vector_1": [3.5, 4.5], "price": 12.9 } { "index": { "_index": "my-first-s3vector-index", "_id": "4" } } { "my_vector_1": [5.5, 6.5], "price": 1.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "5" } } { "my_vector_1": [4.5, 5.5], "price": 3.7 }

Ricerca di documenti

Puoi cercare nell'indice utilizzando l'_searchAPI standard per eseguire query di testo, k-NN o ibride. Per le query sui knn_vector campi configurati con il s3vector motore, scarica OpenSearch automaticamente la query nell'indice vettoriale S3 corrispondente.

Nota

Con s3vector engine, le query di ricerca k-NN supportano un valore massimo di 100. k Ciò significa che è possibile restituire un massimo di 100 vicini più vicini nei risultati della ricerca.

Esempio di query di ricerca

GET my-first-s3vector-index/_search { "size": 2, "query": { "knn": { "my_vector_1": { "vector": [2.5, 3.5], "k": 2 } } } }

È possibile eseguire una ricerca vettoriale filtrata sull'indice OpenSearch kNN utilizzando il motore s3vector. OpenSearch applica il filtro come filtro successivo e utilizza un meccanismo di sovracampionamento basato su determinate euristiche per bilanciare il richiamo rispetto alla latenza.

Esempio di query di ricerca con filtro:

GET my-index/_search { "size": 10, "query": { "knn": { "my_vector_field": { "vector": [2.5, 3.5, 1.2, 4.8], "k": 10, "filter": { "range": { "price": { "gte": 10, "lte": 100 } } } } } } }

Parametri di mappatura supportati

Con s3vector engine, il knn_vector campo supporta i seguenti parametri nelle mappature.

Parametri del campo vettoriale
Parametro Obbligatorio Description Valori supportati
type Il tipo di campo presente nel documento. knn_vector
dimension La dimensione di ogni vettore che verrà inserito nell'indice. >0, <=4096
space_type No Lo spazio vettoriale usato per calcolare la distanza tra i vettori. l2, cosinesimil
method.engine Il motore k-NN approssimativo da usare per l'indicizzazione e la ricerca. s3vector
method.name No Il metodo del vicino più vicino ""
store N/D L'abilitazione o la disabilitazione di questo parametro di mappatura è impossibile poiché i dati knn_vector non sono memorizzati in. OpenSearch Non supportato
doc_values N/D L'attivazione o la disabilitazione di questo parametro di mappatura non è un'operazione poiché i dati knn_vector non sono archiviati in. OpenSearch Non supportato
Importante

I tipi di campi annidati non sono supportati utilizzando il motore knn_vector s3vector

Misurazione e fatturazione

Per informazioni sulla misurazione e la fatturazione di questa funzionalità, consulta i prezzi di Amazon OpenSearch Service.

Disattivazione del motore s3vector

Prima di disabilitare il s3vector motore, elimina tutti gli indici che lo stanno attualmente utilizzando. In caso contrario, qualsiasi tentativo di disattivare il motore avrà esito negativo.

Tieni inoltre presente che l'attivazione o la disabilitazione del s3vector motore attiva una distribuzione blu/verde sul tuo dominio.

Per disabilitare il s3vector motore, modifica la configurazione del dominio e impostalo. S3VectorsEngine.Enabled: false