Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode

LittleVec — легковесная векторная база данных

В последние годы векторные базы данных стали неотъемлемой частью современных ИИ-проектов: поиск по embedding, RAG-пайплайны, быстрый семантический поиск и многое другое. Однако, если вы когда-либо пробовали развернуть подобную БД — будь то FAISS, Milvus, Qdrant или аналогичные решения — вы наверняка сталкивались с тем, что даже для небольших экспериментов и pet-проектов такие системы требуют довольно мощного железа. В итоге приходится либо платить за дорогой сервер, либо мириться с низкой скоростью и неудобствами.

Мотивация и цели

Я регулярно разрабатываю прототипы и экспериментирую с RAG-пайплайнами, поэтому мне остро не хватало простой, быстрой и лёгкой векторной БД, которую можно было бы запустить на любом VPS или даже на домашнем мини-компьютере.
Мои цели были такие:

  • Минимальные требования к ресурсам. Максимум эффективности: чтобы можно было держать миллионы векторов даже на слабых серверах.
  • Простота запуска и интеграции..
  • Надёжность хранения. Не хочется терять данные из-за сбоя — значит, нужна проверенная СУБД в основе.
  • Гибкость. Возможность использовать разные метрики расстояния, хранить дополнительную информацию (payload), работать с несколькими базами одновременно.

Так и родился LittleVec — минималистичная векторная база данных, работающая как плагин для RocksServer и использующая в качестве хранилища сверхнадёжную RocksDB.

Почему это может быть полезно вам?

  • Экономия ресурсов. LittleVec потребляет всего 15–50 Мб ОЗУ даже на миллионах записей. Это значит, что вы можете запускать полноценную векторную БД даже на бюджетных VPS или в контейнере на локальной машине.
  • Быстрая интеграция. Минималистичный и понятный API, готовые Docker-образы, поддержка DEB-пакетов — всё, чтобы вы могли быстро начать использовать LittleVec в своём проекте.
  • Надёжность и скорость. Благодаря RocksDB и оптимизациям на уровне хранения, поиск по миллиону векторов занимает ~60 мс на обычном сервере.

Как использовать LittleVec

1. Установка и запуск

Вариант 1: Docker

Самый простой способ — воспользоваться Docker-образом:

docker pull valmatdocker/littlevec
docker run -d -p 5577:5577 --name littlevec valmatdocker/littlevec

После запуска API будет доступно на 127.0.0.1:5577.

Вариант 2: Установка через DEB-пакет

Если вы предпочитаете запускать сервис напрямую:

  1. Установите RocksServer.
  2. Клонируйте репозиторий LittleVec и соберите DEB-пакет:
git clone https://github.com/valmat/little-vec.git
cd little-vec/build_deb
./build.sh
sudo dpkg -i littlevec_<version>_amd64.deb
  1. Перезапустите RocksServer:
sudo /etc/init.d/rocksserver restart

Вариант 3: Сборка вручную

cd src
make -j
# Поместите little_vec.so в каталог плагинов RocksServer (обычно /usr/lib/rocksserver/plugins)

2. Быстрый старт с API

Создание базы данных

POST /vecdb/create
Content-Type: application/json
{
    "db_name": "my_vectors",
    "dim": 128,
    "dist": "cos"
}
  • db_name — имя вашей БД (любая строка)
  • dim — размерность векторов
  • dist — метрика: cos, qcos, dot_prod, l1, l2 (опционально)

Добавление векторов

POST /vectors/set
Content-Type: application/json
{
    "db_name": "my_vectors",
    "data": [
        {
            "id": "vec1",
            "vector": [0.1, 0.2, ...],
            "payload": {"text": "пример"}
        }
    ]
}

Поиск ближайших векторов

POST /vectors/get/nearest
Content-Type: application/json
{
    "db_name": "my_vectors",
    "vector": [0.1, 0.2, ...],
    "top_k": 5
}

Ответ:

{
    "data": [
        { "id": "vec1", "distance": 0.123, "payload": {"text": "пример"} },
        ...
    ]
}

Удаление векторов

POST /vectors/delete
Content-Type: application/json
{
    "db_name": "my_vectors",
    "data": [
        { "id": "vec1" }
    ]
}

3. Дополнительные возможности

  • Можно создавать несколько независимых векторных баз.
  • В каждом запросе указывать свою метрику поиска.
  • Хранить произвольный payload для каждого объекта.
  • Получать distance между любыми векторами и объектами по id.
  • Всё это — по простому HTTP API, легко интегрируется с любым языком.

Заключение

LittleVec — минималистичная, быстрая, экономная и надёжная векторная база данных для экспериментов, прототипов или даже небольших production-сервисов.

Всё открыто, просто и прозрачно — пробуйте, присылайте фидбек и pull requests!


Все вопросы в issue на GitHub!