Перейти к основному содержанию

Введение

Датасет LAION 5b содержит 5,85 миллиарда эмбеддингов пар «изображение—текст» и связанные с ними метаданные изображений. Эмбеддинги были сгенерированы с помощью модели Open AI CLIP ViT-L/14. Размерность каждого эмбеддинг-вектора — 768. Этот датасет можно использовать для моделирования вопросов проектирования, подбора размера и производительности крупномасштабного приложения векторного поиска из реального мира. Датасет можно использовать как для поиска изображений по тексту, так и для поиска изображений по изображению.

Сведения о датасете

Полный датасет доступен в виде набора файлов npy и Parquet на the-eye.eu ClickHouse также предоставил подмножество из 100 миллионов векторов в бакете S3. Бакет S3 содержит 10 файлов Parquet, каждый из которых включает 10 миллионов строк. Мы рекомендуем пользователям сначала оценить требуемые ресурсы, чтобы определить требования к хранилищу и памяти для этого датасета, обратившись к документации.

Шаги

1

Создание таблицы

Создайте таблицу laion_5b_100m для хранения эмбеддингов и связанных с ними атрибутов:
The id — это просто целое число, которое увеличивается на единицу. Дополнительные атрибуты можно использовать в предикатах, чтобы понять, как поиск по векторному сходству работает в сочетании с постфильтрацией/префильтрацией, как описано в документации
2

Загрузите данные

Чтобы загрузить данные из всех файлов Parquet, выполните следующий оператор SQL:
Загрузка 100 миллионов строк в таблицу займет несколько минут.Либо можно выполнить отдельные SQL-команды, чтобы загрузить определенное количество файлов / строк.
3

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

Поиск KNN (k ближайших соседей), или метод полного перебора, предполагает вычисление расстояния от каждого вектора в наборе данных до искомого эмбеддинг-вектора с последующей сортировкой расстояний для нахождения ближайших соседей. В качестве вектора поиска можно использовать один из векторов самого набора данных. Например:
Query
Response
Запишите задержку запроса, чтобы затем сравнить её с задержкой запроса ANN (с использованием векторного индекса). При 100 миллионах строк приведённый выше запрос без векторного индекса может занять несколько секунд или минут.
4

Создайте индекс векторного сходства

Выполните следующий SQL, чтобы задать и построить индекс векторного сходства для столбца vector таблицы laion_5b_100m:
Параметры и особенности производительности при создании индекса и выполнении поиска описаны в документации. В операторе выше для гиперпараметров HNSW M и ef_construction используются значения 64 и 512 соответственно. Вам нужно тщательно подобрать оптимальные значения этих параметров, оценивая время построения индекса и качество результатов поиска, соответствующие выбранным значениям.Построение и сохранение индекса для полного набора данных из 100 миллионов записей может занять несколько часов в зависимости от количества доступных процессорных ядер и пропускной способности хранилища.
5

Выполните ANN-поиск

После построения индекса векторного сходства запросы векторного поиска будут автоматически использовать этот индекс:
Query
Первая загрузка векторного индекса в память может занять от нескольких секунд до нескольких минут.
6

Генерация эмбеддинг-векторов для поискового запроса

Эмбеддинг-векторы набора данных LAION 5b были созданы с помощью модели OpenAI CLIP ViT-L/14.Ниже приведён пример скрипта на Python, показывающий, как программно генерировать эмбеддинг-векторы с помощью API CLIP. Затем эмбеддинг-вектор поискового запроса передаётся в качестве аргумента функции cosineDistance() в запросе SELECT.Чтобы установить пакет clip, обратитесь к репозиторию OpenAI на GitHub.
Ниже показан результат поиска, выполненного выше:
Последнее изменение 12 июня 2026 г.