Documentation Index Fetch the complete documentation index at: https://mintlify.com/intuit-ai-research/REMem/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Indexing is the first step in using REMem. The index() method processes your documents, extracts structured information (entities, facts, and relationships), creates embeddings, and builds a knowledge graph for efficient retrieval.
Basic Usage
Initialize ReMem
Create a ReMem instance with your configuration: from remem import ReMem
from remem.utils.config_utils import BaseConfig
config = BaseConfig(
llm_name = "gpt-4o-mini" ,
embedding_model_name = "nvidia/NV-Embed-v2" ,
dataset = "my_dataset"
)
remem = ReMem( global_config = config, working_dir = "./remem_data" )
Prepare Documents
Format your documents as a list of strings: docs = [
"Machine learning is a subset of artificial intelligence." ,
"Neural networks are inspired by biological neurons." ,
"Deep learning uses multiple layers of neural networks."
]
Index Documents
Call the index() method to process and store your documents: This performs:
Document chunking (if needed)
Information extraction (entities, facts)
Embedding generation
Knowledge graph construction
Complete Example from main.py
Here’s a real-world example from the REMem codebase:
import json
from remem import ReMem
from remem.utils.config_utils import BaseConfig
# Load corpus
corpus_path = f "reproduce/dataset/musique_corpus.json"
with open (corpus_path, "r" ) as f:
corpus = json.load(f)
# Format documents
docs = [ f " { doc[ 'title' ] } \n { doc[ 'text' ] } " for doc in corpus]
# Configure ReMem
config = BaseConfig(
llm_name = "gpt-4o-mini" ,
embedding_model_name = "nvidia/NV-Embed-v2" ,
dataset = "musique" ,
force_index_from_scratch = False , # Reuse existing index if available
retrieval_top_k = 200 ,
qa_top_k = 5
)
remem = ReMem( global_config = config, working_dir = "./outputs/musique" )
# Index documents
remem.index(docs)
REMem supports multiple information extraction strategies via extract_method:
OpenIE (Default)
Extracts subject-predicate-object triples:
config = BaseConfig(
extract_method = "openie" , # Default
llm_name = "gpt-4o-mini"
)
Episodic
Optimized for conversational/temporal data:
config = BaseConfig(
extract_method = "episodic" ,
llm_name = "gpt-4o-mini"
)
Episodic Gist
Extracts gists, facts, entities, and metadata:
config = BaseConfig(
extract_method = "episodic_gist" ,
llm_name = "gpt-4o-mini"
)
Temporal
Captures time-sensitive relationships:
config = BaseConfig(
extract_method = "temporal" ,
llm_name = "gpt-4o-mini"
)
Incremental Indexing
By default, REMem supports incremental indexing. New documents are added to the existing graph:
# First batch
docs_batch_1 = [ "Document 1" , "Document 2" ]
remem.index(docs_batch_1)
# Second batch (incremental)
docs_batch_2 = [ "Document 3" , "Document 4" ]
remem.index(docs_batch_2) # Adds to existing graph
Set force_index_from_scratch=True in BaseConfig to rebuild the entire index from scratch. This will ignore any existing embeddings and graph data.
Online vs Offline Mode
Control LLM inference mode with llm_infer_mode:
# Online mode (default) - real-time API calls
config = BaseConfig(
llm_infer_mode = "online" ,
llm_name = "gpt-4o-mini"
)
# Offline mode - batch processing with vLLM
config = BaseConfig(
llm_infer_mode = "offline" ,
llm_name = "meta-llama/Llama-3.3-70B-Instruct" ,
vllm_tensor_parallel_size = 2
)
Batch Sizes
Adjust embedding batch size for optimal performance:
config = BaseConfig(
embedding_batch_size = 16 , # Default: 16
embedding_model_name = "nvidia/NV-Embed-v2"
)
Chunking Configuration
Control document preprocessing with chunking parameters:
config = BaseConfig(
preprocess_chunk_max_token_size = 512 , # Max tokens per chunk
preprocess_chunk_overlap_token_size = 128 , # Overlap between chunks
preprocess_encoder_name = "gpt-4o" # Tokenizer for chunking
)
If preprocess_chunk_max_token_size=None, documents are treated as single chunks without splitting.
Graph Construction Parameters
Customize graph building behavior:
config = BaseConfig(
# Synonymy edge construction
synonymy_edge_topk = 2047 , # Number of neighbors for synonym detection
synonymy_edge_sim_threshold = 0.8 , # Similarity threshold for synonyms
# Graph type
is_directed_graph = False , # Use undirected graph (default)
graph_type = "facts_and_sim_passage_node_unidirectional"
)
Saving OpenIE Results
Persist extracted information for analysis or reuse:
config = BaseConfig(
save_openie = True , # Default: saves extraction results
force_openie_from_scratch = False # Reuse existing OpenIE results
)
What Gets Created
After indexing, REMem creates the following in your working_dir:
chunk_embeddings/ - Embeddings for document chunks
entity_embeddings/ - Embeddings for extracted entities
fact_embeddings/ - Embeddings for extracted facts
graph.pkl - Knowledge graph structure
openie_results_*.json - Extracted entities and relationships (if save_openie=True)
Next Steps
Retrieval Learn how to retrieve relevant passages
Configuration Explore all configuration options