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


Релевантность в векторном поиске

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

В этой статье описываются алгоритмы, используемые для поиска соответствующих совпадений и метрик сходства, используемых для оценки. Он также предлагает советы по улучшению релевантности, если результаты поиска не соответствуют ожиданиям.

Векторные алгоритмы поиска включают:

Для поиска и оценки используются только поля векторов, помеченные как searchable в индексе или searchFields запросе.

О исчерпывающем KNN

Исчерпывающий KNN вычисляет расстояния между всеми парами точек данных и находит точные k ближайшие соседи для точки запроса. Так как алгоритм не требует быстрого случайного доступа к точкам данных, KNN не потребляет квоту размера векторного индекса . Однако он предоставляет глобальный набор ближайших соседей.

Исчерпывающий KNN является вычислительным ресурсоемким, поэтому используйте его для небольших и средних наборов данных или когда потребность в точности перевешивает потребность в производительности запросов. Другим вариантом использования является создание набора данных для оценки полноты алгоритма ANN, так как исчерпывающий KNN можно использовать для создания эталонного набора данных для ближайших соседей.

Сведения о HNSW

HNSW — это алгоритм ANN, оптимизированный для приложений с высокой точностью и низкой задержкой, с неизвестным или изменчивым распределением данных. Во время индексирования HNSW создает дополнительные структуры данных, которые упорядочивают точки данных в иерархическом графе. Во время выполнения запроса HNSW проходит по этому графику, чтобы найти наиболее релевантные совпадения, что позволяет эффективно выполнять поиск ближайших соседей.

HNSW требует, чтобы все точки данных располагались в памяти для быстрого случайного доступа, который использует квоту размера векторного индекса . Эта конструкция балансирует точность поиска с эффективностью вычислений и делает HNSW подходящим для большинства сценариев, особенно при поиске по большим наборам данных.

HNSW предлагает несколько настраиваемых параметров конфигурации для оптимизации пропускной способности, задержки и отзыва для приложения поиска. Например, поля, которые указывают HNSW, также поддерживают полный KNN с помощью параметра запроса"exhaustive": true. Однако поля, индексированные для exhaustiveKnn, не поддерживают запросы HNSW, поскольку отсутствуют дополнительные структуры данных, позволяющие осуществлять эффективный поиск.

О ANN

ANN — это класс алгоритмов для поиска совпадений в векторном пространстве. Этот класс алгоритмов использует различные структуры данных или методы секционирования данных, чтобы значительно сократить пространство поиска и ускорить обработку запросов.

Алгоритмы ANN жертвуют некоторой точностью, но предлагают масштабируемое и быстрое получение приблизительных ближайших соседей, что делает их идеальными для балансировки точности и эффективности в современных приложениях получения информации. Вы можете настроить параметры алгоритма, чтобы точно настроить требования к памяти, задержке, памяти и объему дискового пространства приложения поиска.

Поиск ИИ Azure использует HNSW для алгоритма ANN.

Как работает ближайший поиск соседей

Векторные запросы выполняются для пространства внедрения, состоящего из векторов, созданных из той же модели внедрения. Как правило, входное значение в запросе отправляется в ту же модель машинного обучения, которая вызвала внедрение в векторный индекс. Выходные данные — это вектор в том же пространстве внедрения. Так как аналогичные векторы кластеризованы близко друг к другу, поиск совпадений эквивалентен поиску векторов, ближайших к вектору запроса, и возврату связанных документов в качестве результата поиска.

Например, если запрос запроса относится к отелям, модель сопоставляет запрос с вектором, который существует где-то в кластере векторов, представляющих документы о отелях. Определение векторов, которые наиболее похожи на запрос, на основе метрики сходства, определяет, какие документы наиболее релевантны.

Если векторные поля индексируются для исчерпывающего KNN, запрос выполняется по отношению ко всем соседям. Для полей, индексированных для HNSW, поисковая система использует граф HNSW для поиска по подмножествам узлов в векторном индексе.

Создание графа HNSW

Во время индексирования служба поиска создает граф HNSW. Цель индексирования нового вектора в граф HNSW — добавить его в структуру графа таким образом, чтобы обеспечить эффективный поиск ближайших соседей. Этот процесс состоит из следующих шагов.

  1. Инициализация: начните с пустого графа HNSW или существующего графа HNSW, если он не является новым индексом.

  2. Точка входа: это верхний уровень иерархического графа и служит отправной точкой для индексирования.

  3. Добавление к графу: различные иерархические уровни представляют различные детализирований графа, а более высокие уровни являются более глобальными, а более низкие уровни более детализированные. Каждый узел в графе представляет точку вектора.

    • Каждый узел подключен к m соседям, расположенным рядом. Это m параметр.

    • Число точек данных, которые считаются кандидатами, регулируется параметром efConstruction . Этот динамический список формирует набор ближайших точек в существующем графе для алгоритма, который следует учитывать. Более efConstruction высокие значения приводят к рассмотрению большего количества узлов, что часто приводит к более плотным локальным кварталам для каждого вектора.

    • Эти подключения используют настроенную сходство metric для определения расстояния. Некоторые подключения являются "длинным расстоянием", которые подключаются между разными иерархическими уровнями, создавая ярлыки в графе, которые повышают эффективность поиска.

  4. Очистка графа и оптимизация. Это может произойти после индексирования всех векторов, а также повышает удобство навигации и эффективность графа HNSW.

