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:
-
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
-
-
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:
| Funzionalità | Comportamento |
|---|---|
indice Split/Shrink/Clone |
Questi APIs falliscono se utilizzati con un indice configurato con |
Snapshot |
Gli indici che utilizzano il
NotaSebbene le istantanee non siano supportate per il point-in-time ripristino, |
UltraWarm livello |
Gli indici configurati con il |
Replica tra cluster |
Gli indici configurati con il |
Protezione da eliminazione accidentale |
Poiché le istantanee non sono supportate per gli indici che utilizzano il |
Ricerca radiale |
Le query con ricerca radiale non sono supportate nei campi che utilizzano il motore. |
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.
| Parametro | Obbligatorio | Description | Valori supportati |
|---|---|---|---|
type |
Sì | Il tipo di campo presente nel documento. | knn_vector |
dimension |
Sì | 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 |
Sì | 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