Partilhar via


Reduza o tamanho do vetor por meio de quantização, tipos de dados estreitos e opções de armazenamento

Este artigo explica como usar a quantização vetorial e outras técnicas para reduzir o tamanho do vetor na Pesquisa de IA do Azure. O índice de pesquisa especifica definições de campo vetorial, incluindo propriedades usadas para especificar tipos de dados estreitos ou controlar se uma cópia do conteúdo vetorial é mantida para os resultados da pesquisa. A quantização também é especificada no índice e atribuída ao campo vetorial através do seu perfil vetorial.

A maioria dos recursos descritos neste artigo está geralmente disponível na API REST 2024-07-01 e nos pacotes do SDK do Azure destinados a essa versão. A versão de visualização mais recente adiciona suporte para dimensões truncadas se você estiver usando texto-embedding-3-large ou text-embedding-3-small para vetorização.

Um exemplo no final deste artigo mostra as variações no tamanho do vetor para cada uma das abordagens descritas neste artigo.

Avaliar as opções

Como primeiro passo, revise as três abordagens para reduzir a quantidade de armazenamento usada pelos campos vetoriais. Essas abordagens não são mutuamente exclusivas e podem ser combinadas para a redução máxima no tamanho do vetor.

Recomendamos a quantização integrada porque comprime o tamanho do vetor na memória e no disco com o mínimo de esforço, e isso tende a fornecer o maior benefício na maioria dos cenários. Em contraste, tipos estreitos (exceto float16) exigem um esforço especial para fazê-los e stored economizam no armazenamento em disco, que não é tão caro quanto a memória.

Abordagem Porquê utilizar esta opção
Adicionar quantização escalar ou binária Use quantização para compactar incorporações nativas float32 ou float16 para int8 (escalar) ou Byte (binário). Esta opção reduz o armazenamento na memória e no disco sem degradação do desempenho da consulta. Tipos de dados menores, como int8 ou Byte, produzem índices vetoriais menos ricos em conteúdo do que aqueles com incorporações maiores. Para compensar a perda de informações, a compactação integrada inclui opções para processamento pós-consulta usando incorporações não compactadas e sobreamostragem para retornar resultados mais relevantes. Reclassificação e sobreamostragem são características específicas da quantização integrada de campos float32 ou float16 e não podem ser usadas em incorporações que passam por quantização personalizada.
Dimensões truncadas para modelos de incorporação de texto-3 compatíveis com LMR (visualização) Exerça a opção de usar menos dimensões em modelos de incorporação de texto-3. No Azure OpenAI, esses modelos foram retreinados na técnica Matryoshka Representation Learning (MRL) que produz várias representações vetoriais em diferentes níveis de compressão. Essa abordagem produz pesquisas mais rápidas e custos de armazenamento reduzidos, com perda mínima de informações semânticas. No Azure AI Search, o suporte de MRL complementa a quantização escalar e binária. Ao usar qualquer um dos métodos de quantização, você também pode especificar uma truncateDimension propriedade em seus campos vetoriais para reduzir a dimensionalidade das incorporações de texto.
Atribuir tipos de dados primitivos menores a campos vetoriais Tipos de dados estreitos, como float16, int16, int8 e Byte (binário) consomem menos espaço na memória e no disco, mas você deve ter um modelo de incorporação que produza vetores em um formato de dados estreito. Ou, você deve ter uma lógica de quantização personalizada que produza dados pequenos. Um terceiro caso de uso que requer menos esforço é a reformulação de incorporações nativas float32 produzidas pela maioria dos modelos para float16. Consulte Indexar vetores binários para obter detalhes sobre vetores binários.
Elimine o armazenamento opcional de vetores recuperáveis Os vetores retornados em uma resposta de consulta são armazenados separadamente dos vetores usados durante a execução da consulta. Se você não precisar retornar vetores, poderá desativar o armazenamento recuperável, reduzindo o armazenamento geral em disco por campo em até 50%.

Todas essas opções são definidas em um índice vazio. Para implementar qualquer um deles, use o portal do Azure, APIs REST ou um pacote do SDK do Azure direcionado a essa versão da API.

