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


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

В этой статье представлен обзор решения векторной базы данных 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. Индекс разностной синхронизации с внедрениями, вычисляемыми Databricks , предоставляет исходную таблицу Delta, содержащую данные в текстовом формате. Databricks вычисляет внедрение, используя указанную модель и при необходимости сохраняет внедренные в таблицу в каталоге Unity. По мере обновления таблицы Delta индекс остается синхронизированным с таблицей Delta.

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

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

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

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

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

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

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

  • Вариант 3. Индекс прямого векторного доступа необходимо вручную обновить индекс с помощью REST API при изменении таблицы внедрения.

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

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

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

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

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

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

Требования

Разрешение на создание конечных точек поиска векторов и управление ими настраивается с помощью списков управления доступом. См . списки управления доступом к конечным точкам поиска вектора.

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

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

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

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

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

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

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

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

WITH all_vector_search_usage (
  SELECT *,
         CASE WHEN usage_metadata.endpoint_name IS NULL
              THEN 'ingest'
              ELSE 'serving'
        END as workload_type
    FROM system.billing.usage
   WHERE billing_origin_product = 'VECTOR_SEARCH'
),
daily_dbus AS (
  SELECT workspace_id,
       cloud,
       usage_date,
       workload_type,
       usage_metadata.endpoint_name as vector_search_endpoint,
       SUM(usage_quantity) as dbus
 FROM all_vector_search_usage
 GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus

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

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

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

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

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

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

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

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

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

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

Ограничения

  • Разрешения на уровне строк и столбцов не поддерживаются. Однако вы можете реализовать собственные списки управления доступом на уровне приложения с помощью API фильтра.

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