memorybridge / scripts /build_kg.py
kimandrew927's picture
Initial Space deployment
1004967
"""
Build Knowledge Graph Script.
Reads persona corpus, extracts (subject, relation, object) triples via Qwen3-32B,
and serializes the resulting NetworkX graph.
Usage:
python scripts/build_kg.py --persona alex_rivera
python scripts/build_kg.py --persona alex_rivera --corpus-dir data/personas/alex_rivera
"""
from __future__ import annotations
import argparse
import asyncio
from pathlib import Path
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="Build knowledge graph for a persona from corpus text."
)
parser.add_argument(
"--persona", required=True,
help="Persona ID (e.g., alex_rivera)."
)
parser.add_argument(
"--corpus-dir", default=None,
help="Path to persona corpus directory. Defaults to data/personas/{persona}."
)
parser.add_argument(
"--config", default="memorybridge/config/settings.yaml",
help="Path to settings.yaml."
)
return parser.parse_args()
def main() -> None:
args = parse_args()
corpus_dir = args.corpus_dir or f"data/personas/{args.persona}"
from memorybridge.core.models import ModelRegistry
from memorybridge.memory.kg_builder import KGBuilder
registry = ModelRegistry(args.config)
builder = KGBuilder(registry)
print(f"Building KG for: {args.persona}")
print(f"Corpus directory: {corpus_dir}")
print(f"Output: data/knowledge_graphs/{args.persona}.gpickle")
builder.build(corpus_dir, args.persona)
print("Done.")
if __name__ == "__main__":
main()