Data as of Aug 25, 2026 · Based on 38 AI responses from ChatGPT Search and Google AI Mode · See how Parse measures this
Your brand can be here too.
For enterprise agents that demand absolute maximum accuracy—especially when navigating complex, multi-hop, or highly siloed internal data—the consensus architectural pattern has shifted away from pure vector search. Instead, the gold standard is a Modular Hybrid-Graph Stack that combines dense vector embeddings (semantic), sparse/BM25 text indexing (lexical) , and a Knowledge Graph (structural/relational) , unified by a cross-encoder reranking layer.
Pure vector search fails in the enterprise when agents face exact IDs, rigid acronyms, precise part numbers, or multi-step logical connections ("Who reports to who, and what projects did they touch in Q3?").
The Ultimate Enterprise Retrieval Stack Architecture
[User Agent Query]
│
▼
[Query Rewriting & HyDE] (Expansion / Intent Mapping)
├──► Dense Retrieval (Vector Similarity: Qdrant / Pinecone / pgvector)
├──► Lexical Retrieval (BM25 / Full-Text: PostgreSQL / Elasticsearch / Lucene)
└──► Graph Traversal (Multi-hop relations & entities: Neo4j / NetworkX / GraphRAG)
│
▼
[Reciprocal Rank Fusion (RRF)] (Merging candidate lists)
│
▼
[Cross-Encoder Reranking] (Cohere Rerank / BGE / FlashRank)
│
▼
[Top-K Precision Context ──► Enterprise Agent / LLM]
Layer-by-Layer Stack Breakdown
Instead of picking just one database, production enterprise stacks leverage dual-write or unified engines:
pgvector and pgvectorscale (for teams with <100M vectors who want ACID compliance, role-based access control, and unified relational/metadata filtering right next to exact keyword and vector queries).Proven Production Deployments
pgvector + native full-text BM25 + Python RRF + FlashRank. Perfect for security-first internal enterprise apps under 50 million documents because it keeps data inside standard enterprise DB governance.If you want to tailor this further, tell me:
If accuracy is the primary objective for enterprise agents, I would not choose “vector vs. graph” as a binary decision. The strongest architecture in 2026 is generally hybrid retrieval with lexical + dense retrieval, a strong reranker, metadata/ACL filtering, and selective graph traversal for relationship-heavy questions.
Recent research reinforces this: a large 2026 scaling study found that plain BM25 remained surprisingly strong as corpora grew, while graph-based RAG incurred substantial construction costs and did not consistently beat BM25. arxiv.org Meanwhile, an enterprise-specific benchmark found that noisy retrieval, knowledge gaps, and conflicting facts cause major reliability failures even when individual constraints look good.
| Stack | Accuracy potential | Enterprise fit | Complexity | My take |
|---|---|---|---|---|
| Elasticsearch hybrid + reranker | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Medium | Best overall default |
| Vespa hybrid + custom ranking | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | High | Best for search/relevance experts |
| Pinecone dense+sparse + reranker | ⭐⭐⭐⭐½ | ⭐⭐⭐⭐⭐ | Low–medium | Best managed vector-first option |
| Vector DB + Neo4j/graph layer | ⭐⭐⭐⭐⭐* | ⭐⭐⭐⭐ | High | Best when relationships matter |
| Pure GraphRAG | ⭐⭐⭐½ | ⭐⭐⭐ | High | Specialized, not my default |
| Pure vector search | ⭐⭐⭐½ | ⭐⭐⭐⭐ | Low | Too brittle for high-accuracy enterprise agents |
*The hybrid graph approach can be excellent, but only when the graph represents information that actually helps answer the query.
Elasticsearch hybrid search is probably the stack I'd start with for a new enterprise agent.
Use:
BM25 / lexical → dense retrieval → RRF → reranker → ACL/filtering → agent
Why? Enterprise data is full of things embeddings aren't particularly good at: SKU numbers, error codes, legal clauses, product names, acronyms, version numbers, names and exact terminology. Lexical search protects against those failures, while dense retrieval handles paraphrases and conceptual queries. Elastic explicitly recommends RRF for combining the two rankings.
The other big advantage is operational: filtering, ranking, explainability and retrieval live in one search system rather than being stitched together.
Vespa hybrid search documentation is extremely powerful if you have a search/relevance team.
Vespa separates retrieval from ranking, letting you combine BM25, embeddings and arbitrary ranking features.
I'd choose it over Elasticsearch when you expect sophisticated custom ranking such as:
final_score =
lexical_score
+ semantic_score
+ authority_score
+ freshness_score
+ business_score
+ graph_score
It's more engineering-intensive, though.
Pinecone hybrid search is a very good choice when your team wants a vector-native platform rather than a general-purpose search engine.
Its current hybrid capabilities combine dense and sparse retrieval, with separate-index architectures allowing independent retrieval and reranking before merging. Pinecone also explicitly recommends evaluating the dense/sparse weighting against your own labeled relevance set rather than assuming a universal weighting.
I'd pick Pinecone particularly when:
This is the part I'd emphasize most.
Graph retrieval is valuable when the question is inherently relational.
For example:
“Which suppliers are affected by the components used in products that depend on service X?”
A vector index can retrieve relevant chunks. A graph can actually traverse the relationships:
Service X
↓
Product
↓
Component
↓
Supplier
↓
Contract
That's where GraphRAG shines.
Recent enterprise research on VDGR-RAG is particularly interesting because it combines vector retrieval, hierarchical/document routing, graph traversal and iterative reflection rather than relying on a graph alone.
So I'd architect it as:
┌── BM25 / lexical
│
Query → Router → Retrieval ├── Dense vector
│
└── Graph traversal
↓
RRF / fusion
↓
Reranker
↓
ACL + evidence checks
↓
Agent
For an accuracy-first agent, I'd spend less time obsessing over which vector database has the fastest ANN benchmark and more time optimizing:
candidate recall → reranking → evidence quality
A good pattern is:
That gives you much more robustness than simply increasing top_k.
For a conventional enterprise knowledge agent:
Elasticsearch + dense embeddings + BM25 + RRF + reranker + metadata/ACL filtering
Then add:
Neo4j or another graph layer only for domains where relationships are first-class—supply chains, IT dependencies, organizational structures, financial entities, biomedical knowledge, product/component hierarchies, etc.
For a highly search-centric organization with serious relevance expertise:
Vespa + custom hybrid ranking + reranking + optional graph features
For a startup/team wanting the simplest managed vector-first system:
Pinecone dense+sparse + reranker
And I would not start with pure GraphRAG unless you've demonstrated on your own evaluation set that graph traversal materially improves recall/answer accuracy.
Don't benchmark databases with generic ANN metrics and call that “retrieval accuracy.” Build a representative enterprise evaluation set containing:
Then measure Recall@K / NDCG / MRR at the retrieval layer, and separately measure grounded answer accuracy and citation correctness.
That distinction matters because recent enterprise-RAG research shows that good-looking intermediate retrieval/LLM metrics can still hide substantial end-to-end failures.
Bottom line: if you forced me to pick one today for an accuracy-first enterprise agent, I'd choose Elasticsearch hybrid + RRF + reranking, with a graph sidecar added selectively. If you have a world-class search/relevance team, Vespa becomes arguably the more powerful choice.
For enterprise agents requiring high accuracy, deterministic reasoning, and deep contextual awareness, the gold standard is no longer a pure vector search. Instead, it is a Hybrid Graph-Vector Stack (often referred to as GraphRAG combined with dense/sparse vector search).
Pure vector search struggles with multi-hop reasoning (connecting dots across siloed documents), exact numerical/sku matching, and hierarchical enterprise taxonomies. A hybrid approach uses vector search for broad semantic discovery and a knowledge graph for structured, relational traversal.
The Ultimate Enterprise Hybrid Retrieval Stack
An enterprise-grade, high-accuracy stack generally decomposes into four tightly integrated layers:
(Subject -> Predicate -> Object) , and write them to the graph while pushing chunks and semantic embeddings to the vector database.When an enterprise agent receives a prompt, retrieval should happen concurrently or sequentially:
Initial Broad Scan: Lexical (BM25) + Dense Vector search pull the top K cap K𝐾 most relevant text chunks or community summaries.
Relational Expansion: The system identifies key entities from the vector/lexical results and traverses 1-to-2 hops out in the Knowledge Graph to pull contextual neighborhood facts, parent policies, or dependent system data.
Fusion & Re-ranking: Combine results using an ensemble ranker, then pass them through a cross-encoder re-ranker (e.g., Cohere Rerank or BGE-Reranker ) to compress the context window down to the highest-signal information.
The Orchestration Framework
Why this stack wins on accuracy
ERR-4040X).If you'd like to narrow this down, tell me:
If accuracy is the primary requirement for enterprise agents, I would not choose a pure vector database. My default architecture in 2026 is:
Hybrid lexical + dense retrieval → graph expansion when relationships matter → cross-encoder reranking → strict metadata/ACL filtering → evidence-aware generation.
| Stack | Accuracy ceiling | Best fit | My take |
|---|---|---|---|
| Elasticsearch hybrid + optional graph DB | ⭐⭐⭐⭐⭐ | Broad enterprise search/agents | Best default |
| Neo4j GraphRAG + vector/lexical retrieval | ⭐⭐⭐⭐⭐ | Complex relationships, multi-hop reasoning | Best for knowledge-heavy agents |
| OpenSearch hybrid + graph | ⭐⭐⭐⭐½ | AWS/open-source-oriented enterprises | Excellent alternative |
| Weaviate hybrid | ⭐⭐⭐⭐ | Vector-native teams wanting simplicity | Good all-in-one |
| Pinecone + lexical/search layer | ⭐⭐⭐⭐ | Managed vector-first architectures | Great vector infrastructure, but I'd add lexical retrieval |
| Qdrant + BM25/search layer | ⭐⭐⭐⭐ | Engineering teams wanting control | Strong, especially cost-conscious deployments |
| pgvector + Postgres FTS | ⭐⭐⭐½–⭐⭐⭐⭐ | Existing Postgres-centric systems | Surprisingly capable; simplest operationally |
The important point is that the retrieval algorithm matters more than the database brand.
User / Agent query
│
┌────────────┴────────────┐
│ │
Lexical/BM25 Dense vector
exact terms semantic intent
│ │
└────────────┬────────────┘
│
RRF
│
Top ~30–100
│
┌────────┴────────┐
│ │
Graph expansion Metadata/ACL
relationships constraints
│ │
└────────┬────────┘
│
Cross-encoder
reranker
│
Top 5–15
│
Evidence packing
│
Agent
RRF is a particularly good starting point. It avoids trying to calibrate incomparable BM25 and vector scores and combines their rankings instead. Elastic currently recommends RRF as the default hybrid approach, with learned/weighted approaches available once you have relevance data.
Enterprise queries contain a lot of things embeddings are bad at:
A query like "What changed in SOC2-2025 control CC6.1?" should not depend on semantic similarity to discover CC6.1.
BM25/lexical retrieval preserves that precision while vectors provide semantic recall. That's exactly the motivation behind modern hybrid retrieval.
I would not add a graph simply because "GraphRAG" is fashionable.
Add it when the answer requires relationships such as:
"Which customers are affected by the vulnerability in service X, through dependencies owned by team Y?" or:
"What contracts depend on this policy, who approved them, and what systems implement it?" That's a fundamentally different retrieval problem from:
"Find documents about our vacation policy." For the first class, graph traversal can expose entities and paths that ordinary nearest-neighbor retrieval may never retrieve together.
There is also some encouraging recent evidence: an independently conducted NICD study reported substantially better truthfulness and question coverage for vector+graph RAG versus vector-only RAG, although the study was sponsored by Neo4j, so I'd treat the magnitude as promising rather than universally established.
Neo4j's architecture is particularly compelling when you need structured graph reasoning + unstructured text retrieval in the same system.
If I were starting a serious enterprise-agent platform today, I'd choose:
Use it for:
Elastic now supports combining keyword, kNN and sparse retrieval in a single retrieval framework, including RRF and subsequent reranking.
That gives you a remarkably strong single-system baseline before introducing additional infrastructure.
Keep the graph as a complementary retrieval plane:
Elasticsearch
│
├── lexical candidates
├── semantic candidates
└── metadata-filtered candidates
│
▼
entity resolution
│
▼
Neo4j
┌─────────┼─────────┐
│ │ │
dependencies ownership provenance
│ │ │
└─────────┼─────────┘
▼
merged candidates
│
▼
reranker
Don't make the graph responsible for everything.
This is often more important than swapping vector databases.
Think of retrieval as:
high recall first → high precision second.
For example:
A reranker actually reads query + candidate document together, which gives it a much better opportunity to distinguish "about the same topic" from "actually answers this question." Elastic's current retrieval stack explicitly supports this multistage pattern.
For an enterprise agent, don't benchmark:
"Does vector search have good recall?" Benchmark the entire retrieval decision.
Build a golden set containing:
Then measure:
Retrieval
Agent
And specifically test:
Can the system retrieve the evidence necessary to prove the answer? That's a much better objective than maximizing embedding similarity.
If you told me "I need the most accurate enterprise agent retrieval architecture, and I'm willing to operate some infrastructure", my choice would be:
Elasticsearch hybrid retrieval + strong reranker + optional Neo4j GraphRAG + rigorous retrieval evaluation.
If the corpus is mostly ordinary documents, stop at Elasticsearch hybrid + reranking. The graph probably isn't worth the complexity.
If the corpus contains entities, dependencies, organizational relationships, provenance, policies, systems, contracts, or multi-hop questions, add Neo4j.
And I would strongly prefer this over:
vector DB → top-k → LLM
because that architecture leaves a lot of enterprise retrieval accuracy on the table.
If accuracy is the primary objective for enterprise agents, I would not choose “vector vs. graph” as the fundamental decision. The strongest architecture today is a multi-stage hybrid retriever:
BM25/lexical + dense vector + graph-aware retrieval → rank fusion → cross-encoder/LLM reranking → context selection
The graph is valuable, but I would treat it as a specialized retrieval signal, not as a replacement for lexical/vector search.
| Stack | Accuracy ceiling | Operational complexity | Best fit |
|---|---|---|---|
| Elastic + graph layer | ⭐⭐⭐⭐⭐ | High | Large enterprise, heterogeneous data |
| OpenSearch + graph DB | ⭐⭐⭐⭐⭐ | High | AWS/self-hosted, control & customization |
| Pinecone hybrid + graph DB | ⭐⭐⭐⭐½ | Medium | Vector-first agent platform |
| Neo4j + vector/lexical retrieval | ⭐⭐⭐⭐½ | High | Relationship-heavy domains |
| Pure vector DB | ⭐⭐⭐ | Low | Simple semantic RAG |
| Pure graph | ⭐⭐⭐½ | High | Highly structured relationship queries |
1. Retrieval layer
Use three independent candidate generators:
Hybrid search is important because dense retrieval can miss exact terminology while lexical search can miss semantic equivalence. Pinecone's current documentation explicitly recommends combining these signals, while Elastic recommends RRF for combining lexical and vector rankings.
2. Fuse with RRF
I'd generally start with Reciprocal Rank Fusion, rather than hand-tuning raw BM25/vector scores.
That's particularly attractive in enterprise systems because the scoring distributions are fundamentally different; RRF combines rankings rather than pretending the scores are directly comparable. Elastic's implementation specifically describes RRF as requiring no tuning between heterogeneous relevance signals.
3. Retrieve wide, rerank narrow
For example:
query
│
├── BM25 ───────────────┐
├── dense vector ───────┤
├── sparse vector ──────┤
└── graph traversal ────┘
│
RRF / fusion
│
top 50–100
│
cross-encoder reranker
│
top 10–20
│
contextual selection
│
agent
This is more important than which vector database you pick. Pinecone's own guidance likewise calls reranking one of the most effective ways to improve relevance.
Elastic would be my default for a very large enterprise search estate. It gives you BM25, vector retrieval, sparse retrieval, filtering, RRF, and reranking mechanisms in one search system. Its current retriever architecture can combine keyword and kNN/sparse retrieval in a single request.
I'd then add Neo4j when the domain genuinely benefits from graph traversal:
Elastic
├── BM25
├── dense
└── sparse
↓
RRF
↓
Neo4j-derived candidates/signals
↓
final reranker
Pinecone is compelling if you're building a vector-first system and don't want to operate search infrastructure yourself. Its current hybrid implementation supports dense + sparse retrieval, and its documentation recommends evaluating the dense/sparse weighting against your own relevance set rather than assuming a universal weighting.
Neo4j becomes the primary choice when questions are fundamentally relational:
“Which customers are affected by components that depend on service X, and which contracts govern those customers?”
That's a very different retrieval problem from:
“Find documents explaining how service X handles failover.”
The first wants graph traversal; the second wants lexical/semantic retrieval. An enterprise agent often needs both.
Build a retrieval evaluation harness before committing heavily to the stack.
Create a few hundred real enterprise questions, with judgments for:
Then compare:
BM25
dense
BM25 + dense
BM25 + dense + reranker
BM25 + dense + graph
BM25 + dense + sparse + graph + reranker
This matters because there is no universally optimal hybrid weighting; OpenSearch explicitly notes that hybrid optimization depends heavily on the corpus, users, and domain, and provides a relevance workbench for evaluating configurations.
If I were starting an enterprise-agent platform today:
Default:
Elastic → BM25 + dense + sparse → RRF → cross-encoder reranker → graph augmentation when needed → LLM
If you're strongly AWS-oriented or want an open/self-managed search layer:
OpenSearch → BM25 + neural/vector → hybrid/RRF → reranker → Neo4j
If you want the simplest managed vector-first architecture:
Pinecone hybrid → reranker → Neo4j for relationship-heavy retrieval
And I would not start with a graph-only RAG architecture. Graphs are exceptionally good at answering relationship questions, but enterprise corpora still contain huge amounts of unstructured information where lexical and semantic retrieval are indispensable.
The key insight is: the winning enterprise retrieval stack is less “pick the best database” and more “make several imperfect retrieval systems compete to produce candidates, then use a strong reranker to decide.”
When building high-accuracy enterprise agents, a single retrieval method rarely cuts it. Pure vector search (semantic similarity) misses exact keyword matches, structural hierarchy, and multi-hop relationships. Pure graph search misses unstructured nuances.
The industry consensus for high-accuracy enterprise agents points to a Hybrid Knowledge Graph + Vector (GraphRAG) Stack , specifically combining dense embeddings, sparse keyword search (BM25), and a knowledge graph.
The Best-in-Class Enterprise Retrieval Stack
Why Hybrid GraphRAG Wins on Accuracy
To help narrow down the exact stack for your infrastructure, tell me:
For enterprise agents that demand absolute accuracy, a single flat vector search is no longer enough . Flat vector retrieval fails when agents face multi-hop reasoning (connecting facts across multiple docs), exact lexical matching (part numbers, error codes, legal IDs), and structural hierarchy (org charts, codebases, financial ledgers).
The production consensus for a maximum-accuracy enterprise stack relies on a Router-Based Hybrid/Graph Architecture —combining a high-performance vector/lexical store with a knowledge graph, unified by an agentic orchestration layer.
The Ultimate High-Accuracy Enterprise Retrieval Stack
Instead of forcing a vector database to act like a graph, or a graph database to act like a dense vector index, production stacks pair them natively.
Never pass raw search results directly to an agent. Accuracy is won or lost in this middle layer.
No single retrieval path fits every question. A fast, small LLM classifier router (≈2 0 m s latency) inspects the user query and dispatches it to the correct strategy:
To help tailor this stack to your environment, let me know:
LangSmith
Qdrant
qdrant.tech
For enterprise agents where accuracy matters more than simplicity, I would not choose “vector vs. graph.” I’d use a hybrid retrieval stack with lexical + dense + metadata filtering + reranking, and add a graph layer selectively.
1. Retrieval layer
2. Reranking layer Retrieve something like 50–200 candidates, then use a strong cross-encoder/LLM reranker to reduce that to perhaps 10–30 chunks.
This is often more important for accuracy than debating which vector database you use. The first stage optimizes recall; the reranker optimizes precision.
3. Graph layer — only where relationships matter Use a knowledge graph for:
GraphRAG's local search is a good illustration: it combines graph-derived entity information with the underlying document chunks rather than treating the graph as a replacement for text retrieval.
For broad questions such as “What are the major themes across this entire corpus?”, graph-based community summaries can be particularly useful because ordinary vector RAG has trouble finding evidence distributed across many documents.
| Layer | Recommendation |
|---|---|
| Primary retrieval | Hybrid BM25 + dense vectors |
| Fusion | RRF initially; learned/normalized fusion after evaluation |
| Reranking | Cross-encoder or strong reranker |
| Filters | Hard ACL/tenant/metadata filters |
| Chunking | Structure-aware, parent/child chunks |
| Graph | Selective entity/relationship graph |
| Agent query planning | Route between lexical, vector, graph, and hybrid searches |
| Evidence | Return chunk + document + metadata + provenance |
| Evaluation | Retrieval recall + nDCG/precision + grounded-answer accuracy |
If I were choosing today:
Best general-purpose / search-heavy: Vespa
Probably my #1 technical choice when retrieval quality is the primary concern. It gives you BM25, vector retrieval, hybrid retrieval, sophisticated ranking phases, and considerable control over fusion/reranking in one system. Its own RAG guidance recommends hybrid retrieval as the default, and its ranking framework lets you combine lexical and semantic signals.
Best Microsoft enterprise environment: Azure AI Search
Excellent choice if you're already deep in Azure/Microsoft. Hybrid search, RRF, semantic ranking, vector search, filtering, and enterprise integration are all first-class. It is also being used underneath Microsoft's newer agent/knowledge-layer tooling.
Best open-source/search-infrastructure option: OpenSearch
Strong if you want Elasticsearch-like infrastructure with open-source deployment options. Its hybrid search supports both score normalization and rank-based fusion.
Best graph-centric addition: Microsoft GraphRAG
I'd treat GraphRAG as a specialized retrieval strategy, not necessarily your entire retrieval backend. Its local/global/DRIFT approaches are useful when relationships or corpus-wide synthesis matter.
I would rank the approaches roughly like this for enterprise accuracy:
Vector-only
→ good baseline, relatively simple
→ vulnerable to exact-match failures and ambiguous semantic matches
BM25 + vector
→ best default
→ high recall across both semantic and exact-match queries
Hybrid + reranker
→ best general-purpose accuracy architecture
Hybrid + reranker + graph routing
→ best for complex enterprise agents
→ especially when questions involve entities, dependencies, permissions, organizational structure, or multi-hop reasoning.
The graph should therefore be a tool the agent can invoke, not something every query has to traverse.
User / Agent
│
Query understanding
│
┌──────────┴──────────┐
│ │
Query expansion Query routing
│ │
└──────────┬──────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
BM25 Vector Graph
retrieval retrieval traversal
│ │ │
└───────────┼───────────┘
▼
RRF / fusion
│
50–200 candidates
│
Reranker
│
10–30 evidence
│
ACL + provenance check
│
▼
LLM
│
cited grounded answer
The biggest mistake I'd avoid: spending weeks choosing between Pinecone, Weaviate, Milvus, pgvector, Neo4j, etc. before building a representative evaluation set. Retrieval quality is highly corpus- and query-dependent; even Vespa's own experiments show that different hybrid fusion strategies can win on different datasets.
For a serious enterprise deployment, I'd create 300–1,000 real queries with labeled evidence, then measure Recall@K → nDCG@K → reranker precision → grounded answer accuracy. That will tell you whether you actually need a graph, a better embedding model, better chunking, or simply a better reranker.
If you give me your environment (AWS/Azure/GCP/on-prem), corpus size, data types, latency target, and whether permissions are row/document-level, I can narrow this to a concrete production stack and architecture.
For production-grade enterprise agents requiring absolute accuracy, the consensus architecture has shifted decisively away from single-mode vector search. The gold standard is a Unified Hybrid Graph-Vector Stack —pairing dense semantic search, sparse lexical (BM25) matching, and graph traversal, tightly bound by an agentic orchestration layer.
The most battle-tested, high-accuracy stack combines three core layers:
The Orchestration & Retrieval Workflow
Query Intent Routing: The agent analyzes the user prompt to decide whether it requires a broad semantic lookup, a strict keyword/ID match, or a multi-hop relationship traversal.
Parallel Hybrid Retrieval (Vector + BM25 + Graph):
Reciprocal Rank Fusion (RRF): Blends the disparate scoring lists into a single, unified, de-duplicated candidate set.
Cross-Encoder Reranking: Passes the top candidates through a focused reranker (such as Cohere Rerank or BGE-Reranker) to maximize context precision before feeding the final tokens to the LLM.
If you'd like to narrow this down for your specific project, tell me:
I can tailor a concrete infrastructure and pipeline design for your constraints.
If accuracy is the priority for enterprise agents, I would not build a “vector DB + LLM” stack. I’d build a hybrid retrieval system with lexical + dense + reranking, and add a graph only where the domain actually has relationships that matter.
Elastic + strong embeddings + reranker + optional Neo4j graph
┌──────────────┐
│ User / Agent │
└──────┬───────┘
│
query understanding
│
┌─────────────┴─────────────┐
│ │
BM25 / lexical Dense vector
exact terms semantic recall
│ │
└─────────────┬─────────────┘
│
RRF
│
top 50–200 candidates
│
cross-encoder / LLM
reranking
│
┌─────────┴─────────┐
│ │
document evidence graph expansion
│ │
└─────────┬─────────┘
│
grounded context
│
Agent/LLM
Why this wins: enterprise queries contain both semantic intent and extremely important exact strings—SKUs, error codes, policy names, contract clauses, employee IDs, product versions, etc. Pure vectors are bad at the latter. Current large-scale studies also show that lexical retrieval remains surprisingly strong as corpora grow; one 2026 scaling study found BM25 leading its tested approaches from mid-scale onward.
Elastic hybrid search is particularly attractive because it gives you:
Elastic specifically recommends RRF for combining lexical and vector rankings.
That matters more than it sounds. Don't average cosine similarity with BM25 scores. Their numerical scales aren't naturally comparable. RRF operates on rank and avoids that calibration problem.
I'd use a high-quality embedding model, but I wouldn't make the embedding model responsible for final relevance.
A good architecture is:
BM25 top 100 + dense top 100 → RRF → top 50–100 → reranker → top 5–15
The reranker is where you recover a lot of precision. Elastic supports semantic reranking after first-stage candidate generation, which is exactly this architecture.
The important distinction is:
Retriever = find everything plausibly relevant.
Reranker = decide what is actually relevant.
That is much more robust than trying to get a single vector search to perfectly rank the final context.
This is where I'd use Neo4j.
Graph retrieval becomes valuable when the answer requires something like:
“Which customers are affected by products that depend on component X, and which contracts govern those products?”
That's not fundamentally a similarity-search problem. It's a relationship traversal problem.
Neo4j's current GraphRAG tooling supports vector retrieval, full-text retrieval, hybrid retrieval, vector→Cypher traversal, and tool-based retrieval.
So I'd model things such as:
Person ──works_for──> Company
Company ──owns──────> Product
Product ──depends_on─> Component
Component ──affected_by──> Incident
Contract ──governs──> Product
Document ──describes──> Product
Then use the graph to expand and validate evidence, rather than expecting the graph to replace search.
This hybrid approach has empirical support: a 2026 evaluation of graph/text retrieval found that hybrid graph + text retrieval improved multi-hop answer quality substantially over vector-only retrieval while avoiding some of graph-only retrieval's weaknesses.
This is an important counterpoint.
Graph construction can become extremely expensive and error-prone at enterprise scale. A recent corpus-scaling study found graph-based approaches encountering major construction costs and, in its controlled experiments, failing to outperform BM25 at shared scales.
So I would not:
ingest 50M documents → extract millions of entities → build giant knowledge graph → hope GraphRAG fixes retrieval.
Instead:
search first → identify important entities → traverse the graph only when the query requires relationships.
That's cheaper, easier to keep fresh, and usually easier to debug.
| Layer | Recommendation | Purpose |
|---|---|---|
| Document store | Object store / existing enterprise source | Canonical evidence |
| Search | Elastic | BM25 + vectors + filters + hybrid |
| Embeddings | Strong current embedding model | Semantic recall |
| Fusion | RRF | Combine lexical + dense |
| Reranking | Cross-encoder / high-quality reranker | Precision |
| Knowledge graph | Neo4j, selectively | Multi-hop/entity reasoning |
| Metadata | Search index + graph | ACLs, dates, source, tenant |
| Agent | Tool-using LLM | Query planning + iterative retrieval |
| Evaluation | Custom enterprise eval set | Measure actual accuracy |
The interesting alternative is to consolidate more of this into Neo4j itself. Its current GraphRAG stack supports hybrid vector + full-text retrieval and graph expansion, so for a graph-heavy organization you can reduce infrastructure complexity.
Mostly documents / policies / support / engineering docs
→ Elastic hybrid + reranker
Don't add a graph initially.
Lots of entities and relationships
→ Elastic + Neo4j
Use Elastic for discovery and Neo4j for relationship traversal.
Financial / legal / compliance
→ Hybrid + graph + structured database
For numerical or authoritative facts, retrieve from the actual database rather than embedding the number into a chunk. Provenance should point to the authoritative row/document.
Huge corpus (10M+ documents)
→ Lexical + dense candidate generation + reranking
Don't make graph construction mandatory. Corpus-scale evidence suggests lexical retrieval can remain extremely competitive as scale increases.
Highly multi-hop agentic workflows
→ Hybrid + graph + iterative retrieval
Recent agentic-RAG research is increasingly moving toward retrieval that adapts to the agent's evolving query rather than treating retrieval as one fixed similarity search.
I would spend less time choosing the vector database and more time on these five things:
In fact, a mediocre vector DB with excellent retrieval logic can beat a fantastic vector DB with bad chunking, filtering, and ranking.
And for enterprise agents, I'd add a sixth:
If the system can't retrieve sufficiently strong evidence, the agent should be allowed to say:
“I don't have enough evidence to answer this.”
rather than selecting the least-wrong chunk.
That's often more important to enterprise accuracy than squeezing another 2% out of Recall@10.
Bottom line: if I were starting today, my architecture would be Elastic hybrid retrieval → RRF → reranker → optional Neo4j expansion → evidence/ACL validation → agent. I'd only make GraphRAG central when the workload demonstrably requires multi-hop relationships. That gives you the best combination of precision, recall, explainability, operational simplicity, and enterprise-scale behavior.