[IND] 4 分鐘閱讀OraCore 編輯部

OpenSearch 向量搜尋基準的 5 種跑法

5 種 OpenSearch 向量搜尋基準跑法,從免訓練索引、只測寫入,到 Serverless、force merge 與搜尋壓測。

分享 LinkedIn
OpenSearch 向量搜尋基準的 5 種跑法

OpenSearch 向量搜尋要怎麼做基準測試,才不必每次都重建索引?

這篇整理 OpenSearch 向量搜尋的 5 種基準流程,幫你分清索引、訓練、合併和搜尋該測哪一段。

項目測什麼關鍵限制
No-train索引與搜尋適用不需要訓練的方法
No-train index only只測寫入不包含搜尋
Amazon OpenSearch ServerlessServerless 向量集合不做 refresh 與 warmup
Force merge段合併成本大資料集可能很貴
Search既有索引的查詢表現包含 warmup

1. No-train test:免訓練的標準起點

訂閱 AI 趨勢週報

每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。

不會寄垃圾信,隨時可取消。

這一項適合不需要訓練階段的向量方法。你可以直接定義 engine、space type 和其他方法參數,再看索引與查詢在負載下的表現。

OpenSearch 向量搜尋基準的 5 種跑法

如果你的目標是比較不同配置,而不是先花時間訓練模型,這就是最省事的入口。它也支援 HDF5 和 BIG-ANN 格式,方便重複使用同一批資料。

  • 適合直接建立索引的方法
  • 可比較 engine 與 space type
  • 支援 HDF5、BIG-ANN 資料集

2. No-train index only:只看寫入速度

這個變體把搜尋拿掉,專心看 ingestion。若你的問題是「這個向量索引到底建得多快」,它比完整流程更容易讀出答案

它特別適合 bulk load 調校、shard 大小測試,或不同 client 數量的實驗。相關參數像 target_index_bulk_sizetarget_index_bulk_index_clientstarget_index_dimension,都能直接控制寫入路徑。

target_index_bulk_size: 1000 target_index_bulk_index_clients: 4 target_index_dimension: 768

3. Amazon OpenSearch Serverless:對準受限環境

這個版本是給 Amazon OpenSearch Serverless 的向量搜尋集合用的。概念上仍是 no-train,但流程要跟 Serverless 的能力範圍對齊。

OpenSearch 向量搜尋基準的 5 種跑法

最重要的差異是它不包含 refresh 和 warmup,因為這些操作不支援用在向量搜尋集合上。若你要驗證的是 Serverless 部署,這種測法才不會把平台做不到的步驟算進去。

  • 只用於 Serverless 向量集合
  • 不做 refresh
  • 不做 warmup

4. Force merge:看段合併代價

force merge 的重點是把向量索引壓到目標 segment 數,觀察合併成本。對大資料集來說,這一步可能很重,所以不適合硬塞進每一次基準流程。

如果你想知道段數縮減後,對後續搜尋或儲存佈局有什麼影響,這一項就很有用。文件把 target_index_max_num_segmentstarget_index_force_merge_timeout 都列得很清楚,方便你控制目標與等待時間。

  • 先壓 segment,再看後續效果
  • 適合維運或容量評估
  • 大資料集成本可能很高

5. Search:直接量查詢表現

search 程序是拿已建立好的向量索引來測查詢。這樣可以避開重建索引的時間,特別適合資料量大、載入成本高的情境。

它還會包含 warmup,讓結果更接近穩態查詢表現。文件示例顯示 prod-queries 的 median latency 為 3.43393 ms,mean throughput 為 213.85 ops/s,已經能看出它能量化到什麼程度。

query_k: 10 search_clients: 8 target_throughput: 10 time_period: 900

哪種適合你

如果你的方法不需要訓練,而且想先做一個通用比較,選 no-train。若你只想知道寫入有多快,就用 no-train index only;若你在驗證 Serverless 部署,則選 Amazon OpenSearch Serverless。

要看段合併成本就跑 force merge;如果索引已經存在,重點是查詢延遲或吞吐,search 最省時間,也最接近真實使用情境。