Primeros pasos con una conexión a Milvus
Milvus es una base de datos vectorial de código abierto para crear aplicaciones de IA con embeddings de datos no estructurados. Viene con todo lo que necesitas para empezar integrado, y se ejecuta en tu máquina local o alojado en Zilliz Cloud (consulta el notebook conectarse a Zilliz Free Tier).
Milvus tiene cuatro SDK: Java, Python, React, y Ruby. A continuación, mostraremos los pasos para Python.
Instalar e iniciar un servidor Milvus
pip install milvus pymilvus #pymilvus is the python sdk
from milvus import default_server
default_server.start()
Nota: Si te estás conectando a Zilliz, puedes omitir la instalación de Milvus e iniciar el clúster desde la consola en su lugar.
Obtener el cliente de Milvus (conexión)
from pymilvus import connections
connections.connect(
host=’127.0.0.1’,
port=default_server.listen_port)
Nota: Para conectarte a Milvus sin servidor que se ejecuta en Zilliz Cloud en lugar de localhost, necesitas obtener el uri del endpoint y el token desde la consola.
from pymilvus import connections
ENDPOINT=”https://endpoint.api.region.zillizcloud.com:443”
connections.connect(
uri=ENDPOINT,
token=TOKEN)
Crear una colección
Puedes pensar en una colección como una tabla de base de datos. Es donde almacenarás tus embeddings, documentos y cualquier metadato adicional.
Asociados con una colección hay un esquema y un índice.
El índice se crea usando un algoritmo de búsqueda vectorial y una métrica de similitud vectorial. Puedes usar los valores predeterminados de Milvus. Sin embargo, para un rendimiento óptimo, debes configurar los parámetros. La elección del índice de búsqueda y los parámetros depende de tus datos. Consulta esta guía de mejores prácticas para elegir un índice de búsqueda. Este notebook muestra cómo modificar los parámetros.
from pymilvus import (
FieldSchema, DataType,
CollectionSchema, Collection)
## 1. Define a minimum expandable schema.
fields = [
FieldSchema(“pk”, DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(“vector”, DataType.FLOAT_VECTOR, dim=768),
]
schema = CollectionSchema(
fields,
enable_dynamic_field=True,
)
## 2. Create a collection.
mc = Collection(“my_collection_name”, schema)
## 3. Index the collection.
mc.create_index(
field_name=”vector”,
index_params={
“Index_type”: “AUTOINDEX”,
“Metric_type”: “COSINE”,
}
Insertar datos en Milvus
Si ya has generado embeddings a partir de tus datos no estructurados, puedes cargarlos.
Los datos de entrada pueden estar en forma de un dataframe de pandas o una lista de diccionarios. Deben contener un embedding vectorial. Los campos restantes son opcionales: fragmento de texto original y campos de metadatos.
from pymilvus import connections
## 1. Input data can be pandas dataframe or list of dicts.
data_rows = []
data_rows.extend([
{“vector”: np.random.randn(768).tolist(),
“text”: “This is a document”,
“source”: “source_url_1”},
{“vector”: np.random.randn(768).tolist(),
“text”: “This is another document”,
“source”: “source_url_2”},
])
## 2. Insert data into milvus.
mc.insert(data_rows)
mc.flush()
Consultar la colección
Las preguntas deben convertirse en embeddings usando el mismo modelo utilizado para crear embeddings de los datos no estructurados cargados en la base de datos. Puedes consultar la colección usando los embeddings de las preguntas con los parámetros de búsqueda predeterminados de Milvus. Se aplican las mismas mejores prácticas para elegir el índice de búsqueda adecuado para un rendimiento óptimo.
A continuación, Milvus devolverá los top_k = 3 resultados más similares. Además, ten en cuenta que se devuelven el fragmento de texto original y los metadatos, lo que puede ayudar con el grounding (basar el texto generado en información factual para reducir las alucinaciones).
## 1. Search for answers to your embedded questions.
mc.load()
results = mc.search(
data=encoder([“my_question_1”]),
anns_field=”vector”,
output_fields-[“text”, “source”], #optional return fields
limit=3,
param={}, #no params if using milvus defaults
)
## 2. View the answers.
for n, hits in enumerate(results):
print(f”{n}th result:”)
for hit in hits:
print(hit)
En mi próximo blog, cubriré cómo crear un chatbot usando LangChain y Milvus. Mantente atento.
Más recursos para empezar con Milvus y Zilliz
Sigue leyendo

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.

VidTok: Rethinking Video Processing with Compact Tokenization
VidTok tokenizes videos to reduce redundancy while preserving spatial and temporal details for efficient processing.

Zilliz Cloud BYOC Upgrades: Bring Enterprise-Grade Security, Networking Isolation, and More
Discover how Zilliz Cloud BYOC brings enterprise-grade security, networking isolation, and infrastructure automation to vector database deployments in AWS



