docs: new algorithm migration guides + memory evaluation (#4811)

Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
Co-authored-by: Saket Aryan <saketaryan2002@gmail.com>
This commit is contained in:
Chaithanya Kumar
2026-04-16 17:13:13 +05:30
committed by GitHub
parent 50db9e428d
commit 30469aec17
69 changed files with 2054 additions and 2066 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ os.environ["OPENAI_API_KEY"] = "your-api-key"
# Initialize a LangChain model directly
openai_model = ChatOpenAI(
model="gpt-4.1-nano-2025-04-14",
model="gpt-5-mini",
temperature=0.2,
max_tokens=2000
)
+1 -1
View File
@@ -16,7 +16,7 @@ config = {
"llm": {
"provider": "litellm",
"config": {
"model": "gpt-4.1-nano-2025-04-14",
"model": "gpt-5-mini",
"temperature": 0.2,
"max_tokens": 2000,
}
+2 -2
View File
@@ -20,7 +20,7 @@ config = {
"llm": {
"provider": "openai",
"config": {
"model": "gpt-4.1-nano-2025-04-14",
"model": "gpt-5-mini",
"temperature": 0.2,
"max_tokens": 2000,
}
@@ -86,7 +86,7 @@ config = {
"llm": {
"provider": "openai_structured",
"config": {
"model": "gpt-4.1-nano-2025-04-14",
"model": "gpt-5-mini",
"temperature": 0.0,
}
}
+1 -1
View File
@@ -91,7 +91,7 @@ config = {
"llm": {
"provider": "openai",
"config": {
"model": "gpt-4.1-nano-2025-04-14"
"model": "gpt-5-mini"
}
},
"reranker": {
+1 -1
View File
@@ -189,7 +189,7 @@ for i, prompt in enumerate(prompts):
config["reranker"]["config"]["scoring_prompt"] = prompt
memory = Memory.from_config(config)
results = memory.search("test query", user_id="test_user")
results = memory.search("test query", filters={"user_id": "test_user"})
print(f"Prompt {i+1} results: {results}")
```
+2 -2
View File
@@ -35,7 +35,7 @@ config = {
"llm": {
"provider": "openai",
"config": {
"model": "gpt-4.1-nano-2025-04-14"
"model": "gpt-5-mini"
}
},
"reranker": {
@@ -95,7 +95,7 @@ messages = [
memory.add(messages, user_id="bob")
# Search with reranking
results = memory.search("What is the user's profession?", user_id="bob")
results = memory.search("What is the user's profession?", filters={"user_id": "bob"})
for result in results['results']:
print(f"Memory: {result['memory']}")
@@ -175,7 +175,7 @@ queries = [
results = []
for query in queries:
result = m.search(query, user_id="alice", rerank=True)
result = m.search(query, filters={"user_id": "alice"}, rerank=True)
results.append(result)
```
+1 -1
View File
@@ -111,7 +111,7 @@ messages = [
memory.add(messages, user_id="david")
# Search with LLM reranking
results = memory.search("What programming topics is the user studying?", user_id="david")
results = memory.search("What programming topics is the user studying?", filters={"user_id": "david"})
for result in results['results']:
print(f"Memory: {result['memory']}")
@@ -283,12 +283,12 @@ for result in results["results"]:
def safe_llm_rerank_search(query, user_id, max_retries=3):
for attempt in range(max_retries):
try:
return m.search(query, user_id=user_id, rerank=True)
return m.search(query, filters={"user_id": user_id}, rerank=True)
except Exception as e:
print(f"Attempt {attempt + 1} failed: {e}")
if attempt == max_retries - 1:
# Fall back to vector search
return m.search(query, user_id=user_id, rerank=False)
return m.search(query, filters={"user_id": user_id}, rerank=False)
# Use the safe function
results = safe_llm_rerank_search("What are my preferences?", "alice")
@@ -376,19 +376,19 @@ class RobustLLMReranker:
# Try primary LLM reranker
for attempt in range(max_retries):
try:
return self.primary.search(query, user_id=user_id, rerank=True)
return self.primary.search(query, filters={"user_id": user_id}, rerank=True)
except Exception as e:
print(f"Primary reranker attempt {attempt + 1} failed: {e}")
# Try fallback reranker
if self.fallback:
try:
return self.fallback.search(query, user_id=user_id, rerank=True)
return self.fallback.search(query, filters={"user_id": user_id}, rerank=True)
except Exception as e:
print(f"Fallback reranker failed: {e}")
# Final fallback: vector search only
return self.primary.search(query, user_id=user_id, rerank=False)
return self.primary.search(query, filters={"user_id": user_id}, rerank=False)
# Usage
primary_config = {
@@ -101,7 +101,7 @@ messages = [
memory.add(messages, user_id="charlie")
# Search with local reranking
results = memory.search("What books does the user like?", user_id="charlie")
results = memory.search("What books does the user like?", filters={"user_id": "charlie"})
for result in results['results']:
print(f"Memory: {result['memory']}")
@@ -86,7 +86,7 @@ messages = [
memory.add(messages, user_id="alice")
# Search with reranking
results = memory.search("What Italian food does the user like?", user_id="alice")
results = memory.search("What Italian food does the user like?", filters={"user_id": "alice"})
for result in results['results']:
print(f"Memory: {result['memory']}")
+2 -2
View File
@@ -153,7 +153,7 @@ def measure_reranker_performance(config, queries, user_id):
latencies = []
for query in queries:
start_time = time.time()
results = memory.search(query, user_id=user_id)
results = memory.search(query, filters={"user_id": user_id})
latency = time.time() - start_time
latencies.append(latency)
@@ -191,7 +191,7 @@ class CachedReranker:
@lru_cache(maxsize=1000)
def search_cached(self, query_hash, user_id):
return self.memory.search(query, user_id=user_id)
return self.memory.search(query, filters={"user_id": user_id})
def search(self, query, user_id):
query_hash = hashlib.md5(f"{query}_{user_id}".encode()).hexdigest()
+1 -1
View File
@@ -72,7 +72,7 @@ m.add(messages, user_id="alice", metadata={"category": "movies"})
### Search Memories
```python
results = m.search("What kind of movies does Alice like?", user_id="alice")
results = m.search("What kind of movies does Alice like?", filters={"user_id": "alice"})
```
### Features
@@ -36,7 +36,7 @@ messages = [
m.add(messages, user_id="alice", metadata={"category": "movies"})
# Search memories
results = m.search(query="sci-fi recommendations", user_id="alice")
results = m.search(query="sci-fi recommendations", filters={"user_id": "alice"})
```
### Config