RAG (Retrieval-Augmented Generation) — это технология в области ИИ, которая сочетает генерацию текста большими языковыми моделями (LLM) с поиском релевантной информации из внешних источников. Она позволяет моделям использовать актуальные данные, недоступные в исходном обучении, минимизируя галлюцинации и повышая точность ответов.
Как работает RAG
Процесс начинается с векторизации запроса пользователя и поиска похожих фрагментов (чанков) в базе знаний с помощью эмбеддингов и косинусного сходства. Найденные документы добавляются в промпт LLM, которая генерирует ответ на основе этого обогащённого контекста. Это делает систему гибкой: новые данные индексируются без переобучения модели.
Преимущества
RAG ускоряет внедрение, снижает затраты на вычисления и обеспечивает актуальность знаний, что идеально для корпоративных чат-ботов или Q&A по документам. В сравнении с fine-tuning, RAG проще в обновлении и контролируемее, хотя может уступать в доменной специализации.
Применение
Технология подходит для чат-ботов по внутренним документам, поиска по нормативам (ГОСТ, регламенты) или ассистентов в энергетике/ERP-системах вроде 1C. В продакшене используют векторные БД (pgvector, Weaviate) с моделями типа Llama или GigaChat.
Какие форматы контента лучше хранить для RAG
Для RAG лучше всего хранить контент в форматах, которые легко парсятся на текст, сохраняют структуру и позволяют эффективное чанкование без потери смысла. Предпочтительны Markdown (.md) для унифицированной обработки, чистый текст (.txt), документы Word (.docx) и таблицы Excel (.xlsx).
Рекомендуемые форматы
- Markdown (.md): Идеален для структурированных текстов — заголовки, списки и таблицы сохраняются, упрощает извлечение с помощью библиотек вроде Docling.
- TXT и чистый текст: Простой парсинг, минимальные потери, подходит для баз знаний без сложной верстки.
- DOCX и PDF: Хорошо для корпоративных документов, но требуют инструментов (Unstructured, Docling) для извлечения таблиц, изображений и flowchart.
- XLSX/CSV: Структурированные данные (таблицы) — преобразуйте в текст с метаданными для векторного поиска.
Почему эти форматы
Они позволяют разбивать на чанки по 500–1000 токенов с перекрытием, добавлять метаданные (дата, источник) в JSON-подобной структуре для reranking. JSON рекомендуется для гибкости хранения чанков с метаданными в векторных БД (pgvector, Pinecone). Избегайте сырых изображений/видео без транскриптов — конвертируйте в текст.
Советы по подготовке
Используйте Docling или Unstructured для конвертации в Markdown/текст перед индексацией. Для вашего стека (1C, нормативы ЖКХ) храните ГОСТы/регламенты как .md с метаданными (версия, дата). Тестируйте на релевантность поиска с overlap 20–30%.
Как работает индексирование документов для RAG
Индексирование документов для RAG — это оффлайн-процесс подготовки базы знаний, который включает загрузку, разбиение на чанки и векторизацию для быстрого поиска. Этапы выполняются заранее и обновляются по мере поступления данных, чтобы LLM могла оперативно извлекать релевантный контекст.
Этапы индексирования
Сначала документы загружаются с помощью загрузчиков (PDF, DOCX, базы данных, веб-страницы) и разбиваются на чанки оптимального размера (500–1000 токенов) с перекрытием 20–30% для сохранения контекста. Затем каждый чанк преобразуется в эмбеддинг (вектор) с помощью модели вроде sentence-transformers или OpenAI embeddings и сохраняется в векторной БД (FAISS, pgvector, Milvus).
Типы индексов
- Векторный: Поиск по семантике через косинусное сходство векторов — основной для RAG.
- Текстовый (BM25): По ключевым словам, дополняет векторный для гибридного поиска.
- Гибридный/иерархический: Комбинирует уровни для ускорения на больших объёмах (сводный индекс + детальный).
Оптимизации
Добавляйте метаданные (источник, дата, тип) к чанкам для фильтрации и reranking; используйте HNSW-алгоритм для баланса скорости и точности. Для вашего стека (1C, нормативы) индексируйте регламенты как Markdown-чанки в pgvector с обновлением по триггеру изменений.
