Вот, оказывается, как можно воплотить мечту: RAG-система!
Я давно мечтала понять, как работают умные чат-боты, которые отвечают по документации, а не выдумывают ответы. И вот вчера я посмотрела любопытное видео о том, как золотодобывающая компания "Полюс" использует ИИ в своей деятельности. И один их реальный кейс оказался воплощением моей мечты! Речь идёт о RAG-системе!
👨🔧 RAG (Retrieval‑Augmented Generation, «генерация с дополненной выборкой») — это подход, при котором большая языковая модель (LLM) формирует ответ, опираясь не только на свои обученные знания, но и на актуальную информацию из внешних источников.
Проще говоря: мы загружаем всю нашу документацию из confluence в качестве источника смыслов, и тогда сотрудник технической поддержки ПО может в свободной форме ввести вопрос к ИИ в чате и получить точный подходящий по смыслу ответ, основываясь на нашей конкретной предметной области! Аналогично можно "провернуть" дело и для конечных пользователей ПО, для нужд которых отчёты из ПО могут быть также поданы на вход языковой модели. И всё это называется RAG-системой!
🕵️♂️ Как работает RAG‑система
🔹 Подготовка базы знаний. Исходные данные (документы, статьи, регламенты и т. п.) разбивают на небольшие фрагменты (чанки). Это нужно, чтобы искать и подгружать только релевантные куски, а не весь документ целиком.
🔹 Векторизация. Каждый фрагмент и будущие запросы пользователя преобразуют в векторы (эмбеддинги) с помощью специальной модели. Вектор отражает смысловое содержание текста.
🔹 Хранение и поиск. Векторы фрагментов сохраняют в векторной базе данных. Когда приходит запрос, его тоже превращают в вектор и ищут в базе наиболее похожие фрагменты (семантический поиск).
🔹 Формирование контекста. Найденные фрагменты вместе с запросом передают в LLM. Часто добавляют промпт‑инструкцию: «Отвечай только по предоставленному контексту, не выдумывай».
🔹 Генерация ответа. Модель формирует ответ на основе запроса и найденных данных. В идеале она также может указывать источники информации.
🗝️ Ключевые компоненты RAG
🔹 LLM (например, GPT‑4, Llama, Qwen) — генерирует итоговый ответ. 🔹 Эмбеддинг‑модель — превращает текст в векторы. 🔹 Векторная база данных (Qdrant, Milvus, pgvector и др.) — хранит векторы и быстро ищет похожие. 🔹 Оркестратор (фреймворки LangChain, LlamaIndex и пр.) — управляет всем пайплайном: чанкингом, поиском, передачей контекста, постобработкой. 🔹 Инструменты улучшения качества: переранжирование (reranking) найденных фрагментов, гибридный поиск (по смыслу + по ключевым словам), фильтрация по метаданным.
Что в итоге?
Теперь я понимаю примерную структуру RAG-системы и смогу в случае наличия такой возможности предложить эту систему к внедрению, т.к. считаю её чрезвычайно полезной фичей. Теперь я понимаю, какие составные части есть у этой системы, как в общем это работает и - главное - услышала о реальном кейсе применения такой системы в тяжёлой промышленности! А это значит, что зерно уже есть, осталось только найти для него благодатную почву!
Поделитесь в комментариях - а у вас на проекте реализована RAG-система? 👇