Архитектуры моделей
34 просмотра
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)
Связанные термины
Требует