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. Composable pipeline, pluggable storage.
import { createGraph, query } from "graphrag-sdk";
import { lexicalGraph, chunkEntityGeneration, naiveSearch } from "@graphrag-sdk/lexical";
import { inMemoryGraph, inMemoryVector, inMemoryKV } from "@graphrag-sdk/in-memory-storage";
import { openai } from "@ai-sdk/openai";
const graph = createGraph({
graph: lexicalGraph({
graphStoreFactory: inMemoryGraph,
vectorStoreFactory: inMemoryVector,
kvStoreFactory: inMemoryKV,
pipeline: [chunkEntityGeneration()],
}),
model: openai("gpt-4o-mini"),
embedding: openai.embedding("text-embedding-3-small"),
});
await graph.insert("Your documents...");
const { text } = await query({ graph, search: naiveSearch(), prompt: "Your question?" });Build your graph structure with composable processors:
pipeline: [
chunkEntityGeneration(), // chunks → entities + relationships
entityCommunityGeneration(), // entities → Leiden communities + reports
similarChunkConnection(), // chunks ↔ similarity edges
hypotheticalQuestionGeneration(), // chunks → question embeddings
]Each strategy retrieves context differently:
| Strategy | What it searches | Best for |
|---|---|---|
naiveSearch() | Chunk embeddings | Simple fact lookups |
entityEnhancedSearch() | Chunks + entity graph traversal | Relational context across chunks |
localCommunitySearch() | Entity neighborhoods + communities | Entity-specific questions |
globalCommunitySearch() | Community reports | Thematic/summary questions |
similarChunkTraversalSearch() | Chunk similarity graph | Connected context |
hypotheticalQuestionSearch() | Question embeddings | Q&A retrieval |
Pre-configured pipelines matching well-known implementations:
import { microsoftGraphragPreset, lightragPreset } from "@graphrag-sdk/lexical";
// Microsoft GraphRAG — entities + communities
lexicalGraph({ ...microsoftGraphragPreset(), graphStoreFactory, vectorStoreFactory, kvStoreFactory })
// LightRAG — entities only
lexicalGraph({ ...lightragPreset(), graphStoreFactory, vectorStoreFactory, kvStoreFactory })Pure vector search retrieves similar chunks. Graph structures add: