Дисклеймер: настоящий материал ориентирован прежде всего на студентов магистратуры и аспирантуры нетехнических специальностей, внедряющих инструменты ИИ в свои образовательные и исследовательские проекты. Контент носит вводный характер и содержит определенные упрощения для облегчения понимания. При этом лекция будет полезна широкому кругу пользователей нейросетей. Буду признателен за конструктивную критику и предложения по доработке.
Цикл «Базовый минимум» (из 4 частей):
Базовый минимум. Часть 1: Принципы работы больших языковых моделей;
Базовый минимум. Часть 2: Искусство промпт-инжиниринга;
Базовый минимум. Часть 3: Архитектура RAG-систем (текущий материал);
Базовый минимум. Часть 4: Интеллектуальные ИИ-агенты.
«Существует два типа познания: мы либо обладаем знанием сами, либо осведомлены о том, где его можно разыскать» — Сэмюэл Джонсон
Содержание
Уязвимые места стандартных языковых моделей
Компетенции языковых моделей жестко ограничены их обучающим датасетом. После завершения тренировки их база знаний становится статичной: они не способны самостоятельно обновлять информацию и транслируют картину мира, актуальную на момент сбора данных. В динамичных или узкоспециализированных нишах это становится критичным фактором: система может не располагать специфическими данными или оперировать архаичными сведениями.
Вторая серьезная проблема — достоверность генерируемого контента. При дефиците точных данных модель склонна заполнять пробелы, создавая убедительные, но фактически ложные утверждения. Данный феномен классифицируется как галлюцинации: нейросеть выдумывает факты, статистику и интерпретации, сопровождая их несуществующими ссылками или некорректным цитированием.

Дополнительным технологическим барьером является ограниченность контекстного окна. Модели не всегда под силу удерживать в оперативной памяти объемные документы или сложные логические цепочки. Если объем входящих данных превышает установленный лимит, информационная целостность нарушается из-за отсечения части текста.
Следовательно, без интеграции внешних информационных ресурсов и инструментов верификации, ответы нейросетей могут быть нестабильными и требующими постоянной проверки. Именно эти дефициты привели к разработке методов, интегрирующих внешние базы знаний для доступа к верифицированным сведениям.
Концепция RAG: определение и актуальность
В официальных материалах OpenAI технология Retrieval-Augmented Generation (RAG) описывается как методология, обогащающая ответы ИИ путем инъекции релевантного внешнего контекста в запрос непосредственно в процессе генерации.

Вместо того чтобы полагаться исключительно на внутренние параметры, заложенные при обучении, система оперативно извлекает нужные фрагменты из подключенных массивов данных и опирается на них при формулировании ответа.
Данная архитектура позволяет бесшовно подключать разнообразные источники: корпоративные документы, структурированные базы данных, веб-порталы или репозитории программного кода. Это эффективно минимизирует риск галлюцинаций, обеспечивает возможность точного цитирования и позволяет ИИ оперировать конфиденциальными внутренними знаниями компании.
Механика фрагментации данных (чанкование)
Чанкование (chunking) представляет собой процесс деления массивных документов на компактные отрезки (чанки), которые становятся базовыми единицами для индексации и последующего поиска. Поскольку языковая модель получает информацию не монолитом, а в виде набора отобранных фрагментов, качество этой сегментации критически влияет на полноту и точность итогового ответа.

Необходимость фрагментации обусловлена поиском баланса: избыточно крупные блоки перегружают промпт «информационным шумом» и увеличивают стоимость вычислений, в то время как чересчур мелкие отрывки разрушают смысловые связи (например, разделяя тезис и его аргументацию по разным блокам).
В инженерной практике применяют как разбиение по фиксированному числу символов, так и структурный подход (по абзацам или заголовкам). Часто используется перекрытие (overlap) — частичное дублирование текста на границах чанков для сохранения контекстуальной преемственности.
Принципы функционирования RAG

Рассмотрим рабочий цикл системы: пользователь интересуется актуальными событиями. Стандартная модель, лишенная доступа к сети, признает свою неосведомленность, так как ограничена датой обучения.
В рамках RAG-подхода (обозначен синими стрелками) документы проходят препроцессинг: делятся на чанки, трансформируются в векторные эмбеддинги и индексируются в специализированной базе.
При получении вопроса система инициирует retrieval: преобразует запрос в вектор, сопоставляет его с базой и извлекает наиболее подходящие по смыслу сегменты.
Далее следует фаза augmentation (обогащение): полученные фрагменты проходят ранжирование, фильтрацию и, при необходимости, суммаризацию.
На финальном этапе generation сформированный контекст вместе с исходным вопросом передается в LLM, которая генерирует обоснованный ответ.
Архитектурные вариации

Существует несколько уровней реализации RAG — от элементарных до высокотехнологичных. Слева — Naive RAG: базовая схема, где найденные эмбеддинги передаются модели напрямую без сложной обработки.
В центре — Advanced RAG: здесь добавляются промежуточные слои интеллектуальной обработки. Система может перефразировать запрос (rewrite) для улучшения поиска, выполнять переранжирование (rerank) результатов по значимости и очищать данные от мусора.
Справа — Modular RAG: гибкая архитектура, состоящая из независимых функциональных блоков. Она включает маршрутизацию запросов, механизмы долгосрочной памяти и методы fusion (объединения результатов из разных поисковых стратегий).
Сравнительный анализ: RAG против дообучения

