Enhanced Retrieval
Start with vector similarity search, then use graph structures to expand, rerank, and enrich results with connected context.
Enhance vector search with graph structures. One API, multiple strategies.
import { createGraph } from "@graphrag-js/core";
import { similarityGraph } from "@graphrag-js/similarity";
import { memoryStorage } from "@graphrag-js/memory";
import { openai } from "@ai-sdk/openai";
const graph = createGraph({
model: openai("gpt-4o-mini"),
embedding: openai.embedding("text-embedding-3-small"),
provider: similarityGraph(),
storage: memoryStorage(),
});
await graph.insert("Your documents...");
const { text } = await graph.query("Your question?");All algorithms start with vector similarity search to find relevant chunks:
Query → Embedding → Vector Search → Top K chunksEach algorithm builds and uses graph structures differently to enhance these results:
| Algorithm | Graph Structure | Enhancement Strategy |
|---|---|---|
| Similarity | Chunks with similarity edges | BFS expansion from seed chunks |
| LightRAG | Entities + relations, dual vectors | Search entity/relation vectors separately |
| Microsoft | Entities + communities | Add community summaries and reports |
| Fast | Entities + relations | PageRank from seed entities |
| AWS | Facts + statements | Beam search through fact chains |
Graph-enhanced context is richer than pure vector search:
Pure vector search retrieves similar chunks. Graph structures add:
GraphRAG.js brings multiple graph enhancement strategies to TypeScript with a unified API.
Choose based on your use case:
// Simple: BFS expansion from similar chunks
provider: similarityGraph({ similarityThreshold: 0.7 })
// Balanced: Dual-level entity + relation vectors
provider: lightrag({ entityTypes: ["person", "org", "location"] })
// Deep analysis: Community detection and reports
provider: microsoftGraph({ graphClusterAlgorithm: "leiden" })
// Fast & cheap: PageRank-based expansion
provider: fastGraph({ pagerank: { damping: 0.85 } })
// Multi-hop: Fact-centric graph traversal
provider: awsGraph({ semantic: { beamWidth: 5 } })