Skip to main content

Core Concepts

Understand the key concepts in the Tensorheart Memory API.

Memories

A memory is a piece of information you want your AI to remember.

{
"id": "mem_abc123",
"text": "User prefers Python for data analysis",
"metadata": {
"category": "preference",
"confidence": 0.95
},
"created_at": "2024-01-15T10:30:00Z"
}

Memory Components

FieldDescription
textThe memory content (required)
metadataKey-value pairs for organization
idUnique identifier (auto-generated or custom)
space_idOptional namespace for organization
entitiesExtracted entities (people, orgs, skills, etc.)

Smart Updates

Smart updates automatically handle conflicting information when adding memories.

Existing: "Alice has 5 years of experience"
+
New: "Alice has 6 years of experience"

Smart resolution: UPDATE (refinement detected)

Result: Old version preserved, new version is current

Conflict Types

TypeDescriptionAction
ContradictionNew info contradicts existingUpdates the memory
RefinementNew info improves existingUpdates the memory
AdditionNew info is complementaryAdds new memory
DuplicateAlready capturedNo action (returns existing)

Enable smart updates by setting smart: true when creating memories.

Temporal Versioning

Temporal versioning maintains a complete history of memory changes.

Jan 2024: "Alice has 5 years of experience"
↓ (superseded)
Jun 2024: "Alice has 5.5 years of experience"
↓ (superseded)
Dec 2024: "Alice has 6 years of experience" [current]

Benefits

  • Audit trails: See what was known at any point in time
  • Point-in-time queries: Query memories as of a specific date
  • Change tracking: Understand how information evolved

Use as_of in queries to retrieve memories as they existed at a specific timestamp.

Entity Extraction

Entity extraction identifies structured data in your memories.

{
"text": "Alice works at Acme Corp as a Python engineer",
"entities": {
"PERSON": ["Alice"],
"ORG": ["Acme Corp"],
"SKILL": ["Python"]
}
}

Entity Types

TypeExamples
PERSONAlice, John Smith
ORGGoogle, Acme Corp
LOCATIONSan Francisco, Japan
SKILLPython, Machine Learning
PRODUCTiPhone, AWS

Enable extraction by setting extract_entities: true when creating memories.

Memory Spaces

Spaces are namespaces that organize memories into isolated groups.

├── work/
│ ├── "User manages the API team"
│ └── "Project deadline is March 15"
├── personal/
│ ├── "User likes hiking"
│ └── "Favorite coffee: espresso"

Use spaces to separate memories by user, project, or topic.

Retrieval

Retrieval returns memories that best match the context you provide.

Query: "What programming language does the user prefer?"

Intelligent matching

Returns: "User prefers Python for data analysis" (relevance_score: 0.92)

Relevance Scores

Each returned memory includes a relevance score from 0 to 1:

  • 0.9-1.0: Highly relevant
  • 0.7-0.9: Relevant
  • 0.5-0.7: Possibly relevant
  • < 0.5: Likely not relevant

Query Parameters

Control retrieval behavior with these options:

  • search_depth (0-1): Controls search thoroughness
    • 0.0-0.3: Fast searches, ideal for large datasets
    • 0.5 (default): Balanced accuracy and speed
    • 0.7-1.0: Exhaustive searches for critical queries
  • query_rewrite: Expands your query for better recall
  • hybrid_search: Combines keyword and semantic matching
  • temporal_boost: Prioritizes recent memories
  • relevance_threshold: Minimum score for returned memories (0-1)

Answer Generation

The API can generate answers based on retrieved memories:

Question: "What should I use for the user's data project?"

Retrieve relevant memories

Generate answer: "Based on the user's preferences,
Python would be ideal for their data project."

Organizations

An organization is your account. All data is isolated per organization.

  • Each org has its own memories
  • Multiple API keys per org
  • Separate billing and usage

API Keys

API keys authenticate requests and define permissions.

  • mem_live_... - Production (billed)
  • mem_test_... - Testing (free)

Keys have scopes: read, write, delete, admin

Rate Limits

Requests are limited per plan:

PlanRequests/min
Free10
Starter60
Professional300

Metadata

Use metadata to organize and filter memories:

{
"text": "User completed onboarding",
"metadata": {
"category": "event",
"timestamp": "2024-01-15",
"importance": "high"
}
}

Best practices:

  • Use consistent key names
  • Keep values simple (strings, numbers, booleans)
  • Don't store sensitive data in metadata

Transparent Proxy

The Transparent Proxy adds memory to any LLM with zero code changes.

Your App → Proxy → [Retrieve & Inject Memories] → LLM Provider

Just change your API endpoint URL - the proxy handles everything automatically.

Context Extension

Context Extension enables unlimited conversation length.

Long conversation → Automatic chunking → Relevant retrieval → Optimized context

Old messages are compressed and stored, then retrieved when relevant to new queries.

Document Ingestion

Import documents and convert them to searchable memories:

  • PDFs, images, audio files
  • Web pages via URL
  • Automatic chunking and indexing