Проблема галлюцинаций в LLM
LLM — мощный инструмент: она умеет писать код, резюмировать документы, вести диалоги. Но она не знает, где правда — всё, что делает модель, это продолжает текст на основе вероятностей. Поэтому она может с уверенностью сказать неправду, например: «Шекспир издал книгу в 1923 году». Это и есть галлюцинация. А если такая ошибка случается в клиентском чате, где нужно точно знать возвратную политику? Это уже риск для бизнеса.
Как работает RAG
RAG решает эту проблему. Он добавляет в промпт LLM актуальный контекст — извлечённый из вашей базы знаний. Сам процесс включает три шага:
- Получаем пользовательский вопрос.
- Ищем релевантные фрагменты в базе знаний с помощью векторного поиска.
- Подсовываем эти фрагменты в промпт модели — и получаем осмысленный, точный ответ.
Таким образом, мы не учим модель заново, а на лету дополняем её знания.
Векторный поиск и эмбеддинги
В RAG мы ищем по смыслу, а не по ключевым словам. Для этого каждый текст преобразуется в вектор в многомерном пространстве — это называется эмбеддинг. Похожие по смыслу тексты имеют близкие векторы. Например, «селёдка» и «что плавает в море?» окажутся рядом, а «жираф» — далеко.
Чтобы получить такие векторы, мы сначала извлекаем текст из исходных файлов: PDF, аудио, документов CRM. Это можно делать вручную, через парсеры, или даже с помощью LLM. Главное — получить чистый, пригодный для анализа текст. Потому что, как говорится в RAG: trash in — trash out.
Практика на Directual
Мы реализуем RAG-подсистему на Directual, не пиша код:
- База знаний — интерфейс для загрузки файлов, их парсинга, очистки и векторизации.
- ИИ-ассистент — чат, в котором пользователь общается с LLM, а модель получает расширенный контекст из базы знаний.
Мы используем готовые плагины: для эмбеддингов, распознавания речи, парсинга PDF и интеграции с ChatGPT. Всё настраивается визуально, шаг за шагом. Под капотом: сценарии, сокеты, и продуманная структура данных.
В результате — полноценная RAG-система, где:
- пользователь пишет сообщение в чат;
- ассистент собирает историю диалога;
- ищет нужную информацию в базе;
- и формирует точный, персонализированный ответ с указанием источников.
Что дальше?
Во втором уроке мы освоили:
- как работает RAG;
- зачем он нужен для надёжных ИИ-ассистентов;
- что такое векторный поиск и эмбеддинги;
- как подготовить и обрабатывать данные;
- как собрать базовую RAG-систему без кода.
В следующем — третьем уроке — мы углубимся в продвинутые темы:
- чанкование текстов,
- structured output и формат JSON,
- цепочки рассуждений (Chain of Thought),
- логпробы (logprobs),
- и даже локальный запуск модели.
Если вы хотите делать ИИ-решения уровня продакшн — обязательно переходите к третьей части!