Облачная платформаAdvanced

Управление кэшем векторного индекса

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Векторный поисковый движок CSS построен на C++. Он использует off-heap memory для повышения производительности и эффективности. Чтобы лучше управлять и оптимизировать кэш векторного индекса, векторная база данных CSS предоставляет ряд специализированных API, которые можно гибко использовать для мониторинга и настройки использования кэша, чтобы обеспечить стабильную производительность запросов.

Проверка статистики кэша

Используйте следующий API для проверки использования off-heap memory и получения ключевых метрик, таких как текущий объём использования off-heap memory, попадания в кэш и время загрузки данных. Эти метрики помогают понять состояние кэша, чтобы вы могли настроить кэш в зависимости от его использования. В реализации плагина векторного поиска каждый сегмент конструирует и сохраняет файл индекса. Во время запроса все эти файлы загружаются в off-heap memory, и плагин использует механизм кэша для управления off-heap memory.

GET /_vector/stats

Пример ответа:

{
"_nodes" : { # Node information
"total" : 1, # Total number of nodes
"successful" : 1, # Number of successful nodes
"failed" : 0 # Number of failed nodes
},
"cluster_name" : "css-d3a7", # Cluster name
"cpu_circuit_breaker_triggered" : false, # Whether circuit breaking is triggered
"nodes" : {
"cAHmVUZTR9ON7t6jxcDCkg" : { # Node UUID
"cpu_cache_capacity_reached" : false, # Whether the off-heap memory usage of the current node reaches the upper limit
"cpu_eviction_count" : 0, # Number of segment-level cache swap-outs on the current node
"cpu_hit_count" : 0, # Number of segment-level cache hits on the current node
"cpu_load_exception_count" : 0, # Number of segment-level index loading failures on the current node
"cpu_load_success_count" : 0, # Number of segment-level index loading successes on the current node
"cpu_miss_count" : 0, # Number of segment-level cache misses on the current node
"cpu_query_memory_usage" : 0, # Off-heap memory usage on the current node, in KB
"cpu_total_load_time" : 0 # Total segment-level index loading time on the current node, in ms
}
}
}

Предзагрузка векторных индексов

Используйте следующий API для предзагрузки указанных векторных индексов в off-heap memory. Это гарантирует, что эти индексы могут быть быстро доступны в последующих запросах, обеспечивая высокую эффективность запросов и низкую задержку.

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"
}