Введение
Open AI CLIP ViT-L/14. Размерность каждого эмбеддинг-вектора — 768.
Этот датасет можно использовать для моделирования вопросов проектирования, подбора размера и производительности
крупномасштабного приложения векторного поиска из реального мира. Датасет можно использовать как для поиска
изображений по тексту, так и для поиска изображений по изображению.
Сведения о датасете
S3.
Подмножество хранится в одном файле Parquet.
Мы рекомендуем пользователям сначала оценить требуемые ресурсы, чтобы определить требования к хранилищу и памяти для этого датасета, обратившись к документации.
Шаги
1
Создать таблицу
Создайте таблицу
laion_5b_10m для хранения эмбеддингов и связанных с ними атрибутов:id — это просто последовательное целое число. Дополнительные атрибуты можно использовать в предикатах, чтобы изучить
поиск по сходству векторов в сочетании с постфильтрацией/префильтрацией, как описано в документации2
Загрузить данные
Чтобы загрузить набор данных, выполните следующий SQL-запрос:Загрузка 10 миллионов строк в таблицу займет несколько минут.
3
Выполните поиск векторного сходства полным перебором
Поиск методом k ближайших соседей (KNN) или полный перебор предполагает вычисление расстояния от каждого вектора в наборе данных
до поискового эмбеддинг-вектора с последующей сортировкой расстояний для определения ближайших соседей. В качестве поискового вектора можно использовать один из векторов
самого набора данных. Например:Зафиксируйте время выполнения запроса, чтобы затем сравнить его со временем выполнения ANN-запроса (с использованием векторного индекса).
На 10 миллионах строк выполнение приведённого выше запроса без векторного индекса может занять от нескольких секунд до нескольких минут.
Query
4
Создайте индекс векторного сходства
Выполните следующий SQL-запрос, чтобы создать и построить индекс векторного сходства для столбца Параметры и особенности производительности при создании индекса и поиске по нему описаны в документации.
В приведённом выше операторе для гиперпараметров HNSW
vector таблицы laion_5b_10m:M и ef_construction используются значения 64 и 512 соответственно.
Необходимо тщательно подобрать оптимальные значения этих параметров, оценивая время построения индекса и качество результатов поиска,
соответствующие выбранным значениям.Построение и сохранение индекса для подмножества из 10 миллионов строк может занять значительное время в зависимости от количества доступных ядер CPU и пропускной способности хранилища.5
Выполните ANN-поиск
После создания индекса векторного сходства запросы векторного поиска будут автоматически использовать его:Первоначальная загрузка векторного индекса в память может занять от нескольких секунд до нескольких минут.
Query
6
Создайте эмбеддинги для поискового запроса
Эмбеддинг-векторы набора данных Результат поиска показан ниже:
LAION 5b были сгенерированы с использованием модели OpenAI CLIP ViT-L/14.Ниже приведён пример скрипта на Python, показывающий, как программно генерировать
эмбеддинг-векторы с помощью API CLIP. Затем поисковый эмбеддинг-вектор
передаётся в качестве аргумента функции cosineDistance() в SELECT-запросе.Чтобы установить пакет clip, обратитесь к репозиторию OpenAI на GitHub.