A supplier calls to say a component is two weeks late. Somebody now has to name every open order that is exposed. An assistant that has read the supplier contract will answer confidently and be wrong, because the answer is not written in any document. It has to be walked, order by order. That is the difference between a vector database and a graph database.
Which one, and for whom. Start with a vector database when the application needs to find content that means roughly the same thing as the question. Add a graph database only when the answer depends on following named relationships between entities, and you can name the path. Most useful systems use both, with your existing database still holding the record.
A vector database and a graph database solve different retrieval problems. “Find policy passages about shipping exceptions” is a similarity problem. “Which suppliers, products and open orders are affected by a delayed component?” is a relationship and path problem.
Two terms do the work here. An embedding is a list of numbers that stands in for a piece of text, an image or a product. Things with similar meaning get numbers that sit close together. A graph stores entities as nodes and the links between them as typed relationships, so the connection itself is data you can query.
Pick the store that fits the questions your users ask and you pay for one build. Pick the wrong one and you pay for two, while your team keeps answering the hard questions by hand. Autonomous Technologies is an engineering firm. We build and run the AI and data systems behind Shopify stores and commerce businesses, for the founders and operators who answer for what a customer is shown. Our engineering work is paid for by the build you skip: it starts with the ten questions on one page, below, so you buy one store and not two.
Do not buy a graph database because you plan to build GraphRAG. GraphRAG is a family of retrieval designs that can build or use graph-shaped evidence. It is not the same thing as adopting a graph database for your operational domain.
This is for whoever will be asked why the answer was wrong
Read this if you are designing or buying an AI assistant that reads company data, and you will be held responsible when it answers a customer. It assumes you already have an operational database and are deciding what sits beside it.
Skip this if you are shipping a demo, or your corpus is a few dozen documents that one person maintains. Plain search over those documents will teach you more, faster.
The decision in one table
- Decision factor
- The question it answers
- Vector database
- What is closest in meaning?
- Graph database
- How are these things linked?
- Decision factor
- What it stores
- Vector database
- Number vectors, plus metadata.
- Graph database
- Nodes, named links and their fields.
- Decision factor
- How it fetches
- Vector database
- It ranks the nearest, then filters.
- Graph database
- It matches a pattern and walks the links.
- Decision factor
- Strong use cases
- Vector database
- Search by meaning, RAG, similar items, images.
- Graph database
- What depends on what, identity, fraud rings, access.
- Decision factor
- Weak fit
- Vector database
- Hard rules about links, with thin metadata.
- Graph database
- Wide search by meaning, with no owned graph.
- Decision factor
- Main risk
- Vector database
- Context that looks right and is wrong.
- Graph database
- Links that are missing, stale or unclear.
- Decision factor
- First proof
- Vector database
- A labelled test set, scored.
- Graph database
- Real path queries, with an owner for each link.
| Decision factor | Vector database | Graph database |
|---|---|---|
| The question it answers | What is closest in meaning? | How are these things linked? |
| What it stores | Number vectors, plus metadata. | Nodes, named links and their fields. |
| How it fetches | It ranks the nearest, then filters. | It matches a pattern and walks the links. |
| Strong use cases | Search by meaning, RAG, similar items, images. | What depends on what, identity, fraud rings, access. |
| Weak fit | Hard rules about links, with thin metadata. | Wide search by meaning, with no owned graph. |
| Main risk | Context that looks right and is wrong. | Links that are missing, stale or unclear. |
| First proof | A labelled test set, scored. | Real path queries, with an owner for each link. |
Pinecone defines a vector database by the embeddings it stores and the nearest entries it returns. Neo4j defines a graph database by nodes, relationships and the queries that traverse them (Pinecone docs, Neo4j docs).

