Поделиться через


Точный поиск ближайшего соседа (ENN) для точного извлечения

Точный ближайший векторный поиск (ENN) выполняет исчерпывающий расчет расстояния по всем индексированных векторов, чтобы гарантировать получение ближайших соседей на основе указанной метрики расстояния. ENN поддерживается на всех уровнях кластера без дополнительных затрат и не требует регистрации.

Поиск векторов ENN проводит комплексное сравнение между вектором запроса и каждым вектором в наборе данных. Этот подход обеспечивает следующее:

  • Гарантированная точность: извлекает истинные ближайшие соседи в зависимости от выбранной метрики расстояния (например, евклидово расстояние, косинусное сходство).
  • Увеличение вычислительной нагрузки: из-за его исчерпывающей природы ENN является более ресурсоемким и может привести к увеличению времени запроса, особенно с большими наборами данных.

И наоборот, поиск приблизительного ближайшего соседа (ANN) использует такие методы индексирования , как иерархический навигационно-малый мир (HNSW), инвертируемый файл (IVF) или DiskANN для ускорения поиска. Хотя ANN предлагает более быстрое время отклика и более высокую масштабируемость, она не всегда может возвращать абсолютные ближайшие соседи.

Рекомендуется использовать векторный поиск ENN в следующих сценариях:

  • Требования к высокой точности. Для приложений, где точные результаты top-k критически важны, например конфиденциальные системы рекомендаций или научные исследования, ENN обеспечивает максимальную точность.
  • Размер управляемого набора данных: при работе с меньшими наборами данных или при менее строгих ограничениях производительности можно использовать исчерпывающий характер ENN.
  • Фильтрация с низкой селективностью: при применении фильтров, которые приводят к относительно небольшому подмножеству данных, ENN может эффективно выполнять полные сравнения в этом подмножестве.

Например, в большом наборе данных, содержащем миллионы документов, классифицированных клиентами, выполнение векторного поиска в определенном клиенте (в составе нескольких тысяч векторов) может эффективно обрабатываться ENN.

Перед использованием векторного поиска ENN убедитесь, что для соответствующего пути создается векторный индекс (например, IVF, HNSW, DiskANN). Если индекс вектора уже существует, при переключении между методами поиска его не требуется перестраивать, так как ENN используется независимо от этих индексов во время выполнения запроса.

Чтобы включить ENN, задайте "exact": true в запросе. Рассмотрим пример.

{
  "$search": {
    "cosmosSearch": {
      "path": "myVectorField",
      "exact": true,               // Enables ENN
      "query": [0.2, 0.4, 0.9],    // Query vector
      "k": 10,                     // Number of results to return
      "filter": {
        "tenant_id": { "$eq": "tenant123" }
      }
    }
  }
}

Объединение векторного поиска ENN с фильтрами

Поиск вектора ENN можно объединить с атрибутами или геопространственных фильтрами, чтобы сузить область поиска до определенного подмножества данных. После применения фильтра поисковая система выполняет исчерпывающие вычисления расстояния в отфильтрованном подмножестве, возвращая ближайшие соседи top-k, соответствующие критериям фильтра.

Сценарий использования

Клиент поддерживает коллекцию примерно 300 000 документов, каждая из которых содержит векторное поле, tenant_id поле (представляющее тысячи клиентов) и другие атрибуты. Они заметили, что поиск вектора ANN с фильтром tenant_id был медленным.

Переключившись на векторный поиск ENN при сохранении того же фильтра, клиент достиг 50% улучшения производительности запросов и достиг 100% точности отзыва.

FAQs

Как ENN работает на больших масштабах?

  • Производительность больших наборов данных: ENN может быть медленнее для больших наборов данных без выборочной фильтрации из-за необходимости оценки каждого вектора.
  • Более высокая стоимость вычислений: ENN включает сравнение вектора запроса со всеми (или отфильтрованными) векторами, что приводит к увеличению использования ресурсов для большого набора данных.

ANN и ENN: Что такое разница?

  • Точный ближайший векторный поиск (ENN) предлагает 100% точность путем исчерпывающего сравнения вектора запроса со всеми индексированных векторов, что делает его подходящим для приложений, требующих точных результатов, или при работе с меньшими наборами данных или фильтруемыми подмножествами.
  • Приблизительный поиск ближайшего соседа (ANN) использует специализированные методы индексирования для обеспечения более быстрых ответов и повышения масштабируемости для больших наборов данных, хотя он может немного компрометировать точность.

Следующий шаг