memodb-io/memobase

★ 2,907⑂ 0

User Profile-Based Long-Term Memory for AI Chatbot Applications.

About memodb-io/memobase

memodb-io/memobase is an open-source project on GitHub, mainly written in Python. User Profile-Based Long-Term Memory for AI Chatbot Applications. It currently holds 2,907 stars and 0 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the AI Agent Memory board.

GitHub Repository Details

Repository memodb-io/memobase · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

https://github.com/memodb-io/memobase/blob/HEAD/Memobase logo

Memobase

News

Memobase is a user profile-based memory system designed to bring long-term user memory to your LLM applications. Whether you're building virtual companions, educational tools, or personalized assistants, Memobase empowers your AI to remember, understand, and evolve with your users.

Memobase offers the perfect balance for your product among various memory solutions. At Memobase, we focus on three key metrics simultaneously:

Check out the profile result (compared with mem0) from a 900-turns real-world chatting:

Partial Profile Output
{
  "basic_info": {
    "language_spoken": ["English", "Korean"],
    "name": "오*영"
  },
  "demographics": {
    "marital_status": "married"
  },
  "education": {
    "notes": "Had an English teacher who emphasized capitalization rules during school days",
    "major": "국어국문학과 (Korean Language and Literature)"
  },
  "interest": {
    "games": "User is interested in Cyberpunk 2077 and wants to create a game better than it",
    "youtube_channels": "Kurzgesagt",
    ...
  },
  "psychological": {...},
  "work": {"working_industry": ..., "title": ..., },
  ...
}

🎉 Recent Updates

📖 Table of Contents

Core Features

🎯 Memory for User, not Agent

Define and control exactly what user information your AI captures.

📈 SOTA

Check out performance on public benchmark against mem0, langmem, zep...

📅 Time-aware Memory

Memobase has more than user profiles, it also records user event. User event is essential to answer time-related question, see how we can improve temporal memory much better than other memory solutions.

🖼️ Controllable Memory

Among all types of memory, only some may enhance your product experience. Memobase offers a flexible configuration for you to design the profile.

🔌 Easy Integration

Minimal code changes to integrate with your existing LLM stack with API, Python/Node/Go SDK.

⚡️ Batch-Process:

Memobase offers every user a buffer to batch processing the chats after the conversation. Fast & Cheap.

🚀 Production Ready

Memobase is building with FastAPI, Postgres and Redis, supporting request caching, authing, telemetry... Fully dockerized.

https://github.com/memodb-io/memobase/blob/HEAD/Memobase Workflow

How Memobase works?

Get Started

[!NOTE]
> Try Memobase Playground to see how profile-based memory works — no setup needed.
* Visualize how user profiles and memory events evolve over time.
* Interact with the memory mechanism directly.
* Explore key features and concepts in a live environment.
Watch the demo below — see how memory evolves around user profiles.

https://github.com/user-attachments/assets/eb2eea30-48bc-4714-9706-e417ae1931df

1. Start your Memobase server locally. If you don't want to be bothered, Memobase Cloud provides a free tier enough for your testing 2. You should have the below two things to continue: 1. A project url. (local: http://localhost:8019 , cloud https://api.memobase.dev) 2. A project token. (local: secret , cloud sk-proj-xxxxxx) 3. Install the Python SDK: pip install memobase 4. Below tutorial is for Python User. For other language and API, check this.

Step-by-step breakdown

[!TIP]
> - You can just run this equivalent quickstart script
> - Or you can keep things super easy by using OpenAI SDK with Memobase., Ollama with Memobase.
> - Looking for MCP? Memobase-MCP is also available

1. Make sure you're connected

 from memobase import MemoBaseClient, ChatBlob
 
 client = MemoBaseClient(
     project_url=PROJECT_URL,
     api_key=PROJECT_TOKEN,
 )
 assert client.ping()
 

2. Manage Users

uid = client.add_user({"any_key": "any_value"})
client.update_user(uid, {"any_key": "any_value2"})
u = client.get_user(uid)
print(u)

client.delete_user(uid)

3. Insert Data

