Alibaba открывает исходные коды Zvec: встроенная векторная база данных, объединяющая простоту SQLite и высокую производительность для RAG на периферийных устройствах

Команда Alibaba Tongyi Lab выпустила Zvec — векторную базу данных с открытым исходным кодом, ориентированную на работу с периферийными устройствами и устройствами. Проект позиционируется как «SQLite для векторных баз данных», поскольку работает как библиотека внутри вашего приложения и не требует внешних служб или демонов.

Почему встроенный векторный поиск важен для RAG?

Для систем RAG и семантического поиска требуется нечто большее, чем простой индекс. Нужны векторы, скалярные поля, полный CRUD и безопасное хранение данных. Локальные базы знаний меняются по мере изменения файлов, заметок и состояния проектов.

Библиотеки индексов, такие как Faiss, обеспечивают приблизительный поиск по ближайшим соседям, но не обрабатывают скалярное хранилище, восстановление после сбоев или гибридные запросы. В результате приходится создавать собственное хранилище и уровень согласованности.

Встроенные расширения, такие как DuckDB-VSS, добавляют векторный поиск в DuckDB, но предоставляют меньше возможностей для индексации и квантования, а также более слабый контроль ресурсов для периферийных сценариев.

Системы, основанные на службах, такие как Milvus или управляемые векторные облака, требуют сетевых вызовов и отдельного развёртывания, что часто является излишним для инструментов на устройстве.

Zvec создан специально для таких локальных сценариев. Он предоставляет векторный движок с сохранением данных, управлением ресурсами и функциями, ориентированными на RAG, в виде лёгкой библиотеки.

Основные характеристики архитектуры: встроенный и векторный

Zvec реализован как встроенная библиотека. Вы устанавливаете его с помощью `pip install zvec` и открываете коллекции непосредственно в вашем Python-процессе. Нет внешнего сервера или уровня RPC. Вы определяете схемы, вставляете документы и выполняете запросы через Python API.

Движок построен на Proxima — высокопроизводительной, готовой к производству, проверенной в бою векторной поисковой системе Alibaba Group. Zvec дополняет Proxima более простым API и встроенной средой выполнения. Проект выпущен под лицензией Apache 2.0.

Текущая поддержка охватывает Python 3.10–3.12 на Linux x86_64, Linux ARM64 и macOS ARM64.

Цели разработки:

* встроенное выполнение в процессе;
* векторная индексация и хранение данных;
* готовность к работе в производственной среде и безопасность при сбоях.

Это делает его подходящим для периферийных устройств, настольных приложений и развёртываний без операций.

Пример использования:

«`python
import zvec

Определение схемы коллекции

schema = zvec.CollectionSchema(
name=»example»,
vectors=zvec.VectorSchema(«embedding», zvec.DataType.VECTOR_FP32, 4),
)

Создание коллекции

collection = zvec.createandopen(path=»./zvec_example», schema=schema,)

Вставка документов

collection.insert([
zvec.Doc(id=»doc_1″, vectors={«embedding»: [0.1, 0.2, 0.3, 0.4]}),
zvec.Doc(id=»doc_2″, vectors={«embedding»: [0.2, 0.3, 0.4, 0.1]}),
])

Поиск по векторному сходству

results = collection.query(
zvec.VectorQuery(«embedding», vector=[0.4, 0.3, 0.3, 0.1]),
topk=10
)

Результаты: список словарей {‘id’: str, ‘score’: float, …}, отсортированных по релевантности

print(results)
«`

Результаты возвращаются в виде словарей, включающих идентификаторы и оценки сходства. Этого достаточно для создания локального слоя семантического поиска или извлечения RAG поверх любой модели встраивания.

Производительность: VectorDBBench и более 8 тыс. QPS

Zvec оптимизирован для высокой пропускной способности и низкой задержки на процессорах. Он использует многопоточность, удобные для кэша схемы распределения памяти, инструкции SIMD и предварительную выборку процессора.

В VectorDBBench на наборе данных Cohere 10M при сопоставимом аппаратном обеспечении и совпадении показателей Zvec сообщает о более чем 8 тыс. QPS. Это более чем в 2 раза превышает предыдущего лидера рейтинга #1, ZillizCloud, при существенном сокращении времени построения индекса в тех же условиях.

Возможности RAG: CRUD, гибридный поиск, слияние, переранжирование

Набор функций настроен для RAG и агентского поиска.

