Knowledge Graph

Extract entities and relationships from AI conversations to build knowledge graphs. Learn how Memoid connects facts for richer context.

Memoid’s knowledge graph extracts entities and relationships, enabling rich connected queries.

Concepts

Entities

Named things in your data:

  • People — “John”, “Sarah Chen”
  • Organizations — “Acme Corp”, “Google”
  • Places — “San Francisco”, “New York”
  • Concepts — “machine learning”, “project alpha”

Relationships

Connections between entities:

  • John works_at Acme Corp
  • Sarah manages John
  • Acme Corp located_in San Francisco

Extracting Knowledge

With Memory Addition

Enable graph extraction when adding memories:

result = client.add(
    messages=[{
        "role": "user",
        "content": "My manager Sarah just got promoted to VP at TechCorp"
    }],
    user_id="user_123",
    extract_graph=True
)

# Extracted entities:
# - Sarah (person)
# - VP (role)
# - TechCorp (organization)

# Extracted relationships:
# - Sarah has_role VP
# - Sarah works_at TechCorp

Direct Extraction

Extract from any text:

result = client.extract_knowledge(
    text="John and Sarah co-founded Acme Corp in 2020. John is the CEO.",
    store=True  # Save to graph
)

print(result.entities)
# [John (person), Sarah (person), Acme Corp (organization), CEO (role)]

print(result.relationships)
# [John co-founded Acme Corp, Sarah co-founded Acme Corp, John has_role CEO]

Querying the Graph

Find Related Entities

result = client.graph_query(
    entity="John",
    depth=2  # Traverse 2 relationship hops
)

# Returns all entities within 2 hops of "John"
# John -> works_at -> Acme Corp -> located_in -> San Francisco

Search by Relationship

result = client.graph_search(
    query="Who works at Acme Corp?"
)

Managing Entities

Add Entity

client.add_entity(
    name="Acme Corp",
    type="organization",
    attributes={
        "industry": "technology",
        "founded": 2020
    }
)

Add Relationship

client.add_relationship(
    source="John",
    relation="works_at",
    target="Acme Corp"
)

Delete Entity

client.delete_entity("John")  # Also removes relationships

Entity Types

Common entity types:

  • person
  • organization
  • location
  • role
  • project
  • product
  • event
  • concept

Custom types are supported.

Use Cases

User Profile Building

Extract and connect information about users:

  • Preferences
  • Relationships
  • Activities
  • Context

Organizational Knowledge

Map company structures:

  • Team hierarchies
  • Project assignments
  • Expertise areas

Recommendation Systems

Traverse connections:

  • “People who like X also…”
  • “Related to your network…”

Best Practices

  1. Define your schema — Decide on entity and relationship types upfront
  2. Handle ambiguity — “Apple” could be fruit or company
  3. Merge carefully — Same entity may appear with different names
  4. Prune regularly — Remove outdated relationships