メインコンテンツへスキップ
ナレッジグラフは、エンティティ間の構造化された関係を、完全な双時相追跡とともに保存します。

エンティティ(ノード)

エンティティは名前付きの概念を表します:人物、プロジェクト、技術、組織などです。
{
  "name": "React",
  "summary": "JavaScript UI library by Meta",
  "entityType": "technology"
}
エンティティ名は search_graph によるセマンティック検索のためにベクトルとして埋め込まれます。

エッジ(リレーションシップ)

エッジは2つのエンティティを型付きリレーションシップとオプションのファクトで接続します。
{
  "sourceId": "node_alice",
  "targetId": "node_acme",
  "relation": "works_at",
  "fact": "Alice has been a senior engineer at Acme since 2024"
}
エッジのファクトはベクトル検索のために埋め込まれます。

双時相モデル

エッジは双時相追跡をサポートします:
フィールド用途
validAt現実世界でファクトが真になった時点
invalidAtファクトが真でなくなった時点
expiredAtシステム内でエッジが置き換えられた時点

ファクトの更新

ファクトが変更された場合、update_edge は履歴を保持します:
  1. 古いエッジが無効化される(expiredAtinvalidAt が設定される)
  2. 更新されたファクトと新しい validAt で新しいエッジが作成される
古いエッジは履歴クエリのためにデータベースに残りますが、アクティブな検索からは除外されます。

無効化

代替なくリレーションシップが終了した場合は invalidate_edge を使用します:
"Alice no longer works at Acme" → invalidate_edge(edge_id)

グラフ探索

search_graph は2つの検索戦略を組み合わせます:
  1. ベクトル検索 — セマンティック類似度で関連するノードとエッジを検索
  2. グラフ探索 — ヒットしたノードから N ホップ歩いて接続されたエンティティを発見
traverseDepth パラメータで探索の深さを制御します:
動作
0ベクトル検索のみ、探索なし
1ヒットしたノードの直接の隣接ノードを含む
2隣接ノードの隣接ノードまで含む
探索で発見されたノードは、ベクトル検索の直接ヒット(1.0)より低いスコア(0.5)を受け取ります。