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

Оптимизация записи и производительности запросов векторного поиска

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

Оптимизация производительности записи

  • Чтобы снизить стоимость бэкапа, отключите функцию бэкапа перед импортом данных и включите её после завершения.
  • Установить refresh_interval до 120s или более крупное значение. Более крупные сегменты могут уменьшить нагрузку на построение векторного индекса, вызванную слиянием.
  • Увеличьте значение native.vector.index_threads (значение по умолчанию равно 4) чтобы увеличить количество потоков для построения векторного индекса.
    PUT _cluster/settings
    {
    "persistent": {
    "native.vector.index_threads": 8
    }
    }

Оптимизация производительности запросов

  • После пакетного импорта данных вы можете выполнить forcemerge команду для повышения эффективности запросов.
    POST index_name/_forcemerge?max_num_segments=1
  • Если требуемая off-heap память для векторного индекса превышает лимит circuit breaker, происходит swap-in и swap-out записей индекса, что влияет на производительность запросов. В этом случае можно увеличить порог circuit breaker для off-heap памяти.
    PUT _cluster/settings
    {
    "persistent": {
    "native.cache.circuit_breaker.cpu.limit": "75%"
    }
    }
  • Чтобы получить небольшое количество полей, поддерживающих doc values, например keywords и числовые поля, используйте параметр docvalue_fields для указания полей, которые нужно получить. Это помогает уменьшить накладные расходы во время фазы fetch.
    POST my_index/_search
    {
    "size": 2,
    "stored_fields": ["_none_"],
    "docvalue_fields": ["my_label"],
    "query": {
    "vector": {
    "my_vector": {
    "vector": [1, 1],
    "topk": 2
    }
    }
    }
    }