Per impostazione predefinita, gli indici di Vector Search sono ottimizzati per il rendimento. Per una soluzione più economica, puoi configurare gli indici in modo che vengano ottimizzati per lo spazio di archiviazione. In questo modo i dati dell'indice vengono consolidati in meno shard in cambio di query leggermente più lente. Questa opzione è ideale negli scenari in cui la riduzione dei costi operativi è più importante del raggiungimento della latenza più bassa possibile.
Quando utilizzare un indice ottimizzato per l'archiviazione
Prendi in considerazione gli indici ottimizzati per l'archiviazione se hai uno dei seguenti elementi:
Un set di dati molto grande: devi indicizzare un numero molto elevato di vettori e il costo dell'hosting di un numero elevato di shard ottimizzati per il rendimento è proibitivo.
Un workload con QPS basso: nelle applicazioni con un volume di query basso, il risparmio sui costi derivante dall'utilizzo di un numero inferiore di shard può essere significativo.
Requisiti di latenza flessibili: la tua applicazione può tollerare un leggero aumento della latenza delle query, ovvero il tempo necessario per ottenere un risultato di ricerca.
Compromessi in termini di prestazioni
Rispetto all'indice predefinito ottimizzato per il rendimento, un indice ottimizzato per l'archiviazione presenta le seguenti caratteristiche:
- Maggiore latenza delle query: le query hanno una latenza leggermente superiore a un determinato livello di richiamo.
Come configurare un indice ottimizzato per l'archiviazione
Per creare un indice
ottimizzato per l'archiviazione, imposta il parametro shardSize
su
SHARD_SIZE_SO_DYNAMIC
nella configurazione dell'indice.
Esempio: creare un indice ottimizzato per l'archiviazione
L'esempio seguente mostra i metadati per la creazione di un nuovo indice di streaming ottimizzato per l'archiviazione.
{
"displayName": "my-storage-optimized-index",
"description": "An index configured to prioritize storage over performance.",
"metadata": {
"contentsDeltaUri": "gs://your-bucket/source-data/",
"config": {
"dimensions": 100,
"approximateNeighborsCount": 150,
"distanceMeasureType": "DOT_PRODUCT_DISTANCE",
"shardSize": "SHARD_SIZE_SO_DYNAMIC"
}
},
"indexUpdateMethod": "STREAM_UPDATE"
}
Nell'esempio, shardSize
è impostato su SHARD_SIZE_SO_DYNAMIC
, il che
indica a Vector Search di creare un indice più denso. In questo modo,
ogni shard può contenere molti più punti dati, riducendo così il
numero totale di shard necessari per il tuo set di dati. Altri campi, come
dimensions
e distanceMeasureType
, vengono configurati in base alle tue esigenze.