Skip to main content
This section demonstrates how to search memories using the default configuration and retrieve relevant results for a user.
  • Python SDK
  • JavaScript SDK
from gravixlayer import GravixLayer

client = GravixLayer()
memory = client.memory

# First, add some memories to search
memory.add("I love pizza and Italian food", user_id="alice")
memory.add("User prefers sci-fi movies over horror", user_id="alice")
memory.add("User works as a software engineer", user_id="alice")
memory.add("User likes coffee in the morning", user_id="alice")

print("Added sample memories for searching\n")

# Search finds related memories using semantic understanding
search_queries = ["food preferences", "movie tastes", "work information", "morning routine"]

for query in search_queries:
    results = memory.search(query, user_id="alice")
    print(f"Search: '{query}'")
    print(f"Found {len(results['results'])} memories:")
    
    for i, result in enumerate(results['results'], 1):
        print(f"  {i}. {result['memory']}")
        if 'score' in result:
            print(f"     Relevance: {result['score']:.3f}")
    print()

# Search with limit
limited_results = memory.search("preferences", user_id="alice", limit=2)
print(f"Limited search (max 2 results): Found {len(limited_results['results'])} memories")
for result in limited_results['results']:
    print(f"- {result['memory']}")
Expected Output:
Added sample memories for searching

Search: 'food preferences'
Found 2 memories:
  1. I love pizza and Italian food
     Relevance: 0.892
  2. User likes coffee in the morning
     Relevance: 0.654

Search: 'movie tastes'
Found 1 memories:
  1. User prefers sci-fi movies over horror
     Relevance: 0.876

Search: 'work information'
Found 1 memories:
  1. User works as a software engineer
     Relevance: 0.823

Search: 'morning routine'
Found 1 memories:
  1. User likes coffee in the morning
     Relevance: 0.745

Limited search (max 2 results): Found 2 memories
- I love pizza and Italian food
- User prefers sci-fi movies over horror
How Smart Search Works:
  • Search “food” → finds “I love pizza”, “User likes coffee”
  • Search “movies” → finds “User prefers sci-fi films”
  • Search “work” → finds “User is a software engineer”
  • Search understands context and meaning, not just exact keywords

Search in Specific Categories

Organize memories by switching to different indexes for faster, more targeted searches:
  • Python SDK
  • JavaScript SDK
from gravixlayer import GravixLayer

client = GravixLayer()
memory = client.memory

# Add memories to different categories
print("Setting up categorized memories...")

# Add to user preferences
memory.switch_index("user_preferences")
memory.add("User prefers dark mode", user_id="alice")
memory.add("User likes notifications disabled", user_id="alice")
memory.add("User prefers large font size", user_id="alice")

# Add to work info
memory.switch_index("work_info")
memory.add("User works as a software engineer", user_id="alice")
memory.add("User specializes in Python development", user_id="alice")
memory.add("User works remotely", user_id="alice")

# Add to food preferences
memory.switch_index("food_preferences")
memory.add("User loves Italian cuisine", user_id="alice")
memory.add("User is vegetarian", user_id="alice")
memory.add("User dislikes spicy food", user_id="alice")

print("Added memories to different categories\n")

# Search in specific categories
categories = [
    ("user_preferences", "interface settings"),
    ("work_info", "programming skills"),
    ("food_preferences", "dietary restrictions")
]

for index_name, search_query in categories:
    memory.switch_index(index_name)
    results = memory.search(search_query, user_id="alice")
    
    print(f"Searching '{search_query}' in {index_name}:")
    print(f"Found {len(results['results'])} memories:")
    for result in results['results']:
        print(f"  - {result['memory']}")
    print()

# Compare: search across all indexes vs specific index
memory.switch_index("gravixlayer_memories")  # Default index
all_results = memory.search("user preferences", user_id="alice")
print(f"Search across all indexes: {len(all_results['results'])} results")

memory.switch_index("user_preferences")
specific_results = memory.search("preferences", user_id="alice")
print(f"Search in user_preferences only: {len(specific_results['results'])} results")
Expected Output:
Setting up categorized memories...
✅ Switched to index: user_preferences
✅ Switched to index: work_info
✅ Switched to index: food_preferences
Added memories to different categories

Searching 'interface settings' in user_preferences:
✅ Switched to index: user_preferences
Found 3 memories:
  - User prefers dark mode
  - User likes notifications disabled
  - User prefers large font size

Searching 'programming skills' in work_info:
✅ Switched to index: work_info
Found 2 memories:
  - User works as a software engineer
  - User specializes in Python development

Searching 'dietary restrictions' in food_preferences:
✅ Switched to index: food_preferences
Found 2 memories:
  - User is vegetarian
  - User dislikes spicy food

✅ Switched to index: gravixlayer_memories
Search across all indexes: 0 results
✅ Switched to index: user_preferences
Search in user_preferences only: 3 results
I