Skip to main content

High-performance AI memory engine with Rust core

Project description

mem7

LLM-powered long-term memory engine — Rust core with multi-language bindings.

mem7 extracts factual statements from conversations, deduplicates them against existing memories, and stores the results in a vector database with full audit history.

Install

pip install mem7          # Python
npm install @mem7ai/mem7  # Node.js / TypeScript
cargo add mem7            # Rust

Architecture

Python / TypeScript / Rust API
    │  PyO3 (sync + async) / napi-rs / native
    ▼
Rust Core (tokio async runtime)
    ├── mem7-llm        — OpenAI-compatible LLM client
    ├── mem7-embedding  — Embedding client (OpenAI-compatible / FastEmbed)
    ├── mem7-vector     — Vector index (FlatIndex / Upstash)
    ├── mem7-graph      — Graph store (FlatGraph / Kuzu / Neo4j)
    ├── mem7-history    — SQLite audit trail
    ├── mem7-dedup      — LLM-driven memory deduplication
    ├── mem7-reranker   — Search reranking (Cohere / LLM-based)
    ├── mem7-telemetry  — OpenTelemetry tracing (OTLP export)
    └── mem7-store      — Pipeline orchestrator (MemoryEngine)

Quick Start (Python — Sync)

from mem7 import Memory
from mem7.config import MemoryConfig, LlmConfig, EmbeddingConfig

config = MemoryConfig(
    llm=LlmConfig(
        base_url="http://localhost:11434/v1",
        api_key="ollama",
        model="qwen2.5:7b",
    ),
    embedding=EmbeddingConfig(
        base_url="http://localhost:11434/v1",
        api_key="ollama",
        model="mxbai-embed-large",
        dims=1024,
    ),
)

m = Memory(config=config)
m.add("I love playing tennis and my coach is Sarah.", user_id="alice")
results = m.search("What sports does Alice play?", user_id="alice")

Quick Start (Python — Async)

import asyncio
from mem7 import AsyncMemory
from mem7.config import MemoryConfig, LlmConfig, EmbeddingConfig

async def main():
    config = MemoryConfig(
        llm=LlmConfig(
            base_url="http://localhost:11434/v1",
            api_key="ollama",
            model="qwen2.5:7b",
        ),
        embedding=EmbeddingConfig(
            base_url="http://localhost:11434/v1",
            api_key="ollama",
            model="mxbai-embed-large",
            dims=1024,
        ),
    )

    m = await AsyncMemory.create(config=config)
    await m.add("I love playing tennis and my coach is Sarah.", user_id="alice")
    results = await m.search("What sports does Alice play?", user_id="alice")

asyncio.run(main())

Quick Start (TypeScript)

import { MemoryEngine } from "@mem7ai/mem7";

const engine = await MemoryEngine.create(JSON.stringify({
  llm: { base_url: "http://localhost:11434/v1", api_key: "ollama", model: "qwen2.5:7b" },
  embedding: { base_url: "http://localhost:11434/v1", api_key: "ollama", model: "mxbai-embed-large", dims: 1024 },
}));

await engine.add([{ role: "user", content: "I love playing tennis and my coach is Sarah." }], "alice");
const results = await engine.search("What sports does Alice play?", "alice");

Supported Providers

mem7 uses a single OpenAI-compatible client for both LLM and Embedding, which covers any service that exposes the OpenAI API format. This includes most major providers out of the box.

LLMs

Provider mem0 mem7 Notes
OpenAI :white_check_mark: :white_check_mark: Native support
Ollama :white_check_mark: :white_check_mark: Via OpenAI-compatible API
vLLM :white_check_mark: :white_check_mark: Via OpenAI-compatible API
Groq :white_check_mark: :white_check_mark: Via OpenAI-compatible API
Together :white_check_mark: :white_check_mark: Via OpenAI-compatible API
DeepSeek :white_check_mark: :white_check_mark: Via OpenAI-compatible API
xAI (Grok) :white_check_mark: :white_check_mark: Via OpenAI-compatible API
LM Studio :white_check_mark: :white_check_mark: Via OpenAI-compatible API
Azure OpenAI :white_check_mark: :white_check_mark: Via OpenAI-compatible API
Anthropic :white_check_mark: :x: Requires native SDK
Gemini :white_check_mark: :x: Requires native SDK
Vertex AI :white_check_mark: :x: Requires native SDK
AWS Bedrock :white_check_mark: :x: Requires native SDK
LiteLLM :white_check_mark: :x: Python proxy
Sarvam :white_check_mark: :x: Requires native SDK
LangChain :white_check_mark: :x: Python framework

