ИИ-поиск-витрина на главной: RAG-ответ с источниками и follow-up прямо в hero
Услуги
- ai-development
- seo-ai-search
Стек
- Astro SSR
- Svelte island
- LightRAG
- Pagefind
- Yandex SmartCaptcha
- in-memory rate-limit
Веб Штурм — ИИ-разработка и поиск по базам знаний. Мы встроили в hero главной собственного сайта живой ИИ-поиск: посетитель задаёт вопрос — получает связный ответ из базы знаний сайта со ссылками на страницы-источники и тремя уточняющими вопросами, а рядом — точные совпадения из полнотекстового поиска. Это и удобный поиск, и витрина наших возможностей в ИИ. Собственный продукт: работает у нас и разворачивается у клиентов по их контенту.
Данные кейса — о собственном продукте Веб Штурм. Метрики качественные (характер решения), без клиентских цифр.
Контекст
Обычный поиск по сайту возвращает список страниц — дальше посетитель сам угадывает ключевые слова и сопоставляет найденное. Часть до ответа не доходит. Особенно это заметно на сайте с большим объёмом материалов: услуги, кейсы, статьи. Информация есть, но добраться до неё — отдельное усилие.
Перед нами стояла двойная задача: (1) сделать поиск, который понимает вопрос и сразу даёт ответ; (2) превратить его в демонстрацию возможностей — компании, делающей ИИ-решения, логичнее показать работающий ИИ на витрине, чем рассказывать о нём текстом. Поэтому мы поставили его не на отдельную страницу, а в самый заметный блок главной.
Какие вызовы решены
Как дать связный ответ, а не список ссылок? Применили RAG (retrieval-augmented generation): система достаёт релевантные фрагменты из базы знаний сайта, и модель формулирует ответ только на их основе. Guardrail запрещает выдумывать и обещать цены/сроки. К ответу прикладываются ссылки на страницы-источники — проверяемость плюс мягкий возврат на ключевые страницы. Ссылки учитывают аудиторию страницы (две версии сайта — разные адреса источников).
Как не дать ИИ соврать? Встроили эвристику обоснованности: если ответ ничем не подкреплён в базе (нет источников и ссылок-маркеров) или модель отвечает «не нашёл» — ответ не показывается. Вместо выдумки — мягкое предложение обсудить задачу. Отказ показать необоснованный ответ важнее красивого ответа.
Как получить follow-up-вопросы дёшево? Три уточняющих вопроса генерируются в том же единственном вызове модели: guardrail просит завершить ответ скрытым блоком вопросов, который мы парсим и вырезаем из видимого текста. Один вызов вместо двух — дешевле, быстрее, дружит с кэшем.
Как защитить публичный ИИ-эндпоинт? Четыре слоя: кэш ответов (повтор бесплатный), глобальный дневной потолок (бюджет модели), лимит с одного адреса в минуту, SmartCaptcha при подозрении (переиспользовали уже работающую на сайте интеграцию, без новых ключей). Эндпоинт никогда не отдаёт наружу 5xx из-за модели — сбой превращается в мягкое «временно недоступно».
Как сделать отказоустойчиво? Гибрид двух независимых каналов: ИИ-ответ + полнотекстовый поиск (статический индекс). Недоступен один — работает другой. По пути починили сам полнотекстовый поиск: он молча не находил ничего из-за политики безопасности контента, блокировавшей WebAssembly-модуль индекса (лечится разрешением wasm-unsafe-eval, а не «пересборкой индекса», как казалось).
Подход
- Виджет в hero — Svelte island, отправляет вопрос на серверный эндпоинт (SSR, рендер на запрос). Модель и база знаний — только на сервере, браузер к ним не обращается.
- RAG по изолированной базе знаний сайта с guardrail и эвристикой «нет ответа».
- Один вызов модели на ответ + источники + три follow-up (скрытый блок, парсинг и вырезание).
- Защита слоями: кэш → дневной потолок → лимит с адреса → капча; наружу — никогда не 5xx из-за модели.
- Гибрид с полнотекстовым поиском — два независимых отказоустойчивых канала.
- Тайпрайтер ответа с уважением
prefers-reduced-motionиaria-liveдля доступности.
Результат
- ИИ-поиск live в hero главной сайта (обе версии — «Разработчику» и «Руководителю»).
- Ответ из базы знаний со ссылками-источниками и тремя follow-up — за один вызов модели.
- Полнотекстовый поиск по сайту восстановлен (был сломан политикой безопасности).
- Гибрид отказоустойчив: каналы деградируют по отдельности, посетитель почти никогда не остаётся без поиска.
- Публичный эндпоинт защищён от абьюза и не отдаёт серверных ошибок из-за модели.
Эффект для бизнеса
- Клиентский опыт — посетитель быстрее находит нужное и реже уходит без ответа; ссылки-источники мягко возвращают на ключевые страницы.
- Демонстрация возможностей — работающий ИИ на витрине убеждает сильнее презентации; клиент видит результат.
- Переносимость — тот же ИИ-поиск разворачивается по базе знаний клиента: на сайте, в поддержке, внутри продукта. Контент клиента — движок и защиту настраиваем мы.
Что использовали
Astro SSR (серверный эндпоинт, рендер на запрос) + Svelte island в hero, RAG по изолированной базе знаний сайта (LightRAG) с guardrail и эвристикой «нет ответа», один вызов модели на ответ + источники + три follow-up, гибрид с полнотекстовым поиском (Pagefind, статический индекс), защита публичного эндпоинта (лимит с адреса, кэш ответов, дневной потолок, Yandex SmartCaptcha), клиентский тайпрайтер с учётом prefers-reduced-motion.
Что мы можем сделать у вас
Если вам нужен ИИ-поиск по своей базе знаний — на сайте, в клиентской поддержке или внутри продукта — мы делаем такие решения под ваш контент: RAG-ответы со ссылками-источниками, защита публичного эндпоинта, гибрид с обычным поиском и отказоустойчивость. Написать нам
Часто задаваемые вопросы
Что это за продукт?
Чем ИИ-поиск отличается от обычного поиска по сайту?
Как ИИ не выдумывает ответы?
Как защищён публичный ИИ-эндпоинт?
Когда такой ИИ-поиск не нужен?
Похожая задача?
Расскажите контекст — подскажем, что и как делать.