Skip to main content

Lightweight memory store for embeddings

Project description

LiteMem

LiteMem - это легковесная библиотека для управления памятью с использованием SQLite, sqlite-vec и локальных эмбеддингов. Библиотека предоставляет два основных класса для работы с памятью: Memory и MemoryEmbedded.

Основные возможности

  • Векторный поиск: Поиск похожих сообщений с использованием эмбеддингов
  • Полнотекстовый поиск: Традиционный текстовый поиск по сообщениям
  • Гибридный поиск: Комбинация векторного и полнотекстового поиска
  • Локальные эмбеддинги: Поддержка локальных моделей для генерации эмбеддингов
  • SQLite база данных: Все данные хранятся в SQLite с расширениями для векторного поиска

Установка

pip install litemem

Быстрый старт

Использование Memory с внешними эмбеддингами

from litemem import Memory
import ollama

# Функция для генерации эмбеддингов
def embedder(text):
    response = ollama.embeddings(model='nomic-embed-text', prompt=text)
    return response['embedding']

# Создание экземпляра памяти
memory = Memory('memory.db', embedder)

# Добавление сообщений
memory.add([
    "Я люблю программирование на Python",
    "Машинное обучение - это интересная область",
    "SQLite - отличная встраиваемая база данных"
])

# Векторный поиск
results = memory.search_vec("программирование на Python")
print(results)

# Полнотекстовый поиск
results = memory.search_fts("Python")
print(results)

# Гибридный поиск
results = memory.hybrid_search("программирование")
print(results)

# Закрытие соединения
memory.close()

Использование MemoryEmbedded с локальными моделями

from litemem import MemoryEmbedded

# Создание экземпляра памяти с локальной моделью
memory = MemoryEmbedded('memory.db')

# Добавление сообщений
memory.add([
    "Я люблю программирование на Python",
    "Машинное обучение - это интересная область",
    "SQLite - отличная встраиваемая база данных"
])

# Поиск
results = memory.search_vec("программирование на Python")
print(results)

# Закрытие соединения
memory.close()

Основные классы

Memory

Класс Memory требует внешнюю функцию для генерации эмбеддингов. Подходит для использования с любыми моделями эмбеддингов.

Методы:

  • add(message): Добавление сообщений в память
  • search_vec(query, limit=64): Векторный поиск
  • search_fts(query, limit=32): Полнотекстовый поиск
  • hybrid_search(query, limit=32): Гибридный поиск
  • remove(ids): Удаление сообщений по ID
  • clear(): Очистка всей памяти

MemoryEmbedded

Класс MemoryEmbedded использует локальные модели эмбеддингов и включает модель all-MiniLM-L6-v2-Q8_0.gguf в дистрибутив. Модель загружена отсюда.

Методы:

  • add(message): Добавление сообщений в память
  • search_vec(query, limit=64): Векторный поиск
  • search_fts(query, limit=32): Полнотекстовый поиск
  • hybrid_search(query, limit=32): Гибридный поиск
  • clear(ids): Удаление сообщений по ID
  • clear_all(): Очистка всей памяти

Требования

  • Python >= 3.12
  • sqlite-vec >= 0.1.6
  • sqlite-lembed >= 0.0.1a8

Используемые библиотеки

sqlite-vec sqlite-lembed

Лицензия

MIT

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

litemem-0.1.1.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

litemem-0.1.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file litemem-0.1.1.tar.gz.

File metadata

  • Download URL: litemem-0.1.1.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for litemem-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7726cc4ce44c90bae3f92919f41266f7758f52b1dd47db60c7a0b681f36446a5
MD5 31b2a49c43f90d2752a80fb8d6b50eaf
BLAKE2b-256 bf58b717b3d84335fbf4bd0adee40ec001b7d4b1d858b543197666917a2c5631

See more details on using hashes here.

File details

Details for the file litemem-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: litemem-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for litemem-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2881d0880a65305a1df55b5d71e56c32e7cfe1b5a58cd97f0caf3ff96be96a3c
MD5 38d5c15b1d2ddcabedecbc66882c437c
BLAKE2b-256 0363b71229a26fce31d1ac415e6077d91c188acc631492986616df10fa2949c3

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