Skip to content

GraphRAG SDKPure TypeScript Graph RAG

Enhance vector search with graph structures. Composable pipeline, pluggable storage.

Quick Example

typescript
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?" });

How It Works

1. Composable Pipeline

Build your graph structure with composable processors:

typescript
pipeline: [
  chunkEntityGeneration(),          // chunks → entities + relationships
  entityCommunityGeneration(),      // entities → Leiden communities + reports
  similarChunkConnection(),         // chunks ↔ similarity edges
  hypotheticalQuestionGeneration(), // chunks → question embeddings
]

2. Search Strategies

Each strategy retrieves context differently:

StrategyWhat it searchesBest for
naiveSearch()Chunk embeddingsSimple fact lookups
entityEnhancedSearch()Chunks + entity graph traversalRelational context across chunks
localCommunitySearch()Entity neighborhoods + communitiesEntity-specific questions
globalCommunitySearch()Community reportsThematic/summary questions
similarChunkTraversalSearch()Chunk similarity graphConnected context
hypotheticalQuestionSearch()Question embeddingsQ&A retrieval

3. Presets

Pre-configured pipelines matching well-known implementations:

typescript
import { microsoftGraphragPreset, lightragPreset } from "@graphrag-sdk/lexical";

// Microsoft GraphRAG — entities + communities
lexicalGraph({ ...microsoftGraphragPreset(), graphStoreFactory, vectorStoreFactory, kvStoreFactory })

// LightRAG — entities only
lexicalGraph({ ...lightragPreset(), graphStoreFactory, vectorStoreFactory, kvStoreFactory })

Why Graph-Enhanced RAG?

Pure vector search retrieves similar chunks. Graph structures add:

  • Connected context — include related information, not just similar text
  • Relationship awareness — understand how entities and concepts connect
  • Community insights — access higher-level summaries and patterns
  • Multi-hop queries — follow relationship chains for indirect connections

Released under the Elastic License 2.0. Made with ❤️ by Narek.