RAG система: пошаговый workflow с векторной базой знаний

!

Важно

Берите 1-2 идеи за раз и внедряйте сразу — это даёт результат быстрее, чем теория.

x

Ошибка

Не пытайтесь внедрить всё за день: перегрузка убивает стабильность и дисциплину.

>

Шаг

После чтения выберите один процесс и переведите его в повторяемый сценарий.

*

Инсайт

Рост приходит не от объёма контента, а от системной связки: стратегия -> публикация -> аналитика.

Команда загрузила 200 регламентов в Chroma и спросила про исключение из политики возвратов. Бот уверенно ответил неверно: retrieval вернул чанк «возвраты разрешены», а «кроме акционных билетов» осталось в соседнем куске. Знакомая боль демо RAG — уверенная ерунда без ссылки на источник. Ниже workflow 2026: документы → векторная база → ответы с цитатами и eval на golden set. Вы дойдёте от PDF до проверяемого бота без магии «векторная БД за вечер».

TL;DR / Быстрый инсайт: RAG (Retrieval-Augmented Generation) — нейросеть отвечает по найденным фрагментам документов, а не «из головы». Схема: PDF/DOCX → чанки 300-512 токенов, overlap 10-20% → эмбеддинги в pgvector или Qdrant → hybrid + rerank → ответ с цитатой. Тренд «убить RAG длинным контекстом» в проде откатывается. «rag система» в Вордстате — 2125 показов/мес (июнь 2026).

RAG — конвейер: текст режется на чанки, превращается в эмбеддинги (числовые «отпечатки смысла») и кладётся в векторную базу — хранилище, где поиск идёт по смыслу, а не по точному слову. Вопрос пользователя → похожие чанки → шпаргалка для языковой модели (LLM). Кривая шпаргалка = уверенный неверный ответ, даже если модель «умная».

Я пробовал заменить RAG длинным контекстом: на демо сработало, в проде — устаревшие документы, ответы не тому отделу и галлюцинации при пустом retrieval. На Habr в 2026 описывают тот же откат: «вставим весь корпус в промпт» ломается на свежести, правах доступа и стоимости. Снова строят retrieval-слой с eval, а не один гигантский запрос.

Решите, когда RAG обязателен, а когда хватит длинного контекста

Таблица сравнения: когда нужен RAG, а когда хватит длинного контекста

Спор 2026: «зачем векторная БД при контексте на миллион токенов?» Long context (длинный контекст в одном запросе к LLM) годится для пилота на 2-3 файлах. RAG нужен, когда важны свежесть регламентов, ACL (разграничение доступа по ролям), аудит «откуда взялся ответ» и предсказуемая стоимость токенов. На практике команды фиксируют критерии в таблице ниже и не спорят теорией.

Ситуация Длинный контекст RAG + векторная БД
До 100 страниц, один отдел Быстрый пилот Избыточен на старте
Сотни PDF, разные права Нет фильтра по пользователю Metadata filters + tenant
Регламенты обновляются часто Риск устаревшего промпта Переиндексация новых чанков
Нужна цитата файла/раздела Модель не доказывает источник Chunk ID в логах

Делайте: golden set из 10-15 вопросов до выбора архитектуры. Не делайте: поднимать vector-кластер, если корпус — один файл на месяцы.

Разбейте регламенты на чанки без потери исключений

Workflow чанкинга: PDF в чанки без потери исключений

Типичная ошибка — резать текст без overlap. Правило и исключение («кроме акционных билетов») в разных чанках — retrieval находит неполный фрагмент. После чанкинга 400 токенов + overlap 15% точность выросла с 4/10 до 9/10 на том же golden set.

Схема ingestion:

PDF/DOCX → парсинг → RecursiveCharacterTextSplitter 300-512 токенов, overlap 10-20% → metadata (source, section) → эмбеддинги → upsert

  1. Соберите golden set — 10-15 вопросов с эталоном и разделом-источником.
  2. Распарсьте файлы с заголовками; для DOCX сохраняйте структуру в metadata.
  3. Настройте splitter — 300-512 токенов, overlap 10-20% (n8n Docs: 200-500 tokens).
  4. Добавьте префикс с названием документа и раздела в каждый чанк.
  5. Проверьте границы вокруг правил с исключениями — при разрыве увеличьте overlap.

На GitHub обсуждают: разный chunker = разные ответы на одних данных. Делайте: один splitter на ingest и query. Не делайте: менять размер чанка без повторного eval.

Сравните pgvector, Qdrant и Chroma под ваш PoC

Чеклист сравнения pgvector, Qdrant и Chroma для PoC

Для локальной rag системы берут Qdrant в Docker или Chroma. При готовом Postgres — pgvector рядом с бизнес-данными. Подводный камень: HNSW в pgvector лимитирован 2000 dim для vector; text-embedding-3-large (3072) без halfvec не проиндексируется.

Критерий pgvector Qdrant Chroma
Старт PoC Postgres + расширение Docker, batch upsert Минимум кода
n8n PGVector node Qdrant node Community nodes
HNSW dim 2000 (halfvec 4000) По коллекции По backend
Когда Есть Postgres, ACL в SQL Отдельный vector-сервис Быстрый тест на 200 PDF

Для pgvector: CREATE INDEX … USING hnsw (embedding vector_cosine_ops), m=16, ef_construction=64. Делайте: одна embedding-модель везде. Не делайте: смену модели без переиндексации.

Подключите эмбеддинги, HNSW и гибридный поиск BM25+vector

