Я зробила собі власний RAG з нуля, спеціально як експеримент для SEO Baza, і тепер він сам пише мені тексти з перевірених фактів і тримає перелінковку без жодної сторінки-сироти (orphan page). Нижче весь процес покроково: що за таблички потрібні, як зібрати базу знань, навіщо агент на ім'я Доктор і що з цього реально виходить у Google Analytics.

Одразу розведу два поняття, щоб не було каші. Пошуковий RAG — це те, як Google і ChatGPT дістають ваш контент для своїх відповідей. Власний RAG — це ваша особиста база знань, якою ви автоматизуєте свою роботу. Ця стаття про другий. Для видимості в AI-відповідях власний RAG не потрібен, це інструмент автоматизації вашої роботи.

Для SEOшників тут взагалі нічого страшного: це продовження епохи з табличками. Якщо ви вмієте структурувати корисну інформацію для своєї роботи в таблички, перший власний RAG відкриє вам двері у швидшу автоматизацію процесів: перелінковка, сторінки-сироти, технічка, канібалізація.
І принцип, від якого я відштовхуюсь: якщо задача виконується більше ніж 3-4 рази, її треба автоматизувати. Ми, на жаль, не мегамозок, щоб пам'ятати всі властивості всіх сторінок своїх сайтів.

Цей блок я розповідала на стрімі SEO Baza про RAG, відео нижче стартує саме з нього:
Крок 1. Таблички з усім, що ви знаєте про сайт
Починаємо з табличок. Їх буде декілька:
- Сторінки. Всі сторінки сайту з усіма параметрами: ID сторінки, title, meta description, можна навіть текст, ключові слова і їхня частота. Все, що вам треба знати про ваші сторінки, в одному місці.
- Продукти. Якщо у вас ecommerce або будь-які сутності, які можна назвати продуктами, це окрема табличка. Мій живий приклад: блиск для губ. У блиску є склад, штрихкоди і ще купа властивостей. Я не пам'ятаю складу цих блисків, але для лінкбілдингу, перелінковки і текстів ця інформація мені потрібна.
- Ключові слова. Окрема табличка з усіма ключами, вже кластеризованими.
На виході цього кроку агенту більше не треба щоразу переказувати контекст: усе, що він має знати про сайт, лежить у структурованому вигляді.
Крок 2. База знань: колонка claim і оцінка джерел
Найголовніше — це база знань (knowledge). Вона складається з кількох джерел: Reddit, ваш сайт, спарсені YouTube-відео, які ви транскрибували в тексти і, можливо, додатково обробили скриптом, і книги. З книгами мені зайшло найбільше: я знайшла такі, яких не мав ніхто, і це прикольно.
Все це обробляється в таблицю, де кожен рядок — це один перевірений факт:
- claim — сам факт-чанк, те твердження, яке потім піде в тексти
- source і source URL — звідки взято, плюс source title, якщо треба
- approved — чи підтверджений факт
- human approved — окрема колонка: якщо мені не лінь, я підходжу і перевіряю сама
- hash — кожному запису присвоюється хеш, він потрібен для подальшої роботи з базою
Додатково claims можна зв'язати між собою ембедінгами, але для бази знань це не обов'язково.
Важливий момент при відборі джерел: зробіть собі внутрішній індекс авторитетності. Наприклад, від одного до десяти: Вікіпедія 10, Reddit 8, а якийсь сайт конкурента для вас не дуже авторитетний ресурс і отримує менше. Як це зробити найкраще, ще треба думати, але сам принцип відсіює сміття на вході.

