Memgraph logo
Back to blog
Start Smart: 15 Questions to Ask Before Building a Knowledge Graph

Start Smart: 15 Questions to Ask Before Building a Knowledge Graph

By Sabika Tasneem
12 min readAugust 14, 2025

Building a knowledge graph sounds great but jumping in too early without answering some key foundational questions can lead to wasted time and over-engineering.

Here’s a list of 15 questions to help you start smart, whether you’re building a simple internal graph or planning a complex GenAI-powered system.

define the why

  1. What problem are you trying to solve with a knowledge graph?

    It is important to understand that not every dataset needs a graph. But if your problem is fundamentally about how things are connected, then a knowledge graphs might not just be helpful. It might be essential.

    Graphs excel when your data is dynamic, interconnected, and evolving. If your queries rely on multi-hop reasoning, hierarchical structures, or discovering indirect connections, then a relational model will get in the way. You’ll end up fighting your schema instead of unlocking insights.

    Take a step back and think about your core use case. Are the relationships between entities what drive meaning? Do you need to understand context, proximity, or patterns of interaction? If so, a graph offers a more intuitive and flexible approach. It lets you explore connections directly, without the overhead of JOINs or rigid schemas.

    You also gain scalability. As your domain grows or evolves, your model can adapt without a full rebuild. That’s especially valuable in fast-changing environments like recommendation engines, fraud detection, or AI explainability.

    If context and relationships matter most, then graph is the right tool for the job.

    Learn more: Where Are the Tables? Demystifying Graphs for Relational Thinkers

  2. Who are the users of this graph?

    Knowing your users is key. It changes everything about how you build your graph, how it is queried, and how it is served.

    • Data teams want queries they can reuse and trust.
    • LLMs need tight context and fast access to relevant facts.
    • Product teams want insights, not Cypher tutorials.

    User needs shape how you ingest, model, and expose your data. If you don’t account for who’s using the graph and how they interact with it, you risk building something technically sound but practically unusable.

    Think about the people querying the data. What tools are they using? What kind of outputs do they expect? Build for usability, not just structure. A well-modeled graph should feel intuitive to its users and support the kinds of questions they actually want to ask.

    If your users include LLMs, consider GraphRAG architecture with Memgraph to serve them real-time context

  3. What kind of questions or queries do you need to support?

    Although difficult to know upfront, having a list of sample queries like “Find all products indirectly related to X,” “Trace dependencies of Y,” or “Summarize documents about Z” is truly valuable. These can be used to understand what kind of graph patterns you’ll need to support, how deep your traversals will go, and how fast your system needs to respond.

    Imagine someone interacting with your graph. What are they trying to find out?

    • Are they exploring relationships or retrieving facts?
    • Do they need graph patterns, shortest paths, or full subgraphs?
    • Can they run these queries in real time?

    Design your schema in reverse: start with the question, map out the query, and only then settle on the structure. The goal is to ensure your graph can actually support the kinds of questions people want answered. If you design only for what looks clean or logical from a modeling standpoint, you risk building something elegant but ineffective.

    In the end, graphs are built to answer questions. Let those questions lead the design.

  4. What are the boundaries of your knowledge graph?

    Every graph has limits. If you don’t define them early, your scope will creep and your model will bloat.

    Think critically about where your graph ends and where other systems or tools take over. What domains are in scope? What questions fall outside its responsibility? Are there adjacent datasets you’ll deliberately exclude for now?

    Being intentional about what not to include helps keep your graph focused, manageable, and easier to maintain. You can always expand later, but starting small ensures clarity of purpose and faster iteration.

  5. Is real-time querying or streaming data important for your use case?

    Static graphs work for some use cases. But many don’t.

    • If you're powering fraud detection, you can’t afford stale data.
    • If an LLM is involved, you need fresh context in milliseconds.
    • If your insights change with each user interaction, the graph has to keep up.

    These use cases demand low-latency responses and fresh data. This will affect your architecture and the tools you choose.

    Struggling to choose between batch processing and stream processing? Here’s a detailed comparison!

    If you’re evaluating tools that can handle streaming ingestion and real-time graph querying, consider whether the architecture supports in-memory performance and dynamic updates. Memgraph’s in-memory graph engine is optimized for exactly these demands. It’s worth exploring if real-time performance is a core requirement.

    Learn more: In-memory vs. disk-based databases: Why do you need a larger than memory architecture?