Depois que o índice for definido, você poderá carregar e indexar documentos como uma etapa separada.

Opção 1: Configurar a quantização

A quantização é recomendada para reduzir o tamanho do vetor porque reduz os requisitos de memória e armazenamento em disco para incorporações float16 e float32. Para compensar os efeitos de um índice menor, você pode adicionar sobreamostragem e reclassificação em vetores não compactados.

A quantização aplica-se a campos vetoriais que recebem vetores do tipo float. Nos exemplos deste artigo, o tipo de dados do campo é Collection(Edm.Single) para incorporações float32 de entrada, mas float16 também é suportado. Quando os vetores são recebidos em um campo com compressão configurada, o mecanismo executa automaticamente a quantização para reduzir a pegada dos dados vetoriais na memória e no disco.

Dois tipos de quantização são suportados:

  • A quantização escalar compacta valores flutuantes em tipos de dados mais estreitos. O AI Search atualmente suporta int8, que é de 8 bits, reduzindo o tamanho do índice vetorial quatro vezes.

  • A quantização binária converte flutuações em bits binários, que ocupam 1 bit. Isso resulta em até 28 vezes o tamanho do índice vetorial reduzido.

Para usar a quantização interna, siga estas etapas:

  • Use Criar índice ou Criar ou atualizar índice para especificar a compactação de vetores
  • Adicionar vectorSearch.compressions a um índice de pesquisa
  • Adicionar uma scalarQuantization configuração ou binaryQuantization e dar-lhe um nome
  • Definir propriedades opcionais para atenuar os efeitos da indexação com perdas
  • Criar um novo perfil de vetor que usa a configuração nomeada
  • Criar um novo campo vetorial com o novo perfil vetorial
  • Carregue o índice com dados float32 ou float16 quantizados durante a indexação com a configuração definida
  • Opcionalmente, consulte dados quantizados usando o parâmetro de sobreamostragem se quiser substituir o padrão

Adicionar "compressões" a um índice de pesquisa

O exemplo a seguir mostra uma definição de índice parcial com uma coleção de campos que inclui um campo de vetor e uma vectorSearch.compressions seção.

Este exemplo inclui ambos ou scalarQuantization binaryQuantization. Você pode especificar quantas configurações de compactação precisar e, em seguida, atribuir as que deseja a um perfil de vetor.

POST https://[servicename].search.windows.net/indexes?api-version=2024-07-01

{
  "name": "my-index",
  "fields": [
    { "name": "Id", "type": "Edm.String", "key": true, "retrievable": true, "searchable": true, "filterable": true },
    { "name": "content", "type": "Edm.String", "retrievable": true, "searchable": true },
    { "name": "vectorContent", "type": "Collection(Edm.Single)", "retrievable": false, "searchable": true, "dimensions": 1536,"vectorSearchProfile": "vector-profile-1"},
  ],
  "vectorSearch": {
        "profiles": [ ],
        "algorithms": [ ],
        "compressions": [
          {
            "name": "use-scalar",
            "kind": "scalarQuantization",
            "scalarQuantizationParameters": {
              "quantizedDataType": "int8"
            },
            "rerankWithOriginalVectors": true,
            "defaultOversampling": 10
          },
          {
            "name": "use-binary",
            "kind": "binaryQuantization",
            "rerankWithOriginalVectors": true,
            "defaultOversampling": 10
          }
        ]
    }
}

Pontos principais:

  • kind deve ser definido como scalarQuantization ou binaryQuantization

  • rerankWithOriginalVectors usa os vetores originais não compactados para recalcular a semelhança e reclassificar os principais resultados retornados pela consulta de pesquisa inicial. Os vetores não compactados existem no índice de pesquisa, mesmo que stored seja falso. Esta propriedade é opcional. A predefinição é verdadeiro.

  • defaultOversampling considera um conjunto mais amplo de resultados potenciais para compensar a redução da informação a partir da quantização. A fórmula para resultados potenciais consiste no k na consulta, com um multiplicador de sobreamostragem. Por exemplo, se a consulta especificar um k de 5 e a sobreamostragem for 20, a consulta solicitará efetivamente 100 documentos para uso na reclassificação, usando o vetor não compactado original para essa finalidade. Apenas os k melhores resultados reclassificados são retornados. Esta propriedade é opcional. O padrão é 4.

  • quantizedDataType é opcional e aplica-se apenas à quantização escalar. Se você adicioná-lo, ele deve ser definido como int8. Este é o único tipo de dados primitivo suportado para quantização escalar no momento. A predefinição é int8.

