Skip to main content

Human-like memory for AI applications

Project description

recollect

Persistent memory SDK for LLM agents. See the project README for architecture and scoring details.

Install

pip install recollect    # or: uv add recollect

Quick Start

import asyncio
from recollect import CognitiveMemory

async def main():
    memory = CognitiveMemory()
    await memory.connect()

    await memory.experience(
        "The team decided to migrate from Redis to PostgreSQL for persistence."
    )

    thoughts = await memory.think_about("database decisions", token_budget=500)
    for thought in thoughts:
        print(f"[{thought.activation:.2f}] {thought.content}")

    await memory.close()

asyncio.run(main())

API

Method Description
connect(db_url=None) Connect to PostgreSQL. Uses DATABASE_URL env var if no argument.
experience(content) Store a memory trace. LLM extracts entities, concepts, significance.
think_about(query, token_budget) Retrieve memories that fit within a token limit. Returns list[Thought].
consolidate(threshold=None) Merge and prune weak traces.
forget(trace_id) Remove a trace.
reinforce(trace_id, factor=1.1) Strengthen a trace.
facts(subject=None) List persona facts.
start_session(user_id) Begin a scoped session.
close() Disconnect and release resources.

Environment Variables

Variable Required Default Description
DATABASE_URL Yes postgresql://localhost:5432/memory_sdk PostgreSQL connection string.
PYDANTIC_AI_MODEL No -- pydantic-ai model string in provider:model format (e.g., ollama:ministral-3, anthropic:claude-haiku-4-5-20251001).
ANTHROPIC_API_KEY For Anthropic models -- Anthropic API key. Read by pydantic-ai's Anthropic backend.
OPENAI_API_KEY For OpenAI models -- OpenAI API key. Read by pydantic-ai's OpenAI backend.
OLLAMA_BASE_URL No http://localhost:11434/v1 Ollama API endpoint.
MEMORY_EXTRACTION_MAX_TOKENS No 8192 Max tokens for LLM extraction. Reasoning models consume thinking tokens before output; 8192 covers most cases.
MEMORY_CONFIG No -- Path to custom TOML config file.
MEMORY_EXTRACTION_INSTRUCTIONS No -- Override extraction prompt instructions (inline string).
MEMORY_EXTRACTION_TEMPLATE_PATH No -- Path to override extraction prompt (markdown with version / applies-to / placeholders header schema).
MEMORY_RECALL_TOKENS_ENABLED No true Enable write-time token stamping and query-time activation.
MEMORY_RECALL_TOKENS_TOP_K No 5 Max related traces to consider for token assessment.
MEMORY_RECALL_TOKENS_THRESHOLD No 0.42 Min cosine similarity to consider a trace as related at write time.
MEMORY_RECALL_TOKENS_STRENGTH_THRESHOLD No 0.1 Min token strength to activate at query time.
MEMORY_RECALL_TOKENS_REINFORCE_BOOST No 0.1 Strength increment on token activation (capped at 1.0).
MEMORY_RECALL_TOKENS_DECAY_FACTOR No 0.9 Multiply inactive token strength by this during consolidation.
MEMORY_RECALL_TOKENS_HOP_DECAY No 0.85 Signal attenuation per token hop during query-time propagation.
MEMORY_RECALL_TOKENS_PROPAGATION_BLEND No 0.5 Weight of propagated signal in the additive blend.
MEMORY_RECALL_TOKENS_MAX_ROUNDS No 3 Max re-seeding iterations at query time.
MEMORY_RECALL_TOKENS_STABILITY_THRESHOLD No 0.95 Top-K overlap fraction to stop re-seeding early.
MEMORY_RECALL_TOKENS_TOP_SEEDS No 3 Token-discovered traces used as seeds per re-seeding round.
MEMORY_RECALL_TOKENS_SYSTEM_PROMPT No -- Override situational-assessment system prompt (inline string).
MEMORY_RECALL_TOKENS_USER_PROMPT No -- Override situational-assessment user prompt (inline string).

Configuration

[memory]
decay_rate = 0.05

[retrieval]
max_retrievals = 10

[extraction]
pydantic_ai_model = "ollama:ministral-3"   # pydantic-ai provider:model format

Config sections

Section Controls Key parameters
[database] PostgreSQL connection url
[memory] Core memory model initial_strength, consolidation_threshold, decay_rate
[working_memory] Working memory capacity capacity (default 7, range 5-9)
[retrieval] Retrieval pipeline tuning max_retrievals, search_limit, selection_threshold
[extraction] LLM extraction max_tokens, max_concepts, max_relations, pydantic_ai_model, template_path, embed_relation_tags
[extraction.model_settings] Provider-specific settings forwarded to pydantic-ai openrouter_reasoning, anthropic_thinking_budget, thinking, top_p
[embedding] Local embedding model model, dimensions
[persona] Persona fact management auto_extract, confidence_threshold
[recall_tokens] Situational grouping at write + propagation at read enabled, assessment_max_tokens, assessment_template_path, plus strength / decay / propagation knobs (env-var-exposed above)
[session] Session summaries summary_strength, summary_max_tokens

Full defaults: config.toml

from recollect.config import MemoryConfig

config = MemoryConfig(config_path=Path("./my-config.toml"))
memory = CognitiveMemory(config=config)

LLM Provider

from recollect.llm.pydantic_ai import PydanticAIProvider

# Model configured via PYDANTIC_AI_MODEL env var, or pass explicitly:
provider = PydanticAIProvider()  # uses PYDANTIC_AI_MODEL
provider = PydanticAIProvider(model="anthropic:claude-sonnet-4-6")
provider = PydanticAIProvider(model="ollama:llama3")

Reasoning models

Models that use internal chain-of-thought (OpenAI o1/o3, Qwen3, DeepSeek-R1) consume thinking tokens from the max_tokens budget. If extraction returns empty responses, increase the token budget:

# memory.toml
[extraction]
max_tokens = 8192

The default is 8192 to accommodate thinking tokens. Non-reasoning models work fine at this budget; no need to reduce it.

Requirements

  • Python 3.12+
  • PostgreSQL 17 with pgvector
  • DATABASE_URL environment variable

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

recollect-0.8.1.tar.gz (70.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

recollect-0.8.1-py3-none-any.whl (92.5 kB view details)

Uploaded Python 3

File details

Details for the file recollect-0.8.1.tar.gz.

File metadata

  • Download URL: recollect-0.8.1.tar.gz
  • Upload date:
  • Size: 70.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for recollect-0.8.1.tar.gz
Algorithm Hash digest
SHA256 063316aca4f4dc2908358a144f4d97f69fc82fb591fa4575f00b8cdf3b0609c4
MD5 707778bd249b4d36bc47fa2931b623f6
BLAKE2b-256 647fef2b6341e23af7be5b12b54b4145689cb9ab9eae831298bfc279cfdf9836

See more details on using hashes here.

File details

Details for the file recollect-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: recollect-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 92.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for recollect-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4a1f60bd32e120380e3fd0a0d925577f74b2eda1b57ccab2f5c402d14a290275
MD5 4ed1e73350d76223af338b3b24cd3dcc
BLAKE2b-256 bf890e0f9baa17968b02ed01d959f5ea8c712beadc105490f97d53677226af45

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page