Milvus
Zilliz
  • Home
  • Blog
  • 在 Milvus 2.6 中將地理空間篩選和向量搜尋與幾何領域和 RTREE 結合起來

在 Milvus 2.6 中將地理空間篩選和向量搜尋與幾何領域和 RTREE 結合起來

  • Engineering
December 08, 2025
Cai Zhang

隨著人工智能系統越來越多地被應用於即時決策,地理空間資料在越來越多的應用程式中變得越來越重要,特別是那些在實體世界中運作或在真實地點為使用者提供服務的應用程式。

考慮像 DoorDash 或 Uber Eats 這樣的送餐平台。當使用者下訂單時,系統並非只是計算兩點之間最短的距離。它會評估餐廳品質、快遞員可用性、即時交通狀況、服務區域,以及越來越多代表個人偏好的使用者與物品嵌入。同樣地,自動駕駛車輛必須在嚴格的延遲限制下執行路徑規劃、障礙偵測和場景層級的語意理解 - 通常在幾毫秒之內。在這些領域中,有效的決策取決於空間限制與語意相似性的結合,而非將它們視為獨立的步驟。

然而,在資料層,空間與語意資料傳統上是由不同的系統處理。

  • 地理空間資料庫和空間擴充的設計目的是儲存座標、多邊形和空間關係,例如包含或距離。

  • 向量資料庫則處理代表資料語意的向量嵌入。

當應用程式同時需要這兩種資料時,通常會被迫進入多階段查詢管道 - 在一個系統中以位置進行篩選,然後在另一個系統中執行向量搜尋。這樣的分離增加了系統的複雜性、延遲了查詢時間,並使空間語意推理難以有效率地大規模執行。

Milvus 2.6引入了幾何領域 (Geometry Field),允許向量相似性搜尋直接與空間限制結合,從而解決了這個問題。這使得以下使用案例成為可能:

  • 位置基礎服務 (LBS):"在此城市區塊內尋找相似的 POI

  • 多模式搜尋:"檢索此點 1 公里範圍內的相似照片

  • 地圖與物流:「區域內的資產 」或 「與路徑相交的路線」

搭配全新的RTREE 索引(專為空間篩選最佳化的樹狀結構),Milvus 現在可支援高效率的地理空間運算符號,例如st_containsst_withinst_dwithin ,以及高維向量搜尋。這兩項功能的結合,讓空間感知的智慧型檢索不僅成為可能,而且更為實用。

在這篇文章中,我們將介紹幾何領域 (Geometry Field) 和 RTREE 索引如何運作,以及它們如何與向量相似性搜尋結合,以實現真實世界的空間語意應用。

什麼是 Milvus 的幾何欄位?

在 Milvus 中,Geometry Field是一種模式定義的資料類型 (DataType.GEOMETRY) ,用來儲存幾何資料。與只處理原始坐標的系統不同,Milvus 支援一系列空間結構,包括PointLineStringPolygon

這使得表示真實世界的概念成為可能,例如餐廳位置 (Point)、送貨區 (Polygon) 或自動駕駛車軌跡 (LineString),所有這些都在儲存語意向量的相同資料庫中。換句話說,Milvus 成為一個統一的系統,可同時顯示某物的位置意義

幾何值使用Well-Known Text (WKT)格式儲存,此格式是插入和查詢幾何資料的人類可讀標準。由於 WKT 字串可直接插入 Milvus 記錄中,因此簡化了資料擷取與查詢。例如

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

什麼是 RTREE 索引,它是如何工作的?

一旦 Milvus 引入了幾何資料類型,它也需要一個有效的方法來過濾空間物件。Milvus 使用兩個階段的空間篩選管道來處理:

  • 粗略篩選:使用 RTREE 等空間索引快速縮小候選物件的範圍。

  • 精細篩選:對餘下的候選物件套用精確的幾何檢查,確保邊界的正確性。