Adicionar o algoritmo HNSW

Certifique-se de que o seu índice tem o algoritmo Hierarchical Navigable Small Worlds (HNSW). A quantização integrada não é suportada com a KNN exaustiva.

"vectorSearch": {
    "profiles": [ ],
    "algorithms": [
      {
          "name": "use-hnsw",
          "kind": "hnsw",
          "hnswParameters": {
              "m": 4,
              "efConstruction": 400,
              "efSearch": 500,
              "metric": "cosine"
          }
      }
    ],
     "compressions": [ <see previous section>] 
}

Criar e atribuir um novo perfil de vetor

Para usar uma nova configuração de quantização, você deve criar um novo perfil vetorial. A criação de um novo perfil vetorial é necessária para a construção de índices compactados na memória. Seu novo perfil usa HNSW.

  1. Na mesma definição de índice, crie um novo perfil de vetor e adicione uma propriedade de compactação e um algoritmo. Aqui estão dois perfis, um para cada abordagem de quantização.

    "vectorSearch": {
        "profiles": [
           {
              "name": "vector-profile-hnsw-scalar",
              "compression": "use-scalar", 
              "algorithm": "use-hnsw",
              "vectorizer": null
           },
           {
              "name": "vector-profile-hnsw-binary",
              "compression": "use-binary", 
              "algorithm": "use-hnsw",
              "vectorizer": null
           }
         ],
         "algorithms": [  <see previous section> ],
         "compressions": [ <see previous section> ] 
    }
    
  2. Atribua um perfil de vetor a um novo campo vetorial. O tipo de dados do campo é float32 ou float16.

    No Azure AI Search, os equivalentes do Modelo de Dados de Entidade (EDM) dos tipos float32 e float16 são Collection(Edm.Single) e Collection(Edm.Half), respectivamente.

    {
       "name": "vectorContent",
       "type": "Collection(Edm.Single)",
       "searchable": true,
       "retrievable": true,
       "dimensions": 1536,
       "vectorSearchProfile": "vector-profile-hnsw-scalar",
    }
    
  3. Carregue o índice usando indexadores para indexação de modelo pull ou APIs para indexação de modelo push.

A quantização escalar reduz a resolução de cada número dentro de cada incorporação vetorial. Em vez de descrever cada número como um número de ponto flutuante de 16 bits ou 32 bits, ele usa um inteiro de 8 bits. Ele identifica um intervalo de números (tipicamente percentil 99 mínimo e máximo) e os divide em um número finito de níveis ou compartimento, atribuindo a cada compartimento um identificador. Na quantização escalar de 8 bits, existem 2^8, ou 256, compartimentos possíveis.

Cada componente do vetor é mapeado para o valor representativo mais próximo dentro deste conjunto de níveis de quantização em um processo semelhante ao arredondamento de um número real para o inteiro mais próximo. No vetor quantizado de 8 bits, o número identificador substitui o valor original. Após a quantização, cada vetor é representado por uma matriz de identificadores para os compartimentos aos quais seus componentes pertencem. Esses vetores quantizados exigem muito menos bits para armazenar em comparação com o vetor original, reduzindo assim os requisitos de armazenamento e o espaço ocupado pela memória.

A quantização binária comprime vetores de alta dimensão representando cada componente como um único bit, 0 ou 1. Esse método reduz drasticamente o espaço ocupado pela memória e acelera as operações de comparação de vetores, que são cruciais para tarefas de pesquisa e recuperação. Os testes de referência mostram até 96% de redução no tamanho do índice vetorial.