understand data

  1. Where is your data coming from?

    Your graph is only as good as your sources. Identify them early. Data source type will determine preprocessing, transformation, and ingestion strategies.

    • Are you pulling structured data from a SQL database?
    • Are you parsing events from Kafka or scraping documents?
    • Will this data arrive in real time, batches, or irregular dumps?

    Define your ingestion strategy before you touch a single node. Make room for pre-processing steps like validation, deduplication, and enrichment. Without a defined ingestion plan, even the best-designed schema will fall short in production.


  2. What kind of entities and relationships naturally emerge from your data?

    Start with real examples. Take a handful of actual records, emails, event logs, or database rows and examine them closely.

    • What entities or values repeat across records? These often become your nodes.
    • What references or shared fields link records together? These help define your relationships.
    • Are there implicit structures like categories, timelines, or nested objects that suggest hierarchies?

    Once you’ve spotted these patterns, sketch out a draft graph model from them. Label your nodes and edges using the terms found in the data itself. This improves clarity and reuse.

    Remember, your goal isn’t to recreate your source data exactly. Instead, you're creating a graph that emphasizes the connections and structures needed for reasoning, traversal, and querying. The result should feel intuitive to navigate and aligned with the kinds of questions your users will ask.

  3. How clean and reliable is your data?

    Data quality does not automatically improve just because you've moved to a graph database. In fact, adopting a graph model can make data issues more visible.

    Problems like inconsistent naming, mixed data types, or duplicated records can now directly affect relationship integrity and distort query results.

    If you're building a production-ready system or need accurate results for decision-making, you'll need a custom pipeline that ensures structured, high-quality data enters your graph. A typical pipeline may include:

    1. Preprocessing to clean and organize raw data into a usable format.
    2. Named Entity Recognition (NER) to identify and classify important entities such as people, locations, or organizations.
    3. Relationship extraction to detect and define how entities connect based on the underlying data.
    4. Contextual understanding and disambiguation to resolve ambiguity and ensure that each node represents the correct real-world concept.
    5. Post-processing to validate, enrich, and refine the graph structure before final loading.

    By investing in each of these steps, you lay the groundwork for a graph that is not only accurate but also meaningful and performant at scale.

    Here’s an example: How to Extract Entities and Build a Knowledge Graph with Memgraph and SpaCy

  4. Do you need to resolve entity duplicates or disambiguate similar entries?

    Graphs depend on precision. If two nodes point to the same real-world object but remain separate in your graph, your insights will fragment. Queries return incomplete or misleading results. Context is lost.

    This is especially common when merging data from multiple sources. You might encounter slightly different versions of the same entity, think “John A. Smith” vs “John Smith”, or clashing identifiers across systems.

    Disambiguation requires more than just matching names. Ask yourself:

    • Are there trusted identifiers (like emails or customer IDs) that can anchor your matches?
    • Will you need fuzzy matching logic across text fields, geolocations, or timestamps?
    • Do you track confidence scores to determine when two records should be merged?
    • How do you handle conflicting attributes like differing addresses or roles?

    In the From Chaos to Context community call, this challenge is front and center. The talk covers how raw, unstructured event data is transformed into a contextual knowledge graph using node merging, heuristics, and custom logic to unify real-world identities.

    Getting this right early prevents fragmentation later. It ensures that central entities like customers, devices, or events are represented once and accurately, allowing traversals and queries to work as expected.

