Граф знань SEO Baza
Ми будуємо власний граф знань української SEO-спільноти: люди, компанії, події і теми, повʼязані між собою. Кожен запис має стабільний ідентифікатор і джерело факту.
Люди
4 профілі: спікери мітапів та експерти спільноти
Компанії та події
Уже в графі, сторінки скоро
Що таке граф знань
Це записи про сутності, тобто людей, компанії, події й теми, і звʼязки визначеного типу між ними: людина виступає на події, працює в компанії, знається на темі. Граф нічого не додумує сам, у ньому лежить рівно те, що в нього поклали. Тому сам собою набір вузлів і звʼязків ще не є графом знань. Графом знань його робить дисципліна: онтологія, зафіксоване походження кожного факту, ототожнення різних написань однієї сутності та регулярний перегляд, бо факти старіють. Саме з переглядом повʼязана головна пастка: сили зазвичай ідуть на те, щоб покласти дані в граф, і майже ніколи на ревізію вже збереженого. Тому в нас дата перевірки стоїть на кожному факті.
Значення замість статистичної схожості
Пошук за ключовими словами і мовні моделі ранжують за релевантністю, тобто за статистичною схожістю тексту до запиту. Схожість дає ймовірну відповідь без гарантій. Речення про те, що Вадим і Артем разом сиділи на панелі, для машини просто рядок тексту. У графі це два звʼязки до однієї події, які стверджують точно, хто виступав, де, коли і в якій ролі. Це і є значення: машина оперує фактом, який хтось свідомо записав і за який відповідає джерело, замість здогадки.
Онтологія
Значення звʼязку не береться само собою. Воно тримається на домовленості, що саме в цей звʼязок вкладають усі, хто пише в граф. Ця домовленість і називається онтологією. По суті це правила гри для графа, які відповідають на три питання: які типи сутностей узагалі існують, які звʼязки між ними дозволені і що саме кожен звʼязок означає.
У нашому графі є, серед іншого, люди і події. Звʼязок виступає на дозволений тільки в напрямку від людини до події: компанія не може виступати на людині, і граф такий запис просто не прийме. А ще ми домовилися, що виступає на означає участь у програмі як спікер. Гість у залі чи людина, згадана в анонсі, такого звʼязку не отримують, а для організаторів є окремий тип звʼязку. Тому де б цей звʼязок не зустрівся в графі, він завжди стверджує одне й те саме.
Онтологія працює як контракт: факт потрапляє в граф лише після перевірки проти цих правил. Без неї назву звʼязку кожен розуміє по-своєму, хтось записує спікерів, хтось відвідувачів, і за пів року вже ніхто не знає, чому в цьому графі можна вірити.
Статистика по звʼязках
Коли факти лежать звʼязками, їх можна рахувати. Скільки в людини виступів за рік і на яких майданчиках. Яка тема поєднує найбільше спікерів. Хто зʼєднує між собою різні групи спільноти. У нашому графі вже видно, що паразитне SEO обʼєднує двох спікерів Poshuk Meetup, а Вадим з Артемом ділили сцену ще на нашому мітапі #2 торік. По купі розрізнених текстів такого не порахуєш, по графу це один запит.
Чим це відрізняється від бази даних
Звичайна база тримає записи в таблицях під запити, які передбачили наперед. У графі звʼязки самі є даними, тому нові питання не вимагають нових таблиць: обхід звʼязків відповідає і на ті питання, яких на старті ніхто не планував.
Чому не просто RAG
RAG шукає в текстах шматки, схожі на запит, і віддає їх моделі. Для переказу документів цього досить. Точні питання про спільноту так не розвʼязуються: у купі текстів та сама людина записана різними іменами, тож Белевець Олександр, Alex Belevets і Алекс Белевец для пошуку три різні люди. Старі твердження лежать поруч з новими без жодної позначки, що вже застаріло і звідки що взялося. І порахувати щось по шматках тексту неможливо. У графі сутності ототожнені, у кожного факту є джерело і дата перевірки, а звʼязки можна рахувати. RAG при цьому нікуди не зникає: пошук по текстах поверх графа фактів це окремий підхід, який називають GraphRAG.
Як зробити свій граф знань під SEO
- Почни з онтології: визнач класи сутностей, дозволені звʼязки між ними і значення кожного звʼязку, і зафіксуй це як схему-контракт. Усе, що поза схемою, у граф не пишеться. Ми стартували з пʼяти класів: Person, Organization, Event, Topic, Place.
- Кожен факт записуй із джерелом, датою перевірки і рівнем впевненості з першого дня. Додати походження фактів заднім числом майже неможливо.
- Тримай граф у форматі, з якого генерується решта. У нас поки що це один JSON-файл: людей у графі всього 4, і на старті такого сховища вистачає. З нього збираються запити для Neo4j і візуалізація. Сам файл графом знань не є: граф визначають онтологія, сутності, звʼязки і походження фактів, а сховище з ростом зміниться на графову базу.
- Виводь сутності на сайт окремими сторінками, щоб у кожної був канонічний URL, на який можна посилатися. Розмітку бери за типом сутності: Person для людей, Organization для компаній, Event для подій, Product для продуктів. І додавай sameAs на зовнішні профілі сутності, якого б типу вона не була.