RAG база данных, retrieval augmented generation, векторная база данных, LangChain, ChromaDB, embedding, AI для бизнеса, автоматизация, DeepSeek, OpenAI embeddings">

RAG база данных: полное руководство по созданию, использованию и интеграции с AI-ассистентами

Автор: ИТ-консультант Сергей Немцев · Nemplat
Дата: 2026 год · Время чтения: ~15 минут

📑 Содержание

  1. Что такое RAG и зачем он нужен
  2. Как устроена RAG-система изнутри
  3. Пошаговое создание RAG базы данных
  4. Выбор инструментов и технологий
  5. Как использовать RAG в своих проектах
  6. Необходимые навыки и скиллы
  7. Применение RAG для агента Hermes на aichat.nemplat.ru
  8. Частые ошибки и как их избежать
  9. Заключение

1. Что такое RAG и зачем он нужен

Определение

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

Архитектура RAG-системы
Рис. 1 — Общая архитектура RAG-системы: от запроса пользователя до сформированного ответа

Почему RAG — это революция

Классические чат-боты работают на «общих знаниях» модели, натренированных на публичных данных до определённой даты. Это означает:

RAG решает все эти проблемы. Система берёт ваши документы (инструкции, прайс-листы, FAQ, договоры, регламенты), разбивает их на фрагменты, индексирует в векторной базе и при каждом запросе пользователя извлекает только релевантную информацию.

ПреимуществоОписание
🎯 ТочностьОтветы основаны на ваших реальных данных, а не на фантазии модели
🔄 АктуальностьМожно мгновенно обновлять базу знаний без переобучения модели
🔒 КонтрольВы решаете, какая информация доступна модели
📎 ПрозрачностьМожно указать источник каждого факта в ответе
💰 ЭкономияНе нужно обучать собственную модель с нуля (экономия десятки тысяч долларов)
⚡ ГибкостьПоддержка любых форматов: PDF, HTML, Markdown, базы данных, API
💡 Факт: По данным исследования Stanford AI Index 2025, RAG-архитектура снижает количество «галлюцинаций» LLM на 60–80% по сравнению с генерацией «вслепую».

2. Как устроена RAG-система изнутри

Процесс поиска и генерации ответа
Рис. 2 — Процесс поиска и генерации ответа: запрос → поиск → ранжирование → генерация

Архитектура в 5 компонентов

RAG-система состоит из пяти последовательных компонентов:

  1. Обработка запроса (Chunker) — разбивает вопрос на ключевые подзапросы
  2. Поиск (Retriever / Embeddings) — ищет релевантные фрагменты в векторной базе
  3. Ранжирование (Reranker) — повторная сортировка по степени релевантности
  4. Генерация ответа (LLM) — модель отвечает на основе найденных фрагментов
  5. Постобработка (Output) — фильтрация, форматирование, добавление ссылок

Процесс индексации

Процесс индексации документов
Рис. 3 — Этапы индексации: от сырых документов до векторной базы данных

Индексация — это одноразовый (или периодический) процесс:

  1. Загрузка документов (PDF, HTML, Markdown и др.)
  2. Разбивка текста на фрагменты (chunks) по 256–1024 токенов с перекрытием
  3. Преобразование каждого фрагмента в вектор через embedding-модель
  4. Сохранение векторов в векторную базу данных

Процесс поиска

При каждом запросе пользователя:

  1. Вопрос преобразуется в вектор
  2. В векторной базе находятся ближайшие соседи (Top-K результатов)
  3. Опционально: гибридный поиск (векторный + BM25)
  4. Ранжирование через cross-encoder
  5. LLM генерирует ответ на основе найденных фрагментов

3. Пошаговое создание RAG базы данных

Шаг 1. Подготовка данных

Соберите все документы, которые должны стать базой знаний:

Совет: Удалите служебные символы, колонтитулы, рекламные блоки. Качество данных = качество ответов.

Шаг 2. Выбор Embedding-модели

Embedding-модель превращает текст в векторы. От её качества зависит точность поиска.

