Графы знаний

Что такое граф знаний

Google Knowledge Graph - 500 миллиардов фактов. Wikidata - 100M+ сущностей. Neo4j в NASA управляет миссиями через граф связей. Microsoft Azure KG питает Copilot для enterprise RAG. LLM + KG = neuro-symbolic AI: llamaindex KnowledgeGraphIndex заставляет GPT-4 рассуждать по структурированным фактам, а не галлюцинировать. Это не футуризм - это продакшн 2024.

  • **Google Knowledge Panel**: карточка в поиске - визуализация 500B фактов; без KG - только список ссылок
  • **Microsoft Copilot enterprise**: Azure Knowledge Graph как structured memory для RAG, точность ответов +40% vs plain embeddings
  • **NASA миссии**: Neo4j граф компонентов - мгновенный анализ последствий отказа любого узла
  • **Drug Discovery**: фармацевтические KG (BioKG, OpenTargets) связывают гены, белки, болезни; 2B+ сэкономлено на отсеве неперспективных молекул
  • **llamaindex KnowledgeGraphIndex**: LLM читает граф, а не сырой текст - снижение галлюцинаций в 3-5x на фактических вопросах

Nodes (Сущности)

Google Knowledge Graph хранит 500 миллиардов фактов о 8 миллиардах сущностей. Когда поисковик выдаёт карточку «Christopher Nolan - режиссёр Inception» без перехода на сайт, это не просто таблица в базе данных - это **граф знаний**: сеть связанных сущностей людей, мест, фильмов, концепций. Microsoft Copilot для enterprise RAG и llamaindex KnowledgeGraphIndex (neuro-symbolic AI) работают на том же принципе. Каждая сущность - это **node** (вершина) графа.

Google Knowledge Graph содержит более **800 миллиардов** фактов о 8 миллиардах сущностей. Wikidata - крупнейший открытый граф знаний - содержит более 100 миллионов сущностей, каждая с уникальным идентификатором (например, Q42 = Дуглас Адамс).

Сущности в Knowledge Graph (KG) - это не просто строки текста. Каждая сущность имеет **уникальный идентификатор** (URI), **тип** (класс) и **свойства**. «Москва» в KG - это конкретная сущность, отличная от «Москва Мул» (коктейль) или «Москва» (фильм). Wikidata содержит 100M+ таких однозначных сущностей - именно этим он ценен для автоматической разметки обучающих данных LLM.

Сущности группируются в **классы** (типы): Person, Place, Organization, Event. Это создаёт иерархию: Учёный - подкласс Человека, Университет - подкласс Организации. Такая типизация позволяет задавать осмысленные запросы: «Все учёные, родившиеся в Германии».

Чем сущность в Knowledge Graph отличается от записи в обычной базе данных?

Edges (Связи)

Сущности без связей - это просто список. Сила Knowledge Graph в **рёбрах** (edges) - типизированных связях между сущностями. Каждое ребро имеет **направление** и **тип**: «Эйнштейн → родился_в → Ульм» - это не то же самое, что «Ульм → родился_в → Эйнштейн».

Типы связей в KG стандартизированы через **онтологии** (schemas). Wikidata определяет тысячи типов связей (properties): P19 (место рождения), P69 (образование), P106 (род занятий). Стандартизация позволяет разным системам обмениваться знаниями.

Тип связи (Wikidata)IDПример
instance ofP31Москва → P31 → Город
subclass ofP279Город → P279 → Населённый пункт
countryP17Москва → P17 → Россия
capital ofP36Россия → P36 → Москва
occupationP106Эйнштейн → P106 → Физик
date of birthP569Эйнштейн → P569 → 1879-03-14

Связи в KG могут иметь **квалификаторы** - метаданные на рёбрах. Например: «Эйнштейн → гражданство → Германия [start_time: 1879, end_time: 1896]». Это невозможно в простом графе - нужен **property graph** или **RDF reification**.

Связи создают **многошаговые пути** (multi-hop paths): «Эйнштейн → работал_в → Принстон → находится_в → Нью-Джерси → часть → США». Такие пути позволяют отвечать на сложные вопросы: «В какой стране находится университет, где работал Эйнштейн?» - без хранения прямого факта. Neo4j использует этот принцип для управления миссиями в NASA - граф связей между компонентами ракеты позволяет мгновенно найти цепочку последствий любого отказа.

Чем связи (edges) в Knowledge Graph отличаются от foreign keys в реляционной БД?

Triples (Тройки)

Каждый факт в Knowledge Graph записывается как **тройка** (triple): (subject, predicate, object). Это атомарная единица знания. Весь граф - это набор таких троек. «Москва - столица - России» = одна тройка. «Земля - вращается вокруг - Солнца» = ещё одна.

Object может быть двух типов: **сущность** (другой node в графе) или **литерал** (значение: строка, число, дата). «Эйнштейн → родился_в → Ульм» - object-сущность. «Эйнштейн → дата_рождения → 1879-03-14» - object-литерал. Литералы - это листья графа.

