in

Comprendre DiskANN, un élément fondamental du Copilot Runtime

L'un des composants clés de la plateforme de développement d'IA Edge Copilot Runtime de Microsoft pour Windows est une nouvelle technologie de recherche vectorielle, DiskANN (Disk Accelerated Nearest Neighbors). S'appuyant sur un projet de recherche Microsoft de longue date, DiskANN est un moyen de créer et de gérer des index vectoriels au sein de vos applications. Il utilise un mélange de stockage en mémoire et sur disque pour mapper un graphique vectoriel quantifié en mémoire à une aide graphique de haute précision sur disque.

Qu'est-ce que DiskANN ?

Bien qu'il ne s'agisse pas d'une correspondance exacte, vous pouvez considérer DiskANN comme l'équivalent d'index vectoriel d'outils comme SQLite. Ajouté à votre code, il vous offre un moyen simple de rechercher dans un index vectoriel composé d'incorporations sémantiques à partir d'un petit modèle de langage (SLM) tel que Phi Silica de Copilot Runtime.

Il est important de comprendre que DiskANN n'est pas une base de données ; il s'agit d'un ensemble d'algorithmes fournis sous forme d'outil permettant d'ajouter des index vectoriels à d'autres magasins qui ne sont pas conçus pour prendre en charge les recherches vectorielles. Cela en fait un compagnon idéal pour d'autres magasins intégrés, qu'ils soient relationnels ou de type clé-valeur NoSQL.

Les exigences en matière de stockage en mémoire et sur disque contribuent à expliquer certaines des spécifications matérielles des PC Copilot+, avec des exigences de mémoire de base Windows deux fois supérieures à celles de Windows, ainsi que des SSD plus grands et plus rapides. Il est utile de noter que les besoins en CPU sont inférieurs à ceux des autres algorithmes de recherche vectorielle, les implémentations à grande échelle dans les services Azure ne nécessitant que 5 % du CPU utilisé par les méthodes traditionnelles.

Vous aurez besoin d'un magasin séparé pour les données indexées. Le fait d'avoir des magasins séparés pour vos index et la source de vos intégrations présente des problèmes. Si vous travaillez avec des informations personnelles identifiables ou d'autres données réglementées, vous ne pouvez pas négliger de vous assurer que les données sources sont cryptées. Cela peut ajouter des frais généraux sur les requêtes, mais il est intéressant de noter que Microsoft travaille sur des enclaves sécurisées basées sur des logiciels qui peuvent à la fois crypter les données au repos et en cours d'utilisation, réduisant ainsi le risque de fuite d'informations personnelles identifiables ou de manipulation des invites par des logiciels malveillants.

DiskANN est une implémentation d'une recherche approximative du voisin le plus proche, utilisant un index de graphe Vamana. Il est conçu pour fonctionner avec des données qui changent fréquemment, ce qui en fait un outil utile pour les applications d'IA de type agent qui doivent indexer des fichiers locaux ou des données conservées dans des services comme Microsoft 365, tels que les e-mails ou les chats Teams.

Démarrer avec diskannpy

L'implémentation Python diskannpy est un outil de démarrage rapide utile. Elle fournit des classes pour la création d'index et la recherche. Il est possible d'utiliser des bibliothèques Python d'analyse numérique telles que NumPy pour créer et travailler avec des index, en les reliant aux outils de science des données existants. Elle vous permet également d'utiliser des blocs-notes Jupyter dans Visual Studio Code pour tester les index avant de créer des applications autour d'eux. L'adoption d'une approche basée sur des blocs-notes pour le prototypage vous permettra de développer séparément les éléments d'une application basée sur SLM, en transmettant les résultats entre les cellules.

Commencez par utiliser l'une des deux classes Index Builder pour créer un index vectoriel hybride ou en mémoire à partir du contenu d'un tableau NumPy ou d'un fichier vectoriel au format DiskANN. La bibliothèque diskannpy contient des outils qui peuvent créer ce fichier à partir d'un tableau, ce qui est un moyen utile d'ajouter rapidement des incorporations à un index. Les fichiers d'index sont enregistrés dans un répertoire spécifié, prêts pour la recherche. D'autres fonctionnalités vous permettent de mettre à jour les index, en prenant en charge les opérations dynamiques.

