Ejecutar Milvus Lite localmente
Esta página ilustra cómo ejecutar Milvus localmente con Milvus Lite. Milvus Lite es la versión ligera de Milvus, una base de datos vectorial de código abierto que potencia las aplicaciones de IA con incrustaciones vectoriales y búsqueda de similitud.
Visión general
Milvus Lite puede importarse en su aplicación Python, proporcionando la funcionalidad de búsqueda vectorial central de Milvus. Milvus Lite ya está incluido en el SDK Python de Milvus. Puede ser simplemente desplegado con pip install pymilvus
.
Con Milvus Lite, ¡puede empezar a construir una aplicación de IA con búsqueda de similitud vectorial en cuestión de minutos! Milvus Lite es bueno para ejecutarse en el siguiente entorno:
- Jupyter Notebook / Google Colab
- Portátiles
- Dispositivos Edge
Milvus Lite comparte la misma API con Milvus Standalone y Distributed, y cubre la mayoría de las características como la persistencia y gestión de datos vectoriales, operaciones CRUD vectoriales, búsqueda vectorial dispersa y densa, filtrado de metadatos, búsqueda multivectorial e híbrida. Juntos, proporcionan una experiencia coherente en distintos tipos de entornos, desde dispositivos de borde hasta clústeres en la nube, adaptándose a casos de uso de distinto tamaño. Con el mismo código del lado del cliente, puede ejecutar aplicaciones GenAI con Milvus Lite en un portátil o Jupyter Notebook, o Milvus Standalone en un contenedor Docker, o Milvus Distributed en un clúster Kubernetes a escala masiva que sirve miles de millones de vectores en producción.
Requisitos previos
Milvus Lite actualmente soporta los siguientes entornos:
- Ubuntu >= 20.04 (x86_64 y arm64)
- MacOS >= 11.0 (Apple Silicon M1/M2 y x86_64)
Tenga en cuenta que Milvus Lite sólo es adecuado para casos de uso de búsqueda vectorial a pequeña escala. Para un caso de uso a gran escala, recomendamos utilizar Milvus Standalone o Milvus Distributed. También puede considerar Milvus totalmente gestionado en Zilliz Cloud.
Configurar Milvus Lite
pip install -U pymilvus
Recomendamos utilizar pymilvus
. Dado que milvus-lite
está incluido en pymilvus
versión 2.4.2 o superior, puede pip install
con -U
para forzar la actualización a la última versión y milvus-lite
se instala automáticamente.
Si desea instalar explícitamente el paquete milvus-lite
, o tiene instalada una versión anterior de milvus-lite
y desea actualizarla, puede hacerlo con pip install -U milvus-lite
.
Conectarse a Milvus Lite
En pymilvus
, especifique un nombre de archivo local como parámetro uri de MilvusClient utilizará Milvus Lite.
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")
Después de ejecutar el fragmento de código anterior, se generará un archivo de base de datos llamado milvus_demo.db en la carpeta actual.
NOTA: Tenga en cuenta que la misma API también se aplica a Milvus Standalone, Milvus Distributed y Zilliz Cloud, la única diferencia es sustituir el nombre del archivo local por el punto final del servidor remoto y las credenciales, por ejemplo
client = MilvusClient(uri="http://localhost:19530", token="username:password")
.
Ejemplos
A continuación se muestra una sencilla demostración de cómo utilizar Milvus Lite para la búsqueda de texto. Hay ejemplos más completos para usar Milvus Lite para construir aplicaciones como RAG, búsqueda de imágenes, y el uso de Milvus Lite en el popular marco RAG como LangChain y LlamaIndex.
from pymilvus import MilvusClient
import numpy as np
client = MilvusClient("./milvus_demo.db")
client.create_collection(
collection_name="demo_collection",
dimension=384 # The vectors we will use in this demo has 384 dimensions
)
# Text strings to search from.
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).
vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
collection_name="demo_collection",
data=data
)
# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
collection_name="demo_collection",
data=[vectors[0]],
filter="subject == 'history'",
limit=2,
output_fields=["text", "subject"],
)
print(res)
# a query that retrieves all entities matching filter expressions.
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
print(res)
# delete
res = client.delete(
collection_name="demo_collection",
filter="subject == 'history'",
)
print(res)
Límites
Cuando ejecute Milvus Lite, tenga en cuenta que algunas características no están soportadas. Las siguientes tablas resumen los límites de uso de Milvus Lite.
Colección
Método / Parámetro | Soportado en Milvus Lite |
---|---|
crear_colección() | Soporte con parámetros limitados |
collection_name | Y |
dimension | Y |
primary_field_name | Y |
id_type | Y |
vector_field_name | Y |
metric_type | Y |
auto_id | Y |
schema | Y |
index_params | Y |
enable_dynamic_field | Y |
num_shards | N |
partition_key_field | N |
num_partitions | N |
consistency_level | N (Sólo admite Strong ; Cualquier configuración será tratada como Strong .) |
get_collection_stats() | Admite la obtención de estadísticas de colección. |
collection_name | Y |
timeout | Y |
describe_collection() | num_shards consistency_level y en la respuesta no son válidos. collection_id |
timeout | Y |
has_collection() | Permite comprobar si existe una colección. |
collection_name | Y |
timeout | Y |
list_collections() | Permite listar todas las colecciones. |
soltar_colección() | Permite eliminar una colección. |
collection_name | Y |
timeout | Y |
renombrar_colección() | No permite renombrar una colección. |
Campo y esquema
Método / Parámetro | Soportado en Milvus Lite |
---|---|
crear_esquema() | Soporte con parámetros limitados |
auto_id | Y |
enable_dynamic_field | Y |
primary_field | Y |
partition_key_field | N |
add_field() | Soporte con parámetros limitados |
field_name | Y |
datatype | Y |
is_primary | Y |
max_length | Y |
element_type | Y |
max_capacity | Y |
dim | Y |
is_partition_key | N |
Insertar y buscar
Método / Parámetro | Soportado en Milvus Lite |
---|---|
buscar() | Soporte con parámetros limitados |
collection_name | Y |
data | Y |
filter | Y |
limit | Y |
output_fields | Y |
search_params | Y |
timeout | Y |
partition_names | N |
anns_field | Y |
consulta() | Soporte con parámetros limitados |
collection_name | Y |
filter | Y |
output_fields | Y |
timeout | Y |
ids | Y |
partition_names | N |
get() | Soporte con parámetros limitados |
collection_name | Y |
ids | Y |
output_fields | Y |
timeout | Y |
partition_names | N |
eliminar() | Soporte con parámetros limitados |
collection_name | Y |
ids | Y |
timeout | Y |
filter | Y |
partition_name | N |
insertar() | Soporte con parámetros limitados |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
upsert() | Soporte con parámetros limitados |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
Carga y liberación
Método / Parámetro | Soportado en Milvus Lite |
---|---|
load_collection() | Y |
collection_name | Y |
timeout | Y |
liberar_colección() | Y |
collection_name | Y |
timeout | Y |
obtener_estado_carga() | No se admite la obtención del estado de carga. |
refresh_load() | No es posible cargar los datos descargados de una colección cargada. |
cerrar() | Y |
Índice
Método / Parámetro | Soportado en Milvus Lite |
---|---|
list_indexes() | Se admite el listado de índices. |
collection_name | Y |
field_name | Y |
crear_índice() | Sólo admite el tipo de índice FLAT . |
index_params | Y |
timeout | Y |
drop_index() | Admite la eliminación de índices. |
collection_name | Y |
index_name | Y |
timeout | Y |
describir_índice() | Se admite la descripción de índices. |
collection_name | Y |
index_name | Y |
timeout | Y |
Tipos de índice vectorial
Milvus Lite sólo admite el tipo de índice FLAT. Utiliza el tipo FLAT independientemente del tipo de índice especificado en la colección.
Características de búsqueda
Milvus Lite admite vectores dispersos, multivectores y búsqueda híbrida.
Partición
Milvus Lite no soporta particiones ni métodos relacionados con particiones.
Usuarios y roles
Milvus Lite no soporta usuarios y roles y métodos relacionados.
Alias
Milvus Lite no soporta alias ni métodos relacionados con alias.
Migración de datos desde Milvus Lite
Todos los datos almacenados en Milvus Lite se pueden exportar y cargar fácilmente en otros tipos de despliegue de Milvus, como Milvus Standalone en Docker, Milvus Distributed en K8s, o Milvus totalmente gestionado en Zilliz Cloud.
Milvus Lite proporciona una herramienta de línea de comandos que puede volcar datos en un archivo json, que puede ser importado en milvus y Zilliz Cloud(el servicio de nube totalmente gestionado para Milvus). El comando milvus-lite se instalará junto con el paquete python milvus-lite.
# Install
pip install -U "pymilvus[bulk_writer]"
milvus-lite dump -h
usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]
optional arguments:
-h, --help show this help message and exit
-d DB_FILE, --db-file DB_FILE
milvus lite db file
-c COLLECTION, --collection COLLECTION
collection that need to be dumped
-p PATH, --path PATH dump file storage dir
El siguiente ejemplo vuelca todos los datos de la colección demo_collection
almacenados en ./milvus_demo.db
(archivo de base de datos de Milvus Lite)
Para exportar datos:
milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir
Con el archivo de volcado, puede cargar datos a Zilliz Cloud a través de Data Import, o cargar datos a servidores Milvus a través de Bulk Insert.
Lo que sigue
Una vez conectado a Milvus Lite, puede:
Comprobar el Inicio Rápido para ver lo que Milvus puede hacer.
Aprender las operaciones básicas de Milvus:
Despliegue su clúster Milvus en nubes:
Explore Milvus Backup, una herramienta de código abierto para realizar copias de seguridad de los datos de Milvus.
Explore Birdwatcher, una herramienta de código abierto para depurar Milvus y actualizaciones dinámicas de configuración.
Explore Attu, una herramienta GUI de código abierto para la gestión intuitiva de Milvus.