Milvus
Zilliz
  • Home
  • Blog
  • Zusammenführung von raumbezogener Filterung und Vektorsuche mit Geometriefeldern und RTREE in Milvus 2.6

Zusammenführung von raumbezogener Filterung und Vektorsuche mit Geometriefeldern und RTREE in Milvus 2.6

  • Engineering
December 08, 2025
Cai Zhang

Mit der zunehmenden Anwendung von KI-Systemen für die Entscheidungsfindung in Echtzeit werden Geodaten in einer wachsenden Zahl von Anwendungen immer wichtiger - insbesondere in solchen, die in der realen Welt operieren oder Nutzer an realen Orten bedienen.

Man denke nur an Plattformen für Essenslieferungen wie DoorDash oder Uber Eats. Wenn ein Benutzer eine Bestellung aufgibt, berechnet das System nicht nur die kürzeste Entfernung zwischen zwei Punkten. Es bewertet die Qualität des Restaurants, die Verfügbarkeit des Kuriers, die aktuellen Verkehrsbedingungen, die Servicegebiete und zunehmend auch die Einbettung von Benutzern und Artikeln, die persönliche Vorlieben darstellen. In ähnlicher Weise müssen autonome Fahrzeuge Pfadplanung, Hinderniserkennung und semantisches Verständnis auf Szenenebene unter strengen Latenzvorgaben durchführen - oft innerhalb von Millisekunden. In diesen Bereichen hängen effektive Entscheidungen davon ab, dass räumliche Beschränkungen mit semantischer Ähnlichkeit kombiniert werden, anstatt sie als unabhängige Schritte zu behandeln.

Auf der Datenebene wurden räumliche und semantische Daten jedoch traditionell von getrennten Systemen verarbeitet.

  • Geodatenbanken und räumliche Erweiterungen sind für die Speicherung von Koordinaten, Polygonen und räumlichen Beziehungen, wie z. B. Einschluss oder Entfernung, konzipiert.

  • Vektordatenbanken verarbeiten Vektoreinbettungen, die die semantische Bedeutung der Daten darstellen.

Wenn Anwendungen beides benötigen, sind sie oft zu mehrstufigen Abfragepipelines gezwungen - Filterung nach Standort in einem System, dann Durchführung einer Vektorsuche in einem anderen. Diese Trennung erhöht die Systemkomplexität, verlängert die Abfragelatenz und erschwert die effiziente Durchführung räumlich-semantischer Schlussfolgerungen in großem Maßstab.

Milvus 2.6 behebt dieses Problem durch die Einführung des Geometry Field, das die direkte Kombination von Vektorähnlichkeitssuche und räumlichen Einschränkungen ermöglicht. Dies ermöglicht Anwendungsfälle wie zum Beispiel:

  • Location-Base Service (LBS): "Finde ähnliche POIs innerhalb dieses Stadtblocks"

  • Multimodale Suche: "Finde ähnliche Fotos im Umkreis von 1 km von diesem Punkt".

  • Karten und Logistik: "Anlagen innerhalb einer Region" oder "Routen, die einen Weg kreuzen"

In Verbindung mit dem neuen RTREE-Index - einerbaumbasierten Struktur, die für die räumliche Filterung optimiert ist - unterstützt Milvus jetzt neben der hochdimensionalen Vektorsuche auch effiziente räumliche Operatoren wie st_contains, st_within und st_dwithin. Zusammen machen sie raumbezogenes intelligentes Retrieval nicht nur möglich, sondern praktisch.

In diesem Beitrag wird erläutert, wie das Geometriefeld und der RTREE-Index funktionieren und wie sie mit der Vektorähnlichkeitssuche kombiniert werden, um reale, räumlich-semantische Anwendungen zu ermöglichen.

Was ist ein Geometriefeld in Milvus?

Ein Geometriefeld ist ein schema-definierter Datentyp (DataType.GEOMETRY) in Milvus, der zur Speicherung geometrischer Daten verwendet wird. Im Gegensatz zu Systemen, die nur Rohkoordinaten verarbeiten, unterstützt Milvus eine Reihe von räumlichen Strukturen, darunter Point, LineString und Polygon.

Dadurch ist es möglich, reale Konzepte wie Restaurantstandorte (Point), Lieferzonen (Polygon) oder Flugbahnen autonomer Fahrzeuge (LineString) in derselben Datenbank darzustellen, die auch semantische Vektoren speichert. Mit anderen Worten: Milvus wird zu einem einheitlichen System, das sowohl den Ort als auch die Bedeutung eines Objekts erfasst.

