Configuration Logic
ReMe's personal memory system consists of two main components: retrieval and summarization. The configuration for these components is defined in the default.yaml file.
Retrieval Configuration (retrieve_personal_memory
)
retrieve_personal_memory:
flow_content: set_query_op >> (extract_time_op | (retrieve_memory_op >> semantic_rank_op)) >> fuse_rerank_op
This flow performs the following operations:
1. set_query_op
: Prepares the query for memory retrieval
2. Parallel paths:
- extract_time_op
: Extracts time-related information from the query
- retrieve_memory_op >> semantic_rank_op
: Retrieves memories and ranks them semantically
3. fuse_rerank_op
: Combines and reranks the results for final output
Summarization Configuration (summary_personal_memory
)
summary_personal_memory:
flow_content: info_filter_op >> (get_observation_op | get_observation_with_time_op | load_today_memory_op) >> contra_repeat_op >> update_vector_store_op
This flow performs the following operations:
1. info_filter_op
: Filters incoming information to extract relevant personal details
2. Parallel paths for observation extraction:
- get_observation_op
: Extracts general observations
- get_observation_with_time_op
: Extracts observations with time context
- load_today_memory_op
: Loads memories from the current day
3. contra_repeat_op
: Removes contradictions and repetitions
4. update_vector_store_op
: Stores the processed memories in the vector database
Basic Usage
The following example demonstrates how to use personal memory in MemoryScope:
1. Setup
import asyncio
import json
import aiohttp
# API base URL (default is http://0.0.0.0:8002)
base_url = "http://0.0.0.0:8002"
workspace_id = "personal_memory_demo"
2. Clear Existing Memories
async with aiohttp.ClientSession() as session:
# Delete existing workspace memories
async with session.post(
f"{base_url}/vector_store",
json={
"action": "delete",
"workspace_id": workspace_id,
},
headers={"Content-Type": "application/json"}
) as response:
result = await response.json()
3. Create Conversation with Personal Information
# Example conversation with personal details
messages = [
{"role": "user", "content": "My name is John Smith, I'm 28 years old"},
{"role": "assistant", "content": "Nice to meet you, John!"},
{"role": "user", "content": "I'm a software engineer working with Python"},
{"role": "assistant", "content": "I see, you're a Python engineer."},
# Additional conversation messages...
]
4. Summarize Personal Memories
async with session.post(
f"{base_url}/summary_personal_memory",
json={
"trajectories": [
{"messages": messages, "score": 1.0}
],
"workspace_id": workspace_id,
},
headers={"Content-Type": "application/json"}
) as response:
result = await response.json()
5. Retrieve Personal Memories
# Example queries to retrieve personal information
queries = [
"What's my name and age?",
"What do I do for work?",
"What are my hobbies?"
]
for query in queries:
async with session.post(
f"{base_url}/retrieve_personal_memory",
json={
"query": query,
"workspace_id": workspace_id,
},
headers={"Content-Type": "application/json"}
) as response:
result = await response.json()
print(f"Query: {query}")
print(f"Answer: {result.get('answer', '')}")
Complete Example
For a complete working example, refer to /cookbook/simple_demo/use_personal_memory_demo.py
in the ReMe repository.