Wikidata содержит более **1.7 миллиарда** троек. DBpedia (извлечённая из Wikipedia) - около 3 миллиардов. YAGO - 120 миллионов. Тройки - универсальный формат: любой факт в мире можно выразить через (subject, predicate, object).

Сила троек - в **композиционности**. Сложные вопросы раскладываются на цепочки: «В какой стране родился создатель теории относительности?» = (? , created, Relativity) → (Einstein, born_in, ?) → (Ulm, country, ?) → Germany. Каждый шаг - одна тройка.

Какая тройка правильно описывает факт «Python создал Гвидо ван Россум»?

RDF

Тройки - отличная модель, но нужен стандартный формат. **RDF** (Resource Description Framework) - это стандарт W3C для представления троек. В RDF всё идентифицируется через **URI** (Uniform Resource Identifier), что позволяет объединять данные из разных источников без конфликтов имён.

URI в RDF решают проблему **disambiguation**: http://wikidata.org/entity/Q937 - это конкретный Эйнштейн, а не однофамилец. URI гарантируют, что два разных источника, ссылаясь на Q937, говорят об одном и том же человеке.

RDF форматРасширениеОсобенности
Turtle.ttlЧеловекочитаемый, компактный
N-Triples.ntОдна тройка на строку, прост для обработки
RDF/XML.rdfXML-based, исторический формат
JSON-LD.jsonldJSON-совместимый, для веб-API
N-Quads.nqN-Triples + named graph (контекст)

**Wikidata**, **DBpedia**, **Schema.org** - крупнейшие открытые KG на основе RDF. Google Knowledge Panel (правая карточка в поиске) построен на собственном KG + Schema.org разметке с веб-страниц. JSON-LD - формат, через который сайты передают структурированные данные поисковым системам.

Семантический веб Тима Бернерса-Ли

В 2001 году Тим Бернерс-Ли (создатель WWW) опубликовал в Scientific American статью «The Semantic Web», описывающую видение интернета, где машины понимают смысл данных. RDF (1999) и OWL (2004) - стандарты, созданные для реализации этого видения. Хотя «семантический веб» в чистом виде не случился, его технологии живут в Knowledge Graphs, Schema.org и Linked Data.

Knowledge Graph - это просто база данных с таблицами

Knowledge Graph хранит семантические связи между сущностями, создавая сеть фактов, по которой можно делать логические выводы

В реляционной БД связи - foreign keys без семантики. В KG каждое ребро типизировано («родился_в» ≠ «работал_в»), сущности имеют глобальные URI, граф поддерживает multi-hop запросы и reasoning. Именно поэтому Copilot через Azure KG даёт точные ответы на сложные корпоративные вопросы, а plain SQL-запрос в те же данные требует десятков JOIN-ов и всё равно не поддерживает «найди всё связанное через 3 шага».

Зачем в RDF используются URI вместо простых строк?

Ключевые идеи

  • **Nodes** - сущности с уникальным URI, типом и свойствами; 100M+ в Wikidata, 500B+ фактов в Google KG
  • **Edges** - типизированные направленные связи; multi-hop пути решают вопросы без хранения прямых фактов
  • **Triples** (subject, predicate, object) - атомарная единица знания; 1.7B+ троек в Wikidata
  • **RDF** - стандарт W3C с глобальными URI; JSON-LD передаёт KG-данные поисковикам из миллионов сайтов
  • **LLM + KG** - neuro-symbolic AI: llamaindex KnowledgeGraphIndex снижает галлюцинации в 3-5x

Связанные темы

Knowledge Graphs объединяют идеи из баз данных, семантического веба и AI:

  • RDF и семантический веб — Следующий урок детально разбирает RDF-форматы, OWL-онтологии и язык запросов SPARQL
  • Property Graphs: Neo4j — Альтернативная модель графов знаний с нативными свойствами на рёбрах

Вопросы для размышления

  • Возьми любого публичного учёного и запишите 5 троек о нём в формате (subject, predicate, object). Какие предикаты пришлось придумать, которых нет в Wikidata?
  • Почему Google не может просто хранить все факты мира в одной таблице SQL?
  • В чём преимущество URI перед обычными строками при объединении данных из Wikipedia, IMDb и научных статей?

Связанные уроки

  • db-01-intro — Реляционные и графовые модели - альтернативные способы хранения связанных фактов
  • nlp-01 — Графы знаний используются в NLP для entity linking, fact-checking и knowledge-augmented LLM
  • ds-01-arrays — Графовые структуры данных (adjacency list, матрица смежности) - представление графа знаний в памяти
  • st-01-feedback-loops — Онтологии и системные модели - оба описывают сеть взаимодействующих концептов
  • dm-01
Что такое граф знаний

0

1

Войти