É particularmente eficaz para incorporações com dimensões superiores a 1024. Para dimensões menores, recomendamos testar a qualidade da quantização binária ou tentar escalar. Além disso, descobrimos que o BQ funciona muito bem quando as incorporações são centradas em zero. Os modelos de incorporação mais populares, como OpenAI, Cohere e Mistral, são centrados em torno de zero.

Usar compressão de LMR e dimensões truncadas (visualização)

A compactação multinível MRL economiza no armazenamento vetorial e melhora os tempos de resposta de consulta para consultas vetoriais com base em incorporações de texto. No Azure AI Search, o suporte a MRL só é oferecido juntamente com outro método de quantização. O uso de quantização binária com MRL fornece a redução máxima do tamanho do índice vetorial. Para obter a máxima redução de armazenamento, use quantização binária com MRL e stored defina como false.

Esta funcionalidade está em pré-visualização. Ele está disponível em 2024-09-01-preview e em pacotes de SDK beta direcionados para essa versão de API de visualização.

Requisitos

  • Incorporação de texto-3-pequeno, Incorporação de texto-3-grande (apenas conteúdo de texto).
  • Novos campos vetoriais do tipo Edm.Half ou Edm.Single (não é possível adicionar compactação MRL a um campo existente).
  • Algoritmo HNSW (sem suporte para KNN exaustivo nesta visualização).
  • Configure a quantização escalar ou binária. Recomendamos quantização binária.

Clientes suportados

Não há suporte ao portal do Azure ou ao Azure AI Studio no momento.

Como usar incorporações de texto estendidas por MRL

O LMR é uma capacidade do modelo de incorporação textual. Para se beneficiar desses recursos no Azure AI Search, siga estas etapas.

  1. Especifique um objeto na definição de vectorSearch.compressions índice.
  2. Inclua um método de quantização, escalar ou binário (recomendado).
  3. Inclua o truncationDimension parâmetro definido como 512 ou tão baixo quanto 256 se você usar o modelo text-embedding-3-large.
  4. Especifique um perfil de vetor que especifique o algoritmo HNSW e o objeto de compactação vetorial.
  5. Atribua o perfil vetorial a um campo vetorial do tipo Edm.Half ou Edm.Single na coleção de campos.

Não há modificações no lado da consulta para usar um modelo de incorporação de texto compatível com MRL. Vetorização integrada, conversões de texto para consulta no momento da consulta, classificação semântica e outros recursos de aprimoramento de relevância, como reclassificação com vetores originais e sobreamostragem, não são afetados pelo suporte a LMR.

A indexação é mais lenta devido às etapas extras, mas as consultas serão mais rápidas.

Exemplo de uma configuração de pesquisa vetorial que suporta LMR

O exemplo a seguir ilustra uma configuração de pesquisa vetorial que atende aos requisitos e recomendações do MRL.

truncationDimension é uma propriedade de compressão. Ele especifica quanto reduzir o gráfico vetorial na memória em conjunto com um método de compressão como compressão escalar ou binária. Recomendamos 1.024 ou superior para truncationDimension quantização binária. Uma dimensionalidade inferior a 1.000 degrada a qualidade dos resultados da pesquisa ao usar LMR e compressão binária.

{ 
  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "use-bq-with-mrl", 
        "compression": "use-mrl,use-bq", 
        "algorithm": "use-hnsw" 
      } 
    ],
    "algorithms": [
       {
          "name": "use-hnsw",
          "kind": "hnsw",
          "hnswParameters": {
             "m": 4,
             "efConstruction": 400,
             "efSearch": 500,
             "metric": "cosine"
          }
       }
    ],
    "compressions": [ 
      { 
        "name": "use-mrl", 
        "kind": "truncation", 
        "rerankWithOriginalVectors": true, 
        "defaultOversampling": 10, 
        "truncationDimension": 1024
      }, 
      { 
        "name": "use-bq", 
        "kind": "binaryQuantization", 
        "rerankWithOriginalVectors": true,
        "defaultOversampling": 10
       } 
    ] 
  } 
} 

Aqui está um exemplo de uma definição de campo vetorial totalmente especificada que satisfaz os requisitos para LMR.