Embeddings

Provider mem0 mem7 Notes
OpenAI :white_check_mark: :white_check_mark: Native support
Ollama :white_check_mark: :white_check_mark: Via OpenAI-compatible API
Together :white_check_mark: :white_check_mark: Via OpenAI-compatible API
LM Studio :white_check_mark: :white_check_mark: Via OpenAI-compatible API
Azure OpenAI :white_check_mark: :white_check_mark: Via OpenAI-compatible API
FastEmbed :white_check_mark: :white_check_mark: Local ONNX inference (feature flag fastembed)
Hugging Face :white_check_mark: :x: Requires native SDK
Gemini :white_check_mark: :x: Requires native SDK
Vertex AI :white_check_mark: :x: Requires native SDK
AWS Bedrock :white_check_mark: :x: Requires native SDK
LangChain :white_check_mark: :x: Python framework

Vector Stores

Provider mem0 mem7 Notes
In-memory (FlatIndex) :white_check_mark: Built-in, good for dev
Upstash Vector :white_check_mark: :white_check_mark: REST API, serverless
Qdrant :white_check_mark: :x:
Chroma :white_check_mark: :x:
pgvector :white_check_mark: :x:
Milvus :white_check_mark: :x:
Pinecone :white_check_mark: :x:
Redis :white_check_mark: :x:
Weaviate :white_check_mark: :x:
Elasticsearch :white_check_mark: :x:
OpenSearch :white_check_mark: :x:
FAISS :white_check_mark: :x:
MongoDB :white_check_mark: :x:
Supabase :white_check_mark: :x:
Azure AI Search :white_check_mark: :x:
Vertex AI Vector Search :white_check_mark: :x:
Databricks :white_check_mark: :x:
Cassandra :white_check_mark: :x:
S3 Vectors :white_check_mark: :x:
Baidu :white_check_mark: :x:
Neptune :white_check_mark: :x:
Valkey :white_check_mark: :x:
LangChain :white_check_mark: :x:

Rerankers

Provider mem0 mem7 Notes
Cohere :white_check_mark: :white_check_mark: Cohere v2 rerank API
LLM-based :white_check_mark: :white_check_mark: Any OpenAI-compatible LLM
Jina AI :white_check_mark: :x: Planned
Cross-encoder :white_check_mark: :x: Planned

Graph Stores

Provider mem0 mem7 Notes
In-memory (FlatGraph) :white_check_mark: Built-in, good for dev/testing
Kuzu (embedded) :white_check_mark: :white_check_mark: Cypher-based, no server needed (feature flag kuzu)
Neo4j :white_check_mark: :white_check_mark: Production-grade, Bolt protocol
Memgraph :white_check_mark: :x: Planned
Amazon Neptune :white_check_mark: :x: Planned

Language Bindings

Language Status
Python (sync + async) :white_check_mark: PyPI: pip install mem7
TypeScript / Node.js :white_check_mark: npm: npm install @mem7ai/mem7
Rust :white_check_mark: crates.io: cargo add mem7
Go Planned

Vector Store Backends

Built-in FlatIndex (default) — in-memory brute-force, good for development:

from mem7.config import VectorConfig

VectorConfig(provider="flat", dims=1024)

Upstash Vector — managed cloud vector database:

VectorConfig(
    provider="upstash",
    collection_name="my-namespace",
    dims=1024,
    upstash_url="https://your-index.upstash.io",
    upstash_token="your-token",
)

Local Embedding (FastEmbed)

mem7 supports fully local embedding via FastEmbed (ONNX Runtime). No API calls needed — models are downloaded and run locally.

