Общие сведения о семантическом поиске

Завершено

Давайте рассмотрим основы семантического поиска:

  • Как это отличается от стандартного лексического поиска.
  • Что такое внедрение вектора?
  • Что делают векторные базы данных?

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

Лексический поиск можно дополнить нечетким сопоставлением; например, запрос "свет" может по-прежнему соответствовать тексту "яркий свет" или ошибочному lihgts, из-за отличия в одном символе (отсутствует s, или перестановка g и h). Хотя нечеткое сопоставление и другие методы, такие как стемминг, полезны, этот метод должен соответствовать синонимам или семантически сходным языковым элементам: различные выражения, сленг, техническая лексика и т. д. Чтобы предоставить наиболее релевантные результаты с лексическим поиском, авторам необходимо внедрять ключевые слова в метаданные или сам текст (что может создавать неловкость для пользователей).

Введите семантический поиск. Семантический поиск не использует сходство символов. Вместо этого он использует числовые представления понятий в словах и фразах. Эти числовые представления называются векторами внедрения или просто векторами.

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

Чтобы выполнить семантический поиск, сначала создайте вектор внедрения запроса. Затем сравните этот вектор с базой данных векторов. Векторы вложений, наиболее близкие к вектору запроса, являются документами, наиболее семантически похожими на запрос.

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

Схема, показывающая документ и запрос, проходящие через API Эмбеддингов OpenAI, чтобы преобразоваться в векторы эмбеддингов. Затем эти векторы сравниваются путем косинусного расстояния.

Встраивания

Внедрение — это числовое представление семантики. Векторы внедрения представляются в виде n-мерных векторов: массивов n чисел. Каждое измерение представляет некоторое семантическое качество, определяемое моделью внедрения.

Схема, на которой отображается входной текст lorem ipsum, отправляемый в API внедрения Azure OpenAI, что приводит к массиву векторов чисел.

Если два векторных встраивания направлены в схожие стороны, они представляют схожие понятия, такие как "яркий" и "солнечный". Если они расходятся, они представляют противоположные понятия, такие как "грустный" и "счастливый". Структура модели встраивания и обучающие данные определяют, что считается похожим и разным.

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

Числовое сходство двух n-мерных векторов v1 и v2 определяется их скалярным произведением, обозначается v1·v2. Чтобы вычислить скалярное произведение, умножьте значения каждого измерения парно, а затем суммируйте результат.

dot_product(v1, v2) = SUM(
 v1[0] * v2[0],
 v1[1] * v2[1],
 ...,
 v1[n-1] * v2[n-1],
 v1[n] * v2[n]
)

Так как внедренные векторы являются единичными векторами (векторы длины один), скалярное произведение равно косинусному сходству, которое принимает значения от -1 (точно противоположные направления) до 1 (точно то же направление). Векторы, у которых косинусное сходство равно нулю, являются ортогональными: семантически несвязанные.

Вы можете визуализировать n-мерные пространства, проецируя их в трехмерное пространство с помощью анализа основных компонентов (PCA). PCA — это стандартный метод для уменьшения размеров векторов. Результатом является упрощенная визуализируемая проекция n-размерного пространства. Визуализация векторов документов таким образом покажет, что более похожие документы группируются в кластеры, в то время как более отличающиеся документы находятся дальше.

Учитывая эти определения, выполнение семантического поиска запроса по коллекции векторных представлений документов легко осуществляется математически.

  1. Создайте встраивание запроса с помощью языковой модели.
  2. Возьмите скалярное произведение векторов запроса с предварительно вычисленными векторами каждого документа.
  3. Сортировка точечных продуктов, чисел от -1 до 1.
  4. Наиболее релевантные (семантически аналогичные) документы имеют самые высокие оценки, а наименее релевантные (семантически разные) документы имеют самые низкие оценки.

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

Векторные базы данных

База данных векторов оптимизирует хранение и вычисление многомерных векторов, таких как встраивания. В частности, векторные базы данных обеспечивают быстрые и точные вычисления dot-product для выполнения запроса сходства векторов.

Поиск по сходству векторов имеет несколько вариантов использования:

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

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

Существует множество собственных векторных баз данных и расширений баз данных для выбора. Следующие службы Azure помогут вам удовлетворить потребности векторной базы данных: