Partilhar via


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 e retrievable como false. Em uma configuração padrão, uma cópia recuperável é armazenada, mas não é retornada automaticamente nos resultados. Quando stored é verdadeiro, você pode alternar retrievable entre verdadeiro e falso a qualquer momento sem ter que reconstruir um índice. Quando stored é 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:

  1. 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.

  2. Adicione uma vectorSearch seção ao seu índice com perfis, algoritmos e compactações.

  3. Em compressões, adicione rescoringOptions com definido como true, defaultOversampling definido como enableRescoring um inteiro positivo e rescoreStorageMethod definido como preserveOriginals.

    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
                }
            ]
        }
    }