Requires the fastembed feature flag:

# Cargo.toml
mem7 = { version = "0.2", features = ["fastembed"] }
from mem7 import Memory
from mem7.config import MemoryConfig, LlmConfig, EmbeddingConfig

config = MemoryConfig(
    llm=LlmConfig(base_url="http://localhost:11434/v1", api_key="ollama", model="qwen2.5:7b"),
    embedding=EmbeddingConfig(
        provider="fastembed",
        model="AllMiniLML6V2",  # or "BGEBaseENV15", "NomicEmbedTextV15", etc.
        dims=384,
    ),
)

m = Memory(config=config)  # model downloaded on first use

Supported models include AllMiniLML6V2, BGEBaseENV15, BGESmallENV15, NomicEmbedTextV1, MxbaiEmbedLargeV1, GTEBaseENV15, and their quantized variants.

Graph Memory (Dual-Path Recall)

When graph is configured, mem7 runs dual-path recall: vector search and graph search execute concurrently via tokio::join!, returning both factual memories and entity relations.

On add(), the engine extracts entities and relations from conversations using LLM (JSON mode) and stores them in the graph alongside the vector memories.

FlatGraph (in-memory, for development):

from mem7 import Memory
from mem7.config import MemoryConfig, LlmConfig, EmbeddingConfig, GraphConfig

config = MemoryConfig(
    llm=LlmConfig(base_url="http://localhost:11434/v1", api_key="ollama", model="qwen2.5:7b"),
    embedding=EmbeddingConfig(base_url="http://localhost:11434/v1", api_key="ollama", model="mxbai-embed-large", dims=1024),
    graph=GraphConfig(provider="flat"),
)

m = Memory(config=config)
m.add("I love playing tennis and my coach is Sarah.", user_id="alice")

results = m.search("What sports does Alice play?", user_id="alice")
# results["memories"]   -> vector search results
# results["relations"]  -> graph relations (e.g. USER -[loves_playing]-> tennis)

Neo4j (production):

GraphConfig(
    provider="neo4j",
    neo4j_url="bolt://localhost:7687",
    neo4j_username="neo4j",
    neo4j_password="password",
)

Kuzu (embedded, requires kuzu feature flag):

GraphConfig(provider="kuzu", kuzu_db_path="./my_graph.kuzu")

The graph LLM can be configured separately (e.g. use a cheaper model for extraction):

GraphConfig(
    provider="flat",
    llm=LlmConfig(base_url="http://localhost:11434/v1", api_key="ollama", model="qwen2.5:3b"),
)

Observability (OpenTelemetry)

mem7 integrates with OpenTelemetry via tracing-opentelemetry. When enabled, every add(), search(), get(), update(), delete() call emits a trace span that is exported via OTLP/gRPC to any compatible collector (Jaeger, Grafana Tempo, Datadog, etc.).

Python:

from mem7 import Memory, init_telemetry, shutdown_telemetry

init_telemetry(otlp_endpoint="http://localhost:4317", service_name="my-app")

m = Memory(config=config)
m.add("I love playing tennis.", user_id="alice")
# spans are exported automatically

shutdown_telemetry()  # flush before exit

TypeScript:

import { MemoryEngine, initTelemetry, shutdownTelemetry } from "@mem7ai/mem7";

initTelemetry(JSON.stringify({ otlp_endpoint: "http://localhost:4317", service_name: "my-app" }));

const engine = await MemoryEngine.create(configJson);
await engine.add([{ role: "user", content: "I love tennis." }], "alice");

shutdownTelemetry();

Rust (requires otel feature):

// Cargo.toml: mem7 = { version = "0.2", features = ["otel"] }
use mem7::{TelemetryConfig, telemetry};

telemetry::init(&TelemetryConfig::default())?;
// ... use MemoryEngine as usual ...
telemetry::shutdown();

Examples

See the examples/ directory:

Development

Prerequisites

  • Rust 1.85+ (stable)
  • Python 3.10+
  • Node.js 22+
  • maturin

Build

python -m venv .venv && source .venv/bin/activate
pip install maturin pydantic