Geometriewerte werden im Well-Known Text (WKT) -Format gespeichert, einem für Menschen lesbaren Standard für das Einfügen und Abfragen geometrischer Daten. Dies vereinfacht die Dateneingabe und -abfrage, da WKT-Strings direkt in einen Milvus-Datensatz eingefügt werden können. Zum Beispiel:

data = [
    { 
        "id": 1,
        "geo": "POINT(116.4074 39.9042)",
        "vector": vector,
    }
]

Was ist der RTREE-Index und wie funktioniert er?

Sobald Milvus den Datentyp Geometrie einführt, benötigt es auch eine effiziente Möglichkeit, räumliche Objekte zu filtern. Milvus handhabt dies mit einer zweistufigen räumlichen Filterpipeline:

  • Grobfilterung: Schnelles Eingrenzen der Kandidaten mit Hilfe von räumlichen Indizes wie RTREE.

  • Feines Filtern: Wendet exakte Geometrieprüfungen auf die verbleibenden Kandidaten an, um die Korrektheit an den Grenzen zu gewährleisten.

Dieses Design stellt ein Gleichgewicht zwischen Leistung und Genauigkeit her. Der räumliche Index entfernt aggressiv irrelevante Daten, während präzise geometrische Prüfungen korrekte Ergebnisse für Operatoren wie Einschluss, Schnittpunkt und Abstandsschwellenwerte gewährleisten.

Das Herzstück dieser Pipeline ist RTREE (Rectangle Tree), eine räumliche Indexierungsstruktur, die zur Beschleunigung von Abfragen über geometrische Daten entwickelt wurde. RTREE organisiert Objekte hierarchisch mit Hilfe von Minimum Bounding Rectangles (MBRs), wodurch große Teile des Suchraums bei der Ausführung von Abfragen übersprungen werden können.

Phase 1: Aufbau des RTREE-Index

Die RTREE-Konstruktion folgt einem Bottom-up-Prozess, bei dem nahegelegene räumliche Objekte in zunehmend größeren Begrenzungsregionen gruppiert werden:

1. Erstellen von Blattknoten: Berechnen Sie für jedes Geometrieobjekt sein Minimum Bounding Rectangle (MBR)- das kleinste Rechteck, das das Objekt vollständig enthält - und speichern Sie es als Blattknoten.

2. Gruppieren in größere Boxen: Gruppieren Sie nahe gelegene Blattknoten und umhüllen Sie jede Gruppe mit einem neuen MBR, wodurch interne Knoten entstehen.

3. Hinzufügen des Wurzelknotens: Erstellen Sie einen Wurzelknoten, dessen MBR alle internen Gruppen umfasst, und bilden Sie so eine höhenbalancierte Baumstruktur.

Phase 2: Abfragen beschleunigen

1. Bilden Sie den Abfrage-MBR: Berechnen Sie den MBR für die in Ihrer Abfrage verwendete Geometrie.

2. Beschneiden der Zweige: Vergleichen Sie, ausgehend von der Wurzel, den Abfrage-MBR mit jedem internen Knoten. Überspringen Sie jeden Zweig, dessen MBR sich nicht mit dem MBR der Abfrage schneidet.

3. Kandidaten sammeln: Steigen Sie in die sich schneidenden Zweige hinab und sammeln Sie die Kandidaten-Blattknoten.

4. Exaktes Matching durchführen: Für jeden Kandidaten das räumliche Prädikat ausführen, um genaue Ergebnisse zu erhalten.

Warum RTREE schnell ist

RTREE bietet eine hohe Leistung bei der räumlichen Filterung aufgrund mehrerer wichtiger Konstruktionsmerkmale:

  • Jeder Knoten speichert einen MBR: Jeder Knoten approximiert die Fläche aller Geometrien in seinem Teilbaum. Dadurch lässt sich leicht entscheiden, ob ein Zweig während einer Abfrage untersucht werden sollte.

  • Schnelles Pruning: Nur Teilbäume, deren MBR die Abfrageregion schneidet, werden durchsucht. Irrelevante Bereiche werden komplett ignoriert.

  • Skaliert mit der Datengröße: RTREE unterstützt räumliche Suchvorgänge in O(log N)-Zeit und ermöglicht so schnelle Abfragen, auch wenn der Datensatz größer wird.

  • Boost.Geometry-Implementierung: Milvus baut seinen RTREE-Index mit Boost.Geometry auf, einer weit verbreiteten C++-Bibliothek, die optimierte Geometriealgorithmen und eine thread-sichere RTREE-Implementierung für gleichzeitige Arbeitslasten bietet.

