Skip to main content

Compact Qdrant-backed memory for host-owned LLM applications.

Project description

memory-os

Compact Qdrant-backed memory for AI applications.

MemoryOS does not generate final answers. Your application owns the chat flow and the user-facing LLM call. MemoryOS extracts multiple important memory chunks from the user's prompt, stores those chunks separately in Qdrant, applies forgetting-curve style decay to them over time, and also keeps a small rolling prompt/response history per session.

Public API

pip install pymemoryos
from memory_os import MemoryOS

memory = MemoryOS(
    qdrant_url="https://your-qdrant-url",
    qdrant_api_key="your-qdrant-api-key",
    llm=configured_llm,                    # any object with .invoke()
    session_id="user_123",
)

memory.store(prompt: str, response: str) -> None
memory.retrieve(prompt: str) -> dict

That is the entire intended surface.

Usage

context = memory.retrieve(user_prompt)

final_response = host_llm.invoke(
    f"Relevant memory:\n{context}\n\nUser:\n{user_prompt}"
)

memory.store(user_prompt, final_response)

Behavior

  • store(prompt, response) calls llm.invoke(...) once to distill the completed prompt into multiple important memory chunks.
  • store(prompt, response) embeds each extracted memory chunk with an internal SentenceTransformer model, then upserts those chunks separately to Qdrant.
  • store(prompt, response) also stores the raw prompt/response pair in a simple rolling session history capped at 7 pairs.
  • retrieve(prompt) embeds the current prompt with the same internal SentenceTransformer model, then queries Qdrant for relevant memories.
  • retrieve(prompt) reranks Qdrant hits using an Ebbinghaus-style decay score: similarity * decay_score * importance * emotional_weight.
  • retrieve(prompt) also returns the latest 4-5 stored prompt/response pairs for the same session as immediate context.
  • All Qdrant reads and writes are filtered by session_id.
  • When an old pair is evicted from the 7-pair history, the Qdrant memory chunks created from that prompt are also removed.
  • Each stored memory chunk keeps decay state in Qdrant payload, including last_accessed, access_count, stability, importance, emotion, emotional_weight, decay_score, final_score, and last_similarity.

Retrieve shape

{
    "recent_pairs": [
        {"prompt": "...", "response": "...", "created_at": 1720000000.0},
    ],
    "memories": [
        {
            "text": "...",
            "score": 0.92,
            "created_at": 1720000000.0,
            "decay_score": 0.81,
            "importance": 0.9,
            "emotion": "fear",
        },
    ],
}

Boundaries

  • MemoryOS never generates the final answer to a user query.
  • MemoryOS uses llm.invoke() only to break the user's prompt into storable memory chunks.
  • MemoryOS uses an internal SentenceTransformer embedder for vector storage and retrieval.
  • Required init config is exactly qdrant_url, qdrant_api_key, llm, and session_id.

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

pymemoryos-0.1.3.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

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

pymemoryos-0.1.3-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file pymemoryos-0.1.3.tar.gz.

File metadata

  • Download URL: pymemoryos-0.1.3.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymemoryos-0.1.3.tar.gz
Algorithm Hash digest
SHA256 271fff9cbc6e300a6bd708d15c6418e6821313dc5989e8bd9ee020605c5fdef1
MD5 65c89da44c1abe282cba6ee1c591a4bf
BLAKE2b-256 bb1b3d26c650e6e52ee66ec47f3fc95e416e29863a1979171d11fbd4c43708fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymemoryos-0.1.3.tar.gz:

Publisher: publish.yml on karann810/MemoryOS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymemoryos-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pymemoryos-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymemoryos-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c383aaf83c7b61ada9be08841276323fface26beae349509b9fb8ba7eb2303c7
MD5 3b3cc644e862eecb35797cae2c437287
BLAKE2b-256 f0e81e081c16961717878715d5ac25918e6bfa16657dea249f9b65684d0ad60e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymemoryos-0.1.3-py3-none-any.whl:

Publisher: publish.yml on karann810/MemoryOS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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