向量檢索的性能調優
更新時間 2023-12-10 22:59:27
最近更新時間: 2023-12-10 22:59:27
分享文章
本章節主要介紹向量檢索的性能調優。
寫入性能優化
-
關閉副本,待數據導入完成后再開啟副本,減少副本構建的開銷。
-
調整“refresh_interval”為120s或者更大,避免頻繁刷新索引生成大量小的segments,同時減少merge帶來的向量索引構建開銷。
-
適當調大“native.vector.index_threads”的值(默認為4),增加向量索引構建的線程數。
PUT _cluster/settings
{
"persistent": {
"native.vector.index_threads": 8
}
}
查詢性能優化
- 在批量導入場景下,數據寫入完成后,執行forcemerge操作能有效提升查詢效率。
POST index_name/_forcemerge?max_num_segments=1
- 如果向量索引所需外內存超過了熔斷線,查詢時索引的緩存管理器會控制索引的換進換出,導致查詢變慢,此時可適當調大熔斷線的配置。
PUT _cluster/settings
{
"persistent": {
"native.cache.circuit_breaker.cpu.limit": "75%"
}
}
- 如果端到端時延明顯大于返回結果中的took值,說明查詢的fetch階段開銷較大,可通過配置“_source”減小fdt文件的大小,從而降低fetch開銷。
PUT my_index
{
"settings": {
"index": {
"vector": "true"
},
"index.soft_deletes.enabled": false
},
"mappings": {
"_source": {
"excludes": ["my_vector"]
},
"properties": {
"my_vector": {
"type": "vector",
"dimension": 128,
"indexing": true,
"algorithm": "GRAPH",
"metric": "euclidean"
}
}
}
}