Overview
TheEpisodicGistStrategy is designed for episodic memory-based extraction and retrieval. It creates multi-level representations including verbatim content, gist summaries, and extracted facts, making it ideal for conversational AI and session-based applications.
Class Definition
Constructor
concatenate_gists_per_chunk: Whether to concatenate all gists per chunk into a single nodesplit_verbatim_per_chunk: Whether to split verbatim content into separate nodes per message
Methods
index()
Index documents using episodic gist-based extraction.docs(List): List of documents to index (can be strings or structured conversation data)
-
Extraction: Extracts multiple representations from each document:
- Verbatim: Original text content
- Gists: Concise summaries of the content
- Facts: Structured facts with subject-predicate-object-qualifiers
- Entities: Key entities mentioned in the facts
-
Graph Construction: Builds a multi-level knowledge graph:
- Verbatim nodes connect to gist nodes
- Gist nodes connect to fact nodes
- Fact nodes connect entities
- Synonymy edges connect similar gists
- Incremental Updates: Only processes new documents if existing graph exists
rag_for_qa()
Perform question-answering using episodic gist approach with optional parallel processing and per-sample evaluation.queries: Input queries (strings or QuerySolution objects)num_to_retrieve(int): Number of documents to retrieve per query (default: 5)gold_answers(optional): Gold standard answers for evaluationgold_docs(optional): Gold standard documents for evaluationmetrics(tuple): Evaluation metrics to computequestion_metadata(optional): Additional metadata for questionsparallel(bool): Whether to process queries in parallel (default: True)max_workers(int): Number of parallel workers (default: 8)return_chunk(str): Type of chunk to return -"verbatim"or"gists"(default:"gists")evaluate_per_sample(bool): Evaluate metrics for each sample immediately (default: False)save_per_sample(bool): Save each sample result individually (default: False)force_rag(bool): Force recomputation even if saved results exist (default: False)inference_type(str): Identifier for inference type, used in filenames (default:"default")**kwargs: Additional parameters
- Tuple containing:
List[QuerySolution]: Query solutions with retrieved documents and answersList[str]: Response messagesList[Dict]: MetadataDict: Retrieval metricsDict: QA metrics
- Parallel Processing: Processes multiple queries concurrently for better performance
- Per-Sample Evaluation: Computes metrics during processing for real-time feedback
- Caching: Saves individual results and can load cached results to skip recomputation
- Multi-Level Retrieval: Can return either verbatim content or gist summaries
save_per_sample=True, results are saved to samples/rag_results_question_{idx}_{inference_type}.json. On subsequent runs, cached results are loaded automatically unless force_rag=True.
retrieve_each_query()
Retrieve documents for a single query using episodic graph traversal.query(str): Input queryreturn_chunk(optional): Type of chunk to return ("verbatim"or"gists")
- Retrieved chunk IDs, similarity scores, and agent result
- Uses graph-based retrieval with multi-hop reasoning
- Can return either verbatim content or gist summaries
- Leverages agent-based exploration of the episodic graph
Graph Structure
The episodic gist strategy creates a multi-level graph:- Synonymy edges: Connect similar gist nodes
- Entity relationships: Connect related entities within facts
Use Cases
TheEpisodicGistStrategy is ideal for:
- Conversational AI: Maintaining context across multi-turn conversations
- Session-Based Retrieval: Retrieving relevant past interactions
- Multi-Level Understanding: Querying at different levels of abstraction (verbatim vs. gist)
- Long-Term Memory: Building episodic memory for AI assistants
- Conversation Analysis: Understanding patterns and facts from chat histories