Skip to main content
GraphRAG follows semantic versioning and provides migration paths for upgrading between versions. This guide helps you navigate breaking changes and upgrade your projects smoothly.

Versioning approach

GraphRAG follows semantic versioning with some specific considerations:

CLI

Conforms to standard semver

API

Conforms to standard semver

settings.yaml

Changes result in minor version bump

Data model

Conforms to standard semver

Internals

May change without semver compliance
Always run graphrag init --root [path] --force between minor version bumps to ensure you have the latest config format. Back up your customizations first.

General upgrade process

1

Back up your project

Especially important:
  • settings.yaml
  • prompts/ directory
  • .env file
2

Upgrade GraphRAG

3

Check version

4

Update configuration

For minor/major version bumps:
Then restore your customizations from backup.
5

Run migration (major versions only)

For major version upgrades, run the migration notebook (see version-specific sections below).

Migration to v3

GraphRAG v3 streamlined the core library by removing rarely-used features and simplifying configuration.

Overview

Migration notebook: docs/examples_notebooks/index_migration_to_v3.ipynb Main goals:
  • Slim down maintenance overhead
  • Remove out-of-scope features
  • Simplify configuration model

Data model changes

The primary breaking change affects the text_units table: Before v3:
After v3:
The migration notebook handles this transformation automatically - you don’t need to re-index.

API changes

Removed multi-search variants: Removed (no longer available):
Use instead:

Configuration changes

Before v3 (fnllm-based):
After v3 (LiteLLM-based):
Before v3:
After v3:
Before v3:
After v3:
The following configuration blocks have been removed:

Migration steps

1

Run migration notebook

Navigate to the migration notebook and execute all cells:
This transforms your existing tables to the v3 format.
2

Update configuration

3

Restore customizations

Manually copy over your custom settings:
  • API keys from .env
  • Model names
  • Custom prompts
  • Rate limits based on your quota
  • Provider-specific settings
4

Update API calls (if using Python API)

Remove any multi_*_search calls and replace with single search methods.
5

Test the migration

Run a query to verify everything works:

Migration to v2

GraphRAG v2 renamed index tables for clarity.

Overview

Migration notebook: docs/examples_notebooks/index_migration_to_v2.ipynb

Table renames

All tables were renamed to simply describe their contents:

Migration steps

1

Run migration notebook

2

Update configuration

3

Verify table names

Check your output directory - tables should have new names:

Migration to v1

GraphRAG v1 introduced vector stores and streamlined the data model.

Overview

Migration notebook: docs/examples_notebooks/index_migration_to_v1.ipynb

Major changes

v1 requires a vector store for embeddings.New configuration:
Default uses local LanceDB. For production, consider Azure AI Search.
ID fields:
  • Consistent use of id and human_readable_id
  • Integer IDs stored as ints (not strings)
Field renames:
  • document.raw_contentdocument.text
  • entity.nameentity.title
  • relationship.rankrelationship.combined_degree
Removed fields:
  • relationship.source_degree
  • relationship.target_degree
  • All embedding columns (now in vector store)
Community IDs:
  • id now uses proper UUID
  • community and human_readable_id retain short IDs
v1 added embeddings for DRIFT search and base RAG:
  • entity_description embeddings
  • community_full_content embeddings
  • text_unit_text embeddings
Before v1:
After v1:

Migration steps

1

Update configuration

Note the new vector_store configuration block.
2

Remove timestamp paths

Edit settings.yaml or environment variables:
3

Run migration notebook

4

Re-index with vector store

Run indexing to populate the vector store:
This leverages your existing cache for LLM calls.

Best practices

Always backup before upgrading

Test on a copy first

Use cache to avoid re-indexing costs

GraphRAG’s cache prevents redundant LLM calls:
settings.yaml
After migration, re-indexing will use cached LLM responses, saving time and money.

Track your version

Add version info to your project:
settings.yaml

Read release notes

Before upgrading, review:

Troubleshooting

Possible causes:
  • Corrupted parquet files
  • Missing columns
  • Incompatible data types
Solutions:
  • Check notebook output for specific error
  • Verify parquet files can be read: pd.read_parquet("output/entities.parquet")
  • Re-index from scratch if data is corrupted
Solution:
  • Run dry-run to identify issues:
  • Compare your config to the latest template
  • Check for removed or renamed settings
Common issues:
  • Old parquet file names
  • Missing vector store setup
  • Incompatible data schema
Solutions:
  • Run the appropriate migration notebook
  • Verify vector store configuration
  • Re-index if needed
v3 specific:
Update all import statements to use single search methods.

Version compatibility matrix

Getting help

If you encounter issues during migration:
  1. Check the breaking changes document
  2. Review GitHub Issues
  3. Ask in GitHub Discussions
  4. Consult version-specific migration notebooks

Next steps

Configuration

Learn about all config options

Best practices

Optimize your implementation

CLI usage

Master the command-line interface

Python API

Use GraphRAG programmatically