Lembre-se de que os campos vetoriais devem ser do tipo Edm.Half ou Edm.Single. Os campos vetoriais devem ter uma vectorSearchProfile propriedade que determine o algoritmo e as configurações de compactação. Os campos vetoriais têm uma dimensions propriedade usada para especificar o número de dimensões para resultados de pontuação e classificação. Seu valor deve ser o limite de dimensões do modelo que você está usando (1.536 para incorporação de texto-3-pequeno).

{
    "name": "text_vector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "filterable": false,
    "retrievable": false,
    "stored": false,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": null,
    "normalizer": null,
    "dimensions": 1536,
    "vectorSearchProfile": "use-bq-with-mrl",
    "vectorEncoding": null,
    "synonymMaps": []
}

Opção 2: Atribuir tipos de dados estreitos a campos vetoriais

Uma maneira fácil de reduzir o tamanho do vetor é armazenar incorporações em um formato de dados menor. A maioria dos modelos de incorporação produz números de ponto flutuante de 32 bits, mas se você quantificar seus vetores, ou se seu modelo de incorporação o suportar nativamente, a saída pode ser float16, int16 ou int8, que é significativamente menor do que float32. Você pode acomodar esses tamanhos de vetor menores atribuindo um tipo de dados estreito a um campo vetorial. No índice vetorial, tipos de dados estreitos consomem menos armazenamento.

  1. Analise os tipos de dados usados para campos vetoriais para uso recomendado:

    • Collection(Edm.Single) Ponto flutuante de 32 bits (padrão)
    • Collection(Edm.Half) Ponto flutuante de 16 bits (estreito)
    • Collection(Edm.Int16) Inteiro assinado de 16 bits (estreito)
    • Collection(Edm.SByte) Inteiro assinado de 8 bits (estreito)
    • Collection(Edm.Byte) Inteiro não assinado de 8 bits (permitido apenas com tipos de dados binários compactados)
  2. Nessa lista, determine qual tipo de dados é válido para a saída do modelo de incorporação ou para vetores que passam por quantização personalizada.

    A tabela a seguir fornece links para vários modelos de incorporação que podem usar um tipo de dados estreito (Collection(Edm.Half)) sem quantização extra. Você pode fundir de float32 para float16 (usando Collection(Edm.Half)) sem trabalho extra.

    Modelo de incorporação Saída nativa Atribuir este tipo na Pesquisa de IA do Azure
    incorporação de texto-ada-002 Float32 Collection(Edm.Single) ou Collection(Edm.Half)
    incorporação de texto-3-pequeno Float32 Collection(Edm.Single) ou Collection(Edm.Half)
    incorporação de texto-3-grande Float32 Collection(Edm.Single) ou Collection(Edm.Half)
    Modelos de incorporação Cohere V3 com int8 embedding_type Int8 Collection(Edm.SByte)

    Outros tipos de dados estreitos podem ser usados se o modelo emitir incorporações no formato de dados menor ou se você tiver quantização personalizada que converte vetores em um formato menor.

  3. Certifique-se de entender as compensações de um tipo de dados estreito. Collection(Edm.Half) tem menos informações, o que resulta em menor resolução. Se seus dados forem homogêneos ou densos, perder detalhes ou nuances extras pode levar a resultados inaceitáveis no momento da consulta, porque há menos detalhes que podem ser usados para distinguir vetores próximos.

  4. Defina e construa o índice. Você pode usar o portal do Azure, Criar ou Atualizar Índice (API REST) ou um pacote do SDK do Azure para esta etapa.

  5. Confira os resultados. Supondo que o campo vetorial esteja marcado como recuperável, use o explorador de pesquisa ou Pesquisar - POST para verificar se o conteúdo do campo corresponde ao tipo de dados.

    Para verificar o tamanho do índice vetorial, use o portal do Azure ou as Estatísticas GET (API REST).

Nota

O tipo de dados do campo é usado para criar a estrutura de dados física. Se você quiser alterar um tipo de dados mais tarde, solte e reconstrua o índice ou crie um segundo campo com a nova definição.