Unterstützte Geometrieoperatoren

Milvus bietet eine Reihe von räumlichen Operatoren, mit denen Sie Entitäten auf der Grundlage geometrischer Beziehungen filtern und abrufen können. Diese Operatoren sind unerlässlich für Workloads, die verstehen müssen, wie sich Objekte im Raum zueinander verhalten.

In der folgenden Tabelle sind die derzeit in Milvus verfügbaren Geometrieoperatoren aufgeführt.

OperatorBeschreibung
st_intersects(A, B)Gibt TRUE zurück, wenn die Geometrien A und B mindestens einen gemeinsamen Punkt haben.
st_contains(A, B)Gibt TRUE zurück, wenn die Geometrie A die Geometrie B vollständig enthält (mit Ausnahme des Randes).
st_within(A, B)Gibt TRUE zurück, wenn die Geometrie A vollständig in der Geometrie B enthalten ist. Dies ist die Umkehrung von st_contains(A, B).
st_covers(A, B)Gibt TRUE zurück, wenn die Geometrie A die Geometrie B bedeckt (einschließlich der Begrenzung).
st_touches(A, B)Gibt TRUE zurück, wenn sich die Geometrien A und B an ihren Grenzen berühren, sich aber intern nicht schneiden.
st_equals(A, B)Gibt TRUE zurück, wenn die Geometrien A und B räumlich identisch sind.
st_overlaps(A, B)Gibt TRUE zurück, wenn sich die Geometrien A und B teilweise überlappen und keine die andere vollständig enthält.
st_dwithin(A, B, d)Gibt TRUE zurück, wenn der Abstand zwischen A und B kleiner als d ist.

Kombinieren von Geolokalisierungsindex und Vektorindex

Mit der Geometrieunterstützung und dem RTREE-Index kann Milvus die räumliche Filterung mit der vektoriellen Ähnlichkeitssuche in einem einzigen Arbeitsablauf kombinieren. Der Prozess läuft in zwei Schritten ab:

1. Filtern nach Standort mit RTREE: Milvus verwendet zunächst den RTREE-Index, um die Suche auf Entitäten innerhalb des angegebenen geografischen Bereichs einzugrenzen (z. B. "innerhalb von 2 km").

2. Rangfolge nach Semantik mittels Vektorsuche: Aus den verbleibenden Kandidaten wählt der Vektorindex die Top-N der ähnlichsten Ergebnisse auf der Grundlage der Einbettungsähnlichkeit aus.

Reale Anwendungsfälle für Geo-Vektor Retrieval

1. Lieferdienste: Intelligente, standortbezogene Empfehlungen

Plattformen wie DoorDash oder Uber Eats bearbeiten täglich Hunderte von Millionen von Anfragen. In dem Moment, in dem ein Benutzer die App öffnet, muss das System auf der Grundlage des Standorts des Benutzers, der Tageszeit, der Geschmackspräferenzen, der geschätzten Lieferzeiten, des Echtzeitverkehrs und der Verfügbarkeit von Kurieren ermitteln, welche Restaurants oder Kuriere gerade am besten geeignet sind.

Traditionell erfordert dies die Abfrage einer Geodatenbank und einer separaten Empfehlungsmaschine, gefolgt von mehreren Runden der Filterung und Neueinstufung. Mit dem Geolocation Index vereinfacht Milvus diesen Arbeitsablauf erheblich:

  • Einheitliche Speicherung - Restaurantkoordinaten, Kurierstandorte und die Einbettung der Benutzerpräferenzen befinden sich alle in einem System.

  • Gemeinsame Suche - Zunächst wird ein räumlicher Filter angewendet (z. B. Restaurants im Umkreis von 3 km), dann wird die Vektorsuche verwendet, um eine Rangfolge nach Ähnlichkeit, Geschmackspräferenz oder Qualität zu erstellen.

  • Dynamische Entscheidungsfindung - Kombinieren Sie Echtzeit-Kurierverteilung und Verkehrssignale, um schnell den nächstgelegenen, am besten geeigneten Kurier zuzuweisen.

