Integrar Milvus con MindsDB
MindsDB es una potente herramienta para integrar aplicaciones de IA con diversas fuentes de datos empresariales. Actúa como un motor de consulta federado que pone orden en la dispersión de datos al tiempo que responde meticulosamente a las consultas a través de datos estructurados y no estructurados. Tanto si sus datos están dispersos en aplicaciones SaaS, bases de datos o almacenes de datos, MindsDB puede conectarlos y consultarlos todos utilizando SQL estándar. Cuenta con sistemas RAG autónomos de última generación a través de Bases de Conocimiento, soporta cientos de fuentes de datos, y proporciona opciones flexibles de despliegue desde el desarrollo local hasta entornos en la nube.
Este tutorial demuestra cómo integrar Milvus con MindsDB, permitiéndole aprovechar las capacidades de IA de MindsDB con la funcionalidad de base de datos vectorial de Milvus a través de operaciones similares a SQL para gestionar y consultar incrustaciones vectoriales.
Este tutorial se refiere principalmente a la documentación oficial del MindsDB Milvus Handler. Si encuentra alguna parte obsoleta en este tutorial, puede dar prioridad a seguir la documentación oficial y crear un problema para nosotros.
Instalar MindsDB
Antes de empezar, instala MindsDB localmente vía Docker o Docker Desktop.
Antes de continuar, asegúrese de tener una sólida comprensión de los conceptos y operaciones fundamentales tanto de MindsDB como de Milvus.
Introducción de Argumentos
Los argumentos necesarios para establecer una conexión son:
uri: uri para la base de datos milvus, puede establecerse en el archivo local ".db" o en el servicio docker o en la nubetoken: token para soportar docker o servicio en la nube según la opción uri
Los argumentos opcionales para establecer una conexión son:
Se utilizan para las consultas SELECT:
search_default_limit: límite por defecto a pasar en sentencias select (por defecto=100)search_metric_type: tipo de métrica utilizada para las búsquedas (por defecto="L2")search_ignore_growingsi se deben ignorar los segmentos en crecimiento durante las búsquedas de similitud (por defecto = False)search_params: específico desearch_metric_type(por defecto={"nprobe": 10})
Se utilizan para las consultas de CREATE:
create_auto_id: si se debe generar automáticamente el identificador al insertar registros sin identificador (por defecto=False)create_id_max_lenlongitud máxima del campo de identificación al crear una tabla (por defecto = 64)create_embedding_dimdimensión de incrustación para crear una tabla (por defecto = 8)create_dynamic_field: si las tablas creadas tienen o no campos dinámicos (por defecto=True)create_content_max_lenLongitud máxima de la columna de contenido (por defecto = 200)create_content_default_valuevalor por defecto de la columna de contenido (por defecto='')create_schema_descriptiondescripción de los esquemas creados (por defecto ='')create_aliasalias de los esquemas creados (por defecto='por defecto')create_index_paramsparámetros del índice creado en la columna de incrustaciones (por defecto = {})create_index_metric_typemétrica utilizada para crear el índice (por defecto = 'L2')create_index_type: tipo de índice (por defecto='AUTOINDEX')
Utilización
Antes de continuar, asegúrese de que la versión de pymilvus es la misma que esta versión anclada. Si encuentra algún problema con la compatibilidad de versiones, puede hacer retroceder su versión de pymilvus, o personalizarla en este archivo de requisitos.
Creación de la conexión
Para hacer uso de este manejador y conectarse a un servidor Milvus en MindsDB, se puede utilizar la siguiente sintaxis:
CREATE DATABASE milvus_datasource
WITH
ENGINE = 'milvus',
PARAMETERS = {
"uri": "./milvus_local.db",
"token": "",
"create_embedding_dim": 3,
"create_auto_id": true
};
- Si sólo necesita una base de datos vectorial local para datos a pequeña escala o prototipos, establecer la uri como un archivo local, por ejemplo
./milvus.db, es el método más conveniente, ya que utiliza automáticamente Milvus Lite para almacenar todos los datos en este archivo.- Para datos a mayor escala y tráfico en producción, puede configurar un servidor Milvus en Docker o Kubernetes. En esta configuración, por favor utilice la dirección del servidor y el puerto como su
uri, por ejemplohttp://localhost:19530. Si habilita la función de autenticación en Milvus, configure eltokencomo"<your_username>:<your_password>", de lo contrario no es necesario configurar el token.- También puede utilizar Milvus totalmente gestionado en Zilliz Cloud. Simplemente configure
uriytokencon el punto final público y la clave API de su instancia de Zilliz Cloud.
Desconexión
Para eliminar la conexión, utilice este comando
DROP DATABASE milvus_datasource;
Creación de tablas
Para insertar datos de una tabla preexistente, utilice CREATE
CREATE TABLE milvus_datasource.test
(SELECT * FROM sqlitedb.test);
Eliminación de colecciones
No es posible eliminar una colección
Consulta y selección
Para consultar la base de datos mediante un vector de búsqueda, puede utilizar search_vector en la cláusula WHERE
Advertencia:
- Si omite
LIMIT, se utilizasearch_default_limit, ya que Milvus lo requiere. - No se admite la columna de metadatos, pero si la colección tiene habilitado el esquema dinámico, puede realizar la consulta de forma normal, véase el ejemplo siguiente
- Los campos dinámicos no se pueden mostrar pero se pueden consultar
SELECT * from milvus_datasource.test
WHERE search_vector = '[3.0, 1.0, 2.0, 4.5]'
LIMIT 10;
Si omite search_vector, se convierte en una búsqueda básica y se devuelve LIMIT o search_default_limit cantidad de entradas de la colección
SELECT * from milvus_datasource.test
Puede utilizar la cláusula WHERE en los campos dinámicos como en SQL normal.
SELECT * FROM milvus_datasource.createtest
WHERE category = "science";
Eliminación de registros
Puede borrar entradas utilizando DELETE como en SQL.
Advertencias:
- Milvus sólo admite la eliminación de entidades con claves primarias claramente especificadas
- Sólo puede utilizar el operador
IN
DELETE FROM milvus_datasource.test
WHERE id IN (1, 2, 3);
Inserción de registros
También puede insertar filas individuales de esta forma:
INSERT INTO milvus_test.testable (id,content,metadata,embeddings)
VALUES ("id3", 'this is a test', '{"test": "test"}', '[1.0, 8.0, 9.0]');
Actualización
La API de Milvus no admite la actualización de registros. Puede intentar usar una combinación de DELETE y INSERT
Para más detalles y ejemplos, consulte la Documentación Oficial de MindsDB.