Opção 3: Definir a propriedade para remover o stored armazenamento recuperável

A stored propriedade é um booleano em uma definição de campo vetorial que determina se o armazenamento é alocado para conteúdo de campo vetorial recuperável. A stored propriedade é true por padrão. Se você não precisar de conteúdo vetorial em uma resposta de consulta, poderá economizar até 50% de armazenamento por campo definindo stored como 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, lembre-se de que a configuração stored como false fará com que vetores no campo não armazenado sejam omitidos durante a mesclagem. Em cada operação "merge" ou "mergeOrUpload", você deve fornecer os campos vetoriais, além de outros campos não vetoriais que você está atualizando, ou o vetor será descartado.

Lembre-se que a stored atribuição é irreversível. Ele é definido durante a criação de índice em campos vetoriais quando estruturas de dados físicas são criadas. 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.

O exemplo a seguir mostra a coleção fields de um índice de pesquisa. Defina stored como false para remover permanentemente o armazenamento recuperável para o campo vetorial.

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

Pontos principais:

  • Aplica-se apenas a campos 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 vetorial separado que não é afetado stored pela propriedade.

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

Exemplo: técnicas de compressão vetorial

Aqui está o código Python que demonstra quantização, tipos de dados estreitos e uso da propriedade armazenada: Exemplo de código: Quantização vetorial e opções de armazenamento usando Python.

Este código cria e compara o tamanho do armazenamento e do índice vetorial para cada opção:

****************************************
Index Name: compressiontest-baseline
Storage Size: 21.3613MB
Vector Size: 4.8277MB
****************************************
Index Name: compressiontest-compression
Storage Size: 17.7604MB
Vector Size: 1.2242MB
****************************************
Index Name: compressiontest-narrow
Storage Size: 16.5567MB
Vector Size: 2.4254MB
****************************************
Index Name: compressiontest-no-stored
Storage Size: 10.9224MB
Vector Size: 4.8277MB
****************************************
Index Name: compressiontest-all-options
Storage Size: 4.9192MB
Vector Size: 1.2242MB

As APIs de pesquisa relatam o armazenamento e o tamanho do vetor no nível do índice, portanto, os índices e não os campos devem ser a base de comparação. Use as Estatísticas de Índice GET ou uma API equivalente nos SDKs do Azure para obter o tamanho do vetor.

Consultar um campo vetorial quantizado usando sobreamostragem

A sintaxe de consulta para um campo vetorial compactado ou quantizado é a mesma que para campos vetoriais não compactados, a menos que você queira substituir parâmetros associados à sobreamostragem ou reclassificação com vetores originais.

Lembre-se de que a definição de compressão vetorial no índice tem configurações para rerankWithOriginalVectors e defaultOversampling para mitigar os efeitos de um índice vetorial menor. Você pode substituir os valores padrão para variar o comportamento no momento da consulta. Por exemplo, se defaultOversampling for 10.0, você pode alterá-lo para outra coisa na solicitação de consulta.

Você pode definir o parâmetro de sobreamostragem mesmo que o índice não tenha explicitamente uma rerankWithOriginalVectors definição OR defaultOversampling . O fornecimento oversampling no momento da consulta substitui as configurações de índice para essa consulta e executa a consulta com um efetivo rerankWithOriginalVectors como verdadeiro.

POST https://[service-name].search.windows.net/indexes/demo-index/docs/search?api-version=2024-07-01   
  Content-Type: application/json   
  api-key: [admin key]   

    {    
       "vectorQueries": [
            {    
                "kind": "vector",    
                "vector": [8, 2, 3, 4, 3, 5, 2, 1],    
                "fields": "myvector",
                "oversampling": 12.0,
                "k": 5   
            }
      ]    
    }

Pontos principais:

  • Aplica-se a campos vetoriais que sofrem compressão vetorial, de acordo com a atribuição de perfil vetorial.

  • Substitui o valor ou introduz a defaultOversampling sobreamostragem no momento da consulta, mesmo que a configuração de compactação do índice não tenha especificado opções de sobreamostragem ou reclassificação.

Consulte também