МодельРазмерностьКачествоСтоимость
text-embedding-3-small (OpenAI)1536★★★★☆~$0.00002/1K
text-embedding-3-large (OpenAI)3072★★★★★~$0.00013/1K
multilingual-e5-large1024★★★★☆Бесплатно
bge-m3 (BAAI)1024★★★★★Бесплатно
nomic-embed-text (Nomic)768★★★★☆Бесплатно
Для русского языка: рекомендуем multilingual-e5-large или bge-m3 — отлично понимают русские тексты и бесплатны.

Шаг 3. Выбор векторной базы данных

БазаТипДля когоОсобенности
ChromaDBЛокальнаяСтарт, прототипыЗапуск за 2 минуты
QdrantОблач./лок.ПродакшенОтличная производительность
PineconeОблачнаяПродуктовые проектыУправляемая, автоскейлинг
WeaviateОблач./лок.Средние проектыГибридный поиск
MilvusЛок./кластерКрупные проектыМасштабируемость
FAISSБиблиотекаРазработчикиМаксимальная скорость
Для старта — ChromaDB. Для продакшена — Qdrant или Pinecone.

Шаг 4. Пайплайн индексации

from langchain.document_loaders import PyPDFLoader, DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma

# 1. Загрузка документов
loader = DirectoryLoader("./documents/", glob="**/*.pdf",
                          loader_cls=PyPDFLoader)
documents = loader.load()

# 2. Разбивка на фрагменты
splitter = RecursiveCharacterTextSplitter(
    chunk_size=512, chunk_overlap=50,
    separators=["\n\n", "\n", ". ", " "]
)
chunks = splitter.split_documents(documents)

# 3. Создание эмбеддингов
embeddings = HuggingFaceEmbeddings(
    model_name="intfloat/multilingual-e5-large")

# 4. Сохранение в векторную БД
vectorstore = Chroma(
    collection_name="knowledge_base",
    embedding_function=embeddings,
    persist_directory="./chroma_db"
)
vectorstore.add_documents(chunks)
print(f"✅ Индексация завершена: {len(chunks)} фрагментов")

Шаг 5. RAG-цепочка (Retrieval + Generation)

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI(model="deepseek/deepseek-v4", temperature=0.3)

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever(
        search_kwargs={"k": 5}),
    return_source_documents=True
)

result = qa_chain("Какие услуги по AmoCRM вы предлагаете?")
print("Ответ:", result["result"])
for doc in result["source_documents"]:
    print(f"  - {doc.metadata.get('source', 'unknown')}")

Шаг 6. Обновление базы знаний

# Добавление новых документов (инкрементальная индексация)
new_docs = loader.load(["./documents/new_pricing.pdf"])
new_chunks = splitter.split_documents(new_docs)
vectorstore.add_documents(new_chunks)

# Удаление старых
vectorstore.delete(ids=["doc_001"])

4. Инструменты и технологии

Сравнение инструментов для RAG
Рис. 4 — Сравнение инструментов: embedding-модели, векторные БД, фреймворки, LLM

Полный стек для RAG-проекта

КомпонентРекомендуемые инструменты
LLMDeepSeek V4/V4 Flash, Google Gemini, GPT-4o, Claude 3.5
Embeddingmultilingual-e5-large, bge-m3, text-embedding-3-small
Векторная БДChromaDB, Qdrant, Pinecone, Weaviate
ФреймворкLangChain, LlamaIndex, Haystack
Парсинг PDFPyPDF2, PyMuPDF, Unstructured.io

Фреймворки для RAG

Дополнительные инструменты

ЗадачаИнструмент
Оценка качества RAGRAGAS, DeepEval, LangSmith
Гибридный поискBM25 + Vector (Ensemble Retriever)
РанжированиеCohere Rerank, Cross-encoder
МониторингLangfuse, Helicone, LangSmith
UI/FrontendStreamlit, Gradio, собственный виджет

5. Как использовать RAG в своих проектах

Сценарий 1: AI-ассистент для сайта

Самый распространённый сценарий — виджет на сайте, который отвечает на вопросы клиентов по вашим данным.

Сценарий 2: Внутренняя база знаний

