Введение
384.
Этот датасет можно использовать, чтобы на практике разобраться в вопросах проектирования, сайзинга и производительности крупномасштабного
реального приложения для векторного поиска, построенного на основе пользовательских текстовых данных.
Подробности о датасете
Parquet, размещённого в S3 бакете
Мы рекомендуем сначала оценить размер датасета, чтобы определить требования к хранилищу и памяти, ориентируясь на документацию.
Шаги
Создание таблицы
Создайте таблицуhackernews для хранения публикаций, их эмбеддингов & связанных с ними атрибутов:id — это просто последовательно увеличивающееся целое число. Дополнительные атрибуты можно использовать в предикатах, чтобы разобраться,
как поиск векторов по сходству сочетается с постфильтрацией/префильтрацией, как описано в документацииЗагрузка данных
Чтобы загрузить данные из файла в форматеParquet, выполните следующий оператор SQL:Создайте индекс векторного сходства
Выполните следующий SQL-запрос, чтобы определить и создать индекс векторного сходства на столбцеvector таблицы hackernews:M и ef_construction.
Вам нужно тщательно подобрать оптимальные значения этих параметров, оценивая время построения индекса и качество результатов поиска,
соответствующие выбранным значениям.Построение и сохранение индекса для полного набора данных из 28,74 млн записей может занять от нескольких минут до часа — в зависимости от количества доступных ядер CPU и пропускной способности хранилища.Выполните ANN-поиск
После построения индекса векторного сходства запросы векторного поиска будут автоматически использовать этот индекс:Query
Генерация эмбеддингов для поискового запроса
Sentence Transformers — это локальные, простые в использовании модели векторных представлений для захвата семантического смысла предложений и абзацев.Этот набор данных HackerNews содержит векторные эмбеддинги, сгенерированные моделью all-MiniLM-L6-v2.Ниже приведён пример Python-скрипта, демонстрирующего программную генерацию эмбеддинг-векторов с помощью пакетаsentence_transformers для Python. Полученный эмбеддинг-вектор поиска затем передаётся как аргумент функции cosineDistance() в запросе `SELECT`.Демонстрационное приложение для суммаризации
В примере выше были показаны семантический поиск и извлечение документов с помощью ClickHouse.Далее представлен очень простой, но перспективный пример приложения на основе генеративного ИИ.Приложение выполняет следующие действия:- Принимает от пользователя топик в качестве входных данных
- Создает эмбеддинг-вектор для темы с помощью
SentenceTransformersи моделиall-MiniLM-L6-v2 - Извлекает наиболее релевантные посты/комментарии с помощью поиска по векторному сходству в таблице
hackernews - Использует
LangChainи Chat API OpenAIgpt-3.5-turbo, чтобы кратко изложить содержимое, полученное на шаге #3. Посты/комментарии, полученные на шаге #3, передаются в Chat API как контекст и служат ключевым связующим звеном в Generative AI.
OPENAI_API_KEY. API-ключ OpenAI можно получить после регистрации на https://platform.openai.com.Данное приложение демонстрирует сценарий использования Generative AI, применимый в различных корпоративных областях, таких как:
анализ тональности обращений клиентов, автоматизация технической поддержки, анализ диалогов пользователей, юридические документы, медицинские записи,
транскрипты совещаний, финансовая отчётность и т. д.