更新时间:2025-07-29 GMT+08:00

管理向量索引缓存

CSS向量检索引擎基于C++构建,采用堆外内存技术以提升性能和效率。为更好地管理和优化向量索引缓存,CSS向量数据库提供了一系列专用接口,使用户能够灵活地监控和调整缓存使用情况,从而确保查询性能的稳定性和可靠性。

查看缓存统计信息

通过下面的API检索堆外内存的使用情况,返回当前堆外内存的使用量、缓存命中次数、加载次数等关键指标。这些数据有助于用户了解缓存的运行状态,并根据实际使用情况进行调整。在向量检索插件的实现中,每个segment都会构造并存储一份索引文件,查询时这些文件会被加载到堆外内存中,而插件通过缓存机制对这些内存进行有效管理。

GET /_vector/stats

返回示例:

{
  "_nodes" : {  		# 节点信息
    "total" : 1, 		# 总节点数
    "successful" : 1,  	        # 成功返回节点数
    "failed" : 0  		# 执行失败节点数
  },
  "cluster_name" : "css-d3a7", 			# 集群名称
  "cpu_circuit_breaker_triggered" : false, 	# 是否已触发写入熔断
  "nodes" : {
    "cAHmVUZTR9ON7t6jxcDCkg" : {  		# 节点UUID
      "cpu_cache_capacity_reached" : false,     # 当前节点的堆外内存是否达到使用上限
      "cpu_eviction_count" : 0,  		# 当前节点segment级别缓存换出次数
      "cpu_hit_count" : 0,  			# 当前节点segment级别缓存命中次数
      "cpu_load_exception_count" : 0,  		# 当前节点segment级别索引加载异常次数
      "cpu_load_success_count" : 0,  		# 当前节点segment级别索引加载正常次数
      "cpu_miss_count" : 0,   			# 当前节点segment级别索引缓存未命中次数
      "cpu_query_memory_usage" : 0,  		# 当前节点堆外内存使用量,单位为KB
      "cpu_total_load_time" : 0  		# 当前节点segment级别索引加载总耗时,单位为ms
    }
  }
}

预加载向量索引

通过下面的API可以将指定索引的向量索引预先加载到堆外内存中。这一操作能够确保在后续查询中,这些索引可以被快速访问和使用,从而提高查询效率,减少查询延迟。

PUT /_vector/warmup/{index_name}

{index_name}为指定索引名称。

返回示例:

{
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  }
}

清除缓存

当向量索引的总大小超过缓存限制时,系统会自动执行索引项的换进换出操作。然而,这种频繁的换进换出可能会影响集群的查询性能。通过下面的API可以手动清除不再使用的索引缓存,有助于释放堆外内存资源,确保热数据索引的查询性能不受影响。

  • 清除全量索引缓存
    PUT /_vector/clear/cache 
  • 清除指定索引缓存
    PUT /_vector/clear/cache/{index_name}

返回示例:

{
  "acknowledged" : "true"
}