Сотрудники задают вопросы по внутренним документам: регламентам, инструкциям, политикам. RAG подключается к корпоративным хранилищам и мессенджерам.

Сценарий 3: Поддержка клиентов (тикеты)

RAG-ассистент предлагает ответы оператору, ссылаясь на базу знаний, историю обращений и FAQ.

Сценарий 4: Юридический и комплаенс-контроль

Поиск по корпоративным контрактам, законодательным актам, внутренним политикам.

Сценарий 5: Обучение и онбординг

Новый сотрудник задаёт вопросы по процессам компании и получает точные ответы с ссылками на документы.

Архитектура RAG для Hermes
Рис. 5 — Комплексная архитектура RAG для агента Hermes: этапы сбора данных, индексации, runtime и обратной связи

6. Необходимые навыки и скиллы

Для самостоятельной реализации RAG

НавыкУровеньЗачем нужен
PythonСредний+Основной язык для RAG-пайплайнов
Работа с APIСреднийПодключение LLM, векторных БД, внешних сервисов
Структуры данныхСреднийПонимание индексации, поиска, фильтрации
Обработка текстовСреднийТокенизация, чанковинг, очистка данных
Базы данныхБазовыйSQL/NoSQL для метаданных и логов

Желательные навыки

НавыкУровеньЗачем нужен
Веб-разработка (JS/Node.js)СреднийИнтеграция виджета на сайт
DockerБазовыйКонтейнеризация RAG-сервисов
DevOpsБазовыйДеплой, мониторинг, CI/CD
Машинное обучениеБазовыйПонимание эмбеддингов и моделей
Информационный поискСреднийНастройка ранжирования
Альтернатива: если не хотите углубляться в технологии, используйте no-code платформы: Flowise, Langflow, Dify.ai — позволяют собрать RAG-ассистента через визуальный интерфейс.

7. Применение RAG для агента Hermes на aichat.nemplat.ru

Что такое Hermes и зачем ему RAG

Hermes — AI-ассистент на платформе aichat.nemplat.ru, созданный для помощи клиентам и партнёрам Nemplat. Уже сейчас Hermes работает в режиме оффлайн-фоллбэка, отвечая на базовые вопросы из встроенной базы знаний (FAQ + knowledge). Однако для полноценной работы Hermes нуждается в полноценной RAG-системе.

Зачем Hermes RAG

ЗадачаБез RAGС RAG
Ответ о ценахОбщее описание из FAQТочная цена из актуального прайса
Описание услугиОбщее описаниеИз конкретного договора/кейса
Кейс по проекту«У нас есть опыт»Детальное описание конкретного проекта
Обновление данныхПерезапуск с новыми даннымиИнкрементальное обновление за секунды
Точность ответа~60–70%~90–95%

Какие данные подключить к Hermes RAG

📄 Документы

  • Полный парсинг сайта nemplat.ru
  • Прайс-лист Белтермо (PDF)
  • Шаблоны КП и договоров
  • Руководство по AmoCRM

💬 Данные

  • Обезличенные диалоги из TG-бота
  • FAQ (33+ вопросов)
  • Knowledge base агентов
  • Истории обращений

Техническая реализация

Текущая архитектура Hermes уже использует JSON-файлы как базу знаний. RAG-расширение добавляет:

/var/www/aichat/
├── agents/
│   └── nemplat/
│       └── files/
│           ├── nemplat_site_index/    ← NEW: RAG-индекс сайта
│           ├── beltermo_pricing/      ← NEW: RAG-индекс прайса
│           └── documents/             ← NEW: хранилище документов
├── rag/
│   ├── indexer.js              ← NEW: модуль индексации
│   ├── retriever.js            ← NEW: модуль поиска
│   ├── embeddings.js           ← NEW: вычисление эмбеддингов
│   └── reranker.js             ← NEW: ранжирование результатов
└── chroma_db/                   ← NEW: директория векторной БД
Рекомендация: Использовать LangChain.js — совместим с текущей Node.js-архитектурой Hermes и позволяет не переписывать существующий код.

Лёгкий RAG без фреймворков (TF-IDF подход)