Dieser einheitliche Ansatz ermöglicht es der Plattform, räumliche und semantische Schlussfolgerungen in einer einzigen Abfrage zu ziehen. Wenn ein Benutzer beispielsweise nach "Curryreis" sucht, findet Milvus Restaurants, die semantisch relevant sind , und gibt denjenigen den Vorrang, die in der Nähe sind, schnell liefern und dem Geschmacksprofil des Benutzers entsprechen.

2. Autonomes Fahren: Intelligentere Entscheidungen

Beim autonomen Fahren ist die raumbezogene Indizierung von grundlegender Bedeutung für die Wahrnehmung, Lokalisierung und Entscheidungsfindung. Fahrzeuge müssen sich kontinuierlich an hochauflösenden Karten orientieren, Hindernisse erkennen und sichere Fahrwege planen - und das alles innerhalb weniger Millisekunden.

Mit Milvus können der Geometrietyp und der RTREE-Index umfangreiche räumliche Strukturen speichern und abfragen, wie zum Beispiel:

  • Straßenbegrenzungen (LineString)

  • Verkehrsregelungszonen (Polygon)

  • Erkannte Hindernisse (Punkt)

Diese Strukturen können effizient indiziert werden, so dass Geodaten direkt in die KI-Entscheidungsschleife einfließen können. So kann ein autonomes Fahrzeug beispielsweise durch ein RTREE-Raumprädikat schnell feststellen, ob seine aktuellen Koordinaten innerhalb einer bestimmten Fahrspur liegen oder sich mit einem Sperrgebiet kreuzen.

In Kombination mit den vom Wahrnehmungssystem generierten Vektoreinbettungen - wie z. B. Szeneneinbettungen, die die aktuelle Fahrumgebung erfassen - kann Milvus erweiterte Abfragen unterstützen, wie z. B. das Abrufen historischer Fahrszenarien, die dem aktuellen in einem Umkreis von 50 Metern ähneln. Dies hilft den Modellen, die Umgebung schneller zu interpretieren und bessere Entscheidungen zu treffen.

Fazit

Geolokalisierung ist mehr als Breiten- und Längengrad. In ortsabhängigen Anwendungen liefert sie wichtige Informationen darüber, wo Ereignisse stattfinden, wie Einheiten räumlich zusammenhängen und wie diese Beziehungen das Systemverhalten beeinflussen. In Kombination mit semantischen Signalen aus Modellen des maschinellen Lernens ermöglichen Geodaten eine reichhaltigere Klasse von Abfragen, die bei der getrennten Verarbeitung von Raum- und Vektordaten schwer auszudrücken oder ineffizient auszuführen sind.

Mit der Einführung des Geometry Field und des RTREE-Index bringt Milvus die Vektorähnlichkeitssuche und die räumliche Filterung in eine einzige Abfrage-Engine. Dadurch können Anwendungen eine gemeinsame Suche über Vektoren, Geodaten und Zeit durchführen, was Anwendungsfälle wie raumbezogene Empfehlungssysteme, multimodale ortsbezogene Suche und regions- oder pfadgebundene Analysen unterstützt. Vor allem aber wird die architektonische Komplexität durch den Wegfall mehrstufiger Pipelines, die Daten zwischen spezialisierten Systemen verschieben, reduziert.

Da sich KI-Systeme immer mehr der realen Entscheidungsfindung annähern, muss das Verständnis dafür , welche Inhalte relevant sind, zunehmend mit der Frage verknüpft werden , wo sie anwendbar sind und wann sie wichtig sind. Milvus bietet die Bausteine für diese Klasse von räumlich-semantischen Workloads in einer Art und Weise, die sowohl aussagekräftig als auch praktisch für den Betrieb im großen Maßstab ist.

Weitere Informationen über das Geometry Field und den RTREE-Index finden Sie in der nachstehenden Dokumentation:

Haben Sie Fragen oder möchten Sie einen tieferen Einblick in eine Funktion des neuesten Milvus? Treten Sie unserem Discord-Kanal bei oder stellen Sie Fragen auf GitHub. Sie können auch eine 20-minütige Einzelsitzung buchen, um Einblicke, Anleitung und Antworten auf Ihre Fragen über die Milvus Office Hours zu erhalten.

Erfahren Sie mehr über die Funktionen von Milvus 2.6

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Weiterlesen