Почему мы выбрали рекурсивные SQL-запросы вместо GraphQL для графа знаний
veriga 2 часа назад Почему мы выбрали рекурсивные SQL-запросы вместо GraphQL для графа знаний Средний 6 мин 1.6K SQL * Искусственный интеллект КонтекстУ нас есть wiki по архитектурам нейронной памяти — 72 страницы,...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
Вот важная новость с фронта ИИ: veriga 2 часа назад Почему мы выбрали рекурсивные SQL-запросы вместо GraphQL для графа знаний Средний 6 мин 1. 6K SQL * Искусственный интеллект КонтекстУ нас есть wiki по архитектурам нейронной памяти — 72 страницы, хранящиеся в AlloyDB Omni (PostgreSQL 16. 11) с pgvector для векторного поиска.
Мы добавили граф знаний: типизированные рёбра между страницами, 11 типов связей, весовые коэффициенты. Граф обогатил retrieval: recall вырос с 46. Google недавно опубликовал context-graph-on-spanner — референсную реализацию контекстного графа на Cloud Spanner с встроенным Property Graph и GQL (Graph Query Language).
Технические детали
Возник вопрос: стоит ли перенести наш граф на Spanner с его нативной поддержкой графов? Или остаться на AlloyDB? Мы остались на AlloyDB.
Два подхода к графуSpanner: Property Graph + GQLSpanner с версии 7. 0+ поддерживает Property Graph — декларативную схему графа поверх реляционных таблиц:CREATE PROPERTY GRAPH MarketingContextGraph NODE TABLES (Customers, Decisions, Policies, Outcomes) EDGE TABLES ( AboutCustomer SOURCE KEY (decision_id) REFERENCES Decisions (decision_id) DESTINATION KEY (customer_id) REFERENCES Customers (customer_id), FollowedPolicy SOURCE KEY (decision_id) REFERENCES Decisions (decision_id) DESTINATION KEY (policy_id) REFERENCES Policies (policy_id), ResultedIn SOURCE KEY (decision_id) REFERENCES Decisions (decision_id) DESTINATION KEY (outcome_id) REFERENCES Outcomes (outcome_id) ); Запросы — на GQL, декларативном языке паттерн-матчинга:GRAPH MarketingContextGraph MATCH ( )<--( )-->(o:Outcomes) WHERE o. result = 'Renewed' RETURN d.
decision_type AS Action_Type, d. reasoning_text AS Success_Logic ORDER BY d. timestamp DESC LIMIT 3 Красиво.
Отраслевые последствия
Паттерн-матчинг: «найди мне все пути Decision → Customer ← Decision → Outcome, где outcome = Renewed». Одна конструкция MATCH заменяет 20 строк SQL-джойнов. AlloyDB: рекурсивные CTEУ нас нет GQL.
Но есть WITH RECURSIVE — стандартный механизм PostgreSQL для обхода графов:CREATE OR REPLACE FUNCTION graph_neighbors( _label TEXT, _kind TEXT DEFAULT NULL, _depth INT DEFAULT 1, _limit INT DEFAULT 20 ) RETURNS TABLE (node_label TEXT, node_kind TEXT, edge_kind TEXT, depth INT, wiki_path TEXT) AS $$ WITH RECURSIVE traverse(id, node_label, node_kind, wiki_path, edge_kind, depth) AS ( -- Anchor: стартовая нода SELECT n. wiki_path, NULL, 0 FROM graph_nodes n WHERE n. label = _label UNION ALL -- Recursive step: обход по рёбрам в обе стороны SELECT COALESCE(t.
depth + 1 FROM traverse p JOIN graph_edges e ON (e. id) LEFT JOIN graph_nodes t ON t. id LEFT JOIN graph_nodes s ON s.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.




