Интеграция AI: чат-боты, RAG, семантический поиск, рекомендации
В 8 из 10 проектов «AI-чат-бот» оказывается дорогой обёрткой над GPT-4o с системным промптом. Без доступа к реальным данным компании. Пользователь спрашивает «сколько стоит тариф Премиум» — бот галлюцинирует цену из воздуха. Спрашивает «когда придёт заказ» — получает вежливое «напишите в поддержку». Это не интеграция — это имитация. Мы за 5 лет внедрили RAG-решения в 30+ проектах: от интернет-магазинов до медицинских порталов. Гарантируем: полезная AI-помощь начинается там, где модель читает ваши документы, а не общие ответы.
Как мы строим RAG-системы?
Retrieval-Augmented Generation — стандартная архитектура: запрос → поиск релевантных фрагментов в векторной БД → вставка найденного в контекст → ответ модели. Но дьявол в деталях реализации. Разберём ключевые узлы, которые определяют качество.
Chunking. Резать документ на куски по 500 токенов без оглядки на структуру — гарантия потери смысла. Если разрез пришёлся на середину абзаца, контекст разрывается. Решение — рекурсивный RecursiveCharacterTextSplitter с overlap 10–15% для документации. Для контрактов и инструкций используем семантический сплиттер: выделяем заголовки, списки, блоки кода — каждый раздел становится независимым чанком. Разница в качестве поиска: на одном медицинском проекте precision вырос с 0.55 до 0.84 только за счёт правильной нарезки.
Модель эмбеддингов. Для русскоязычных текстов intfloat/multilingual-e5-large даёт заметный прирост точности против устаревшей text-embedding-ada-002. По нашим замерам, NDCG@10 на тестовой выборке из 10 000 пар «запрос-документ» на 12% выше. OpenAI text-embedding-3-large — хороший вариант для англоязычного контента, но для русского рекомендуем BAAI/bge-m3 или упомянутую e5-large.
Векторная БД. Если у вас уже стоит PostgreSQL — pgvector экономит ресурсы. Ставим расширение CREATE EXTENSION vector, добавляем колонку vector(1024), создаём HNSW-индекс. На проекте с 80 000 статей поддержки p95 поиска — 12 мс. Этого хватает. Для каталогов с миллионами единиц — Qdrant или Weaviate: нативный гибридный поиск и шардирование «из коробки».
Что даёт гибридный поиск?
Только векторный поиск слеп к точным совпадениям: артикулы «ABC-123», имена собственные, аббревиатуры теряются. Только полнотекстовый поиск не улавливает синонимы и перефразирования. Комбинация через RRF (Reciprocal Rank Fusion) даёт лучшее из двух миров: BM25 + векторный поиск, результаты смешиваются. На практике recall@20 растёт с 0.65 до 0.92 — разница заметна пользователю.
Reranking — финальный фильтр: top-20 кандидатов из гибридного поиска прогоняем через cross-encoder cross-encoder/ms-marco-MiniLM-L-6-v2. Он добавляет 50–100 мс к ответу, но relevance поднимает ещё на 5–10%. Без reranking чат-бот может показывать нерелевантные документы.
Семантический поиск на сайте
Поиск «удобные кожаные кресла» должен находить товары с описанием «мягкие стулья из натуральной кожи» — обычный LIKE-поиск не способен. Наша архитектура: при добавлении товара/поста автоматически генерируем эмбеддинг через multilingual-e5-large, сохраняем в pgvector. На запросе — эмбеддим его той же моделью, ищем ближайших соседей через cosine distance с HNSW-индексом. Для каталога из 100 000 позиций индекс строится 3 минуты, в памяти ~400 Мбайт (1536-мерные векторы). Cреднее время поиска — 20 мс.
Рекомендательные системы
Коллаборативная фильтрация («пользователи, похожие на вас, покупали X») требует истории — минимум 2–3 месяца данных с 1000+ активных пользователей. Для стартапов или малых проектов используем content-based: эмбеддинг текущего товара → поиск ближайших соседей по косинусной близости. Когда накапливается статистика (обычно 15–20 взаимодействий на пользователя), переключаемся на гибридную модель LightFM. Она объединяет и поведение, и признаки товаров. У нас в e-commerce проекте с 50 000 SKU гибридная модель повысила конверсию в рекомендательный блок на 18% (A/B-тест длился 2 недели).
Стриминг ответов
Пользователь не обязан ждать, пока модель сгенерирует весь текст — это убивает UX. Server-Sent Events (SSE) — протокол для стриминга токенов. OpenAI SDK поддерживает stream: true, возвращая AsyncIterator. На фронтенде — Vercel AI SDK (useChat) или самописный EventSource. Типичная ошибка: использовать WebSocket для однонаправленного стрима — SSE проще (меньше кода, встроенный реконнект). Стек: Node.js + SSE + React.
Оркестрация агентов
Простой чат-бот отвечает. Агент — выполняет действия: создаёт тикет в Jira, проверяет статус заказа в CRM, бронирует слот в календаре. Для оркестрации используем LangGraph: граф состояний, где каждый узел — вызов модели или инструмента. Vercel AI SDK useChat + tools для Next.js позволяет добавить интеграцию в 10 строк кода. Главная сложность — надёжность: модель иногда вызывает не тот инструмент или передаёт кривые параметры. Защита — Zod-схемы на каждый инструмент и structured outputs для гарантии JSON.
Что входит в работу
| Этап | Результат | Срок |
|---|---|---|
| Аудит данных и бизнес-логики | Карта источников, формат документов, оценка качества | 1–2 дня |
| Прототип RAG или рекомендательной системы | Демонстрация с метриками (recall, precision, latency) | 1–2 недели |
| Интеграция в существующее веб-приложение | API-эндпоинты, интерфейс для чат-бота/поиска | 1–2 недели |
| A/B-тестирование и оптимизация | Отчёт по метрикам (CTR, конверсия, hallucination rate) | 1 неделя |
| Документация и обучение команды | Руководство по эксплуатации, код-ревью | 2–3 дня |
Дополнительно: мы передаём исходный код векторизатора, дашборды мониторинга (Langfuse), доступ к админке для обновления базы знаний. Постпродакшн-поддержка — 1 месяц бесплатно.
Сроки
| Задача | Ориентировочный срок |
|---|---|
| RAG-чат-бот на базе существующей базы знаний | 3–6 недель |
| Семантический поиск по каталогу | 2–4 недели |
| Рекомендательная система с A/B-тестированием | 6–10 недель |
| Мультиагентная система с интеграциями | от 8 недель |
Стоимость рассчитывается индивидуально после знакомства с проектом. Оценим ваш проект за 1 день. Свяжитесь с нами — расскажем, как превратить AI из игрушки в инструмент, который приносит прибыль.







