À propos du projet
dve (moteur vectoriel dve) est une bibliothèque pour créer et rechercher des embeddings vectoriels localement sur les appareils Apple. Elle est construite avec Zig, et des liaisons Swift expérimentales sont également disponibles. Le projet se décrit comme étant en phase précoce et activement développé, et accueille les rapports de bugs, les problèmes et les demandes de tirage sur GitHub.
L'utilisation se concentre sur l'ouverture d'un répertoire pour stocker la base de données vectorielle, la sélection d'un modèle, puis l'intégration et la recherche de texte. Dans l'exemple Zig, un répertoire est créé avec std.fs.cwd().makeOpenPath, un modèle est choisi via dve.VectorEngine(.mpnet_embedding), et le moteur est initialisé avec un allocateur et un répertoire. Les entrées de texte sont ajoutées avec embedText, où la clé identifie l'entrée (généralement un chemin de fichier). La recherche prend une chaîne de requête et un tampon de résultats, renvoyant des résultats ordonnés par similarité ; l'exemple montre une requête sur l'intelligence artificielle correspondant à l'entrée clé "doc1". Le README pointe vers un répertoire d'exemples pour des démos complètes fonctionnelles en Zig et Swift, et vers USAGE.md pour l'installation, les options de modèles disponibles et leurs compromis, ainsi que les détails d'utilisation complets.
La motivation déclarée est que la recherche vectorielle est utile pour les applications, mais que les implémentations sur appareil sont difficiles à trouver. Les développeurs choisissent généralement entre des API cloud, qui ajoutent des coûts et une dépendance tierce, ou des frameworks tout-en-un lourds comme Hugging Face Transformers. Le README soutient que cela est particulièrement aigu sur les plateformes Apple, où les frameworks ML privilégient massivement les serveurs Linux, CoreML est mal documenté, et les bibliothèques multiplateformes s'intègrent rarement proprement dans les applications macOS ou iOS. dve vise à combler cette lacune, en commençant par Apple tout en traitant la portabilité comme un objectif de conception central.
Le projet liste trois principes fondamentaux : portable, signifiant qu'il doit utiliser peu de bibliothèques pour être facilement utilisable sur n'importe quelle plateforme ; simple, signifiant une interface simple mais configurable avec des valeurs par défaut sensées ; et local, signifiant qu'il doit fonctionner de manière performante et ne jamais faire d'appels réseau.
La feuille de route inclut l'ajout du support Linux, la stabilisation des liaisons Swift, la stabilisation des liaisons C/C++, le support iOS, le support d'embeddings multimodaux, le téléchargement de liens dans les documents texte et leur intégration, le support de plusieurs types de modèles au-delà de mpnet et Apple NL, et le support de plusieurs instances de base de données dans un seul processus.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.