In Memobase, all types of data are blobs for a user, which can be inserted, retrieved, and deleted:
messages = [
  {
      "role": "user",
      "content": "Hello, I'm Gus",
  },
  {
      "role": "assistant",
      "content": "Hi, nice to meet you, Gus!",
  }
]
bid = u.insert(ChatBlob(messages=messages))
print(u.get(bid)) # not found once you flush the memory.

u.delete(bid)

By default, Memobase will remove the blobs once they're processed. This means that apart from the relevant memory, your data will not be stored with Memobase. You can persist the blobs by adjusting the configuration file.

4. Get your Memory

u.flush(sync=True)
By default, Memobase will flush the buffer asynchronously. You can set sync=True to wait for the buffer to be processed.

And what will you get?

print(u.profile(need_json=True))

results

{ "basic_info": { "name": { "content": "Gus", "id": ..., "created_at": ... } } }

u.profile() will return structured profiles that are learned from this user, including topic, sub_topic and content. As you insert more blobs, the profile will become better.

Why need a flush?

In Memobase, we don't memoize users in hot path. We use buffer zones for the recent inserted blobs.

When the buffer zone becomes too large (e.g., 1024 tokens) or remains idle for an extended period (e.g., 1 hour), Memobase will flush the entire buffer into memory. Alternatively, you can use flush() manually decide when to flush, such as when a chat session is closed in your app.

5. Integrate memory into your prompt

Memobase has a context api to pack everything you need into a simple string, where you can insert it into your prompt directly:

print(u.context(max_token_size=500, prefer_topics=["basic_info"]))

Something like:

# Memory
Unless the user has relevant queries, do not actively mention those memories in the conversation.

User Background:

  • basic_info:name: Gus
...

Latest Events:

...

Checkout the detail params here.

What's next?

Why/Where should I use Memobase?

Remember the users

By placing profiles into your AI (e.g. system prompt).

Demo
PROFILES = "\n".join([p.describe for p in u.profile()])

print(PROFILES)

basic_info: name - Gus

basic_info: age - 25

...

interest: foods - Mexican cuisine

psychological: goals - Build something that maybe useful

...

User analysis and tracking

Too much information is hidden in the conversations between users and AI, that's why you need a new data tracking method to record user preference and behavior.

Demo
PROFILES = u.profile()

def under_age_30(p): return p.sub_topic == "age" and int(p.content) < 30

def love_cat(p): return p.topic == "interest" and p.sub_topic == "pets" and "cat" in p.content

is_user_under_30 = ( len([p for p in profiles if under_age_30(p)]) > 0 ) is_user_love_cat = ( len([p for p in profiles if love_cat(p)]) > 0 ) ...

Sell something to your customers.

Not everyone is looking for Grammarly, it's always nice to sell something your users might want.

Demo
def pick_an_ad(profiles):
  work_titles = [p for p in profiles if p.topic=="work" and p.sub_topic=="title"]
  if not len(work_titles):
    return None
  wt = work_titles[0].content
  if wt == "Software Engineer":
    return "Deep Learning Stuff"
  elif wt == "some job":
    return "some ads"
  ...

Documentation

For detailed usage instructions, visit the documentation.

Stay Updated

Star Memobase on Github to support and receive instant notifications!

click_star

Support

Join the community for support and discussions:

Or just email us ❤️

Contribute

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

GitHub Stars & Activity

2,907Stars
0Forks
0Open issues
PythonLanguage

GitHub Popularity

GitHub stars2,907
Forks0
Open issues0
Primary languagePython
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related AI Projects

1

666ghj / MiroFish

Python★ 74,064⑂ 0
2

mem0ai / mem0

Python★ 65,695⑂ 0
3

bojieli / ai-agent-book

Python★ 48,844⑂ 0
4

volcengine / OpenViking

Python★ 38,148⑂ 0
5

topoteretes / cognee

Python★ 30,855⑂ 0
6

MemoriLabs / Memori

Python★ 16,849⑂ 0
7

NevaMind-AI / memU

Python★ 14,418⑂ 0
8

semantica-agi / semantica

Python★ 13,301⑂ 0

More AI Rankings