Для быстрого старта можно реализовать RAG без векторной базы — через TF-IDF поиск:

// rag-simple.js — лёгкий RAG-модуль для Hermes
// Подход: TF-IDF поиск по JSON-базе знаний
async function ragAnswer(query, agent) {
  const knowledge = loadMemory(agent);
  const docs = [];

  // Собираем документы из всех источников
  if (knowledge.knowledge?.content)
    docs.push({ content: knowledge.knowledge.content, source: 'knowledge.json' });
  if (knowledge.faq)
    knowledge.faq.forEach(qa =>
      docs.push({ content: `Q: ${qa.question}\nA: ${qa.answer}`, source: 'faq.json' }));

  // TF-IDF поиск
  const results = await searchRAG(query, docs, 5);
  const context = results.map(r => `[${r.source}]: ${r.content}`).join('\n\n---\n\n');

  // Генерация через LLM
  const messages = [
    { role: 'system', content: 'Ты — Hermes. Отвечай на русском, опираясь ТОЛЬКО на контекст.' },
    { role: 'user', content: `Контекст:\n${context}\n\nВопрос: ${query}` }
  ];

  return await callLLM('nemplat', messages);
}

План внедрения RAG для Hermes

ЭтапЗадачаСрок
1Парсинг сайта nemplat.ru и сбор документов1 день
2Настройка ChromaDB и эмбеддингов1 день
3Индексация всех данных1 день
4Интеграция RAG-модуля в llm_client.js2 дня
5Тестирование и калибровка (top-k, chunk size)2–3 дня
6Добавление новых каналов (Telegram, VK)1 день
Итого7–8 дней

8. Частые ошибки и как их избежать

Ошибка 1: Слишком большие фрагменты
Загружаете целые PDF-документы как один чанк.
Решение: Разбивайте на фрагменты 256–1024 токенов с перекрытием 50–100 токенов.
Ошибка 2: Слишком маленькие фрагменты
Разбиваете текст по предложениям — теряется контекст.
Решение: Используйте RecursiveCharacterTextSplitter с разделителями по абзацам, разделам и предложениям.
Ошибка 3: Плохие эмбеддинги для русского языка
Используете англоязычную embedding-модель.
Решение: Используйте мультиязычные модели: multilingual-e5-large, bge-m3.
Ошибка 4: Нет ранжирования
Берёте первые K результатов без повторной сортировки.
Решение: Добавьте cross-encoder ранжирование (reranker).
Ошибка 5: Устаревшие данные
Данные в RAG не обновляются месяцами.
Решение: Настройте автоматическую переиндексацию при изменении файлов (cron, file watcher).
Ошибка 6: Слишком много контекста в промпте
Передаёте 100 фрагментов модели — LLM теряется.
Решение: Оптимальный top-K = 3–7 фрагментов. Экспериментируйте с метриками RAGAS.
Ошибка 7: Игнорирование метаданных
Все фрагменты одинаковые, нет фильтрации.
Решение: Сохраняйте метаданные (дата, раздел, тип документа) и используйте для фильтрации.

9. Заключение

RAG — это не просто модный термин, а реальная, работающая технология, которая превращает обычный AI-чат-бот в точного эксперта, знающего ваш бизнес.

Что даёт RAG вашему бизнесу

  • 🎯 Клиенты получают точные ответы
  • 📉 Снижается нагрузка на менеджеров до 60%
  • 🎁 Лиды квалифицируются автоматически
  • 🔒 Контроль информации — только ваши данные
  • ⚡ Быстрый запуск — 5–10 дней
  • 🔄 Легко обновляется без переобучения
Рекомендация для Nemplat: Для агента Hermes начните с ChromaDB + LangChain.js + multilingual-e5-large. Подключите сайт nemplat.ru как первоисточник данных и прайс-лист Белтермо. Полноценный RAG-ассистент разворачивается за 7–8 дней.

Нужна помощь с настройкой RAG для вашего бизнеса?

Свяжитесь с нами для бесплатной консультации по внедрению AI-решений

💬 Написать в Telegram

Или оставьте заявку на nemplat.ru