Skip to main content

A memory-augmented framework for LLMs

Project description

🦙 Llamate

Llamate is a memory-augmented agent framework for Large Language Models (LLMs) that provides persistent, retrievable memory for AI conversations.

What is Llamate?

Llamate solves a fundamental limitation of current LLMs: their inability to remember past conversations beyond a single context window. It creates a vector database of memories that can be semantically searched and retrieved during conversations, allowing LLMs to maintain continuity and context over extended interactions.

How It Works

  1. Memory Storage: Llamate stores important pieces of conversation as vector embeddings in a database (either FAISS or PostgreSQL).
  2. Semantic Retrieval: When new queries come in, Llamate searches for semantically relevant past memories.
  3. Context Enhancement: Retrieved memories are injected into the conversation context, allowing the LLM to access and utilize past information.
  4. User Identification: Each user gets a unique memory space, ensuring personalized conversation history.

Key Features

  • Multiple Backend Support: Works with FAISS (file-based) or PostgreSQL (with pgvector)
  • Persistence: Memories remain available between sessions and application restarts
  • Simple API: Easy-to-use Python interface that works with any LLM
  • CLI Interface: Command-line tool for quick testing and interaction
  • Production Ready: Designed for both development and production environments

Quick Start

Follow these steps to set up, use, and view data in Llamate with PostgreSQL:

1. Install Llamate

pip install llamate

2. Start PostgreSQL Container

docker run --name llamate-postgres -e POSTGRES_USER=llamate -e POSTGRES_PASSWORD=llamate -e POSTGRES_DB=llamate -p 5432:5432 -d ankane/pgvector

3. Initialize Llamate

llamate --init
# Select 'postgres' as your vector store backend
# Enter connection string: postgresql://llamate:llamate@localhost:5432/llamate

4. Run a Test Script to Store Data

Create a file test_llamate.py:

from llamate import MemoryAgent, get_vectorstore_from_env

# Set user ID
user_id = "test_user"

# Initialize components
vectorstore = get_vectorstore_from_env(user_id=user_id)
agent = MemoryAgent(user_id=user_id, vectorstore=vectorstore)

# Add memories
agent.chat("The capital of France is Paris.")
agent.chat("The Eiffel Tower is 324 meters tall.")
agent.chat("Python is a programming language created by Guido van Rossum.")

# Test retrieval
response = agent.chat("Tell me about Paris.")
print("Response:", response)

5. View Data in PostgreSQL

Connect to the database:

docker exec -it llamate-postgres psql -U llamate -d llamate

List tables to find your memory table (it will use your user_id):

\dt

View table structure:

\d memory_test_user

Display memory records (omitting the large vector field):

SELECT id, text FROM memory_test_user;

Count records:

SELECT COUNT(*) FROM memory_test_user;

Query specific memories (using text search):

SELECT id, text FROM memory_test_user WHERE text LIKE '%Paris%';

Delete test memories (if needed):

DELETE FROM memory_test_user WHERE text LIKE '%test%';

Exit the PostgreSQL shell:

\q

Features

  • Persistent memory for AI using vector embeddings
  • Multiple vector store backends (FAISS and PostgreSQL)
  • Easy integration into existing applications
  • Simple CLI for testing and demonstration

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

llamate-0.1.6.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

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

llamate-0.1.6-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file llamate-0.1.6.tar.gz.

File metadata

  • Download URL: llamate-0.1.6.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for llamate-0.1.6.tar.gz
Algorithm Hash digest
SHA256 7ffc3e67045aa230063cd30ed66d8c834c313a7e0969d3b663454191899a0742
MD5 651f7ef2b15260cc8c287888e4e141f5
BLAKE2b-256 60d754b67cc3e0b0fa0f1f7b1dd42de310a55264ef6a46b6e4ee83a588068543

See more details on using hashes here.

File details

Details for the file llamate-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: llamate-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for llamate-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 808c18d3301aba7c1c9ef5dff67c4e923758db4e5532a823e52961226f9ad021
MD5 26df4c0cae4e0b36e09b4a0042635224
BLAKE2b-256 820527562e6f6ba50e5e22ca0b7aeed2b8279e8e68bf1fab46536243a627c738

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