Архитектуры моделей 61 просмотр

RAG

Retrieval-Augmented Generation

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

Что такое RAG

RAG (Retrieval-Augmented Generation) — подход, объединяющий поиск по базе знаний с генеративной моделью. Вместо того чтобы полагаться только на знания, «запечатанные» в весах модели при обучении, RAG извлекает актуальные документы и передаёт их в контекст LLM.

Как работает

Запрос пользователя
    ↓
[1] Embedding → векторное представление запроса
    ↓
[2] Retrieval → поиск похожих документов в векторной БД
    ↓
[3] Augmentation → добавление найденных документов в промпт
    ↓
[4] Generation → LLM генерирует ответ на основе контекста

Компоненты RAG-системы

Компонент Примеры Роль
Embedding-модель E5, BGE, GTE Превращает текст в векторы
Векторная БД FAISS, Milvus, Qdrant, ChromaDB Хранит и ищет embeddings
Chunking RecursiveTextSplitter Разбивает документы на фрагменты
Reranker Cohere, bge-reranker Переранжирует результаты поиска
LLM Qwen, LLaMA, DeepSeek Генерирует финальный ответ

Зачем нужен RAG

  • Актуальность: база знаний обновляется без переобучения модели
  • Точность: модель ссылается на конкретные документы
  • Контроль: можно управлять источниками информации
  • Стоимость: дешевле, чем файнтюнинг под каждый домен
  • Прозрачность: можно показать источники ответа

RAG vs Fine-tuning

Критерий RAG Fine-tuning
Обновление знаний Мгновенное (обновить БД) Требует переобучения
Стоимость Низкая (inference + поиск) Высокая (GPU для обучения)
Галлюцинации Меньше (есть источники) Возможны
Формат ответов Стиль базовой модели Можно обучить стиль
Доменная адаптация Средняя Глубокая

GPU-требования

Основная нагрузка — на LLM-инференс. Embedding-модели компактны (0.3-1 GB), а LLM требует VRAM пропорционально размеру:

# Пример RAG с LangChain
from langchain.vectorstores import FAISS
from langchain.embeddings import HuggingFaceEmbeddings

embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-m3")
db = FAISS.load_local("knowledge_base", embeddings)
docs = db.similarity_search("Как настроить vLLM?", k=5)

Связанные термины

Попробуйте на практике

Арендуйте GPU и запустите ML-модели в Intelion Cloud

Начать работу