此設計平衡了效能與精確度。空間索引會積極刪除不相關的資料,而精確的幾何檢查則可確保包含、相交和距離臨界值等運算符的結果正確無誤。

此管道的核心是RTREE (矩形樹),這是一種空間索引結構,專為加速幾何資料的查詢而設計。RTREE 透過使用最小邊界矩形 (MBR) 來分層組織物件,允許在執行查詢時跳過大部分的搜尋空間。

階段 1:建立 RTREE 索引

RTREE 的建構遵循自下而上的流程,將鄰近的空間物件歸類到愈來愈大的邊界區域:

1.建立葉節點:對於每個幾何物件,計算其最小邊界矩形 (MBR),即完全包含該物件的最小矩形,並將其儲存為葉節點。

2.組合成較大的方塊:集群附近的葉節點,並將每個群組包覆在新的 MBR 內,產生內部節點。

3.新增根節點:建立一個根節點,其 MBR 涵蓋所有內部群組,形成高度平衡的樹狀結構。

第二階段:加速查詢

1.形成查詢 MBR:為查詢中使用的幾何圖形計算 MBR。

2.修剪分支:從根開始,比較查詢 MBR 與每個內部節點。跳過任何 MBR 與查詢 MBR 沒有交集的分支。

3.收集候選:下降到相交的分支,並收集候選葉節點。

4.執行精確匹配:針對每個候選節點,執行空間謂語以獲得精確結果。

RTREE 快速的原因

RTREE 在空間篩選方面提供強大的效能,是因為幾個關鍵的設計特點:

  • 每個節點都儲存一個 MBR:每個節點都近似其子樹中所有幾何圖形的面積。這可讓您輕鬆決定在查詢過程中是否要探索某個分支。

  • 快速剪枝:僅探索 MBR 與查詢區域相交的子樹。不相關的區域會被完全忽略。

  • 隨資料大小調整:RTREE 支援在O(log N)時間內進行空間搜尋,即使資料集不斷擴大,也能進行快速查詢。

  • Boost.Geometry 實作:Milvus 使用Boost.Geometry 建立 RTREE 索引,Boost.Geometry 是一個廣泛使用的 C++ 函式庫,提供最佳化的幾何演算法,以及適用於並發工作負載的線程安全 RTREE 實作。

支援的幾何運算符號

Milvus 提供一組空間運算子,可讓您根據幾何關係過濾和擷取實體。對於需要瞭解物件在空間中如何相互關聯的工作負載而言,這些運算符號是不可或缺的。

下表列出 Milvus 目前可用的幾何運算符號

操作員說明
st_intersects(A, B)如果幾何圖 A 和 B 至少有一個共同點,則傳回值為 TRUE。
st_contains(A, B)如果幾何圖 A 完全包含幾何圖 B (不包含邊界),則傳回值為 TRUE。
st_within(A, B)如果幾何圖形 A 完全包含在幾何圖形 B 中,則傳回值為 TRUE。
st_covers(A, B)若幾何體 A 包覆幾何體 B (包括邊界),則傳回值為 TRUE。
st_touches(A, B)如果幾何圖形 A 和 B 在邊界相接,但內部沒有相交,則傳回值 TRUE。
st_equals(A, B)如果幾何圖 A 和 B 在空間上相同,則傳回值為 TRUE。
st_overlaps(A, B)如果幾何圖 A 與 B 部分重疊,且兩者都不完全包含對方,則傳回 TRUE。
st_dwithin(A, B, d)如果 A 和 B 之間的距離小於d,則傳回 TRUE。

如何結合地理位置索引與向量索引

有了幾何支援和 RTREE 索引,Milvus 可以在單一工作流程中結合地理空間篩選和向量相似性搜尋。這個過程分兩個步驟

1.使用 RTREE 進行位置篩選:Milvus 首先使用 RTREE 索引將搜尋範圍縮小到指定地理範圍內的實體 (例如「2 公里內」)。