Векторный запрос перемещает иерархическую структуру графа для проверки совпадений. Ниже приведены инструкции, описанные в процессе.

  1. Инициализация: алгоритм инициирует поиск на верхнем уровне иерархического графа. Эта точка входа содержит набор векторов, которые служат начальными точками поиска.

  2. Обход. Далее он проходит по уровню графа, переходя от верхнего уровня к более низким уровням, выбирая узлы-кандидаты, которые ближе к вектору запроса на основе настроенной метрики расстояния, например сходства косинуса.

  3. Обрезка: чтобы повысить эффективность, алгоритм обрезает пространство поиска, рассматривая только узлы, которые, скорее всего, содержат ближайшие соседи. Это достигается путем поддержания очереди приоритетов потенциальных кандидатов и обновления ее по мере выполнения поиска. Длина этой очереди настраивается параметром efSearch.

  4. Уточнение. По мере перемещения алгоритма на более низкий, более детализированный уровень HNSW рассматривает больше соседей рядом с запросом, что позволяет уточнять набор векторов кандидатов, повышая точность.

  5. Завершение: поиск завершается, когда нужное число ближайших соседей было идентифицировано или когда выполняются другие условия остановки. Это требуемое число ближайших соседей регулируется параметром kвремени запроса.

Метрики сходства, используемые для измерения близости

Алгоритм находит векторы кандидатов для оценки сходства. Для выполнения этой задачи вычисление метрик сходства сравнивает вектор кандидата с вектором запроса и измеряет сходство. Алгоритм отслеживает упорядоченный набор наиболее похожих векторов, найденных его, который формирует ранжированный результирующий набор, когда алгоритм достиг завершения.

Метрическая Описание
cosine Эта метрика измеряет угол между двумя векторами и не влияет на разные длины векторов. Математически он вычисляет угол между двумя векторами. Cosine — это метрика сходства, используемая моделями внедрения Azure OpenAI, поэтому если вы используете Azure OpenAI, укажите cosine в конфигурации вектора.
dotProduct Эта метрика измеряет длину каждой пары двух векторов и угол между ними. Математически он вычисляет продукты величин векторов и угол между ними. Для нормализованных векторов это идентично сходству cosine , но немного более эффективно.
euclidean (также известный как l2 norm) Эта метрика измеряет длину векторной разницы между двумя векторами. Математически он вычисляет расстояние Евклиида между двумя векторами, что является нормой l2 разницы двух векторов.

Примечание.

При параллельном выполнении двух или нескольких векторных запросов или при гибридном поиске, объединяющем векторные и текстовые запросы в одном запросе, для оценки конечных результатов поиска используется взаимодействие с обратным рангом Fusion (RRF ).

Оценки в результатах векторного поиска

Оценки вычисляются и назначаются каждому совпадению, при этом самые высокие совпадения возвращаются в виде k результатов. Свойство @search.score содержит оценку. В следующей таблице показан диапазон, в пределах которого будет падать оценка.

Метод поиска Параметр Метрика оценки Диапазон
векторный поиск @search.score Косинус 0.333 - 1.00

Дляcosine метрик важно отметить, что вычисляемое @search.score значение не является косинусным значением между вектором запроса и векторами документов. Вместо этого поиск ИИ Azure применяет преобразования, такие как функция оценки монотонно уменьшается, то есть значения оценки всегда будут уменьшаться, так как сходство становится хуже. Это преобразование гарантирует, что оценки поиска доступны для ранжирования.

Существуют некоторые нюансы с оценками сходства:

  • Косинус сходство определяется как косинус угла между двумя векторами.
  • Косинус расстояние определяется как 1 - cosine_similarity.

Чтобы создать монотонную функцию уменьшения, @search.score определяется как 1 / (1 + cosine_distance).

Разработчики, которым требуется косинусное значение вместо искусственного значения, могут использовать формулу для преобразования оценки поиска обратно в косинус расстояние:

double ScoreToSimilarity(double score)
{
    double cosineDistance = (1 - score) / score;
    return  -cosineDistance + 1;
}

Наличие исходного значения косинуса может быть полезно в пользовательских решениях, которые настраивают пороговые значения для обрезки результатов низкого качества.

Советы по настройке релевантности

Если вы не получаете соответствующие результаты, поэкспериментируйте с изменениями конфигурации запросов. Для векторных запросов нет конкретных функций настройки, таких как профиль оценки или поле или повышение терминов:

  • Экспериментируйте с размером блока и перекрытием. Попробуйте увеличить размер блока и обеспечить достаточное перекрытие для сохранения контекста или непрерывности между блоками.

  • Для HNSW попробуйте изменить внутренний efConstruction состав графа близкого взаимодействия. Значение по умолчанию — 400. Диапазон составляет от 100 до 1000.

  • Увеличьте k результаты для отправки дополнительных результатов поиска в модель чата, если вы используете его.

  • Попробуйте использовать гибридные запросы с семантической ранжированием. В тестовом тестировании эта комбинация последовательно создает наиболее релевантные результаты.

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