Integración del filtrado geoespacial y la búsqueda vectorial con los campos geométricos y RTREE en Milvus 2.6
A medida que los sistemas de IA se aplican cada vez más a la toma de decisiones en tiempo real, los datos geoespaciales adquieren mayor importancia en un conjunto creciente de aplicaciones, especialmente las que operan en el mundo físico o prestan servicios a usuarios en ubicaciones reales.
Pensemos en plataformas de reparto de comida como DoorDash o Uber Eats. Cuando un usuario hace un pedido, el sistema no se limita a calcular la distancia más corta entre dos puntos. Evalúa la calidad de los restaurantes, la disponibilidad del servicio de mensajería, las condiciones del tráfico en tiempo real, las áreas de servicio y, cada vez más, la integración de usuarios y artículos que representan preferencias personales. Del mismo modo, los vehículos autónomos deben realizar la planificación de rutas, la detección de obstáculos y la comprensión semántica del escenario bajo estrictas restricciones de latencia, a menudo en milisegundos. En estos ámbitos, las decisiones eficaces dependen de la combinación de las restricciones espaciales con la similitud semántica, en lugar de tratarlas como pasos independientes.
En la capa de datos, sin embargo, los datos espaciales y semánticos han sido manejados tradicionalmente por sistemas separados.
Las bases de datos geoespaciales y las extensiones espaciales están diseñadas para almacenar coordenadas, polígonos y relaciones espaciales como la contención o la distancia.
Las bases de datos vectoriales manejan incrustaciones vectoriales que representan el significado semántico de los datos.
Cuando las aplicaciones necesitan ambas cosas, a menudo se ven forzadas a realizar consultas en varias etapas: filtrado por ubicación en un sistema y, a continuación, búsqueda vectorial en otro. Esta separación aumenta la complejidad del sistema, añade latencia a las consultas y dificulta un razonamiento espacial-semántico eficaz a gran escala.
Milvus 2.6 aborda este problema introduciendo el campo geométrico, que permite combinar directamente la búsqueda de similitud vectorial con restricciones espaciales. Esto permite casos de uso como:
Location-Base Service (LBS): "encontrar puntos de interés similares en esta manzana".
Búsqueda multimodal: "recuperar fotos similares en un radio de 1 km de este punto"
Mapas y logística: "activos dentro de una región" o "rutas que se cruzan en un camino"
Junto con el nuevo índice RTREE -unaestructura arborescente optimizada para el filtrado espacial-, Milvus admite ahora operadores geoespaciales eficientes como st_contains, st_within y st_dwithin, además de la búsqueda vectorial de altas dimensiones. Juntos, hacen que la recuperación inteligente espacialmente consciente no sólo sea posible, sino práctica.
En este artículo explicaremos cómo funcionan el campo geométrico y el índice RTREE, y cómo se combinan con la búsqueda vectorial por similitud para permitir aplicaciones espacio-semánticas en el mundo real.
¿Qué es un campo geométrico en Milvus?
Un campo de Geometría es un tipo de datos definido por esquema (DataType.GEOMETRY) en Milvus utilizado para almacenar datos geométricos. A diferencia de los sistemas que sólo manejan coordenadas en bruto, Milvus admite una serie de estructuras espaciales, como Point, LineString y Polygon.
Esto permite representar conceptos del mundo real como la ubicación de un restaurante (Point), zonas de reparto (Polygon) o trayectorias de vehículos autónomos (LineString), todo ello en la misma base de datos que almacena vectores semánticos. En otras palabras, Milvus se convierte en un sistema unificado tanto para saber dónde está algo como qué significa.
Los valores geométricos se almacenan utilizando el formato Well-Known Text (WKT), un estándar legible por humanos para insertar y consultar datos geométricos. Esto simplifica la introducción y consulta de datos porque las cadenas WKT pueden insertarse directamente en un registro Milvus. Por ejemplo
data = [
{
"id": 1,
"geo": "POINT(116.4074 39.9042)",
"vector": vector,
}
]
¿Qué es el índice RTREE y cómo funciona?
Una vez que Milvus introduce el tipo de datos Geometría, también necesita una manera eficiente de filtrar objetos espaciales. Milvus maneja esto utilizando una tubería de filtrado espacial de dos etapas:
Filtrado grueso: Reduce rápidamente los candidatos utilizando índices espaciales como RTREE.
Filtrado fino: Aplica comprobaciones geométricas exactas a los candidatos que quedan, garantizando la corrección en los límites.
Este diseño equilibra el rendimiento y la precisión. El índice espacial elimina de forma agresiva los datos irrelevantes, mientras que las comprobaciones geométricas precisas garantizan resultados correctos para operadores como los umbrales de contención, intersección y distancia.
El núcleo de este proceso es RTREE (Rectangle Tree), una estructura de indexación espacial diseñada para acelerar las consultas sobre datos geométricos. RTREE organiza los objetos jerárquicamente mediante rectángulos de contorno mínimo (MBR), lo que permite omitir grandes partes del espacio de búsqueda durante la ejecución de la consulta.
Fase 1: Construcción del índice RTREE
La construcción de RTREE sigue un proceso ascendente que agrupa objetos espaciales cercanos en regiones delimitadoras cada vez mayores:
1. 1. Creación de nodos hoja: Para cada objeto geométrico, se calcula su Rectángulo Mínimo(RMB) -el rectángulo más pequeño que contiene completamente al objeto- y se almacena como nodo hoja.
2. 2. Agrupar en rectángulos más grandes: Agrupe los nodos hoja cercanos y envuelva cada grupo dentro de un nuevo MBR, produciendo nodos internos.
3. Añada el nodo raíz: Crear un nodo raíz cuya RBM abarque todos los grupos internos, formando una estructura de árbol de altura equilibrada.
Fase 2: Acelerar las consultas
1. Forma el MBR de la consulta: Calcula el MBR de la geometría utilizada en tu consulta.
2. 2. Pode las ramas: Empezando por la raíz, compare el MBR de la consulta con cada nodo interno. Omita cualquier rama cuyo MBR no se cruce con el MBR de la consulta.
3. 3. Recopilar candidatos: Descienda a las ramas que se intersecan y reúna los nodos hoja candidatos.
4. Para cada candidato,ejecute el predicado espacial para obtener resultados precisos.
Por qué RTREE es rápido
RTREE ofrece un gran rendimiento en el filtrado espacial debido a varias características clave de diseño:
Cadanodo almacena un MBR: Cada nodo aproxima el área de todas las geometrías de su subárbol. Esto facilita la decisión de explorar una rama durante una consulta.
Poda rápida: Sólo se exploran los subárboles cuyo MBR se cruza con la región de consulta. Las zonas irrelevantes se ignoran por completo.
Escala con el tamaño de los datos: RTREE admite búsquedas espaciales en tiempo O(log N), lo que permite realizar consultas rápidas incluso cuando el conjunto de datos se amplía.
Implementación de Boost.Geometry: Milvus construye su índice RTREE utilizando Boost.Geometry, una biblioteca de C++ ampliamente utilizada que proporciona algoritmos de geometría optimizados y una implementación de RTREE a prueba de hilos adecuada para cargas de trabajo concurrentes.
Operadores de geometría compatibles
Milvus proporciona un conjunto de operadores espaciales que le permiten filtrar y recuperar entidades basándose en relaciones geométricas. Estos operadores son esenciales para las cargas de trabajo que necesitan comprender cómo se relacionan los objetos entre sí en el espacio.
La siguiente tabla enumera los operadores ge ométricos disponibles actualmente en Milvus.
| Operador | Descripción |
|---|---|
| st_intersects(A, B) | Devuelve TRUE si las geometrías A y B comparten al menos un punto común. |
| st_contains(A, B) | Devuelve TRUE si la geometría A contiene completamente a la geometría B (excluyendo el límite). |
| st_dentro(A, B) | Devuelve TRUE si la geometría A está completamente contenida dentro de la geometría B. Es la inversa de st_contains(A, B). |
| st_covers(A, B) | Devuelve TRUE si la geometría A cubre la geometría B (incluido el límite). |
| st_toca(A, B) | Devuelve TRUE si las geometrías A y B se tocan en sus límites pero no se cruzan internamente. |
| st_igual(A, B) | Devuelve TRUE si las geometrías A y B son espacialmente idénticas. |
| st_overlaps(A, B) | Devuelve TRUE si las geometrías A y B se solapan parcialmente y ninguna contiene totalmente a la otra. |
| st_dentro(A, B, d) | Devuelve TRUE si la distancia entre A y B es inferior a d. |
Cómo combinar el índice de geolocalización y el índice vectorial
Con el soporte de Geolocalización y el índice RTREE, Milvus puede combinar el filtrado geoespacial con la búsqueda de similitud vectorial en un único flujo de trabajo. El proceso funciona en dos pasos
1. Filtrar por ubicación utilizando RTREE: Milvus utiliza primero el índice RTREE para restringir la búsqueda a entidades dentro del rango geográfico especificado (por ejemplo, "dentro de 2 km").
2. 2. Clasificación por semántica mediante búsqueda vectorial: De los candidatos restantes, el índice vectorial selecciona los N resultados más similares en función de la similitud de incrustación.
Casos de uso real de la recuperación geovectorial
1. Servicios de entrega: Recomendaciones más inteligentes basadas en la ubicación
Plataformas como DoorDash o Uber Eats gestionan cientos de millones de solicitudes al día. En el momento en que un usuario abre la aplicación, el sistema debe determinar -en función de la ubicación del usuario, la hora del día, las preferencias de sabor, los tiempos de entrega estimados, el tráfico en tiempo real y la disponibilidad del mensajero- qué restaurantes o mensajeros son los más adecuados en ese momento.
Tradicionalmente, esto requiere consultar una base de datos geoespacial y un motor de recomendación independiente, seguido de múltiples rondas de filtrado y reclasificación. Con el Índice de Geolocalización, Milvus simplifica enormemente este flujo de trabajo:
Almacenamiento unificado: las coordenadas de los restaurantes, las ubicaciones de los servicios de mensajería y las preferencias de los usuarios se almacenan en un único sistema.
Recuperación conjunta: primero se aplica un filtro espacial (por ejemplo, restaurantes en un radio de 3 km) y, a continuación, se utiliza la búsqueda vectorial para clasificar por similitud, preferencia de sabor o calidad.
Toma de decisiones dinámica - Combine la distribución de mensajería en tiempo real y los semáforos para asignar rápidamente el mensajero más cercano y adecuado.
Este enfoque unificado permite a la plataforma realizar razonamientos espaciales y semánticos en una sola consulta. Por ejemplo, cuando un usuario busca "arroz al curry", Milvus recupera los restaurantes que son semánticamente relevantes y da prioridad a los que están cerca, entregan rápidamente y coinciden con el perfil histórico de gustos del usuario.
2. Conducción autónoma: Decisiones más inteligentes
En la conducción autónoma, la indexación geoespacial es fundamental para la percepción, la localización y la toma de decisiones. Los vehículos deben alinearse continuamente con mapas de alta definición, detectar obstáculos y planificar trayectorias seguras, todo ello en cuestión de milisegundos.
Con Milvus, el tipo Geometry y el índice RTREE pueden almacenar y consultar estructuras espaciales ricas como:
Límites de carreteras (LineString)
Zonas de regulación del tráfico (Polígono)
Obstáculos detectados (Point)
Estas estructuras pueden indexarse de forma eficiente, permitiendo que los datos geoespaciales participen directamente en el bucle de decisión de la IA. Por ejemplo, un vehículo autónomo puede determinar rápidamente si sus coordenadas actuales se encuentran dentro de un carril específico o se cruzan con una zona restringida, simplemente a través de un predicado espacial RTREE.
Cuando se combina con incrustaciones vectoriales generadas por el sistema de percepción, como las incrustaciones de escenas que capturan el entorno de conducción actual, Milvus puede admitir consultas más avanzadas, como la recuperación de escenarios de conducción históricos similares al actual en un radio de 50 metros. Esto ayuda a los modelos a interpretar el entorno más rápidamente y a tomar mejores decisiones.
Conclusión
La geolocalización es más que latitud y longitud. En las aplicaciones sensibles a la localización, proporciona un contexto esencial sobre dónde se producen los acontecimientos, cómo se relacionan espacialmente las entidades y cómo esas relaciones conforman el comportamiento del sistema. Cuando se combinan con las señales semánticas de los modelos de aprendizaje automático, los datos geoespaciales permiten una clase más rica de consultas que son difíciles de expresar -o ineficientes de ejecutar- cuando los datos espaciales y vectoriales se manejan por separado.
Con la introducción del campo geométrico y el índice RTREE, Milvus integra la búsqueda de similitud vectorial y el filtrado espacial en un único motor de consulta. Esto permite que las aplicaciones realicen una recuperación conjunta de vectores, datos geoespaciales y tiempo, lo que da soporte a casos de uso como los sistemas de recomendación espacialmente conscientes, la búsqueda multimodal basada en la ubicación y los análisis limitados por regiones o rutas. Y lo que es más importante, reduce la complejidad de la arquitectura al eliminar los conductos de varias etapas que mueven datos entre sistemas especializados.
A medida que los sistemas de IA se acercan a la toma de decisiones en el mundo real, la comprensión de qué contenido es relevante tendrá que combinarse cada vez más con dónde se aplica y cuándo es importante. Milvus proporciona los bloques de construcción para esta clase de cargas de trabajo espacio-semánticas de una manera que es a la vez expresiva y práctica para operar a escala.
Para obtener más información sobre el campo geométrico y el índice RTREE, consulte la documentación siguiente:
¿Tiene preguntas o desea una inmersión profunda en cualquier característica de la última Milvus? Únase a nuestro canal de Discord o presente cuestiones en GitHub. También puede reservar una sesión individual de 20 minutos para obtener información, orientación y respuestas a sus preguntas a través de Milvus Office Hours.
Más información sobre las características de Milvus 2.6
Presentación de Milvus 2.6: Búsqueda vectorial asequible a escala de miles de millones
JSON Shredding en Milvus: Filtrado JSON 88,9 veces más rápido con flexibilidad
MinHash LSH en Milvus: El arma secreta para combatir los duplicados en los datos de formación LLM
Llevar la compresión vectorial al extremo: cómo Milvus sirve 3 veces más consultas con RaBitQ
Los puntos de referencia mienten: las bases de datos vectoriales merecen una prueba real
Búsqueda vectorial en el mundo real: cómo filtrar eficazmente sin matar la recuperación
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



