dartyushin.techОткрыть меню
← все статьи
статья2 минут

Как работает поиск по документации?

Поговорим о следующей задаче: вы в чате задаете ассистенту вопрос, на который он точно не знает ответ (его не было в данных, на которых обучалась модель). Но все же ассистент вам отвечает и отвечает правильно. Как это работает?

Допустим, мы хотим задать следующий вопрос

Привет, как дела? Мне тут задачу задали, помоги. Расскажи, что такое sage?

Есть такая observability платформа Sage, о ней и спрашиваем. Если спросить об этом модель, то получим

…
Sage — это система компьютерной алгебры (CAS) с открытым исходным кодом, предназначенная для выполнения …

Чтобы модель знала про нужную нам систему — будем подкладывать ей необходимую информацию перед отправкой. Для этого используем RAG (Retrieval-Augmented Generation) технику.

Для начала перефразируем вопрос и уберем лишнюю информацию. Это можно сделать следующим запросом в любую модель

Выдели суть вопроса и перефразируй. Оставь только самое важное. В ответ отправь только текст перефразированного вопроса

"Привет, как дела? Мне тут задачу задали, помоги. Расскажи, что такое sage?"

Получим в ответ

Что такое Sage?

Теперь давайте подсунем модели в контекст нужную информацию. Это можно сделать с помощью векторного поиска. Для начала мы берем всю нашу документацию (по которой хотим отвечать на вопросы)

  • нарезаем на кусочки (отдельные смысловые блоки)
  • делаем summary этих кусочков (выделяем суть)
  • эти summary индексируем (строим по ним смысловые векторы — эмбеддинги)

Теперь, когда документация подготовлена, мы можем построить смысловой вектор по нашему перефразированному вопросу «Что такое Sage?» и найти ближайшие к нему вектора среди проиндексированных summary. Например, для этого вопроса нашлось в нашей документации три summary (которые были ближе всего в смысле расстояния). Добавим их (уже сами тексты, к которым относилось summary) к исходному вопросу. И отправим это все в модель

## Полезные источники
Sage — это решение для real-time аналитики и мониторинга процессов / приложений / инфраструктуры на основе запросов к машинным данным – логам и метрикам.

В двух словах принцип работы можно описать так: есть сервер Sage, который хранит, …

Текст 3 …

## Вопрос
Привет, как дела? Мне тут задачу задали, помоги. Расскажи, что такое sage?

И получим

Привет! Sage — это мощное решение для real-time аналитики и мониторинга процессов, приложений и инфраструктуры. Оно работает с машинными данными, такими как логи и метрики, и позволяет выполнять к ним запросы в реальном времени.
Основные особенности Sage:
- Сбор данных: собирает логи и метрики из различных источников.
- Хранение: данные хранятся на сервере Sage.
- Анализ в реальном времени: позволяет выполнять запросы к данным и получать результаты практически мгновенно.
- Мониторинг: используется для отслеживания состояния систем, выявления аномалий и устранения неполадок.
Где применяется?
- Мониторинг производительности приложений
- Анализ логов серверов, контейнеров, микросервисов
- Выявление ошибок и инцидентов в инфраструктуре
- Построение дашбордов и алертинг
Если тебе нужно больше деталей — уточни, что именно интересует!

Чем лучше мы подготовим индекс, тем более релевантный контекст уйдет в модель. Это и есть очень упрощенная схема того, как можно делать векторный поиск по своей базе знаний. Чуть подробней про этот кейс я рассказывал в своем выступлении на Platform Engineering Night.