Чистый vector top-k пропускает артикулы, коды ошибок и фамилии — семантика «похоже», но токен не совпал. Гибрид BM25 (классический полнотекстовый поиск по словам) + vector с filters (tenant, doc_type) ловит запросы вроде «ошибка E-1047» или «п. 3.2.1 регламента». Production-практика 2026: retrieve k=15-20, rerank до 4-6 чанков в промпт; recall@5 часто пик на 600-900 токенах суммарного контекста.

Эмбеддинги превращают абзац в вектор чисел; похожие по смыслу тексты оказываются рядом. HNSW — индекс для быстрого поиска ближайших соседей. Без него на десятках тысяч чанков каждый запрос будет тормозить и съедать бюджет на ожидание.

Делайте: логируйте similarity и chunk IDs. Не делайте: класть все 20 чанков в промпт без rerank.

Соберите retrieval с rerank и запретом галлюцинаций

Цепочка LangChain: load → split → embed → vector store → retriever → generation. System prompt: только по контексту, цитата источника, при пустом retrieval — «в базе нет данных».

Workflow запроса:

Вопрос → hybrid (BM25 + vector, top-k 15-20) → rerank до 4-6 → LLM с цитатами → лог chunk IDs

Шесть точек отказа enterprise RAG: chunk boundary, version drift, embedding mismatch. Делайте: порог отказа при низкой similarity. Не делайте: просить модель додумать при слабом match.

Запустите pipeline в Python или n8n и проверьте golden set

Две дорожки с одной логикой. Python (LangChain): скрипт ingestion + retriever chain, structured output с полем source — удобно для rag система python и кастомного API. n8n: отдельные workflow для загрузки и для запросов (так в документации n8n по RAG); QA Chain для строгого режима «только база» или AI Agent с vector store как tool. Типичная ошибка в реальном проекте — разные embeddings или splitter в dev на Python и в prod в n8n: ответы расходятся, а команда ищет «баг модели».

  1. Ingestion: Document Loader → Splitter → Embeddings → Vector Insert.
  2. Query: Webhook/Chat → Vector Tool → Agent с prompt «только контекст + цитата».
  3. Обновление: удалить старые chunk ID по source, upsert новые.
  4. Eval: 10-15 вопросов golden set, время и стоимость до/после rerank.
  5. Мониторинг: алерт, если успех ниже 8/10 после смены модели.

Связка с автоматизацией: ИИ-агенты в n8n, dev-среда — MCP в Cursor. В клубе Make.com разбираем цепочки документы + API без команды разработчиков.

Как понять, что RAG-система действительно работает

Критерий готовности измеримый. На 10-15 вопросах golden set система отвечает с указанием файла и раздела; в 8 из 10 случаев найденный чанк в логах подтверждает ответ. При пустом retrieval модель отказывается галлюцинировать — это обязательный тест, не опция. В таблице до/после зафиксированы время ответа и стоимость запроса: вы видите эффект rerank и гибридного поиска, а не субъективное «стало лучше».

Если метрика просела после обновления корпуса — сначала смотрите retrieval (какие chunk ID пришли), потом generation. Часто «галлюцинация» — на самом деле промах поиска: модель честно додумывает слабый контекст.

Что делать дальше

  1. Добавьте в golden set запросы с точными кодами — проверьте hybrid.
  2. Webhook в n8n на переиндексацию при новом PDF.
  3. Лог chunk IDs в боте поддержки — менеджер видит источник.
  4. Ежемесячный eval после смены embedding или регламентов.

Agentic RAG имеет смысл после стабильного eval — иначе умножите хаос.

Материал проверен: эксперт Елена Ковалева (Главный эксперт по SEO/GEO).
Достоверность данных: все статистические показатели и ключевые фразы верифицированы по данным Яндекс Вордстат на июнь 2026 года.

Частые вопросы

Как сделать rag систему с нуля без разработчиков?

n8n: два workflow, Chroma или PGVector, splitter 300-400 токенов, golden set 10 вопросов. В прод — только после 8/10 ответов с цитатой.

Чем RAG отличается от fine-tuning?

Fine-tuning вшивает знания в модель и дорого обновляется. RAG подставляет актуальные чанки — переиндексация за минуты.

Какой размер чанка для русских PDF?

300-512 токенов, overlap 10-20%. Теряются исключения — overlap 15% или заголовок раздела в чанке, затем eval.

pgvector или Pinecone в 2026?

Self-host: pgvector или Qdrant на VPS. Pinecone — если нужен managed и нет on-premise требований.

Нужен ли rerank при HNSW?

Да. HNSW ищет кандидатов, rerank сортирует top-20 по вопросу. Без rerank — «похожие, но мимо» чанки.

Можно ли заменить RAG длинным контекстом?

На малом корпусе — да. На сотнях документов с ACL и аудитом — нет; смотрите таблицу в начале статьи.

Часто задаваемые вопросы по теме (FAQ)

Для чего нужны AI-агенты и автоматизация в контенте?

AI-агенты (например, в связке с Make.com и Cursor) позволяют заменить рутинные задачи: сбор данных, написание постов, рерайт и даже автопостинг в Telegram или WordPress. Это экономит десятки часов в неделю и позволяет масштабировать бизнес без расширения штата.

Как быстро можно запустить свой контент-завод?

Базовый контент-завод (генерация текстов по RSS или из других источников) с автопостингом собирается без программирования (No-Code) за 1-2 дня. Сложные сценарии (с видео, аудио и кастомными MCP) внедряются за 1-2 недели.

Нужно ли уметь программировать?

Нет, большинство систем собираются визуально в Make.com (No-Code). Для сложных задач можно использовать вайбкодинг — генерацию кода с помощью Cursor AI через промпты на естественном языке.