Reduzir o tamanho do vetor por meio de compartimentalização, tipos de dados estreitos e opções de armazenamento
Este artigo explica como usar a compartimentalização de vetor e outras técnicas para reduzir o tamanho de vetor na Pesquisa de IA do Azure. O índice de pesquisa especifica definições de campo de vetor, incluindo propriedades usadas para especificar tipos de dados estreitos ou controlar se uma cópia do conteúdo do vetor é retida para resultados da pesquisa. A compartimentalização também é especificada no índice e atribuída ao campo vetorial por meio de seu perfil de vetor.
A maioria dos recursos descritos neste artigo geralmente está disponível em da API REST 2024-07-01 e nos pacotes do SDK do Azure direcionados a essa versão. O versão de visualização mais recente adiciona suporte para dimensões truncadas se você estiver usando a inserção de text-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 primeira etapa, 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 redução máxima do tamanho do vetor.
Recomendamos a compartimentalização interna porque ela compacta o tamanho do vetor na memória e no disco com o mínimo de esforço, e isso tende a proporcionar o maior benefício na maioria dos cenários. Por outro lado, os tipos estreitos (exceto o float16) exigem um esforço especial para serem criados e stored
economiza armazenamento em disco, que não é tão caro quanto a memória.
Abordagem | Por que usar essa opção |
---|---|
Adicionar compartimentalização escalar ou binária | Use a compartimentalização para compactar as inserções nativas float32 ou float16 para int8 (escalar) ou Byte (binário). Essa 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 que são menos ricos em conteúdo do que aqueles com inserções maiores. Para compensar a perda de informações, a compactação interna inclui opções para processamento pós-consulta usando inserções descompactadas e sobrecarga para retornar resultados mais relevantes. A reclassificação e a sobreamostragem são recursos específicos da compartimentalização interna de campos float32 ou float16 e não podem ser usados em inserções que passam por compartimentalização personalizada. |
Dimensões truncadas para modelos de MRL-capable text-embedding-3 (versão prévia) | Exerça a opção de usar menos dimensões em modelos de text-embedding-3. No Azure OpenAI, esses modelos foram treinados novamente na técnica de Matryoshka Representation Learning (MRL) que produz várias representações de vetor em diferentes níveis de compactação. Essa abordagem produz pesquisas mais rápidas e redução dos custos de armazenamento, com perda mínima de informações semânticas. No Pesquisa de IA do Azure, o MRL dá suporte a suplementos de quantização escalar e binária. Ao usar qualquer método de quantização, você também pode especificar uma propriedade truncateDimension em seus campos de vetor para reduzir a dimensionalidade das inserções de texto. |
Atribuir tipos de dados primitivos menores a campos de vetor | 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 inserção que produza vetores em um formato de dados estreitos. Ou é necessário ter uma lógica de quantização personalizada que produza dados pequenos. Um terceiro caso de uso que requer menos esforço é a reconversão de inserções de float32 nativas produzidas pela maioria dos modelos para float16. Consulte Vetores binários de índice para obter detalhes sobre vetores binários. |
Eliminar 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 por cento. |
Todas essas opções são definidas em um índice vazio. Para implementar qualquer uma delas, use o portal do Azure, APIs REST ou um pacote de SDK do Azure direcionado para essa versão de API.
Depois que o índice for definido, você poderá carregar e indexar documentos como uma etapa separada.
Opção 1: Configurar a compartimentalização
A compartimentalização é recomendada para reduzir o tamanho do vetor porque reduz os requisitos de armazenamento de memória e disco para inserções float16 e float32. Para compensar os efeitos de um índice menor, você pode adicionar sobreamostragem e reclassificação sobre vetores não compactados.
A compartimentalização se aplica a campos vetoriais que recebem vetores do tipo float. Nos exemplos deste artigo, o tipo de dados de campo é Collection(Edm.Single)
para inserções float32 de entrada, mas também há suporte para float16. Quando os vetores são recebidos em um campo com compactação configurada, o mecanismo executa automaticamente a compartimentalização para reduzir o volume dos dados vetoriais na memória e no disco.
Dois tipos de compartimentalização são compatíveis:
A compartimentalização escalar compacta valores floats em tipos de dados mais estreitos. A Pesquisa de IA atualmente dá suporte ao int8, que é de 8 bits, reduzindo o tamanho do índice vetorial quatro vezes.
A compartimentalização binária converte floats em bits binários, o que ocupa 1 bit. Isso resulta em um tamanho de índice vetorial até 28 vezes menor.
Para usar a compartimentalização interna, siga estas etapas:
- Use Criar índice ou Criar ou atualizar índice para especificar a compactação de vetor
- Adicione
vectorSearch.compressions
a um índice de pesquisa - Adicione uma configuração de
scalarQuantization
oubinaryQuantization
e forneça um nome a ela - Defina propriedades opcionais para atenuar os efeitos da indexação com perda
- Crie um novo perfil de vetor que usa a configuração nomeada
- Crie o campo vetorial com o novo perfil de vetor
- Carregue o índice com dados float32 ou float16 que são compartimentalizados durante a indexação com a configuração definida
- Opcionalmente, consulte dados compartimentalizados usando o parâmetro de sobreamostragem se você quiser substituir o padrão
Adicionar "compactaçõ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 vetorial e uma seção vectorSearch.compressions
.
Este exemplo inclui scalarQuantization
ou binaryQuantization
. Você pode especificar quantas configurações de compactação forem necessárias e 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 comoscalarQuantization
oubinaryQuantization
rerankWithOriginalVectors
usa os vetores originais e não compactados para recalcular a similaridade e recalcular os principais resultados retornados pela consulta de pesquisa inicial. Os vetores não compactados existem no índice de pesquisa mesmo questored
seja false. Essa propriedade é opcional. O padrão é verdadeiro.defaultOversampling
considera um conjunto mais amplo de resultados potenciais para compensar a redução das informações da compartimentalização. A fórmula para resultados potenciais consiste emk
na consulta, com um multiplicador de sobreamostragem. Por exemplo, se a consulta especificar umk
de 5, e a sobrecarga for 20, a consulta solicitará efetivamente 100 documentos para uso no reclassificado, usando o vetor não compactado original para essa finalidade. Somente os principaisk
resultados reclassificados são retornados. Essa propriedade é opcional. O padrão é 4.quantizedDataType
é opcional e se aplica somente à compartimentalização escalar. Se você adicioná-lo, deve ser definido comoint8
. Esse é o único tipo de dados primitivo com suporte para compartimentalização escalar no momento. O padrão éint8
.
Adicionar o algoritmo HNSW
Seu índice deve ter o algoritmo HNSW (Hierarchical Navigable Small Worlds). Não há suporte para a compartimentalização interna com KNN exaustivo.
"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 compartimentalização, você deve criar um novo perfil de vetor. A criação de um novo perfil de vetor é necessária para criar índices compactados na memória. Seu novo perfil usa HNSW.
Na mesma definição de índice, crie um novo perfil de vetor e adicione uma propriedade de compactação e algoritmo. Aqui estão dois perfis, um para cada abordagem de compartimentalizaçã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> ] }
Atribua um perfil de vetor a um novo campo de vetor. O tipo de dados de campo é float32 ou float16.
Na Pesquisa de IA do Azure, os equivalentes de EDM (Modelo de Dados de Entidade) dos tipos float32 e float16 são
Collection(Edm.Single)
eCollection(Edm.Half)
, respectivamente.{ "name": "vectorContent", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-profile-hnsw-scalar", }
Carregue o índice usando indexadores para indexação de modelo de pull ou APIs para indexação de modelo push.
Como funciona a compartimentalização escalar na Pesquisa de IA do Azure
A compartimentalização escalar reduz a resolução de cada número em cada inserção de vetor. 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 (normalmente 99º percentil 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 compartimentalização escalar de 8 bits, há 2^8 ou 256 compartimentos possíveis.
Cada componente do vetor é mapeado para o valor representativo mais próximo dentro desse conjunto de níveis de compartimentalização em um processo semelhante ao arredondamento de um número real para o inteiro mais próximo. No vetor de 8 bits quantificado, o número do identificador fica no lugar do valor original. Após a compartimentalização, cada vetor é representado por uma matriz de identificadores para as lixeiras às quais seus componentes pertencem. Esses vetores quantificados exigem muito menos bits para armazenar em comparação com o vetor original, reduzindo assim os requisitos de armazenamento e o volume de memória.
Como funciona a compartimentalização binária na Pesquisa de IA do Azure
A compartimentalização binária compacta vetores de alta dimensão, representando cada componente como um único bit, 0 ou 1. Esse método reduz drasticamente o volume de 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 parâmetro de comparação mostram uma redução de até 96% no tamanho do índice vetorial.
É particularmente eficaz para inserções com dimensões maiores que 1024. Para dimensões menores, recomendamos testar a qualidade da compartimentalização binária ou tentar a escalar. Além disso, descobrimos que o BQ tem um bom desempenho quando as inserções são centradas em torno de zero. Os modelos de inserção mais populares, como OpenAI, Cohere e Mistral, são centrados em torno de zero.
Usar a compactação MRL e dimensões truncadas (versão prévia)
A compactação multinível de MRL economiza no armazenamento de vetores e melhora os tempos de resposta da consulta para consultas vetoriais com base em inserções de texto. No Pesquisa de IA do Azure, o suporte à MRL só é oferecido junto 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 vetor. Para obter a redução máxima de armazenamento, use a quantização binária com MRL e stored
definido como false.
Esse recurso está em preview. Ele está disponível em 2024-09-01-preview
e em pacotes beta do SDK direcionados à versão prévia da API.
Requisitos
- Text-embedding-3-small, Text-embedding-3-large (somente conteúdo de texto).
- Novos campos de vetor do tipo
Edm.Half
ouEdm.Single
(não é possível adicionar compactação MRL a um campo existente). - Algoritmo HNSW (sem suporte para KNN exaustivo nesta versão prévia).
- Configurar compartimentalização escalar ou binária. Recomendamos a quantização binária.
Clientes com suporte
- REST API 2024-09-01-preview
- Verifique os logs de alterações para cada pacote beta do SDK do Azure: Python, .NET, Java, JavaScript.
Não há suporte ao portal do Azure nem ao Estúdio de IA do Azure no momento.
Como usar inserções de texto estendidas por MRL
O MRL é uma funcionalidade do modelo textembedding. Para se beneficiar desses recursos no Pesquisa de IA do Azure, siga estas etapas.
- Especifique um objeto
vectorSearch.compressions
em sua definição de índice. - Inclua um método de quantização, escalar ou binário (recomendado).
- Inclua o parâmetro
truncationDimension
definido como 512 ou tão baixo quanto 256 se você usar o modelo text-embedding-3-large. - Especifique um perfil de vetor que especifica o algoritmo HNSW e o objeto de compactação de vetor.
- Atribua o perfil de vetor a um campo vetor do tipo
Edm.Half
ouEdm.Single
na coleção de campos.
Não há modificações do lado da consulta para usar um modelo de inserção de texto compatível com MRL. A vetorização integrada, conversões de texto em consulta no momento da consulta, classificação semântica e outros recursos de aprimoramento de relevância, como o reclassificado com vetores originais e a sobrecarga, não são afetados pelo suporte à MRL.
A indexação é mais lenta devido às etapas extras, mas as consultas serão mais rápidas.
Exemplo de uma configuração de busca em vetores que dá suporte à MRL
O exemplo a seguir ilustra uma configuração de busca em vetores que atende aos requisitos e recomendações do MRL.
truncationDimension
é uma propriedade de compactação. Ele especifica o quanto reduzir o grafo de vetor na memória em conjunto com um método de compactação como compactação escalar ou binária. Recomendamos 1.024 ou superior para truncationDimension
com quantização binária. Uma dimensionalidade inferior a 1.000 degradados a qualidade dos resultados da pesquisa ao usar o MRL e a compactaçã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 de vetor totalmente especificada que atenda aos requisitos de MRL.
Lembre-se de que os campos de vetor devem ser do tipo Edm.Half
ou Edm.Single
. Os campos de vetor devem ter uma propriedade vectorSearchProfile
que determine as configurações de algoritmo e compactação. Os campos de vetor têm uma propriedade dimensions
usada para especificar o número de dimensões para pontuação e resultados de classificação. Seu valor deve ser o limite de dimensões do modelo que você está usando (1.536 para text-embedding-3-small).
{
"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 de vetor
Uma maneira fácil de reduzir o tamanho do vetor é armazenar inserções em um formato de dados menor. A maioria dos modelos de inserção gera números de ponto flutuante de 32 bits, mas se você compartimentalizar seus vetores ou se o modelo de inserção der suporte nativamente, a saída poderá ser float16, int16 ou int8, que é significativamente menor que float32. Você pode acomodar esses tamanhos de vetor menores atribuindo um tipo de dados estreitos a um campo vetorial. No índice vetorial, tipos de dados estreitos consomem menos armazenamento.
Examine 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 com sinal de 16 bits (estreito)Collection(Edm.SByte)
inteiro com sinal de 8 bits (estreito)Collection(Edm.Byte)
inteiro sem sinal de 8 bits (permitido somente com tipos de dados binários empacotados)
Dessa lista, determine qual tipo de dados é válido para a saída do modelo de inserção ou para vetores que passam por compartimentalização personalizada.
A tabela a seguir fornece links para vários modelos de inserção que podem usar um tipo de dados estreitos (
Collection(Edm.Half)
) sem compartimentalização adicional. Você pode converter de float32 para float16 (usandoCollection(Edm.Half)
) sem trabalho adicional.Modelo de inserção Saída nativa Atribuir esse tipo na Pesquisa de IA do Azure text-embedding-ada-002 Float32
Collection(Edm.Single)
ouCollection(Edm.Half)
text-embedding-3-small Float32
Collection(Edm.Single)
ouCollection(Edm.Half)
text-embedding-3-large Float32
Collection(Edm.Single)
ouCollection(Edm.Half)
Modelos de inserção do Cohere V3 com int8 embedding_type Int8
Collection(Edm.SByte)
Outros tipos de dados estreitos poderão ser usados se o modelo emitir inserções no formato de dados menor ou se você tiver uma compartimentalização personalizada que converte vetores em um formato menor.
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 adicionais poderá levar a resultados inaceitáveis no momento da consulta, pois há menos detalhes que podem ser usados para distinguir vetores próximos.Defina e compile o índice. Você pode usar o portal do Azure, Criar ou atualizar índice (API REST) ou um pacote de SDK do Azure para esta etapa.
Verifique os resultados. Supondo que o campo vetorial esteja marcado como recuperável, use o Gerenciador de Pesquisa ou Pesquisa – 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 de GET (API REST).
Observação
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, remova e recompile o índice ou crie um segundo campo com a nova definição.
Opção 3: Definir a propriedade stored
para remover o armazenamento recuperável
A propriedade stored
é um booliano em uma definição de campo vetorial que determina se o armazenamento é alocado para conteúdo de campo vetorial recuperável. A propriedade stored
booliana é true por padrão. Se você não precisar de conteúdo de vetor em uma resposta de consulta, poderá salvar até 50% de armazenamento por campo definindo stored
como 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 a sua estratégia de indexação incluir atualizações parciais de documentos, como "merge" ou "mergeOrUpload" em um documento, esteja ciente de que definir
stored
como falso fará com que vetores no campo não armazenado sejam omitidos durante a mesclagem. Em cada operação de "merge" ou "mergeOrUpload", você deve fornecer os campos vetoriais além dos outros campos não vetoriais que está atualizando, ou o vetor será descartado.
Lembre-se de que a atribuição stored
é 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"
}
]
}
Pontos principais:
Aplica-se somente a campos 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
.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.
Exemplo: técnicas de compactação de vetor
Aqui está o código Python que demonstra compartimentalização, tipos de dados estreitos e uso da propriedade armazenada: Exemplo de código: opções de compartimentalização e armazenamento de vetor usando Python.
Esse código cria e compara o tamanho do índice de armazenamento e vetor 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 tamanho do vetor e armazenamento no nível do índice, portanto, índices e não campos devem ser a base da comparação. Use o Estatísticas de índice GET ou uma API equivalente nos SDKs do Azure para obter o tamanho do vetor.
Consultar um campo de vetor quantificado usando sobrecarga
A sintaxe de consulta para um campo vetorial compactado ou compartimentalizado é a mesma de 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 compactação de vetor no índice tem configurações para rerankWithOriginalVectors
e defaultOversampling
para atenuar 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ê poderá 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 definição rerankWithOriginalVectors
ou defaultOversampling
. Fornecer oversampling
em tempo de consulta substitui as configurações de índice para essa consulta e executa a consulta com um rerankWithOriginalVectors
efetivo como true.
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 de vetor que passam por compactação de vetor, de acordo com a atribuição de perfil de vetor.
Substitui o valor
defaultOversampling
ou introduz a sobrecarga no momento da consulta, mesmo que a configuração de compactação do índice não especifique opções de sobrecarga ou reclassificador.