Skip to content

Работа с ИИ моделями.

RAG модели

RAG (Retrieval-Augmented Generation) — это архитектурный подход, при котором генеративная модель (LLM) дополняется механизмом поиска релевантных данных из внешнего корпуса. Это позволяет повысить точность, актуальность и контролируемость ответов без дообучения модели.

Принцип работы

RAG состоит из двух ключевых этапов:

  1. Retrieval (поиск) Из базы знаний извлекаются релевантные фрагменты (документы, чанки текста).

  2. Generation (генерация) LLM получает:

    • пользовательский запрос
    • найденный контекст и формирует ответ с учётом внешних данных.

Векторизация (Embedding)

В основе RAG лежит преобразование текста в числовые векторы (embeddings).

  • Используются модели, обученные в рамках Transformer architecture
  • Текст → вектор фиксированной размерности (например, 384 / 768 / 1024)
  • Семантически близкие тексты → близкие вектора (по расстоянию)

Свойство: Вектор кодирует смысл, а не точное совпадение слов.

Векторизация данных (индексация)

Перед использованием RAG выполняется подготовка корпуса:

  1. Чанкинг (разбиение) Документы делятся на небольшие фрагменты (например, 200–500 токенов)

  2. Embedding Каждый чанк преобразуется в вектор

  3. Сохранение Хранятся:

    • вектор
    • исходный текст
    • метаданные (источник, id, теги)

Хранение данных

Возможные варианты:

  • In-memory структуры (для небольших объёмов)
  • Специализированные векторные БД
  • Встроенные индексы в приложении

Типовые структуры:

  • dense vector index
  • approximate nearest neighbor (ANN)

Векторизация запроса

При поступлении запроса:

  1. Запрос пользователя преобразуется в embedding
  2. Используется та же модель, что и для документов
  3. Полученный вектор используется для поиска

Векторный поиск

Цель: найти наиболее релевантные фрагменты.

Основные методы:

  • Cosine similarity
  • Euclidean distance
  • Dot product

Для ускорения применяются алгоритмы:

  • HNSW (Hierarchical Navigable Small World)
  • IVF (Inverted File Index)

Формирование ответа

Найденные чанки:

  • агрегируются (top-k результатов)
  • передаются в LLM как контекст

Формируется prompt:

[инструкция]
[контекст из базы]
[вопрос пользователя]

Ключевые преимущества

  • Актуальные данные без переобучения модели
  • Контролируемый источник знаний
  • Возможность работы с приватными данными

Ограничения

  • Зависимость от качества embedding
  • Потеря контекста при неправильном чанкинге
  • Лимиты контекста LLM
  • Необходимость настройки retrieval (k, threshold)

Способы использования

Можно выделить 3 способа работы с ИИ моделями:

  1. Использование ИИ моделей в виде библиотек.

Примеры: https://github.com/tjake/Jlama - полноценный LLM inference engine внутри JVM

Плюсы:

  • быстрое начало

Минусы:

  • более тяжелый инстанс с долгим запуском
  • слабые модели

В целом, не рекомендую к применению.

  1. Локальное развертывание ИИ моделей.

Примеры:

Плюсы:

  • быстрое начало
  • возможность работать с дообученными моделями
  • работа с чувствительными данными

Минусы:

  • потребление большого количества ресурсов даже во время простоя
  1. Использование облачных решений.

Плюсы:

  • возможность работать с мощными моделями
  • существенная экономия в случае малого количества запросов к моделям

Минусы:

  • повышенная осторожность в работе из-за наличия секретов
  • требуется производить оплату за использование токенов

Итог

RAG — это композиция:

  • embedding модели
  • векторного индекса
  • генеративной модели

Качество системы определяется не только LLM, но и:

  • стратегией чанкинга
  • качеством embeddings
  • эффективностью поиска