design with intent

  1. Do you already have a schema, naming convention, or domain vocabulary to follow?

    This is an easy win if you already have standards in place. Sticking to internal standards or industry vocabularies will make your graph easier for people to adopt and understand.

    While graph databases don't require a predefined schema, a well-structured model with clear naming conventions for node labels, relationship types, and properties will lead to more efficient queries and better long-term maintenance.

    In Memgraph, it's a good practice to use CamelCase for node labels and upper-case with underscores for relationship types to keep things consistent and readable.

  2. What retrieval methods do you plan to support, e.g., pivot search, vector search, hybrid, etc.?

    Retrieval is not just about querying. It's about designing for how users and systems will find what they need.

    If you're building an application with straightforward queries, for example, "show all users connected to this account", Cypher queries combined with node labels and indexes are often sufficient. These graph traversal patterns are predictable and well-supported.

    But if you're planning something more dynamic, like building a chatbot, surfacing similar articles, or generating responses based on context, you'll need more flexible search. This is where vector search becomes essential. Instead of matching fields, you retrieve based on meaning. That means embeddings, similarity scoring, and semantic relevance.

    Memgraph supports both approaches. Cypher handles the structured traversal layer. Vector search, using native embedding support, allows for semantic filtering. The two combine in what’s known as hybrid retrieval that matches both structure and meaning.

    This is exactly the approach used in GraphRAG, a technique that powers RAG systems with real-time graph context and semantic similarity. If you're considering LLM integration, GraphRAG makes your graph far more useful by grounding generative responses in connected, contextual data.

    To see how this works in a real-world GenAI application, check out the blog: Build GenAI Applications with GraphRAG + Memgraph.

    For a deeper look into retrieval performance and architecture, also see: How Memgraph Powers Real-Time Retrieval for LLMs.

think about usage and scale

  1. What kind of query performance do you need?

    You have to be honest here. Do milliseconds matter for your application, or are batch queries acceptable? For real-time systems, you’ll need a graph database optimized for low-latency responses.

    Memgraph’s in-memory compute engine is built specifically for this. Queries execute in microseconds, which makes it suitable for fraud detection, real-time recommendations, and GraphRAG pipelines.

  2. How large do you expect the graph to grow over time?

    This affects how you allocate memory and configure your deployment. Memgraph’s in-memory model delivers high performance but requires upfront planning around RAM sizing, snapshotting, and disk persistence.

    If you expect explosive growth, you’ll want to combine memory-efficient modeling with on-disk backups and snapshot management to prevent data loss or performance degradation.

  3. Do you have enough infrastructure (RAM and disk) to support ingestion and processing?

    Because Memgraph runs fully in-memory, your RAM must be sized to hold the active dataset. However, Memgraph includes mechanisms like write-ahead logging (WAL) and on-disk snapshots for durability. If you're expecting continuous ingestion from streaming sources like Kafka, you'll also want to tune buffer sizes and schedule snapshot intervals.

  4. Who will maintain the graph over time and how will you keep it updated?

    It is important to understand that graphs aren’t “fire and forget.” You need owners for schema evolution, data quality, and access policies. Ideally not just the person who built the prototype.

    Part of maintenance is ensuring the graph reflects reality. If your data changes daily or in real-time, you’ll need update strategies and tools that support live ingestion or re-computation. Update frequency directly affects ingestion architecture, memory management, and indexing strategy.

    Choosing a graph system that supports native stream processing, dynamic memory allocation, and Time-to-Live (TTL) enforcement helps keep your graph fresh without manual cleanup.

    Built-in monitoring and alerting can also provide real-time insights into system health, query performance, and resource usage, allowing your team to proactively resolve bottlenecks.

    With enterprise support (e.g., in Memgraph Enterprise), you can also gain direct access to engineers for troubleshooting, performance tuning, and long-term strategic guidance throughout your project lifecycle.

Wrapping Up

These 15 questions are not just for planning. They help you avoid common issues that often show up later in production, like schema changes, unreliable pipelines, or slow query performance.

You do not need to have perfect answers to everything at the start. But having some clarity now is better than skipping the question and dealing with the consequences later.

Keep your answers documented. They will guide how you design the graph, manage data ingestion, and support access and maintenance over time.

If your use case eventually requires real-time performance or streaming ingestion, Memgraph is one option you can explore when the time comes.

Join us on Discord!
Find other developers performing graph analytics in real time with Memgraph.
© 2025 Memgraph Ltd. All rights reserved.