Expand description
Bidirectional entity-chunk index for fast lookups Bidirectional Entity-Chunk Index
This module provides efficient bidirectional lookups between entities and chunks, essential for LazyGraphRAG and E2GraphRAG query refinement and concept expansion.
§Key Features
- Fast lookups: O(1) access in both directions
- Many-to-many relationships: One entity can appear in multiple chunks, one chunk can contain multiple entities
- Incremental updates: Add/remove mappings without rebuilding the entire index
- Memory efficient: Uses IndexMap for predictable iteration order
§Use Cases
- Query Expansion: Given entities in a query, find all relevant chunks
- Context Retrieval: Given a chunk, find all related entities
- Concept Graph Building: Track concept co-occurrence across chunks
- Iterative Deepening: Expand search by traversing entity-chunk relationships
§Example
use graphrag_core::entity::bidirectional_index::BidirectionalIndex;
use graphrag_core::core::{EntityId, ChunkId};
let mut index = BidirectionalIndex::new();
let entity_id = EntityId::new("entity_1".to_string());
let chunk_id = ChunkId::new("chunk_1".to_string());
// Add mapping
index.add_mapping(&entity_id, &chunk_id);
// Query by entity
let chunks = index.get_chunks_for_entity(&entity_id);
assert_eq!(chunks.len(), 1);
// Query by chunk
let entities = index.get_entities_for_chunk(&chunk_id);
assert_eq!(entities.len(), 1);Structs§
- Bidirectional
Index - Bidirectional index for fast entity-chunk lookups
- Index
Statistics - Statistics about the bidirectional index