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
import os

# 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.5.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.5-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: llamate-0.1.5.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.5.tar.gz
Algorithm Hash digest
SHA256 fd5dfcbf02fb0bad70763d3c67cff61c22044d5d716eb85ed910e6301f1fd689
MD5 a92386ce6b9414624171931568e81819
BLAKE2b-256 a38f76d6ac6025d09cd3620ac020a0a4cff72a1739b53926cb93a9ffb905eed8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: llamate-0.1.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fc0e9486f85f75afc7f18a512c55df91e082516f5125102e80d352500625f707
MD5 5844e3df48e66f3ec0a4920aa859d810
BLAKE2b-256 b4113f1ae67a7e48192569d4be4b8d9d537d92a7e08fbd3bac1ae486e9275c16

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