Take one question to both stores before you buy either
Go back to the late component.
- For the question "which open orders are exposed by a delayed component"
- Hops the answer needs.
- Vector database
- 0, it ranks by closeness.
- Graph database
- 4: component, product, inventory, order.
- For the question "which open orders are exposed by a delayed component"
- What comes back
- Vector database
- the top k passages, with k set by you.
- Graph database
- every node matching the declared pattern.
- For the question "which open orders are exposed by a delayed component"
- Distinct ways to be wrong.
- Vector database
- 1: a close passage that does not apply here.
- Graph database
- 2: a missing relationship, or one that means something else.
- For the question "which open orders are exposed by a delayed component"
- Evidence you can put in front of a person.
- Vector database
- the passage and its score.
- Graph database
- the path and each relationship on it.
| For the question "which open orders are exposed by a delayed component" | Vector database | Graph database |
|---|---|---|
| Hops the answer needs. | 0, it ranks by closeness. | 4: component, product, inventory, order. |
| What comes back | the top k passages, with k set by you. | every node matching the declared pattern. |
| Distinct ways to be wrong. | 1: a close passage that does not apply here. | 2: a missing relationship, or one that means something else. |
| Evidence you can put in front of a person. | the passage and its score. | the path and each relationship on it. |
Neither column answers the question alone. The passage explains the policy. The path names the orders. Ship the one your users are actually asking for first.
What a vector database does well
An embedding model turns a chunk of text, an image or a product into a vector. That is a list of numbers, laid out so related things sit close together. At query time the app embeds the question, finds close vectors, then filters by tenant, language, product line or access scope.
That helps when a user does not know the words used in the source. A support bot can match “my parcel is late” to an article called “shipping exceptions and carrier handoff.”
Closeness is not truth. A high score says only that two items sit near each other. It does not prove the passage is current, or that it applies to this customer. Store the document id, source link, version, tenant and access rights as metadata, fetch the source passage, and make the app cite it or decline.
The vector retrieval design choices buyers miss
Chunking, the way you cut a document into retrievable pieces, changes what can be retrieved at all. Large chunks can bury a precise answer. Tiny chunks can separate a rule from its exception. Filters must be enforced server-side, not merely described in a prompt. Re-indexing has to be triggered when an approved source changes.
A useful pilot is not a chatbot demo. Write real queries, name the sources that count as evidence, and measure whether retrieval returns them near the top under real access rules.
What a graph database does well
A graph database makes relationships first-class data. In a property graph, a product, supplier, warehouse and order can be nodes, while SUPPLIED_BY, STOCKED_AT and CONTAINS are typed relationships carrying their own fields, dates and status. A query follows a declared pattern rather than inferring a connection from likewise worded text.
This matters where relationships are the product logic. “Which open orders are exposed if supplier S cannot ship component C?” The answer walks supplier, part, product, stock and order. A vector search may find the right policy text. It must not decide which orders are hit.
Graphs also suit identity and fraud work, access rights, service maps and org charts. The benefit is one repeated kind of question answered with the path it walked.

The graph design choices buyers miss
Graph flexibility does not remove data modelling. Teams still need canonical entity IDs, relationship types, direction, temporal rules, constraints and ownership. “Customer” linked to “account” is not enough if the relationship could mean buyer, bill-to contact, subsidiary or beneficial owner. Those distinctions decide whether a traversal is safe.
Start from high-value questions and work backwards. Name the path, the entities, the relationship semantics, the system that owns each fact, latency expectations and how changes are passed on. If the answer can be supplied with one or two stable relational joins, a graph database may be an extra running surface.
GraphRAG is an architecture, not a synonym for graph database
GraphRAG joins retrieval-augmented generation to graph-shaped evidence. A pipeline pulls entities and links out of documents, builds a knowledge graph, and hands the nearby part of it to a model. Microsoft’s GraphRAG project works this way, and its own docs warn that indexing can burn a lot of model time. Microsoft GraphRAG docs
That suits questions that need a connected picture across a document collection. It also adds extraction errors, model cost and review work. An extracted statement should not silently become an allowed business relationship. Keep provenance on nodes and edges: source document, passage, extraction method, confidence, reviewer status and refresh date.
When the right answer is both
The common hybrid pattern:
- Use vector retrieval to find the documents, cases or products that fit.
- Match what you found to canonical ids, where the rights allow it.
- Use a graph walk or a SQL query to apply the hard business rules.
- Give the model only that evidence, with citations and a bounded reply.

