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


Поиск вектора вектора мозаики

В этой статье представлен обзор решения векторной базы данных Databricks, векторного поиска мозаики ИИ, включая то, что это и как это работает.

Векторный поиск мозаики ИИ — это векторная база данных, встроенная в платформу аналитики данных Databricks и интегрированная с ее средствами управления и производительности. Векторная база данных — это база данных, оптимизированная для хранения и извлечения внедренных данных. Внедрение — это математические представления семантического содержимого данных, обычно текстовые или изображения. Внедрение создается крупной языковой моделью и является ключевым компонентом многих приложений GenAI, которые зависят от поиска документов или изображений, похожих друг на друга. Примерами являются системы RAG, системы рекомендаций, а также распознавание изображений и видео.

С помощью векторного поиска в виде мозаики вы создаете индекс векторного поиска из таблицы Delta. Индекс включает внедренные данные с метаданными. Затем можно запросить индекс с помощью REST API, чтобы определить наиболее похожие векторы и вернуть связанные документы. Индекс можно структурировать для автоматической синхронизации при обновлении базовой таблицы Delta.

Как работает поиск вектора вектора мозаики?

Поиск вектора вектора мозаики использует алгоритм иерархического навигации small world (HNSW) для поиска приблизительного ближайшего соседа и метрики расстояния L2 для измерения сходства векторов. Если вы хотите использовать сходство косинуса, необходимо нормализовать внедрение точек данных, прежде чем передавать их в векторный поиск. Когда точки данных нормализуются, ранжирование, созданное на расстоянии L2, совпадает с ранжированием, генерируемым косинусом сходства.

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

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

Гибридный поиск находится в общедоступной предварительной версии. Дополнительные сведения об API см . в справочнике по пакету SDK для Python и запросе конечной точки векторного поиска.

Вычисление сходства

Вычисление сходства использует следующую формулу:

взаимное значение 1 плюс квадратное расстояние

where dist is the Euclidean distance между запросом q и записью xиндекса:

Эвцидское расстояние, квадратный корень суммы квадратных различий

Алгоритм поиска ключевых слов

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

Как объединяются поиск по подобия и поиск ключевых слов

Результаты поиска по подобия и поиска ключевых слов объединяются с помощью функции RRF.

RRF перенашивает каждый документ из каждого метода с помощью оценки:

Уравнение RRF

В приведенном выше уравнении ранг начинается с 0, суммирует оценки для каждого документа и возвращает самые высокие документы оценки.

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

Оценки нормализуются таким образом, чтобы самый высокий показатель равен 1, а наименьший показатель равен 0, используя следующее уравнение:

нормализация

Варианты предоставления векторных внедрения

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

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

    На схеме ниже показан соответствующий процесс:

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

    векторная база данных, Databricks вычисляет внедрение

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

    На схеме ниже показан соответствующий процесс:

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

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

  • Вариант 3 (прямой доступ) Предоставляет исходную таблицу Delta, содержащую предварительно вычисляемые внедрения. При обновлении таблицы Delta нет автоматической синхронизации. При изменении таблицы внедрения необходимо вручную обновить индекс с помощью REST API.

    На следующей схеме показан процесс, который совпадает с параметром 2, за исключением того, что индекс вектора не обновляется автоматически при изменении таблицы Delta:

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

Чтобы использовать векторный поиск вектора мозаики, необходимо создать следующее:

  • Конечная точка векторного поиска. Эта конечная точка служит индексу векторного поиска. Вы можете запрашивать и обновлять конечную точку с помощью REST API или пакета SDK. Конечные точки автоматически масштабируется для поддержки размера индекса или количества одновременных запросов. Инструкции см. в статье "Создание конечной точки поиска вектора".
  • Индекс векторного поиска. Индекс векторного поиска создается из таблицы Delta и оптимизирован для предоставления приблизительного ближайшего соседского поиска в режиме реального времени. Цель поиска — определить документы, аналогичные запросу. Индексы векторного поиска отображаются и управляются каталогом Unity. Инструкции см. в статье "Создание индекса векторного поиска".

