Filtragem Geoespacial e Pesquisa Vetorial com Campos Geométricos e RTREE no Milvus 2.6
À medida que os sistemas de IA são cada vez mais aplicados à tomada de decisões em tempo real, os dados geoespaciais tornam-se cada vez mais importantes num conjunto crescente de aplicações - especialmente as que operam no mundo físico ou que servem utilizadores em locais reais.
Pensemos em plataformas de entrega de comida como a DoorDash ou a Uber Eats. Quando um utilizador faz uma encomenda, o sistema não se limita a calcular a distância mais curta entre dois pontos. Avalia a qualidade do restaurante, a disponibilidade do serviço de entregas, as condições de tráfego em tempo real, as áreas de serviço e, cada vez mais, a incorporação de utilizadores e itens que representam preferências pessoais. Da mesma forma, os veículos autónomos têm de efetuar o planeamento do caminho, a deteção de obstáculos e a compreensão semântica ao nível do cenário sob rigorosas restrições de latência - frequentemente em milissegundos. Nestes domínios, as decisões eficazes dependem da combinação de restrições espaciais com a semelhança semântica, em vez de as tratar como passos independentes.
No entanto, na camada de dados, os dados espaciais e semânticos têm sido tradicionalmente tratados por sistemas separados.
As bases de dados geoespaciais e as extensões espaciais são concebidas para armazenar coordenadas, polígonos e relações espaciais, como a contenção ou a distância.
As bases de dados vectoriais tratam as incorporações vectoriais que representam o significado semântico dos dados.
Quando as aplicações necessitam de ambos, são frequentemente forçadas a utilizar condutas de consulta em várias fases - filtragem por localização num sistema e, em seguida, pesquisa vetorial noutro sistema. Essa separação aumenta a complexidade do sistema, adiciona latência à consulta e dificulta a execução eficiente do raciocínio espaço-semântico em escala.
O Milvus 2.6 aborda este problema introduzindo o Campo de Geometria, que permite que a pesquisa por semelhança de vectores seja combinada diretamente com restrições espaciais. Isso permite casos de uso como:
Serviço de Base de Localização (LBS): "encontrar POIs semelhantes dentro deste quarteirão"
Pesquisa multimodal: "recuperar fotografias semelhantes num raio de 1 km deste ponto"
Mapas e logística: "activos dentro de uma região" ou "rotas que intersectam um caminho"
Em conjunto com o novo índice RTREE - umaestrutura baseada em árvore optimizada para filtragem espacial - o Milvus suporta agora operadores geoespaciais eficientes como st_contains, st_within e st_dwithin juntamente com a pesquisa vetorial de alta dimensão. Juntos, eles tornam a recuperação inteligente espacialmente consciente não apenas possível, mas prática.
Nesta publicação, veremos como o Geometry Field e o índice RTREE funcionam e como se combinam com a pesquisa de similaridade de vectores para permitir aplicações espácio-semânticas do mundo real.
O que é um campo geométrico em Milvus?
Um campo geométrico é um tipo de dados definido por um esquema (DataType.GEOMETRY) em Milvus utilizado para armazenar dados geométricos. Ao contrário dos sistemas que lidam apenas com coordenadas brutas, o Milvus suporta uma série de estruturas espaciais - incluindo Point, LineString e Polygon.
Isto torna possível representar conceitos do mundo real, tais como localizações de restaurantes (Ponto), zonas de entrega (Polígono), ou trajectórias de veículos autónomos (LineString), tudo na mesma base de dados que armazena vectores semânticos. Por outras palavras, o Milvus torna-se um sistema unificado para saber onde algo está e o que significa.
Os valores geométricos são armazenados utilizando o formato Well-Known Text (WKT), uma norma legível por humanos para a inserção e consulta de dados geométricos. Isto simplifica a ingestão e consulta de dados porque as cadeias de caracteres WKT podem ser inseridas diretamente num registo Milvus. Por exemplo:
data = [
{
"id": 1,
"geo": "POINT(116.4074 39.9042)",
"vector": vector,
}
]
O que é o índice RTREE e como ele funciona?
Uma vez que o Milvus introduz o tipo de dados Geometry, também precisa de uma forma eficiente de filtrar objectos espaciais. Milvus lida com isso usando um pipeline de filtragem espacial em dois estágios:
Filtragem grosseira: Reduz rapidamente os candidatos usando índices espaciais como o RTREE.
Filtragem fina: Aplica verificações de geometria exactas aos candidatos que permanecem, garantindo a correção nos limites.
Esta conceção equilibra o desempenho e a precisão. O índice espacial elimina de forma agressiva os dados irrelevantes, enquanto as verificações geométricas exactas garantem resultados corretos para operadores como a contenção, intersecção e limites de distância.
No centro deste pipeline está a RTREE (Rectangle Tree), uma estrutura de indexação espacial concebida para acelerar as consultas sobre dados geométricos. A RTREE funciona através da organização hierárquica de objectos utilizando os Minimum Bounding Rectangles (MBRs), permitindo que grandes porções do espaço de pesquisa sejam ignoradas durante a execução da consulta.
Fase 1: Construção do índice RTREE
A construção do RTREE segue um processo de baixo para cima que agrupa objectos espaciais próximos em regiões delimitadoras cada vez maiores:
1. Criar nós folha: Para cada objeto geométrico, calcular o seu Minimum Bounding Rectangle (MBR) - o retângulo mais pequeno que contém totalmente o objeto - e armazená-lo como um nó folha.
2. Agrupar em caixas maiores: Agrupe os nós folha próximos e envolva cada grupo dentro de um novo MBR, produzindo nós internos.
3. Adicionar o nó raiz: Crie um nó raiz cujo MBR cubra todos os grupos internos, formando uma estrutura de árvore com altura balanceada.
Fase 2: Acelerar as consultas
1. Formar o MBR da consulta: Calcular o MBR para a geometria utilizada na sua consulta.
2. Podar ramos: Começando pela raiz, compare o MBR da consulta com cada nó interno. Ignore qualquer ramo cujo MBR não se cruze com o MBR da consulta.
3. Coletar candidatos: Descer para os ramos que se intersectam e reunir os nós folha candidatos.
4. Executar correspondência exata: Para cada candidato, execute o predicado espacial para obter resultados precisos.
Por que o RTREE é rápido
O RTREE oferece um bom desempenho na filtragem espacial devido a vários recursos importantes do projeto:
Cadanó armazena um MBR: Cada nó aproxima a área de todas as geometrias em sua subárvore. Isto torna mais fácil decidir se um ramo deve ser explorado durante uma consulta.
Poda rápida: Apenas as sub-árvores cujo MBR intersecta a região de consulta são exploradas. As áreas irrelevantes são ignoradas por completo.
Escala com o tamanho dos dados: RTREE suporta pesquisas espaciais em tempo O(log N), permitindo consultas rápidas mesmo quando o conjunto de dados se expande.
Implementação Boost.Geometry: Milvus constrói seu índice RTREE usando Boost.Geometry, uma biblioteca C++ amplamente utilizada que fornece algoritmos de geometria otimizados e uma implementação RTREE segura para threads, adequada para cargas de trabalho simultâneas.
Operadores de geometria suportados
O Milvus fornece um conjunto de operadores espaciais que lhe permitem filtrar e recuperar entidades com base em relações geométricas. Esses operadores são essenciais para cargas de trabalho que precisam entender como os objetos se relacionam uns com os outros no espaço.
A tabela seguinte lista os operadores geométricos atualmente disponíveis no Milvus.
| Operador | Descrição |
|---|---|
| st_intersects(A, B) | Retorna TRUE se as geometrias A e B compartilham pelo menos um ponto em comum. |
| st_contém(A, B) | Retorna TRUE se a geometria A contém completamente a geometria B (excluindo o limite). |
| st_within(A, B) | Retorna TRUE se a geometria A está completamente contida na geometria B. Este é o inverso de st_contains(A, B). |
| st_cobre(A, B) | Retorna TRUE se a geometria A cobre a geometria B (incluindo o limite). |
| st_touches(A, B) | Retorna TRUE se as geometrias A e B se tocam nos seus limites mas não se intersectam internamente. |
| st_igual(A, B) | Retorna TRUE se as geometrias A e B são espacialmente idênticas. |
| st_sobreposições(A, B) | Retorna TRUE se as geometrias A e B se sobrepõem parcialmente e nenhuma contém totalmente a outra. |
| st_dwithin(A, B, d) | Retorna TRUE se a distância entre A e B for menor que d. |
Como combinar o índice de geolocalização e o índice vetorial
Com o suporte Geometry e o índice RTREE, o Milvus pode combinar a filtragem geoespacial com a pesquisa de similaridade vetorial num único fluxo de trabalho. O processo funciona em duas etapas:
1. Filtrar por localização usando RTREE: Milvus primeiro usa o índice RTREE para restringir a pesquisa a entidades dentro do intervalo geográfico especificado (por exemplo, "dentro de 2 km").
2. Classificar por semântica utilizando a pesquisa vetorial: Dos restantes candidatos, o índice vetorial seleciona os Top-N resultados mais semelhantes com base na semelhança de incorporação.
Casos de utilização no mundo real da recuperação geo-vetorial
1. Serviços de entrega: Recomendações mais inteligentes e sensíveis à localização
Plataformas como a DoorDash ou a Uber Eats processam centenas de milhões de pedidos por dia. No momento em que um utilizador abre a aplicação, o sistema tem de determinar - com base na localização do utilizador, hora do dia, preferências de gosto, tempos de entrega estimados, tráfego em tempo real e disponibilidade do serviço de entregas - quais os restaurantes ou serviços de entregas que melhor se adequam neste momento.
Tradicionalmente, isto requer a consulta de uma base de dados geoespacial e de um motor de recomendação separado, seguido de várias rondas de filtragem e nova classificação. Com o Geolocation Index, a Milvus simplifica muito este fluxo de trabalho:
Armazenamento unificado - As coordenadas dos restaurantes, as localizações dos correios e as preferências dos utilizadores estão todas num único sistema.
Recuperação conjunta - Primeiro, aplique um filtro espacial (por exemplo, restaurantes num raio de 3 km) e, em seguida, utilize a pesquisa vetorial para classificar por semelhança, preferência de gosto ou qualidade.
Tomadade decisões dinâmica - Combinar a distribuição de estafetas em tempo real e os sinais de trânsito para atribuir rapidamente a estafeta mais próxima e mais adequada.
Esta abordagem unificada permite que a plataforma efectue raciocínios espaciais e semânticos numa única consulta. Por exemplo, quando um utilizador procura "arroz com caril", o Milvus recupera restaurantes semanticamente relevantes e dá prioridade aos que estão próximos, que fazem entregas rápidas e que correspondem ao perfil histórico de gostos do utilizador.
2. Condução autónoma: Decisões mais inteligentes
Na condução autónoma, a indexação geoespacial é fundamental para a perceção, localização e tomada de decisões. Os veículos devem alinhar-se continuamente com mapas de alta definição, detetar obstáculos e planear trajectórias seguras - tudo isto em apenas alguns milissegundos.
Com o Milvus, o tipo Geometry e o índice RTREE podem armazenar e consultar estruturas espaciais ricas, tais como:
Limites de estradas (LineString)
Zonas de regulação de tráfego (Polygon)
Obstáculos detectados (Point)
Estas estruturas podem ser indexadas de forma eficiente, permitindo que os dados geoespaciais participem diretamente no ciclo de decisão da IA. Por exemplo, um veículo autónomo pode determinar rapidamente se as suas coordenadas actuais estão dentro de uma faixa específica ou se intersectam uma área restrita, simplesmente através de um predicado espacial RTREE.
Quando combinada com os vectores de incorporação gerados pelo sistema de perceção - como os vectores de incorporação de cenas que captam o ambiente de condução atual - a Milvus pode suportar consultas mais avançadas, como a recuperação de cenários de condução históricos semelhantes ao atual num raio de 50 metros. Isto ajuda os modelos a interpretar o ambiente mais rapidamente e a tomar melhores decisões.
Conclusão
A geolocalização é mais do que latitude e longitude. Em aplicações sensíveis à localização, fornece um contexto essencial sobre o local onde os eventos ocorrem, como as entidades se relacionam espacialmente e como essas relações moldam o comportamento do sistema. Quando combinados com sinais semânticos de modelos de aprendizagem automática, os dados geoespaciais permitem uma classe mais rica de consultas que são difíceis de expressar - ou ineficientes de executar - quando os dados espaciais e vectoriais são tratados separadamente.
Com a introdução do Geometry Field e do índice RTREE, o Milvus reúne a pesquisa por semelhança de vectores e a filtragem espacial num único motor de pesquisa. Isto permite que as aplicações efectuem uma recuperação conjunta de vectores, dados geoespaciais e tempo, suportando casos de utilização como sistemas de recomendação espacialmente conscientes, pesquisa multimodal baseada na localização e análises limitadas por regiões ou caminhos. Mais importante ainda, reduz a complexidade arquitetónica, eliminando os pipelines de várias fases que movem dados entre sistemas especializados.
À medida que os sistemas de IA continuam a aproximar-se da tomada de decisões no mundo real, a compreensão de qual conteúdo é relevante precisará cada vez mais de ser emparelhada com onde se aplica e quando é importante. O Milvus fornece os blocos de construção para esta classe de cargas de trabalho espácio-semânticas de uma forma que é expressiva e prática para operar em escala.
Para obter mais informações sobre o Geometry Field e o índice RTREE, consulte a documentação abaixo:
Tem dúvidas ou deseja aprofundar qualquer caraterística do Milvus mais recente? Junte-se ao nosso canal Discord ou registe problemas no GitHub. Também pode reservar uma sessão individual de 20 minutos para obter informações, orientação e respostas às suas perguntas através do Milvus Office Hours.
Saiba mais sobre os recursos do Milvus 2.6
Apresentando Milvus 2.6: Pesquisa Vetorial Acessível em Escala de Bilhões
Apresentando a função Embedding: Como o Milvus 2.6 agiliza a vetorização e a busca semântica
JSON Shredding em Milvus: Filtragem JSON 88,9x mais rápida com flexibilidade
MinHash LSH em Milvus: A arma secreta para combater duplicatas em dados de treinamento LLM
Leve a compressão vetorial ao extremo: como o Milvus atende a 3× mais consultas com o RaBitQ
Os benchmarks mentem - os bancos de dados vetoriais merecem um teste real
Pesquisa vetorial no mundo real: como filtrar com eficiência sem prejudicar a recuperação
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



