Resumen de las opciones de implementación de Milvus
Milvus es una base de datos vectorial altamente performante y escalable. Admite casos de uso de muy diversa envergadura, desde demostraciones que se ejecutan localmente en Jupyter Notebooks hasta clústeres de Kubernetes a gran escala que gestionan decenas de miles de millones de vectores. Actualmente, existen tres opciones de implementación de Milvus: Milvus Lite, Milvus Standalone y Milvus Distributed.
Milvus Lite
Milvus Lite es una biblioteca de Python que se puede importar a tus aplicaciones. Al tratarse de una versión ligera de Milvus, resulta ideal para la creación rápida de prototipos en Jupyter Notebooks o para ejecutarse en dispositivos inteligentes con recursos limitados. Milvus Lite es compatible con las mismas API que otras implementaciones de Milvus. El código del lado del cliente que interactúa con Milvus Lite también puede funcionar con instancias de Milvus en otros modos de implementación.
Para integrar Milvus Lite en tus aplicaciones, ejecuta « pip install pymilvus » para instalarlo y utiliza la instrucción « MilvusClient("./demo.db") » para instanciar una base de datos vectorial con un archivo local que conserve todos tus datos. Para obtener más detalles, consulta «Ejecutar Milvus Lite».
Milvus Standalone
Milvus Standalone es una implementación de servidor en una sola máquina. Todos los componentes de Milvus Standalone están empaquetados en una única imagen de Docker, lo que facilita la implementación. Si tienes una carga de trabajo de producción pero prefieres no utilizar Kubernetes, ejecutar Milvus Standalone en una sola máquina con memoria suficiente es una buena opción. Por defecto, Milvus Standalone ejecuta Woodpecker (integrado) como cola de mensajes, por lo que no es necesario gestionar un servicio de mensajería independiente.
Milvus Distributed
Milvus Distributed se puede implementar en clústeres de Kubernetes. Esta implementación cuenta con una arquitectura nativa de la nube, en la que la carga de ingestión y las consultas de búsqueda se gestionan por separado mediante nodos aislados, lo que permite la redundancia de los componentes críticos. Ofrece la máxima escalabilidad y disponibilidad, así como flexibilidad a la hora de personalizar los recursos asignados a cada componente. Milvus Distributed es la mejor opción para los usuarios empresariales que ejecutan sistemas de búsqueda vectorial a gran escala en producción. De forma predeterminada, Milvus Distributed utiliza Woodpecker como cola de mensajes, desplegado como un servicio dedicado junto con Milvus.
Elige la implementación adecuada para tu caso de uso
La elección de un modo de implementación suele depender de la fase de desarrollo de su aplicación:
Para la creación rápida de prototipos
Si deseas crear rápidamente algo a modo de prototipo o con fines de aprendizaje, como demostraciones de Generación Aumentada por Recuperación (RAG), chatbots con IA o búsqueda multimodal, lo más adecuado es utilizar Milvus Lite por sí solo o una combinación de Milvus Lite y Milvus Standalone. Puedes utilizar Milvus Lite en cuadernos de trabajo para la creación rápida de prototipos y explorar diversos enfoques, como diferentes estrategias de segmentación en RAG. Es posible que desees implementar la aplicación creada con Milvus Lite en un entorno de producción a pequeña escala para dar servicio a usuarios reales, o validar la idea con conjuntos de datos más grandes, por ejemplo, de más de unos pocos millones de vectores. En ese caso, Milvus Standalone es la opción adecuada. La lógica de la aplicación de Milvus Lite se puede seguir compartiendo, ya que todas las implementaciones de Milvus cuentan con la misma API del lado del cliente. Los datos almacenados en Milvus Lite también se pueden transferir a Milvus Standalone mediante una herramienta de línea de comandos.
Implementación en producción a pequeña escala
Para las primeras fases de producción, cuando el proyecto aún busca el ajuste entre el producto y el mercado y la agilidad es más importante que la escalabilidad, Milvus Standalone es la mejor opción. Puede escalar hasta 100 millones de vectores si se dispone de suficientes recursos de máquina, al tiempo que requiere mucho menos trabajo de DevOps que el mantenimiento de un clúster de K8s.
Implementación en producción a gran escala
A medida que tu negocio crece rápidamente y el volumen de datos supera la capacidad de un único servidor, es el momento de plantearse utilizar Milvus Distributed. Puedes seguir utilizando Milvus Standalone para el entorno de desarrollo o de prueba por su comodidad, y gestionar el clúster de K8s en el que se ejecuta Milvus Distributed. Esto te permitirá alcanzar decenas de miles de millones de vectores, además de ofrecerte flexibilidad a la hora de adaptar el tamaño de los nodos a tu carga de trabajo concreta, ya sea en casos de alta lectura y escritura poco frecuente, o de alta escritura y baja lectura.
Búsqueda local en dispositivos periféricos
Para realizar búsquedas en dispositivos periféricos que contengan información privada o sensible, puede implementar Milvus Lite en el propio dispositivo sin depender de un servicio en la nube para realizar búsquedas de texto o imágenes. Esto resulta adecuado para casos como la búsqueda en documentos de propiedad exclusiva o la detección de objetos en el propio dispositivo.
La elección del modo de implementación de Milvus depende de la fase y la escala de su proyecto. Milvus ofrece una solución flexible y potente para diversas necesidades, desde la creación rápida de prototipos hasta la implementación empresarial a gran escala.
- Se recomiendaMilvus Lite para conjuntos de datos más pequeños, de hasta unos pocos millones de vectores.
- Milvus Standalone es adecuado para conjuntos de datos de tamaño medio, con capacidad para hasta 100 millones de vectores.
- Milvus Distributed está diseñado para implementaciones a gran escala, capaz de gestionar conjuntos de datos de entre 100 millones y decenas de miles de millones de vectores.
Independientemente del modo de implementación, cada instancia de Milvus se basa en una cola de mensajes, un almacenamiento de objetos y un almacén de metadatos —por defecto, Woodpecker, MinIO y etcd—. Para obtener más información sobre estas dependencias, ajustarlas o conectar servicios externos, consulta Infraestructura de datos.
Seleccione la opción de implementación adecuada para su caso de uso
Comparación de funcionalidades
| Característica | Milvus Lite | Milvus Standalone | Milvus Distributed |
|---|---|---|---|
| SDK / Biblioteca de cliente | Python gRPC | Python Go Java Node.js C# RESTful | Python Java Go Node.js C# RESTful |
| Tipos de datos | Vector denso Vector disperso Vector binario Booleano Entero Punto flotante VarChar Matriz JSON | Vector denso Vector disperso Vector binario Booleano Entero Punto flotante VarChar Matriz JSON | Vector denso Vector disperso Vector binario Booleano Entero Punto flotante VarChar Matriz JSON |
| Funcionalidades de búsqueda | Búsqueda vectorial (búsqueda ANN) Filtrado por metadatos Búsqueda por rango Consulta escalar Obtener entidades por clave primaria Búsqueda híbrida | Búsqueda vectorial (búsqueda ANN) Filtrado de metadatos Búsqueda por rango Consulta escalar Obtener entidades por clave primaria Búsqueda híbrida | Búsqueda vectorial (búsqueda ANN) Filtrado de metadatos Búsqueda por rango Consulta escalar Obtener entidades por clave primaria Búsqueda híbrida |
| Operaciones CRUD | ✔️ | ✔️ | ✔️ |
| Gestión avanzada de datos | N/A | Control de acceso Partición Clave de partición | Control de acceso Partición Clave de partición Agrupación de recursos físicos |
| Niveles de consistencia | Fuerte | Fuerte Caducidad limitada Sesión Eventual | Fuerte Caducidad limitada Sesión Eventual |
| Cola de mensajes | N/A | Woodpecker (integrado) | Woodpecker (servicio) |