Zvec поддерживает:
* полный CRUD для документов, чтобы локальная база знаний могла меняться со временем;
* эволюцию схемы для настройки индексных стратегий и полей;
* многовекторный поиск для запросов, объединяющих несколько каналов встраивания;
* встроенный механизм переранжирования, поддерживающий взвешенное слияние и взаимное ранжирование;
* гибридный поиск по скалярно-векторным атрибутам, который направляет скалярные фильтры в путь выполнения индекса с дополнительными инвертированными индексами для скалярных атрибутов.

Это позволяет создавать ассистентов на устройствах, сочетающих семантический поиск, фильтры, такие как пользователь, время или тип, и несколько моделей встраивания, все в рамках одного встроенного движка.

Основные выводы

Zvec — это встроенная векторная база данных, позиционируемая как «SQLite для векторных баз данных» для работы с периферийными устройствами и RAG.

Он построен на Proxima — высокопроизводительной, готовой к производству, проверенной в бою векторной поисковой системе Alibaba. Проект выпущен под лицензией Apache 2.0 с поддержкой Python на Linux x86_64, Linux ARM64 и macOS ARM64.

Zvec обеспечивает более 8 тыс. QPS на VectorDBBench с набором данных Cohere 10M, достигая более чем в 2 раза предыдущего лидера рейтинга #1 (ZillizCloud) при сокращении времени построения индекса.

Движок предоставляет явное управление ресурсами через потоковую запись 64 МБ, дополнительный режим mmap, экспериментальный `memorylimitmb` и настраиваемую параллельность, `optimizethreads` и `querythreads` для управления процессором.

Zvec готов к работе с RAG, имеет полный CRUD, эволюцию схемы, многовекторный поиск, встроенное переранжирование (взвешенное слияние и RRF), гибридный поиск по скалярно-векторным атрибутам с дополнительными инвертированными индексами, а также дорожную карту экосистемы, ориентированную на LangChain, LlamaIndex, DuckDB, PostgreSQL и развёртывания на реальных устройствах.

1. Какие преимущества предлагает Zvec для систем RAG по сравнению с другими библиотеками индексов, такими как Faiss?

Zvec предлагает несколько преимуществ для систем RAG по сравнению с другими библиотеками индексов, такими как Faiss. Во-первых, Zvec обеспечивает полный CRUD (создание, чтение, обновление, удаление) для документов, что позволяет локальной базе знаний меняться со временем. Во-вторых, Zvec поддерживает эволюцию схемы, что позволяет настраивать индексные стратегии и поля. В-третьих, Zvec предоставляет многовекторный поиск для запросов, объединяющих несколько каналов встраивания. Наконец, Zvec имеет встроенный механизм переранжирования, поддерживающий взвешенное слияние и взаимное ранжирование.

2. Какие основные характеристики архитектуры Zvec делают его подходящим для периферийных устройств и настольных приложений?

Основные характеристики архитектуры Zvec, делающие его подходящим для периферийных устройств и настольных приложений, включают:
* встроенный и векторный подход, который позволяет устанавливать Zvec с помощью pip install zvec и открывать коллекции непосредственно в Python-процессе;
* использование Proxima — высокопроизводительной, готовой к производству, проверенной в бою векторной поисковой системы Alibaba Group;
* оптимизация для высокой пропускной способности и низкой задержки на процессорах;
* поддержка Python на Linux x86_64, Linux ARM64 и macOS ARM64.

3. Какие функции Zvec поддерживают работу с RAG и агентским поиском?

Zvec поддерживает несколько функций, которые делают его подходящим для работы с RAG и агентским поиском:
* полный CRUD для документов;
* эволюцию схемы для настройки индексных стратегий и полей;
* многовекторный поиск для запросов, объединяющих несколько каналов встраивания;
* встроенный механизм переранжирования, поддерживающий взвешенное слияние и взаимное ранжирование;
* гибридный поиск по скалярно-векторным атрибутам.

4. Какие примеры использования Zvec приведены в статье?

В статье приведён пример использования Zvec на языке Python. В этом примере показано, как определить схему коллекции, создать коллекцию, вставить документы и выполнить поиск по векторному сходству.

5. Какие выводы можно сделать о производительности Zvec на основе данных, представленных в статье?

На основе данных, представленных в статье, можно сделать вывод, что Zvec оптимизирован для высокой пропускной способности и низкой задержки на процессорах. В VectorDBBench на наборе данных Cohere 10M при сопоставимом аппаратном обеспечении и совпадении показателей Zvec сообщает о более чем 8 тыс. QPS, что более чем в 2 раза превышает предыдущего лидера рейтинга #1, ZillizCloud, при существенном сокращении времени построения индекса в тех же условиях.

Источник