Eliminar instâncias de vetor opcionais do armazenamento
A Pesquisa de IA do Azure armazena várias cópias de campos de vetor que são usados em cargas de trabalho específicas. Se você não precisar dar suporte a um comportamento específico, como retornar vetores brutos em uma resposta de consulta, poderá definir propriedades no índice que omitem o armazenamento para essa carga de trabalho.
Pré-requisitos
- Campos de vetor em um índice de pesquisa com uma configuração
vectorSearch
, usando os algoritmos HNSW (Hierarchical Navigable Small Worlds) ou KNN (K-nearest neighbor) exaustivo e um novo perfil de vetor.
Como os campos de vetor são armazenados
Para cada campo de vetor, há três cópias dos vetores:
Instância | Uso |
---|---|
Vetores de origem (em JSON) como recebidos de um modelo de inserção ou solicitação de push para o índice | Usado para atualização incremental de dados e se você quiser que os vetores "recuperáveis" sejam retornados na resposta da consulta. |
Vetores originais de precisão total | Usado para pontuação se os vetores estiverem descompactados ou nova pontuação opcional se os resultados da consulta forem obtidos em vetores compactados. A nova pontuação só se aplicará se os campos de vetor forem submetidos a quantização escalar ou binária. |
Vetores no grafo HNSW para a pesquisa ANN (Approximate Nearest Neighbors) | Usado para execução de consulta. |
Você pode definir propriedades que descartam permanentemente as duas primeiras instâncias do armazenamento de vetor.
A última instância (vetores e grafo) é necessária para a execução da consulta vetor ANN. Técnicas de compactação com perdas, como quantização escalar ou binária, são aplicadas a essa instância de vetor. Se você quiser compensar a compactação com perdas, mantenha a segunda instância para fins de nova pontuação.
Definir a propriedade stored
A propriedade stored
é um booliano em uma definição de campo de vetor que determina se o armazenamento é alocado para conteúdo de campo de vetor recuperável (a instância de origem). A propriedade stored
booliana é true por padrão. Se não precisar de conteúdo de vetor bruto em uma resposta de consulta, poderá salvar até 50% de armazenamento por campo alterando stored
para false.
Considerações para definir stored
como false:
Como vetores não são legíveis por humanos, você pode omiti-los dos resultados enviados para LLMs em cenários RAG e dos resultados que são exibidos em uma página de busca. Mantenha-os, no entanto, se você estiver usando vetores em um processo downstream que consome conteúdo de vetor.
No entanto, se sua estratégia de indexação incluir atualizações parciais de documentos, como "merge" ou "mergeOrUpload" em um documento existente, a configuração
stored=false
impedirá atualizações de conteúdo para esses campos durante a mesclagem. Em cada operação "merge" ou "mergeOrUpload" para um documento de pesquisa, você deve fornecer os campos de vetor em sua totalidade, juntamente com os campos não vetoriais que você está atualizando ou o vetor será descartado.
Definir a atribuição stored=false
é irreversível. Ela é definida durante a criação do índice em campos vetoriais quando estruturas de dados físicas são criadas. Se você quiser conteúdo de vetor recuperável mais tarde, deverá remover e recompilar o índice ou criar e carregar um novo campo que tenha a nova atribuição.
O exemplo a seguir mostra a coleção de campos de um índice de pesquisa. Defina stored
como false para remover permanentemente o armazenamento recuperável para o campo de vetor.
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"
}
]
}
Resumo dos pontos-chave
Aplica-se a campos que têm um tipo de dados de vetor.
Afeta o armazenamento em disco, não na memória e não tem efeito sobre as consultas. A execução da consulta usa um índice de vetor separado que não é afetado pela propriedade
stored
porque essa cópia do vetor é sempre armazenada.A propriedade
stored
é definida durante a criação do índice em campos de vetor e é irreversível. Se você quiser conteúdo recuperável mais tarde, deverá remover e recompilar o índice ou criar e carregar um novo campo que tenha a nova atribuição.Os padrões são
stored
definido como true eretrievable
definido como false. Em uma configuração padrão, uma cópia recuperável é armazenada, mas não é retornada automaticamente nos resultados. Quandostored
for true, você pode alternarretrievable
entre true e false a qualquer momento sem precisar recriar um índice. Quandostored
for false,retrievable
deve ser false e não pode ser alterado.
Definir a propriedade rescoreStorageMethod
Observação
Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.
A propriedade rescoreStorageMethod
em uma definição de campo de vetor determina se o armazenamento é alocado para vetores originais de precisão total. A propriedade rescoreStorageMethod
é definida como preserveOriginals
por padrão. Se não estiver usando as mitigações de sobreamostragem e nova pontuação fornecidas para consultar vetores compactados, você poderá salvar no armazenamento de vetores alterando rescoreStorageMethod
para discardOriginals
.
Se você pretende usar a quantização escalar ou binária, recomendamos manter rescoreStorageMethod
definido como preserveOriginals
.
Para definir essa propriedade:
Use as APIs REST Criar Índice ou Criar ou Atualizar Índice 2024-11-01-preview ou um pacote beta do SDK do Azure fornecendo o recurso.
Adicione uma seção
vectorSearch
ao índice com perfis, algoritmos e compactações.Em compactações, adicione
rescoringOptions
comenableRescoring
definido como true,defaultOversampling
definido como 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 } ] } }