Uno de los componentes clave de la plataforma de desarrollo de inteligencia artificial de borde Copilot Runtime de Microsoft para Windows es una nueva tecnología de búsqueda vectorial, DiskANN (Disk Accelerated Nearest Neighbors). Basado en un proyecto de investigación de Microsoft de larga duración, DiskANN es una forma de crear y administrar índices vectoriales dentro de sus aplicaciones. Utiliza una combinación de almacenamiento en memoria y en disco para mapear un gráfico vectorial cuantificado en memoria a un gráfico de alta precisión en disco. ¿Qué es DiskANN? Aunque no es una coincidencia exacta, puede pensar en DiskANN como el equivalente en índices vectoriales de herramientas como SQLite. Agregado a su código, le brinda una forma sencilla de buscar en un índice vectorial compuesto de incrustaciones semánticas de un modelo de lenguaje pequeño (SLM) como Phi Silica de Copilot Runtime. Es importante comprender que DiskANN no es una base de datos; es un conjunto de algoritmos entregados como una herramienta para agregar índices vectoriales a otros almacenes que no están diseñados para admitir búsquedas vectoriales. Esto lo convierte en un complemento ideal para otros almacenes integrados, ya sean relacionales o un almacén de valores clave NoSQL. El requisito de almacenamiento en memoria y en disco ayuda a explicar algunas de las especificaciones de hardware para las PC Copilot+, con el doble de los requisitos de memoria base de Windows anteriores, así como SSD más grandes y rápidos. Útilmente, hay un requisito de CPU menor en comparación con otros algoritmos de búsqueda vectorial, con implementaciones a escala en servicios de Azure que requieren solo el 5% de la CPU que usan los métodos tradicionales. Necesitará un almacén separado para los datos que se indexan. Tener almacenes separados tanto para sus índices como para la fuente de sus incrustaciones tiene sus problemas. Si está trabajando con información de identificación personal u otros datos regulados, no puede descuidar la garantía de que los datos de origen estén cifrados. Esto puede agregar sobrecarga a las consultas, pero curiosamente Microsoft está trabajando en enclaves seguros basados ​​en software que pueden cifrar datos en reposo y en uso, lo que reduce el riesgo de fuga de PII o de que los mensajes sean manipulados por malware. DiskANN es una implementación de una búsqueda aproximada del vecino más cercano, que utiliza un índice de gráfico Vamana. Está diseñado para trabajar con datos que cambian con frecuencia, lo que lo convierte en una herramienta útil para aplicaciones de IA similares a agentes que necesitan indexar archivos locales o datos almacenados en servicios como Microsoft 365, como correo electrónico o chats de Teams. Introducción a diskannpyUn inicio rápido útil viene en forma de la implementación de Python de diskannpy. Esto proporciona clases para crear índices y realizar búsquedas. Existe la opción de usar bibliotecas de Python de análisis numérico como NumPy para crear y trabajar con índices, vinculándolos con herramientas de ciencia de datos existentes. También le permite usar cuadernos Jupyter en Visual Studio Code para probar índices antes de crear aplicaciones en torno a ellos. Adoptar un enfoque basado en cuadernos para la creación de prototipos le permitirá desarrollar elementos de una aplicación basada en SLM por separado, pasando resultados entre celdas. Comience por usar cualquiera de las dos clases de Index Builder para crear un índice vectorial híbrido o en memoria a partir del contenido de una matriz NumPy o un archivo vectorial en formato DiskANN. La biblioteca diskannpy contiene herramientas que pueden crear este archivo a partir de una matriz, lo que es una forma útil de agregar incrustaciones a un índice rápidamente. Los archivos de índice se guardan en un directorio específico, listos para la búsqueda. Otras características le permiten actualizar los índices, lo que admite operaciones dinámicas. La búsqueda es nuevamente una clase simple, con una matriz de consulta que contiene la incrustación de búsqueda, junto con parámetros que definen la cantidad de vecinos que se devolverán, junto con la complejidad de la lista. Una lista más grande tardará más en entregarse, pero será más precisa. La compensación entre precisión y latencia hace que sea esencial ejecutar experimentos antes de comprometerse con el código final. Otras opciones le permiten mejorar el rendimiento mediante la agrupación de consultas. Puede definir la complejidad del índice, así como el tipo de métrica de distancia utilizada para las búsquedas. Los valores más altos para la complejidad y el grado del gráfico son mejores, pero los índices resultantes tardan más en crearse. Diskannpy es una herramienta útil para aprender a usar DiskANN. Es probable que, a medida que Copilot Runtime evolucione, Microsoft entregue un conjunto de contenedores que proporcionen una abstracción de alto nivel, muy similar a la que está entregando para Cosmos DB. Hay un indicio de cómo podría funcionar esto en el anuncio inicial de Copilot Runtime, con referencia a una API de incrustaciones vectoriales que se utiliza para crear aplicaciones basadas en generación aumentada de recuperación (RAG). Esto está previsto para una futura actualización de Copilot Runtime. ¿Por qué DiskANN? Al explorar el repositorio de GitHub para el proyecto, es fácil ver por qué Microsoft eligió DiskANN como una de las tecnologías fundamentales en Copilot Runtime, ya que está optimizado tanto para operaciones SSD como en memoria, y puede proporcionar un enfoque híbrido que indexa una gran cantidad de datos de manera económica. El artículo inicial de DiskANN de Microsoft Research sugiere que un índice híbrido SSD/RAM puede indexar de cinco a diez veces más vectores que el algoritmo equivalente puro en memoria, capaz de abordar alrededor de mil millones de vectores con alta precisión de búsqueda y con una latencia de 5 ms. En la práctica, por supuesto, es poco probable que una aplicación SLM alojada en el borde necesite indexar tantos datos, por lo que el rendimiento y la precisión deberían ser mayores. Si está creando una aplicación de IA semántica en un SLM, debe centrarse en el rendimiento, utilizando una pequeña cantidad de tokens para cada operación. Si puede mantener la búsqueda necesaria para crear indicaciones fundamentadas para una aplicación RAG lo más rápida posible, reduce el riesgo de que los usuarios insatisfechos esperen lo que podría ser una respuesta simple. Al cargar un índice en memoria en el lanzamiento, puede simplificar las búsquedas para que su aplicación solo necesite acceder a los datos de origen cuando sea necesario para construir una indicación fundamentada para su SLM. Una opción útil es la capacidad de agregar filtros a una búsqueda, refinando los resultados y brindando una base más precisa para su aplicación. Estamos en los primeros días de Copilot Runtime y aún faltan algunas piezas clave del rompecabezas. Un elemento esencial para usar índices DiskANN son las herramientas para codificar sus datos de origen como incrustaciones vectoriales. Esto es necesario para crear una búsqueda vectorial, ya sea como parte de su código o para enviar un conjunto base de índices vectoriales con una aplicación. DiskANN en otras partes de Microsoft Fuera de Copilot Runtime, Microsoft está usando DiskANN para agregar una búsqueda vectorial rápida a Cosmos DB. Otros servicios que lo usan incluyen Microsoft 365 y Bing. En Cosmos DB, está agregando la búsqueda vectorial a su API NoSQL, donde es probable que trabaje con grandes cantidades de datos altamente distribuidos. Aquí, el soporte de DiskANN para datos que cambian rápidamente funciona junto con el escalamiento dinámico de Cosmos DB, agregando un nuevo índice a cada nueva partición. Luego, las consultas se pueden pasar a todos los índices de partición disponibles en paralelo. Microsoft Research ha estado trabajando en herramientas como DiskANN desde hace algún tiempo y es bueno ver que pasan de la investigación pura al producto, especialmente productos tan ampliamente utilizados como Cosmos DB y Windows. Tener un índice vectorial rápido y preciso como parte de Copilot Runtime reducirá los riesgos asociados con la IA generativa y mantendrá sus índices en su PC, manteniendo los datos de origen privados y estableciendo los SLM. Combinado con técnicas de computación confidencial en Windows, Microsoft parece estar listo para ofrecer IA segura y privada en nuestros propios dispositivos. Copyright © 2024 IDG Communications, Inc.