Об этом проекте
dve (dve vector engine) — это библиотека для создания и поиска векторных эмбеддингов локально на устройствах Apple. Она написана на Zig, также доступны экспериментальные привязки к Swift. Проект описывает себя как находящийся на ранней стадии и активно развивающийся, и приветствует сообщения об ошибках, issues и pull requests на GitHub.
Использование сосредоточено на открытии каталога для хранения векторной базы данных, выборе модели, а затем встраивании и поиске текста. В примере на Zig каталог создаётся с помощью std.fs.cwd().makeOpenPath, модель выбирается через dve.VectorEngine(.mpnet_embedding), а движок инициализируется с аллокатором и каталогом. Текстовые записи добавляются с помощью embedText, где ключ идентифицирует запись (обычно путь к файлу). Поиск принимает строку запроса и буфер результатов, возвращая результаты, упорядоченные по сходству; в примере показан запрос об искусственном интеллекте, совпадающий с записью с ключом "doc1". README указывает на каталог examples для полных рабочих демонстраций на Zig и Swift, а также на USAGE.md для установки, доступных вариантов моделей и компромиссов, и полных сведений об использовании.
Заявленная мотивация состоит в том, что векторный поиск полезен для приложений, но реализации на устройстве трудно найти. Разработчики обычно выбирают между облачными API, которые добавляют затраты и зависимость от третьей стороны, или тяжёлыми универсальными фреймворками, такими как Hugging Face Transformers. README утверждает, что это особенно остро на платформах Apple, где ML-фреймворки в подавляющем большинстве отдают приоритет серверам Linux, CoreML плохо документирован, а кроссплатформенные библиотеки редко интегрируются чисто в приложения macOS или iOS. dve стремится заполнить этот пробел, начиная с Apple, но рассматривая переносимость как ключевую цель дизайна.
Проект перечисляет три основных принципа: переносимость, означающая, что он должен использовать мало библиотек, чтобы его можно было легко применять на любой платформе; простота, означающая простой, но настраиваемый интерфейс с разумными значениями по умолчанию; и локальность, означающая, что он должен работать производительно и никогда не выполнять сетевые вызовы.
Дорожная карта включает добавление поддержки Linux, повышение стабильности привязок к Swift, повышение стабильности привязок к C/C++, поддержку iOS, поддержку мультимодальных эмбеддингов, загрузку ссылок внутри текстовых документов и их встраивание, поддержку нескольких типов моделей помимо mpnet и Apple NL, а также поддержку нескольких экземпляров базы данных в рамках одного процесса.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.