Os mesmos dados, a mesma consulta — mas uma estratégia de pesquisa diferente. Arraste o ponto de consulta, ajuste nprobee prima «Executar Pesquisa » para ver como « IVF » ignora a maior parte dos dados.
nprobe » mais próximos: estes ficam destacados. Todos os outros aglomerados são totalmente ignorados.O compromisso: quanto maior nprobe → mais aglomerados analisados → maior recall, mas mais lento. Menor nprobe → mais rápido, mas poderá perder vizinhos verdadeiros que se encontram em aglomerados não analisados. Experimente definir nprobe = 1 e arrastar a consulta para perto do limite de um cluster para ver a queda na recuperação.
IVF (Inverted File) é um índice de vizinho mais próximo aproximado, baseado em agrupamento. Na fase de construção, o k-means divide todos os vetores em nlist agrupamentos, cada um representado pelo seu centroide. No momento da consulta, a pesquisa compara primeiro a consulta apenas com os centroides, seleciona os nprobe e analisa apenas os vetores dentro deles — ignorando tudo o resto.
Milvus inclui várias variantes do « IVF » que trocam memória por precisão: IVF_FLAT armazena vetores em bruto (mais preciso), IVF_SQ8 comprime cada dimensão para um byte (~4× menos memória, pequeno custo de recall), e IVF_PQ aplica quantização de produto para uma compressão muito superior com um custo de recall mais elevado.
nlist (tempo de compilação): o número de agrupamentos k-means. Um ponto de partida comum é 4 × sqrt(N) para N vetores. Mais agrupamentos significam que cada um é mais pequeno — varreduras mais rápidas, mas a varredura dos centróides tem um custo maior e os efeitos de fronteira aumentam.nprobe (tempo de consulta): quantos clusters devem ser analisados por consulta. Este é o principal regulador de recall/latência — exatamente o que o controlo deslizante acima controla. Comece por nlist / 16 e aumente até que a recuperação atinja o seu objetivo.IVF compila rapidamente, tem um pequeno consumo de memória além dos vetores e é fácil de compreender — mas, com o mesmo objetivo de recall, o « HNSW » geralmente responde às consultas mais rapidamente na memória. Escolha « IVF » quando reconstruir índices com frequência (a rapidez da compilação é importante), quando a memória for limitada (IVF_SQ8/IVF_PQ), ou quando pretender um comportamento de varredura previsível e ajustável. Escolha HNSW para obter a menor latência de consulta na memória e DiskANN quando os vetores já não couberem de todo em RAM.
Todos os três agrupam vetores da mesma forma; diferem na forma como os vetores são armazenados dentro dos agrupamentos. « IVF_FLAT » mantém vetores de tipo float não processados (melhor recall). « IVF_SQ8 » quantiza cada dimensão para 8 bits, reduzindo a memória em cerca de 4× com uma pequena perda de recall. « IVF_PQ » substitui os vetores por códigos curtos de quantização de produto, para a maior compressão e a maior perda de recall.
Uma regra prática comum é que « nlist » = 4 × sqrt(N) para N vetores; em seguida, ajuste « nprobe » no momento da consulta. Um « nprobe » maior analisa mais aglomerados: maior recall, maior latência. Comece por cerca de « nlist » /16 e aumente até que o recall num conjunto de consultas de teste atinja o seu objetivo.
Devido aos limites dos clusters. Se a consulta se situar perto da borda de um cluster, alguns dos seus verdadeiros vizinhos podem encontrar-se num cluster adjacente que não estava entre os clusters nprobe analisados. É possível observar isto na visualização arrastando o ponto de consulta para perto de um limite com nprobe = 1.
Com a mesma precisão de recuperação, o « HNSW » é normalmente mais rápido para pesquisas na memória, mas utiliza mais memória e demora mais tempo a compilar. O « IVF » compila-se rapidamente e combina bem com a quantização (SQ8/PQ) quando a memória é escassa. Para conjuntos de dados que excedam totalmente o « RAM », considere em vez disso o « DiskANN ».
Aprofunde-se: leia a documentação «IVF_FLAT » para conhecer os parâmetros de indexação ou consulte «Index Explained» para obter o guia de decisão completo.
Veja a pesquisa em grafos multicamadas passo a passo — desde saltos de autoestrada até percursos locais.
Veja como PQ-in-RAM + full-vectors-on-SSD lhe permite pesquisar conjuntos de dados na ordem dos mil milhões num portátil.
Arraste um ponto de consulta e alterne entre « L2 », «Cosine» e « IP » para ver como o «mais próximo» se altera.