О чём урок
Языковые модели дают компьютерам возможность искать по смыслу, выходя за рамки поиска по ключевым словам. Эта возможность называется семантическим поиском. В этом блокноте мы создадим простой движок семантического поиска. Применение семантического поиска выходит за рамки создания веб-поисковой системы. Он может использоваться для создания частной поисковой системы для внутренних документов или записей. Его также можно использовать для реализации таких функций, как функция StackOverflow "похожие вопросы". Получить архив вопросов Встроить (Embed) архив Поиск с использованием индекса и поиска ближайших соседей Визуализировать архив на основе эмбеддингов И если вы используете старую версию SDK, вам может потребоваться обновить ее следующим образом: Получите свой API ключ Cohere, зарегистрировавшись здесь. Вставьте его в ячейку ниже. Вам понадобится ваш API ключ для следующей ячейки. Зарегистрируйтесь в Cohere и получите его, если вы еще этого не сделали. Мы будем использовать набор данных trec, который состоит из вопросов и их категорий. Следующий шаг — встроить (embed) текст вопросов. Получение тысячи эмбеддингов такой длины должно занять около пятнадцати секунд. Теперь давайте используем Annoy для создания индекса, который хранит эмбеддинги таким образом, чтобы он был оптимизирован для быстрого поиска. Этот подход хорошо масштабируется для большого количества текстов (другие варианты включают Faiss, ScaNN и PyNNDescent). После построения индекса мы можем использовать его для извлечения ближайших соседей либо существующих вопросов (раздел 3.1), либо новых вопросов, которые мы встраиваем (раздел 3.2). Если нас интересует только измерение расстояния между вопросами в наборе данных (без внешних запросов), простой способ — вычислить расстояние между каждой парой имеющихся у нас эмбеддингов. Мы не ограничены поиском по существующим элементам. Если мы получаем запрос, мы можем встроить его и найти его ближайших соседей из набора данных. Наконец, давайте отобразим все вопросы на 2D-графике, чтобы вы могли визуализировать семантические сходства этого набора данных! Наведите курсор на точки, чтобы прочитать текст. Видите ли вы какие-либо закономерности в сгруппированных точках?
План урока
- 1. Настройка
- 2. Получить архив вопросов
- 2. Встроить (Embed) архив
- 3. Поиск с использованием индекса и поиска ближайших соседей
- 3.1. Найти соседей примера из набора данных
- 3.2. Найти соседей пользовательского запроса
- 4. Визуализация архива
Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.