Сообщить об ошибке.

Краткий обзор раздела: Полнотекстовый поиск с Typesense

Содержание с кратким описанием:

ОБЗОР: Полнотекстовый поиск с Typesense.
Typesense это современный, быстрый и открытый поисковый движок, предназначенный для добавления поиска в приложениях и веб-сайтах. Он разработан с акцентом на простоту использования, скорость работы, релевантность результатов и гибкость. Поиск на нашем сайте работает на Typesense
Начальная индексация в Typesense.
Подключаемся к MySQL через pymysql, вытаскиваем страницы батчами (чтобы не положить сервер), очищаем текст от HTML, делаем сниппет и конвертируем даты. Затем массово импортируем документы в Typesense с помощью documents.import_ и разбираем, как аккуратно сделать первичную индексацию 100 000 страниц
Маршрут /search и запросы к Typesense.
Сделаем полноценный поиск: добавим маршрут /search во Flask, настроим запросы к Typesense (q, query_by, filter_by, sort_by, пагинацию, подсветку совпадений) и сверстаем Bootstrap-шаблон с формой и результатами поиска.
Фасеты, фильтры, синонимы в Typesense.
Научим Typesense возвращать фасеты (списки тегов с количеством документов), добавим фильтры в интерфейс поиска, настроим синонимы (в т.ч. для русских форм слов), сделаем "ручные" выдачи через overrides и подкрутим релевантность с помощью query_by_weights, text_match_type и сортировки.
Оптимизация Typesense на минимальном сервере.
Как не убить слабый сервер: минимизируем размер индекса, аккуратно индексируем и ищем. Затем переносим Typesense на отдельный сервер, подключаемся по Tailscale-IP, настраиваем разные ключи (admin/search-only), делаем первичную заливку и инкрементальные обновления по сети.
Автодополнение, живой поиск и JSON-API c Typesense.
Сделаем быстрый JSON-API для поиска, подключим живой поиск (search-as-you-type) и подсказки заголовков. Покажу, как настроить префиксный поиск и ограничения, чтобы не положить Typesense на слабом сервере.
Логирование поисковых запросов и простая аналитика.
Добавим логирование запросов из /search и JSON-API, сохраним в MySQL сведения о строке запроса, числе совпадений и времени ответа. Потом сделаем простую админ-страницу аналитики: топ запросов, запросы без результатов и рекомендации, что с этим делать.
Векторный поиск и гибридный ранкинг с Typesense.
Умный поиск по смыслу: добавим в коллекцию поле-вектор, научимся генерировать эмбеддинги для страниц и запросов, настроим простой vector search и гибрид: текст + вектор. Покажу, как встроить всё это в наш текущий Flask-поиск и не убить слабый сервер.
Обвязка вокруг поиска для ассистентов / RAG.
Построить поверх уже существующего поиска слой "достать контекст для LLM". Нарезать страницы на куски. Хранить куски в отдельной коллекции с эмбеддингами. Сделать удобный Python-интерфейс
Ранжирование и интеграция ассистента с RAG-поиском.
Улучшение поисковой выдачи ассистента: группировка и склейка чанков, снижение повторов, повышение разнообразия источников, простая re-ranking модель и схемы интеграции поиска с ассистентом.