La recherche est à nouveau une classe simple, avec un tableau de requêtes contenant l'incorporation de la recherche, ainsi que des paramètres qui définissent le nombre de voisins à renvoyer, ainsi que la complexité de la liste. Une liste plus grande prendra plus de temps à livrer mais sera plus précise. Le compromis entre précision et latence rend essentiel l'exécution d'expériences avant de s'engager dans le code final. D'autres options vous permettent d'améliorer les performances en regroupant les requêtes. Vous pouvez définir la complexité de l'index, ainsi que le type de métrique de distance utilisé pour les recherches. Des valeurs plus élevées pour la complexité et le degré du graphique sont meilleures, mais les index résultants prennent plus de temps à créer.

Diskannpy est un outil utile pour apprendre à utiliser DiskANN. Il est probable qu'à mesure que Copilot Runtime évolue, Microsoft fournira un ensemble de wrappers fournissant une abstraction de haut niveau, très similaire à celle qu'il fournit pour Cosmos DB. L'annonce initiale de Copilot Runtime donne un aperçu de la manière dont cela pourrait fonctionner, en faisant référence à une API Vector Embeddings utilisée pour créer des applications basées sur la génération automatique de récupération (RAG). Cela est prévu pour une future mise à jour de Copilot Runtime.

Pourquoi DiskANN ?

En explorant le référentiel GitHub du projet, il est facile de comprendre pourquoi Microsoft a choisi DiskANN comme l'une des technologies fondamentales de Copilot Runtime, car il est optimisé pour les opérations SSD et en mémoire, et il peut fournir une approche hybride qui indexe un grand nombre de données de manière économique. Le document initial DiskANN de Microsoft Research suggère qu'un index hybride SSD/RAM peut indexer cinq à dix fois plus de vecteurs que l'algorithme équivalent en mémoire pure, capable de traiter environ un milliard de vecteurs avec une précision de recherche élevée et une latence de 5 ms.

En pratique, bien sûr, il est peu probable qu'une application SLM hébergée en périphérie ait besoin d'indexer autant de données, de sorte que les performances et la précision devraient être plus élevées.

Si vous créez une application d'IA sémantique sur un SLM, vous devez vous concentrer sur le débit, en utilisant un petit nombre de jetons pour chaque opération. Si vous pouvez garder la recherche nécessaire pour créer des invites fondées pour une application RAG aussi rapide que possible, vous réduisez le risque que des utilisateurs mécontents attendent ce qui pourrait être une réponse simple.

En chargeant un index en mémoire au lancement, vous pouvez simplifier les recherches afin que votre application n'ait besoin d'accéder aux données sources que lorsqu'elle en a besoin pour créer une invite de recherche basée sur la base pour votre SLM. Une option utile est la possibilité d'ajouter des filtres à une recherche, d'affiner les résultats et de fournir une base plus précise pour votre application.

Nous en sommes aux premiers jours de Copilot Runtime, et certaines pièces clés du puzzle manquent encore. L'un des éléments essentiels à l'utilisation des index DiskANN est l'utilisation d'outils permettant de coder vos données sources sous forme d'incorporations vectorielles. Cela est nécessaire pour créer une recherche vectorielle, soit dans le cadre de votre code, soit pour fournir un ensemble de base d'index vectoriels avec une application.

DiskANN ailleurs chez Microsoft

En dehors de Copilot Runtime, Microsoft utilise DiskANN pour ajouter une recherche vectorielle rapide à Cosmos DB. Parmi les autres services qui l'utilisent figurent Microsoft 365 et Bing. Dans Cosmos DB, la recherche vectorielle est ajoutée à son API NoSQL, où vous êtes susceptible de travailler avec de grandes quantités de données hautement distribuées. Ici, la prise en charge par DiskANN des données à évolution rapide fonctionne parallèlement à la mise à l'échelle dynamique de Cosmos DB, en ajoutant un nouvel index à chaque nouvelle partition. Les requêtes peuvent ensuite être transmises à tous les index de partition disponibles en parallèle.

Microsoft Research travaille depuis un certain temps déjà sur des outils comme DiskANN, et il est bon de les voir passer de la recherche pure au produit, en particulier des produits aussi largement utilisés que Cosmos DB et Windows. Disposer d'un index vectoriel rapide et précis dans le cadre de Copilot Runtime réduira les risques associés à l'IA générative et conservera vos index sur votre PC, préservant ainsi la confidentialité des données sources et la fiabilité des SLM. Associé aux techniques informatiques confidentielles de Windows, Microsoft semble prêt à fournir une IA sécurisée et privée sur nos propres appareils.

Droits d'auteur © 2024 IDG Communications, Inc.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

GIPHY App Key not set. Please check settings

    Garoua : Des présumés criminels arrêtés après avoir cambriolé le domicile d’un Maréchal et violé sa femme

    L’iPad Air M2 sorti en 2024 est déjà disponible à un prix imbattable sur ce site référence