What we saw on two of our own systems
The first is a repair assistant for one vehicle model. Its users ask “which page says this”. We indexed 6,264 records from 57 sources in plain full-text search with a ranking score. A 23-row alias table maps slang and market names onto search terms. No embedding model. The 20-question test set passes 20 of 20. None of the 178 queries logged since 26 August 2026 came back empty. Keyword search misses paraphrases; so far the log says it has not.
The second is the code index for our own workspace. Its users ask “what depends on this” before they change it. That is a graph question, so it is a graph: 170,505 nodes and 449,346 edges over 16,603 files.
- System
- Vehicle repair assistant
- The question users ask
- Which passage says this?
- Store chosen
- Full-text search plus an alias table, no vectors
- Size
- 6,264 records, 57 sources
- Check
- 20 of 20 test questions, 0 empty results in 178 queries
- System
- Workspace code index
- The question users ask
- What depends on this symbol?
- Store chosen
- Graph in SQLite
- Size
- 170,505 nodes, 449,346 edges
- Check
- Queried before edits to shared code
| System | The question users ask | Store chosen | Size | Check |
|---|---|---|---|---|
| Vehicle repair assistant | Which passage says this? | Full-text search plus an alias table, no vectors | 6,264 records, 57 sources | 20 of 20 test questions, 0 empty results in 178 queries |
| Workspace code index | What depends on this symbol? | Graph in SQLite | 170,505 nodes, 449,346 edges | Queried before edits to shared code |
When the other choice wins
The strongest objection to starting with a vector store is that similarity cannot enforce a rule. The assistant can cite the right policy and still name the wrong orders. Where the answer must be exact and auditable, such as entitlements, stock exposure or fraud, the graph or a SQL path wins. Similarity only finds the supporting text.
Two cases from the systems above show the line.
Similarity beats our repair index the day a user asks in words no alias row covers. The 23-row alias table is a hand-written stand-in for what an embedding does on its own. The query log is the trigger: the first paraphrase it misses is the day embeddings go in.
The graph beats a vector index over our code the moment the question is “who calls this”. A vector index could return functions that look alike. It cannot return the caller, because a caller is a link, not a resemblance.
Failure modes to plan for
- Failure mode
- Embedding drift
- What it looks like
- Results move after a model or chunking change.
- Engineering response
- Version the embeddings. Rerun the test set. Run both indexes while you move.
- Failure mode
- Metadata leak
- What it looks like
- Search returns another tenant's document.
- Engineering response
- Apply access filters inside retrieval. Test hostile queries. Log the filter used.
- Failure mode
- Unclear links
- What it looks like
- A walk treats a subsidiary as the contracting account.
- Engineering response
- Agree the link names, the counts and the dates with the domain owner.
- Failure mode
- Stale graph
- What it looks like
- The graph misses a recent product or policy change.
- Engineering response
- Track ingestion. State how fresh it should be. Show the last update.
- Failure mode
- Made-up links
- What it looks like
- Pulled edges get treated as checked.
- Engineering response
- Store where each came from. Keep pulled claims apart from mastered data.
- Failure mode
- Model overreach
- What it looks like
- A fluent answer sounds surer than the evidence.
- Engineering response
- Require citations. Fall back when unsure. Write task tests.
| Failure mode | What it looks like | Engineering response |
|---|---|---|
| Embedding drift | Results move after a model or chunking change. | Version the embeddings. Rerun the test set. Run both indexes while you move. |
| Metadata leak | Search returns another tenant's document. | Apply access filters inside retrieval. Test hostile queries. Log the filter used. |
| Unclear links | A walk treats a subsidiary as the contracting account. | Agree the link names, the counts and the dates with the domain owner. |
| Stale graph | The graph misses a recent product or policy change. | Track ingestion. State how fresh it should be. Show the last update. |
| Made-up links | Pulled edges get treated as checked. | Store where each came from. Keep pulled claims apart from mastered data. |
| Model overreach | A fluent answer sounds surer than the evidence. | Require citations. Fall back when unsure. Write task tests. |
Where this breaks: the store is not what makes the answer trustworthy
Here is the objection worth taking seriously. Teams pick the store, ship it, and the answers are still wrong in ways nobody predicted. The store was never the control.
Three gaps cause most of it. Nobody wrote down what a correct answer looks like, so every failure becomes an opinion. Retrieval runs as the application, not as the person, so a customer finds the leak before a test does. And the corpus moves, the model is upgraded, a category is renamed, and quality drifts with no alarm.
The fix is the same on either side of this comparison. Write the evaluation set before you write the retrieval code. Keep it small enough that a person can read every case. Then run it adversarially, on purpose, and record what broke.
That discipline is the deliverable. On the Outbound Engine adversarial build we kept 418 builder and critic rounds written down as they happened, 7 to 19 August 2026. Every accepted behaviour has an argument on the record. A store cannot give you that. A process can.
Keep the write path boring. Letting a model create durable graph relationships or change product data needs explicit approval, validation and an audit trail.
Procurement questions for engineering leaders
- Which user questions are similarity questions, and which need deterministic paths?
- How are tenant boundaries and document permissions applied before retrieval?
- Can we inspect the retrieved items, scores, graph path and source version behind a production answer?
- What evaluation set decides retrieval quality before rollout?
Your next step is ten questions on one page
Write down ten decisions your users cannot answer reliably today. Mark each one as similarity, relationship, calculation, or a mix. Build one thin slice around the highest-value question, with a source owner, access control and a test set. That page tells you which store to buy. It often tells you that you need less than you thought. Bring it to a systems call and you leave with the ten questions sorted into similarity, relationship and calculation, the store that fits them named, and the budget for the second build you no longer need. That is what the call is for: one build paid for, not two.
Vector and graph databases · Project enquiry
Choose the right retrieval foundation
Describe the relationships and questions your system needs to support. We will follow up to discuss whether Autonomous can help.
Common questions
Can a graph database replace a vector database for RAG?
Sometimes, but not on its own. A graph retrieves connected, structured evidence, while vectors are purpose-built for ranking semantic similarity. Choose from the corpus, the user questions and your evaluation results. A hybrid design is common.
Is GraphRAG more accurate than ordinary RAG?
It can help questions that need connected evidence, but it adds extraction and maintenance risk. Test it against a labelled question set and inspect the evidence path rather than assuming a graph improves every query.



