Команда 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, при существенном сокращении времени построения индекса в тех же условиях.