# Development build (debug, fast iteration)
maturin develop

# Release build
maturin develop --release

Test

# Rust tests
cargo test --workspace

# Clippy
cargo clippy --workspace --all-targets -- -D warnings

License

Apache-2.0

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

mem7-0.2.1.tar.gz (80.6 kB view details)

Uploaded Source

Built Distributions

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

mem7-0.2.1-cp310-abi3-win_amd64.whl (5.1 MB view details)

Uploaded CPython 3.10+Windows x86-64

mem7-0.2.1-cp310-abi3-manylinux_2_24_aarch64.whl (6.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.24+ ARM64

mem7-0.2.1-cp310-abi3-macosx_11_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

mem7-0.2.1-cp310-abi3-macosx_10_12_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

mem7-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file mem7-0.2.1.tar.gz.

File metadata

  • Download URL: mem7-0.2.1.tar.gz
  • Upload date:
  • Size: 80.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mem7-0.2.1.tar.gz
Algorithm Hash digest
SHA256 3c5f758e499339df1886e48c7878de7f777ecf368fe11e583b10b40f16bc3559
MD5 62238c82adcc96de2cb897ac8d6a32aa
BLAKE2b-256 90fa209ccc19dea5b4e22ed2701f333e08d38ec759824379d60ec65b3e4bde3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mem7-0.2.1.tar.gz:

Publisher: release.yml on mem7ai/mem7

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

File details

Details for the file mem7-0.2.1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: mem7-0.2.1-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 5.1 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mem7-0.2.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4132ec4fb8742f677f50ed45f44efd93d73076d60359c9c74dbdf7ba73688723
MD5 2f173506cfd303fef27359f0d07ffa43
BLAKE2b-256 d5afe369bfa1ab116eef44d5a00d7cd5af706ee3f8e6340954631a4952cd991c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mem7-0.2.1-cp310-abi3-win_amd64.whl:

Publisher: release.yml on mem7ai/mem7

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

File details

Details for the file mem7-0.2.1-cp310-abi3-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for mem7-0.2.1-cp310-abi3-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 2b4251469a63e1103aceb5bbfe0821bf27b4fae2414aedd1ef38546fa4863e77
MD5 fd8a7622254c64dfc427a5007dd4a0bd
BLAKE2b-256 af4e7668a650f43fcbdd2b96ff26e293a2ff232a8ecb4d29f13f04288e1fdaf5

See more details on using hashes here.

Provenance

The following attestation bundles were made for mem7-0.2.1-cp310-abi3-manylinux_2_24_aarch64.whl:

Publisher: release.yml on mem7ai/mem7

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

File details

Details for the file mem7-0.2.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: mem7-0.2.1-cp310-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.10+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mem7-0.2.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7ff2256c5a68ddddbef5e17c7dc69a621a43ce7606bccc4a6b97f315468974e
MD5 4db054d74bf69d29b744dffd7c0c202b
BLAKE2b-256 e8a0fe32e2b0eb515d7d7a0f0de6097fb51d1fddd89ac9ee1ecc896bcae93c94

See more details on using hashes here.

Provenance

The following attestation bundles were made for mem7-0.2.1-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on mem7ai/mem7

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

File details

Details for the file mem7-0.2.1-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mem7-0.2.1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d8c5543f93c8bb3b38028ceda9282dac9412a31c31c50d86beeebe3de158d895
MD5 af6ae53e99bf1ed415138d57467f9887
BLAKE2b-256 5a0f6515ea6f488ff423aae414567cb98d083cfa8222927ba22198f71c04f7e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for mem7-0.2.1-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on mem7ai/mem7

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

File details

Details for the file mem7-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mem7-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2360d174526cdf4d95291fcf0faba2bfe77c6a03426d100d3ebc80add0bb572
MD5 2d3318461dad09a3e6a1e97f0bc336db
BLAKE2b-256 b9919750e84e2a404b77873c760ed5d0df0493b3bbab1381843909553efe5c82

See more details on using hashes here.

Provenance

The following attestation bundles were made for mem7-0.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on mem7ai/mem7

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