Крок 3. Агент Доктор, який усе перевіряє
У мене є окремий агент, якого звати Доктор. Після кожної ітерації, незалежно від того, який процес я роблю, Доктор проходить по базі і перевіряє, правда це чи ні. Звідки я знаю, що все зробила правильно? Ніяк, поки Доктор не пройшовся. Після нього ще й колонка human approved для мене.
Крок 4. Агент-генератор, який пише тільки з верифікованого
Коли база готова, підключається повноцінний агент, який генерує тексти. Він звертається до верифікованих знань і вже з них пише. Вигадувати йому нема з чого: факти в базі, джерела в базі, авторитетність джерел теж.
Будувати це заради двох текстів нема сенсу. Воно окупається на обсягах десь від 5-10 текстів. Я витрачаю більше часу на те, щоб це побудувати, але потім значно менше часу на правки за агентами. Порівняно з тим, як я раніше генерувала тексти на сателіти, мені так простіше контролювати якість.
Крок 5. Перелінковка через векторну відстань
Коли з'являється таблиця зі згенерованим контентом, для кожної сторінки проставляється векторна відстань до інших сторінок, і саме її я використовую для перелінковки: лінкуються найближчі за змістом. На тій самій математиці працюють генерація внутрішньої перелінковки на 100 тисяч сторінок від Dejan і міграції сайтів через ембедінги.

Результат, яким я пишаюся: сайт з перелінковкою, де scroll depth 2 і жодної сторінки-сироти. Для мене це топ.
Що показує аналітика
Цифри поки прості. Промти я не трекаю, часу не було, тому дивлюся Google Analytics: переходи з AI-чатів і поведінкові фактори. З 10 переходів 6 людей проводять на сайті більше 3 хвилин. Три хвилини це досить багато: навряд чи бот буде сидіти стільки на моєму сайті, скролити і клацати на кнопочки. І потім вони клікають туди, куди мені треба, щоб вони клікали.
Додаткових робіт на сайті паралельно не було: це виключно робота з контентом у рамках експерименту, я спеціально сіла і з нуля пройшла весь процес. Багато дурних питань собі, трошки закопалась, пройшла. Тепер воно там собі працює само, я повертаюся хіба до мінорних правок агента.
Обслуговування і контроль якості бази
Коли ви публікуєте нову статтю на базі цього флоу, треба переіндексувати все між собою: мають з'явитися нові ембедінги і все має заново переранжуватися між базами. Кілька простих команд це в цілому вирішують, але питання ширше: раніше ви стежили за одним контекстним вікном, тепер ваша зона контролю це архітектура всієї системи. Тому перш ніж щось починати, намалюйте собі хоча б якусь діаграмку, як ви це бачите.
І про контроль якості бази. Берете питання, які вам найчастіше ставлять або які, на вашу думку, поставлять, рахуєте їхню векторну близькість до вашої бази. Що ближче до одиниці, то кращою буде відповідь. Якщо в багатьох питань потрібної близькості немає, ви буквально бачите, де у вас немає даних, і дозаповнюєте базу.
Простий приклад, з якого можна почати
Найпримітивніший RAG я колись зробила для рекрутерів: згодувала туди всі свої транскрибовані YouTube-відео, резюме, щось накатала від себе і зробила бота, якого можна проспівбесідувати без мене. Ставиш питання, він відповідає від мого імені. Задум був, щоб рекрутери не спілкувалися зі мною без мене. Не дуже: вони не зрозуміли, як цим користуватися. Але як перший примітивний приклад, щоб помацати технологію, цілком.
Найпростіше пояснення, яке я знайшла: у вас вдома є холодильник, і ви знаєте все про продукти в ньому, бо можете щоразу до нього звертатися. Приблизно таке саме ви будуєте для себе і своїх агентів по вашому сайту.
Чого робити не треба
Ставила на сайт кнопки з посиланням на AI-чат, типу запитай у ChatGPT про бренд чи про фічу на конкретній сторінці. Нічого вони не дали, я їх видалила. У Google в документації зараз прямо написано, що вони цього не враховують і можуть розглядати як спам, тому можна ще й доґратися до песимізації. Кажу зі свого досвіду: я це робила, це фігня, не раджу повторювати моїх помилок.
Відео повністю: RAG для SEO. Що працює насправді?