Elimine instâncias vetoriais opcionais do armazenamento
O Azure AI Search armazena várias cópias de campos vetoriais que são usados em cargas de trabalho específicas. Se você não precisar oferecer suporte a um comportamento específico, como retornar vetores brutos em uma resposta de consulta, poderá definir propriedades no índice que omitem armazenamento para essa carga de trabalho.
Pré-requisitos
- Campos vetoriais em um índice de pesquisa com uma
vectorSearch
configuração, usando os algoritmos Hierarchical Navigable Small Worlds (HNSW) ou K-nearest neighbor (KNN) exaustivos e um novo perfil vetorial.
Como os campos vetoriais são armazenados
Para cada campo vetorial, poderia haver três cópias dos vetores, cada uma servindo a um propósito diferente:
Instância | Utilização | Controlado utilizando |
---|---|---|
Vetores de origem que armazenam o JSON recebido durante a indexação de documentos | Usado para atualização incremental de dados com merge ou mergeOrUpload durante a indexação de documentos. Também usado se você quiser vetores "recuperáveis" retornados na resposta da consulta. |
stored propriedade em campos vetoriais |
Vetores originais de precisão total | Nos índices existentes, estes são utilizados para operações internas de índice e para uma pesquisa KNN exaustiva. Para vetores que usam compressão, ele também é usado para repontuar (se habilitado) em um conjunto de resultados candidatos superamostrados da pesquisa ANN em campos vetoriais usando compressão de quantização escalar ou binária. | rescoringOptions.rescoreStorageMethod propriedade em vectorSearch.compressions . Para campos vetoriais não compactados em índices criados com 2024-11-01-Preview versões de API e posteriores, isso será omitido por padrão, sem impacto nas atividades de pesquisa nem na qualidade. |
Vetores no gráfico HNSW para pesquisa de Vizinhos Aproximados Mais Próximos (ANN) | Usado para execução de consulta ANN. Consiste em vetores de precisão total (quando nenhuma compressão é aplicada) ou vetores quantizados (quando a compressão é aplicada) | Aplica-se apenas ao HNSW. Estas estruturas de dados são necessárias para uma pesquisa ANN eficiente. |
Você pode definir propriedades que descartam permanentemente as duas primeiras instâncias do armazenamento vetorial.
A última instância (vetores e gráfico) é necessária para a execução da consulta vetorial ANN. Se forem usadas técnicas de compressão, como quantização escalar ou binária, elas serão aplicadas a esse conjunto de dados. Se quiser compensar a compactação com perdas, mantenha a segunda instância para fins de repontuação para melhorar a qualidade da pesquisa ANN.
Definir a stored
propriedade
A stored
propriedade é uma propriedade booleana em uma definição de campo vetorial que determina se o armazenamento é alocado para conteúdo de campo vetorial recuperável (a instância de origem). A stored
propriedade é true por padrão. Se você não precisar de conteúdo vetorial bruto em uma resposta de consulta, poderá economizar até 50% de armazenamento por campo alterando stored
para false.
Considerações para definir stored
como false:
Como os vetores não são legíveis por humanos, você pode omiti-los dos resultados enviados aos LLMs em cenários RAG e dos resultados renderizados em uma página de pesquisa. Mantenha-os, no entanto, se você estiver usando vetores em um processo downstream que consome conteúdo vetorial.
No entanto, se sua estratégia de indexação incluir atualizações parciais de documentos, como "mesclar" ou "mergeOrUpload" em um documento existente, a configuração
stored=false
impedirá atualizações de conteúdo nesses campos durante a mesclagem. Em cada operação "merge" ou "mergeOrUpload" para um documento de pesquisa, você deve fornecer os campos vetoriais em sua totalidade, juntamente com os campos não vetoriais que você está atualizando, ou o vetor é descartado.
Importante
A definição da stored=false
atribuição é irreversível. Essa propriedade só pode ser definida quando você cria o índice e só é permitida em campos vetoriais. A atualização de um índice existente com novos campos vetoriais não pode definir essa propriedade como false
. Se você quiser conteúdo vetorial recuperável mais tarde, você deve soltar e reconstruir o índice, ou criar e carregar um novo campo que tenha a nova atribuição.
Para novos campos vetoriais em um índice de pesquisa, defina stored
como false para remover permanentemente o armazenamento recuperável para o campo vetorial. O exemplo a seguir mostra uma definição de campo vetorial com a stored
propriedade.
PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name": "demo-index",
"fields": [
{
"name": "vectorContent",
"type": "Collection(Edm.Single)",
"retrievable": false,
"stored": false,
"dimensions": 1536,
"vectorSearchProfile": "vectorProfile"
}
]
}
Síntese dos pontos-chave
Aplica-se a campos com um tipo de dados vetoriais.
Afeta o armazenamento no disco, não na memória, e não tem efeito nas consultas. A execução da consulta usa um índice de vetor separado que não é afetado
stored
pela propriedade porque essa cópia do vetor é sempre armazenada.A propriedade é definida durante a
stored
criação do índice em campos vetoriais e é irreversível. Se quiser conteúdo recuperável mais tarde, você deve soltar e reconstruir o índice, ou criar e carregar um novo campo que tenha a nova atribuição.Os padrões são
stored
definidos como true eretrievable
como false. Em uma configuração padrão, uma cópia recuperável é armazenada, mas não é retornada automaticamente nos resultados. Quandostored
é verdadeiro, você pode alternarretrievable
entre verdadeiro e falso a qualquer momento sem ter que reconstruir um índice. Quandostored
é falso,retrievable
deve ser falso e não pode ser alterado.
Definir a rescoreStorageMethod
propriedade
Nota
Esta funcionalidade está atualmente em pré-visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
A rescoreStorageMethod
propriedade controla o armazenamento de vetores de precisão total quando a compactação é usada.
Para campos vetoriais não compactados em índices criados com 2024-11-01-Preview
versões de API e posteriores, isso será omitido por padrão, sem impacto nas atividades de pesquisa nem na qualidade. Para campos vetoriais existentes criados antes desta versão da API, não há capacidade in-loco para remover essa cópia de dados.
Em uma compactação vetorial, a rescoreStorageMethod
propriedade é definida como preserveOriginals
por padrão, que retém vetores de precisão total parasobreamostragem e recursos de repontuação para reduzir o efeito da compactação com perdas no gráfico HNSW. Se você não usar esses recursos, poderá reduzir o armazenamento vetorial definindo rescoreStorageMethod
como discardOriginals
.
Importante
A configuração da rescoreStorageMethod
propriedade é irreversível e terá diferentes níveis de perda de qualidade de pesquisa, dependendo do método de compressão. Isso pode ser definido em índices criados com 2024-11-01-Preview
ou posteriormente, durante a criação do índice ou adicionando novos campos vetoriais.
Se você pretende usar quantização escalar ou binária, recomendamos manter rescoreStorageMethod
o conjunto para maximizar a preserveOriginals
qualidade da pesquisa.
Para definir esta propriedade:
Use Criar Índice ou Criar ou Atualizar Índice 2024-11-01-preview APIs REST ou um pacote beta do SDK do Azure que forneça o recurso.
Adicione uma
vectorSearch
seção ao seu índice com perfis, algoritmos e compactações.Em compressões, adicione
rescoringOptions
com definido como true,defaultOversampling
definido comoenableRescoring
um inteiro positivo erescoreStorageMethod
definido comopreserveOriginals
.PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview { "name": "demo-index", "fields": [. . . ], . . . "vectorSearch": { "profiles": [ { "name": "myVectorProfile", "algorithm": "myHnsw", "compression": "myScalarQuantization" } ], "algorithms": [ { "name": "myHnsw", "kind": "hnsw", "hnswParameters": { "metric": "cosine", "m": 4, "efConstruction": 400, "efSearch": 500 }, "exhaustiveKnnParameters": null } ], "compressions": [ { "name": "myScalarQuantization", "kind": "scalarQuantization", "rescoringOptions": { "enableRescoring": true, "defaultOversampling": 10, "rescoreStorageMethod": "preserveOriginals" }, "scalarQuantizationParameters": { "quantizedDataType": "int8" }, "truncationDimension": null } ] } }