Зачем нужен RAG
Большая языковая модель умеет писать, объяснять и рассуждать, но её знания ограничены тем, что было в обучении. Она не знает ваши внутренние документы, свежие новости, текущую базу знаний компании или содержимое файлов пользователя, если вы явно не передали это в запрос.
Retrieval-Augmented Generation решает эту проблему так: перед ответом система ищет релевантную информацию во внешнем источнике и добавляет найденный контекст в промпт.
Преимущества RAG
| Преимущество | Что это даёт |
|---|---|
| Актуальность | Можно отвечать по свежим данным, которые не были в обучении модели. |
| Доступ к доменным знаниям | Модель работает с документацией, FAQ, регламентами, базой знаний компании. |
| Снижение галлюцинаций | Ответ строится по найденным фрагментам, а не только по внутренним вероятностям модели. |
| Обоснованность | Можно показать источники: документ, страницу, раздел, таймкод, URL. |
| Дешевле, чем переобучение | Новые документы можно переиндексировать без fine-tuning всей модели. |
Архитектура RAG
- Источники данных: PDF, Markdown, HTML, база знаний, тикеты, транскрипты, таблицы.
- Загрузка: Document Loader превращает файл или страницу в документы с текстом и метаданными.
- Разбиение на чанки: длинные документы режутся на небольшие смысловые фрагменты.
- Эмбеддинги: каждый чанк превращается в числовой вектор.
- Vector store: векторы и метаданные сохраняются в FAISS, Chroma, Pinecone, Qdrant, pgvector или managed-сервис.
- Retrieval: вопрос пользователя тоже превращается в вектор, затем находятся ближайшие чанки.
- Generation: LLM получает вопрос + найденный контекст и формирует ответ.
Векторная база данных
Обычный поиск по ключевым словам ищет совпадения текста. Векторный поиск ищет близость по смыслу: запрос «питание кошек» может найти фрагменты про «рацион котёнка», даже если слово «питание» там не встречается.
| Компонент | Роль в RAG |
|---|---|
| Embedding model | Кодирует текст в вектор. Важно использовать одну и ту же модель для документов и запросов. |
| Vector store | Хранит векторы, текст чанков и метаданные, быстро ищет ближайшие элементы. |
| Retriever | Оборачивает поиск: выбирает k, фильтры, стратегию ранжирования, иногда reranking. |
| Prompt | Говорит модели отвечать только по контексту и явно признавать отсутствие данных. |
RAG или fine-tuning
RAG и fine-tuning решают разные задачи. RAG подключает знания, которые часто меняются или принадлежат конкретной компании. Fine-tuning меняет поведение модели: стиль, формат ответа, классификацию, устойчивый способ решать типовую задачу.
Ограничения и риски
- Плохой retrieval: если найден не тот контекст, LLM ответит плохо.
- Плохие чанки: слишком большие фрагменты размывают смысл, слишком маленькие теряют контекст.
- Нет источников: пользователь не может проверить, откуда взят ответ.
- Устаревший индекс: документы обновились, а векторная база нет.
- Indirect prompt injection: найденный документ может содержать инструкции вроде «игнорируй системный промпт».