RAG для лидов: архитектура и практика внедрения в реальные проекты

RAG для лидов
архитектура и практика внедрения
в реальные проекты



Поддубный Иван

CTO Вебпрактик

Кто я 👨‍💻

  1. 15+ лет в IT (web). Прошел путь fullstack, teamlead
  2. Работаю CTO в Вебпрактик (150+)
  3. Член программного комитета:
    • TechLead Conf
    • CTO Conf
    • Podlodka Crew
    • ПыхКонф
  4. Организатор Ростовского PHP-сообщества (~500 человек)
  5. Люблю Linux, open source

Вебпрактик — веб-интегратор для корпораций

О чем поговорим

Почему мы говорим о RAG
на конференции для ТехЛидов

RAG: AI-инженеры vs программисты

В чьих ПРОЕКТАХ уже внедряются LLM или планируются в обозримом будущем?

В чьих ПРОЦЕССАХ уже внедряются LLM или планируются в обозримом будущем?

Кто знает, как строятся RAG-системы?

Кто внедрял уже RAG в свои проекты?

Цели доклада

Зачем нужен RAG

Проблема нехватки контекста

Нужен контекст

Внешние сервисы как источник контекста

Типовые источники

  1. SQL-/NoSQL базы данных
    • PostgreSQL, MySQL, MongoDB, DynamoDB.

RAG: retriever + generator

Итого RAG

Кейсы RAG

Кодовые агенты и автоматический Code Review

RAG помогает LLM ориентироваться в больших кодовых базах и документации.

Примеры:

Ценность: релевантные подсказки, меньше ошибок, ускорение ревью и онбординга.

Быстрое извлечение знаний из корпоративных баз

Поиск информации в wiki, Confluence, Jira, Google Docs, email и др.

Пример: инженер спрашивает: «Как обновить staging?» — агент достаёт инструкцию из внутренней базы.

Ценность: мгновенный доступ к актуальным знаниям, сокращение времени поиска, снижение зависимости от «носителей знаний».

Интеллектуальный поиск

Улучшенный поиск по смыслу, а не по ключевым словам.

Пример: «Игровая видеокарта до 100 000 рублей» → агент ищет релевантные товары, даже если в описании нет слова «игровая», и дает продвинутые рекомендации на основе данных LLM.

Ценность: повышает конверсию, улучшает UX, снижает количество «нулевых» поисковых запросов.

HelpDesk и поддержка клиентов

Автоматизация ответов на основе внутренних документов, FAQ и тикетов.

Пример: пользователь пишет «не могу войти в систему» — агент ищет инструкции и предлагает решение.

Ценность: меньше обращений к операторам, стандартизированные ответы, круглосуточная поддержка.

Аналитика и суммаризация больших объемов информации

Автоматическое извлечение ключевых фактов из сотен документов, отчетов и публикаций.

Ценность: экономия часов экспертов, быстрые инсайты, поддержка решений.

Погружение на примере внедрения RAG в базу знаний

Вводные

Ограничения

Outline

Примеры запросов:

Проектируем Retriever

Проектируем Retriever

Выбираем способ выборки информации

Векторный поиск на пальцах

Векторный поиск на пальцах

Векторная БД не является источником истины

Почему мы выбрали векторный поиск

Адаптируем схему под векторный поиск

Выбираем хранилище векторов (embedding)

Внешняя Векторная БД

PostgreSQL расширение (наш выбор)

Индексы

Алгоритмы сравнения

PostgreSQL расширение (наш выбор)

Выбираем Embedding model (encoder)

Факты про Embedding model:

Выбираем Embedding model (encoder)

Выбираем Embedding model (наш выбор)

OpenAI text-embedding-3-small 1536

Выбираем Embedding модель (наш выбор)

Выбираем на чем писать пайплайн

LangChain (наш выбор)

Чанкинг

Осмысленный чанкинг

  1. Бизнес анализ: понимания доменную область разбивать чанки на необходимые сущности.

Метаданные у чанков

Что можно хранить

LangChain + MarkDownSplitter

Фильтрация данных

Обработка изменений

Чтобы не блокировать поток вынесли в отдельную таблицу-очередь

Retriever

Поиск

Generator

Generator

Generator: пример промпта

СИСТЕМНОЕ ПРАВИЛО:
Ты — ассистент, отвечающий строго по предоставленным фрагментам компании. Если информации недостаточно — скажи, чего не хватает, и предложи уточняющие вопросы. Не фантазируй. Отвечай по-русски. В конце всегда приведи список источников с цитатами.

Generator: пример промпта

ШАБЛОН ВВОДА:
[Вопрос пользователя]
{question}

[Контекст — до {N} фрагментов, каждый с метаданными]
{context}
-- формат одного фрагмента:
ID: {doc_id} • Название: {title} • Раздел: {section_path} • Страница: {page}
Текст: """{snippet}"""

Generator: пример промпта

[Требования к ответу]
- Ответь кратко и по делу (3–6 предложений), затем при необходимости дай пошаговые инструкции или список.
- Если есть противоречия между фрагментами — укажи их и выбери наиболее актуальный по дате/версии.
- Используй точные формулировки из фрагментов, но перефразируй, избегая дословных цитат.
- Вставляй цитаты на источники в формате [ID:строка/страница] после соответствующих фактов.

[Формат вывода]
Ответ:
...
Источники:
— {doc_id}:{page_or_line} — {title}

Расширенные практики

Query rewriting

HYDE — прием гипотетического ответа

Reranking

Context Window Enhancement

CAG - кешируем ответы

RAG с памятью

Self RAG

Agentic RAG

Графовые подходы: GraphRAG | Light RAG | etc

Про тестирование, эксперименты и метрики

Golden dataset

Ручное тестирование: генератор

Что тестируем: Насколько сгенерированный ответ совпадает с ожидаемым

Ручное тестирование: ретривер

Что тестируем: Что делаем:
  1. Пишем через AIшку небольшой скрипт который будет показывать:
    • Найденные чанки на запрос
    • % совпадения косинусного сходства
  2. Исследуем на % совпадения и корректность выдаваемых чанков во время поиска при экспериментах

Наши эксперименты

Подходим более профессионально

RAGAS (python) — framework тестирования RAG-систем. Подключает внешнюю LLM для проверки корректности.

Базовые метрики:

RAGAS

RAGAS: пример оценки метрик

faithfulness....................... 0.8542
answer_relevancy.............. 0.7121
context_precision............... 0.6490
context_recall..................... 0.7234
context_relevancy.............. 0.8103

Ведем табличку для метрик при разных экспериментах.

Что можно мерить в production

Выводы

Наши выводы и планы

Выводы

Пожалуйста, оставьте
свой отзыв! ---→

Поддубный Иван
CTO Вебпрактик
@northleshiy