RAG — это путь расширения эрудиции модели через доступ к библиотеке знаний, в то время как другие методы работают иначе.
Промпт-инжиниринг фокусируется на искусстве формулирования запросов для извлечения максимально качественного результата из уже имеющихся весов модели.
Дообучение (Fine-tuning) подразумевает глубокую техническую модификацию самой нейросети. Это позволяет добиться исключительной специализации, но связано с высокими затратами на вычислительные мощности и регулярное обновление обучающей выборки.
Практический кейс: создание простейшего RAG-конвейера
Для демонстрации механизма реализуем прототип Naive RAG на Python. В качестве базы знаний возьмем срез Википедии на русском языке, а роль «интеллекта» исполнит компактная модель Qwen2.5-3B-Instruct. Полный код доступен для запуска в Google Colab.
Этап 1. Подготовка корпуса текстов и сегментация
import torch
from datasets import load_dataset
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_core.documents import Document
device = "cuda" if torch.cuda.is_available() else "cpu"
Загружаем первые 500 статей русской Википедии
dataset = load_dataset(
"wikimedia/wikipedia",
"20231101.ru",
split="train[:500]"
)
documents = [
Document(page_content=row["text"], metadata={"title": row["title"]})
for row in dataset
]
Настраиваем параметры фрагментации
splitter = RecursiveCharacterTextSplitter(
chunk_size=800,
chunk_overlap=100
)
chunks = splitter.split_documents(documents)
print(f"Количество созданных чанков: {len(chunks)}")
Результат:
Количество созданных чанков: 17892
Здесь мы упаковываем каждую статью в объект Document, после чего дробим текст на фрагменты по 800 символов. Перекрытие в 100 символов гарантирует, что важная информация не будет разорвана на границе блоков.
Этап 2. Формирование векторного индекса
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import HuggingFaceEmbeddings
Подключаем мультиязычную модель эмбеддингов
embedding_model = HuggingFaceEmbeddings(
model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
model_kwargs={"device": device}
)
Создаем векторное хранилище
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=embedding_model
)
Для перевода текста в математические векторы используется эффективная модель от sentence-transformers. Хранилище Chroma позволяет мгновенно индексировать данные для семантического поиска.
Этап 3. Извлечение информации (Retrieval)
import textwrap
def search(query, k=3):
results = vectorstore.similarity_search(query, k=k)
for i, doc in enumerate(results, 1):
print(f"\n--- Фрагмент {i} ---")
print(f"Источник: {doc.metadata['title']}")
print(textwrap.fill(doc.page_content[:500], 80))
search("Кто такой Пушкин?")
Вывод системы:
--- Фрагмент 1 ---
Источник: Пушкин, Александр Сергеевич
... Биография Происхождение Александра Сергеевича Пушкина идёт от разветвлённого
дворянского рода...
Данная функция находит три наиболее релевантных куска текста. В реальной эксплуатации этот этап происходит «под капотом» при формировании ответа.
Этап 4. Формирование ответа (Generation)
from transformers import AutoTokenizer, AutoModelForCausalLMmodel_name = "Qwen/Qwen2.5-3B-Instruct" tokenizer = AutoTokenizer.from_pretrained(model_name) llm = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, device_map="auto")
def generate_answer(query, k=3):
1. Retrieval
results = vectorstore.similarity_search(query, k=k) context = "\n\n".join([doc.page_content for doc in results]) # 2. Формирование обогащенного промпта prompt = f"Используя предоставленный контекст, ответь на вопрос.\n\nКонтекст: {context}\n\nВопрос: {query}\n\nОтвет:" # 3. Генерация inputs = tokenizer(prompt, return_tensors="pt").to(llm.device) outputs = llm.generate(**inputs, max_new_tokens=200, temperature=0.7) answer = tokenizer.decode(outputs[0], skip_special_tokens=True)[len(prompt):].strip() print(f"\nВопрос: {query}\n\nОтвет: {answer}")generate_answer("Кто такой Пушкин?")
Система синтезирует ответ, опираясь на факты из извлеченного контекста (биография, предки, Ганнибал), при этом не просто копируя текст, а создавая осмысленное повествование.
Резюме
Подводя итог: RAG нивелирует проблему устаревания данных и риск галлюцинаций, превращая LLM из «вещи в себе» в интеллектуальный интерфейс к динамическим базам знаний. Усложнение стратегии RAG ведет к росту автономности: система начинает самостоятельно корректировать поисковые запросы и верифицировать найденные результаты.
Это подводит нас к концепции ИИ-агентов — систем, которые не просто отвечают на вопросы, но и проактивно действуют: планируют операции, используют внешние инструменты и достигают поставленных целей в автономном режиме.
Далее — Базовый минимум: ИИ-агенты (в процессе подготовки).
Список литературы и источников:
1. Gao Y. et al. Retrieval-Augmented Generation for Large Language Models: A Survey // arXiv. 2023. URL: https://arxiv.org/abs/2312.10997.
2. Lewis P. et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks // NeurIPS. — 2020.
3. Martineau K. What is retrieval-augmented generation (RAG)? // IBM Research Blog. — 2023. URL: https://research.ibm.com/blog/retrieval-augmented-generation-RAG.
4. Основы RAG: обучение ИИ работе с актуальными данными // Блог Yandex Cloud. — 2025. URL: https://yandex.cloud/ru/blog/posts/2025/05/retrieval-augmented-generation-basics.
5. Архитектура RAG: механизмы генерации с дополненной выборкой // База знаний Sber.ru. — 2025. URL: https://developers.sber.ru/help/business-development/what-is-rag.


