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): Удаление сообщений по IDclear(): Очистка всей памяти
MemoryEmbedded
Класс MemoryEmbedded использует локальные модели эмбеддингов. В пакет включена модель all-MiniLM-L6-v2-Q8_0.gguf, расположенная в litemem/models/all-MiniLM-L6-v2-Q8_0.gguf, — эта модель используется по умолчанию при создании экземпляра MemoryEmbedded. Модель взята из Hugging Face.
При желании можно использовать любую другую совместимую локальную модель. Для этого при создании MemoryEmbedded передайте параметры model_path (путь к файлу модели) и vector_size (размер векторов эмбеддинга). Пример:
# Использование собственной модели
memory = MemoryEmbedded('memory.db', model_path='/path/to/your_model.gguf', vector_size=384)
Методы:
add(message): Добавление сообщений в памятьsearch_vec(query, limit=64): Векторный поискsearch_fts(query, limit=32): Полнотекстовый поискhybrid_search(query, limit=32): Гибридный поискclear(ids): Удаление сообщений по IDclear_all(): Очистка всей памяти
Требования
- Python >= 3.12
- sqlite-vec >= 0.1.6
- sqlite-lembed >= 0.0.1a8
Используемые библиотеки
Лицензия
MIT
Metadata
Release files for litemem 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| litemem-0.1.3.tar.gz | 23.5 MB | Without provenance | Details for litemem-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| litemem-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for litemem-0.1.3-py3-none-any.whl |
Total release size: 47.1 MB
Release files / litemem-0.1.3.tar.gz
| Download URL | litemem-0.1.3.tar.gz |
|---|---|
| Size | 23.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bc1f9c6a60d8f3397f0544ff3b3c57a6dc6f4671e9029712ff6c7394038fa50f
|
|
BLAKE2b-256 checksum How to use checksums |
be9868f350614a1fb7ace04fa539ea645ad68337b7d9da13a8baabe87baea3b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / litemem-0.1.3-py3-none-any.whl
| Download URL | litemem-0.1.3-py3-none-any.whl |
|---|---|
| Size | 23.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6ecd2fa7bf9118febe62ec7d33f6bca30fcaa6c88906b073b08702ca15127f40
|
|
BLAKE2b-256 checksum How to use checksums |
c332e32d0952427455ae6a27d0ee3f7e5e41a22cd4d504c95f8f4f022a67a41b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Security for litemem 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.