2.使用向量搜尋依語意排序:向量索引會根據嵌入相似度,從剩餘的候選項中選取最相似的 Top-N 結果。

地理向量檢索的實際應用案例

1.配送服務:更聰明的位置感知推薦

DoorDash 或 Uber Eats 等平台每天要處理數以億計的請求。當使用者開啟應用程式時,系統必須根據使用者的位置、時間、口味偏好、預計送貨時間、即時交通流量和快遞公司的可用性來判斷哪些餐廳或快遞公司目前最適合。

傳統上,這需要查詢地理空間資料庫和單獨的推薦引擎,然後進行多輪篩選和重新排序。有了地理位置索引,Milvus 大幅簡化了這個工作流程:

  • 統一儲存- 餐廳座標、快遞位置和使用者偏好嵌入都儲存在一個系統中。

  • 聯合檢索- 首先套用空間篩選 (例如,3 公里內的餐廳),然後再使用向量搜尋,以相似度、口味偏好或品質進行排序。

  • 動態決策- 結合即時快遞分佈與交通信號,快速指派最近、最適合的快遞。

這種統一的方法可讓平台在單一查詢中執行空間和語意推理。舉例來說,當使用者搜尋「咖哩飯」時,Milvus 會擷取與語意相關的餐廳,並優先選取鄰近、送貨速度快且符合使用者過往口味習慣的餐廳。

2.自動駕駛:更智慧的決策

在自動駕駛中,地理空間索引是感知、定位和決策的基礎。車輛必須持續對準高解析度地圖、偵測障礙物,並規劃安全軌跡,而這一切都必須在幾毫秒之內完成。

透過 Milvus,Geometry 類型和 RTREE 索引可以儲存和查詢豐富的空間結構,例如

  • 道路邊界(LineString)

  • 交通管制區(多邊形)

  • 偵測到的障礙(點)

這些結構可以有效率地建立索引,讓地理空間資料直接參與 AI 決策迴圈。例如,只需透過 RTREE 空間謂語,自動駕駛車輛就能快速判斷其目前座標是否位於特定車道或與限制區域相交。

當與感知系統產生的向量內嵌結合時 (例如捕捉目前駕駛環境的場景內嵌),Milvus 可支援更進階的查詢,例如擷取半徑 50 公尺範圍內與目前駕駛類似的歷史駕駛情境。這有助於模型更快地詮釋環境,並做出更好的決策。

總結

地理位置不只是經緯度。在位置敏感型應用程式中,它提供了關於事件發生地點、實體在空間上的關係,以及這些關係如何塑造系統行為的重要情境。當與機器學習模型的語意訊號結合時,地理空間資料可提供更豐富的查詢類別,這些查詢類別在分開處理空間與向量資料時很難表達或執行效率很低。

透過引進 Geometry Field 和 RTREE 索引,Milvus 將向量相似性搜尋和空間篩選整合到單一查詢引擎中。這可讓應用程式跨向量、地理空間資料和時間執行聯合檢索,支援空間感知推薦系統、多模態位置搜尋和區域或路徑限制分析等使用個案。更重要的是,它消除了在專門系統之間移動資料的多階段管道,從而降低了架構複雜性。

隨著人工智慧系統不斷接近真實世界的決策,了解哪些內容是相關的,將越來越需要搭配其適用的地點和重要的時間。Milvus 為這類空間語意工作負載提供了建構塊,其方式既有表達力又實用,適合大規模運作。

有關 Geometry Field 和 RTREE 索引的詳細資訊,請參閱下列說明文件:

對最新 Milvus 的任何功能有問題或想要深入瞭解?加入我們的 Discord 頻道或在 GitHub 上提出問題。您也可以透過 Milvus Office Hours 預約 20 分鐘的一對一課程,以獲得深入的瞭解、指導和問題解答。

進一步了解 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

    繼續閱讀