Кроме того, если вы решите вычислить внедрение Databricks, можно использовать предварительно настроенную конечную точку API-интерфейсов модели Foundation или создать конечную точку обслуживания модели для обслуживания модели внедрения выбранной модели. Инструкции см . в API-интерфейсах модели модели модели для модели создания оплаты за токен или создании модели создания модели ИИ, обслуживающей конечные точки.

Чтобы запросить конечную точку обслуживания модели, используйте REST API или пакет SDK для Python. Запрос может определять фильтры на основе любого столбца в таблице Delta. Дополнительные сведения см. в разделе "Использование фильтров по запросам", справочнику по API или справочнику по пакету SDK для Python.

Требования

  • Рабочая область с поддержкой каталога Unity.
  • Бессерверные вычисления включены.
  • Исходная таблица должна быть включена в канале измененных данных.
  • Создание привилегий TABLE для схем каталога для создания индексов.
  • Личные маркеры доступа включены.

Защита данных и проверка подлинности

Databricks реализует следующие элементы управления безопасностью для защиты данных:

  • Каждый запрос клиента к поиску вектора Вектора ИИ Мозаики логически изолирован, прошел проверку подлинности и авторизован.
  • Поиск вектора вектора мозаики шифрует все неактивных данных (AES-256) и передает (TLS 1.2+).

Векторный поиск мозаики ИИ поддерживает два режима проверки подлинности:

  • Личный маркер доступа . Вы можете использовать личный маркер доступа для проверки подлинности с помощью векторного поиска Мозаики ИИ. См . маркер проверки подлинности личного доступа. Если вы используете пакет SDK в среде записной книжки, он автоматически создает маркер PAT для проверки подлинности.
  • Токен субъекта-службы— администратор может создать токен субъекта-службы и передать его в пакет SDK или API. См. сведения об использовании субъектов-служб. Для рабочих вариантов использования Databricks рекомендует использовать токен субъекта-службы.

Управляемые клиентом ключи (CMK) поддерживаются в конечных точках, созданных 8 мая 2024 г. или после 8 мая 2024 г.

Отслеживание использования и затрат

Оплачиваемая система использования позволяет отслеживать использование и затраты, связанные с индексами и конечными точками векторного поиска. Вот пример запроса:

SELECT *
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
  AND usage_metadata.endpoint_name IS NOT NULL

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

Векторный поиск системных таблиц запрашивает записную книжку

Получить записную книжку

Ограничения размера ресурсов и данных

В следующей таблице перечислены ограничения размера ресурсов и данных для конечных точек и индексов векторного поиска:

Ресурс Степень детализации Лимит
Конечные точки поиска векторов На рабочую область 100
Внедрение На конечную точку 100 000 000
Измерение внедрения На индекс 4096
Индексы На конечную точку 20
Столбцы На индекс 20
Столбцы Поддерживаемые типы: Байт, короткое, целое число, длинное, плавающее, двойное, логическое значение, строка, метка времени, дата
Поля метаданных На индекс 20
Имя индекса На индекс 128 символов

Следующие ограничения применяются к созданию и обновлению индексов векторного поиска:

Ресурс Степень детализации Лимит
Размер строки для индекса разностной синхронизации На индекс 100 КБ
Внедрение размера исходного столбца для индекса Delta Sync На индекс 32764 байта
Ограничение размера запроса массового upsert для индекса Direct Vector На индекс 10 МБ
Ограничение размера запроса массового удаления для индекса Direct Vector На индекс 10 МБ

Следующие ограничения применяются к API запросов.

Ресурс Степень детализации Лимит
Длина текста запроса Для каждого запроса 32764
Максимальное количество возвращаемых результатов Для каждого запроса 10,000

Ограничения

  • PrivateLink в настоящее время ограничен выбранным набором клиентов. Если вы хотите использовать функцию с PrivateLink, обратитесь к представителю учетной записи Databricks.
  • Регулируемые рабочие области не поддерживаются, поэтому эта функция не соответствует требованиям HIPAA.
  • Разрешения на уровне строк и столбцов не поддерживаются. Однако вы можете реализовать собственные списки управления доступом на уровне приложения с помощью API фильтра.

Дополнительные ресурсы