🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI

HomeBlogsCómo contribuir a Milvus: Inicio rápido para desarrolladores

Cómo contribuir a Milvus: Inicio rápido para desarrolladores

  • Engineering
December 01, 2024
Shaoting Huang

Milvus es una base de datos vectorial de código abierto diseñada para gestionar datos vectoriales de alta dimensión. Tanto si está creando motores de búsqueda inteligentes, sistemas de recomendación o soluciones de IA de última generación como la generación aumentada de recuperación(RAG), Milvus es una potente herramienta al alcance de su mano.

Pero lo que realmente hace avanzar a Milvus no es sólo su avanzada tecnología, sino la vibrante y apasionada comunidad de desarrolladores que hay detrás. Como proyecto de código abierto, Milvus prospera y evoluciona gracias a las contribuciones de desarrolladores como usted. Cada corrección de errores, adición de funciones y mejora del rendimiento de la comunidad hace que Milvus sea más rápido, más escalable y más fiable.

Si le apasiona el código abierto, está deseoso de aprender o quiere tener un impacto duradero en la IA, Milvus es el lugar perfecto para contribuir. Esta guía le guiará a través del proceso, desde la configuración de su entorno de desarrollo hasta el envío de su primera pull request. También destacaremos los retos comunes a los que puede enfrentarse y le proporcionaremos soluciones para superarlos.

¿Listo para sumergirse? ¡Mejoremos Milvus juntos!

Configuración de su entorno de desarrollo de Milvus

Lo primero es lo primero: configurar su entorno de desarrollo. Puede instalar Milvus en su máquina local o utilizar Docker; ambos métodos son sencillos, pero también necesitará instalar algunas dependencias de terceros para que todo funcione.

Construir Milvus localmente

Si le gusta construir cosas desde cero, construir Milvus en su máquina local es una brisa. Milvus lo hace fácil agrupando todas las dependencias en el script install_deps.sh. Aquí está la configuración rápida:

# Install third-party dependencies.
$ cd milvus/
$ ./scripts/install_deps.sh

# Compile Milvus.
$ make

Construyendo Milvus con Docker

Si prefiere Docker, hay dos maneras de hacerlo: puede ejecutar comandos en un contenedor pre-construido o hacer girar un contenedor de desarrollo para un enfoque más práctico.

# Option 1: Run commands in a pre-built Docker container  
build/builder.sh make  

# Option 2: Spin up a dev container  
./scripts/devcontainer.sh up  
docker-compose -f docker-compose-devcontainer.yml ps  
docker exec -ti milvus-builder-1 bash  
make milvus  

Notas sobre la plataforma: Si usted está en Linux, usted es bueno para ir-compilación problemas son bastante raros. Sin embargo, los usuarios de Mac, especialmente con chips M1, pueden encontrarse con algunos baches en el camino. No te preocupes, tenemos una guía que te ayudará a resolver los problemas más comunes.

Figura: Configuración del sistema operativo

Para obtener la guía de configuración completa, consulte la Guía de desarrollo oficial de Milvus.

Problemas comunes y cómo solucionarlos

A veces, la configuración de su entorno de desarrollo Milvus no va tan bien como estaba previsto. No se preocupe - aquí hay un rápido resumen de los problemas comunes que puede encontrar y cómo solucionarlos rápidamente.

Homebrew: Desconexión inesperada al leer un paquete de banda lateral

Si estás usando Homebrew y ves un error como este:

==> Tapping homebrew/core
remote: Enumerating objects: 1107077, done.
remote: Counting objects: 100% (228/228), done.
remote: Compressing objects: 100% (157/157), done.
error: 545 bytes of body are still expected.44 MiB | 341.00 KiB/s
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: index-pack failed
Failed during: git fetch --force origin refs/heads/master:refs/remotes/origin/master
myuser~ %

Solución: Aumenta el tamaño de http.postBuffer:

git config --global http.postBuffer 1M

Si también te encuentras con Brew: command not found después de instalar Homebrew, puede que necesites configurar tu usuario Git:

git config --global user.email xxxgit config --global user.name xxx

Docker: Error Getting Credentials

Cuando trabajes con Docker, puede que veas esto:

error getting credentials - err: exit status 1, out: ``  

Solución: Abre~/.docker/config.json y elimina el campo credsStore.

Python: No Module Named 'imp

Si Python arroja este error, es porque Python 3.12 eliminó el módulo imp, que algunas dependencias antiguas todavía utilizan.

Arreglar: Actualizar a Python 3.11:

brew install python@3.11  

Conan: Argumentos no reconocidos o comando no encontrado

Problema: Si ves Unrecognized arguments: --install-folder conan, es probable que estés usando una versión de Conan incompatible.

Solución: Actualiza a Conan 1.61:

pip install conan==1.61  

Problema: Si ves Conan command not found, significa que tu entorno Python no está configurado correctamente.

Corrección: Añade el directorio bin de Python a tu PATH:

export PATH="/path/to/python/bin:$PATH"

LLVM: Uso de identificador no declarado 'kSecFormatOpenSSL'.

Este error suele significar que tus dependencias de LLVM no están actualizadas.

Solución: Reinstala LLVM 15 y actualiza tus variables de entorno:

brew reinstall llvm@15
export LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"

Consejos profesionales

Configuración de VS Code para la integración de C++ y Go

Conseguir que C++ y Go trabajen juntos en VS Code es más fácil de lo que parece. Con la configuración correcta, puede agilizar su proceso de desarrollo para Milvus. Sólo tiene que modificar su archivo user.settings con la configuración siguiente:

{
   "go.toolsEnvVars": {
       "PKG_CONFIG_PATH": "/Users/zilliz/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
       "LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
       "RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
   },
   "go.testEnvVars": {
       "PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
       "LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
       "RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
   },
   "go.buildFlags": [
       "-ldflags=-r /Users/zilliz/workspace/milvus/internal/core/output/lib"
   ],
   "terminal.integrated.env.linux": {
       "PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
       "LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
       "RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
   },
   "go.useLanguageServer": true,
   "gopls": {
       "formatting.gofumpt": true
   },
   "go.formatTool": "gofumpt",
   "go.lintTool": "golangci-lint",
   "go.testTags": "dynamic",
   "go.testTimeout": "10m"
}

Esto es lo que hace esta configuración

  • Variables de entorno: Establece rutas para PKG_CONFIG_PATH, LD_LIBRARY_PATH, y RPATH, que son críticas para localizar bibliotecas durante las construcciones y pruebas.

  • Integración de herramientas Go: Habilita el servidor de lenguaje Go (gopls) y configura herramientas como gofumpt para formateo y golangci-lint para linting.

  • Configuración de pruebas: Añade testTags y aumenta el tiempo de espera para ejecutar pruebas a 10 minutos.

Una vez añadida, esta configuración garantiza una integración perfecta entre los flujos de trabajo de C++ y Go. Es perfecta para construir y probar Milvus sin tener que ajustar constantemente el entorno.

Consejo profesional

Después de configurar esto, ejecute una construcción de prueba rápida para confirmar que todo funciona. Si algo no funciona, vuelva a comprobar las rutas y la versión de la extensión Go de VS Code.

Desplegando Milvus

Milvus soporta tres modos de despliegue: Lite, Standalone y Distributed.

  • Milvus Lite es una biblioteca Python y una versión ultraligera de Milvus. Es perfecto para la creación rápida de prototipos en Python o entornos de cuaderno y para experimentos locales a pequeña escala.

  • Milvus Standalone es la opción de despliegue de un solo nodo para Milvus, utilizando un modelo cliente-servidor. Es el equivalente Milvus de MySQL, mientras que Milvus Lite es como SQLite.

  • Milvus Distributed es el modo distribuido de Milvus, ideal para usuarios empresariales que construyen sistemas de bases de datos vectoriales a gran escala o plataformas de datos vectoriales.

Todas estas implementaciones se basan en tres componentes principales:

  • Milvus: El motor de base de datos vectorial que dirige todas las operaciones.

  • Etcd: El motor de metadatos que gestiona los metadatos internos de Milvus.

  • MinIO: el motor de almacenamiento que garantiza la persistencia de los datos.

Cuando se ejecuta en modo distribuido, Milvus también incorpora Pulsar para el procesamiento de mensajes distribuidos utilizando un mecanismo Pub/Sub, lo que lo hace escalable para entornos de alto rendimiento.

Milvus autónomo

El modo Standalone está diseñado para configuraciones de una sola instancia, por lo que es perfecto para pruebas y aplicaciones a pequeña escala. He aquí cómo empezar:

# Deploy Milvus Standalone  
sudo docker-compose -f deployments/docker/dev/docker-compose.yml up -d
# Start the standalone service  
bash ./scripts/start_standalone.sh

Milvus Distributed (anteriormente conocido como Milvus Cluster)

Para conjuntos de datos más grandes y mayor tráfico, el modo Distribuido ofrece escalabilidad horizontal. Combina múltiples instancias de Milvus en un único sistema cohesivo. El despliegue se facilita con Milvus Operator, que se ejecuta en Kubernetes y gestiona toda la pila Milvus por usted.

¿Desea una guía paso a paso? Consulte la Guía de instalación de Milvus.

Ejecución de pruebas de extremo a extremo (E2E)

Una vez que su despliegue Milvus está en funcionamiento, probar su funcionalidad es muy fácil con las pruebas E2E. Estas pruebas cubren cada parte de su instalación para asegurar que todo funciona como se espera. A continuación se explica cómo ejecutarlas:

# Navigate to the test directory  
cd tests/python_client  

# Install dependencies  
pip install -r requirements.txt  

# Run E2E tests  
pytest --tags=L0 -n auto  

Para obtener instrucciones detalladas y consejos para la resolución de problemas, consulte la Guía de desarrollo de Milvus.

Consejo profesional

Si es nuevo en Milvus, empiece con Milvus Lite o el modo Standalone para hacerse una idea de sus capacidades antes de escalar al modo Distributed para cargas de trabajo a nivel de producción.

Enviar su código

¡Enhorabuena! Ha superado todas las pruebas unitarias y E2E (o depurado y recompilado según sea necesario). Aunque la primera compilación puede llevar algún tiempo, las siguientes serán mucho más rápidas, así que no hay de qué preocuparse. Con todo aprobado, ¡está listo para enviar sus cambios y contribuir a Milvus!

Cada PR para Milvus necesita estar vinculado a un problema relevante. He aquí cómo hacerlo:

  • Busque problemas existentes: Revise el rastreador de problemas de Milvus para ver si ya existe un problema relacionado con sus cambios.

  • Cree una nueva incidencia: Si no existe ninguna incidencia relevante, abra una nueva y explique el problema que está resolviendo o la función que está añadiendo.

Envío del código

  1. Bifurque el repositorio: Comience por bifurcar el repositorio de Milvus en su cuenta de GitHub.

  2. Crea una rama: Clone su bifurcación localmente y cree una nueva rama para sus cambios.

  3. Confirme con la firma "Signed-off-by": Asegúrese de que sus confirmaciones incluyen una firma Signed-off-by para cumplir con la licencia de código abierto:

git commit -m "Commit of your change" -s

Este paso certifica que tu contribución se ajusta al Certificado de Origen para Desarrolladores (DCO).

Recursos útiles

Para conocer los pasos detallados y las mejores prácticas, consulte la Guía de contribución de Milvus.

Oportunidades para contribuir

Felicitaciones-¡Ya tiene Milvus funcionando! Ha explorado sus modos de despliegue, ejecutado sus pruebas, y tal vez incluso profundizado en el código. Ahora es el momento de subir de nivel: contribuya a Milvus y ayude a dar forma al futuro de la IA y los datos no estructurados.

Independientemente de sus habilidades, ¡hay un lugar para usted en la comunidad Milvus! Tanto si eres un desarrollador al que le encanta resolver retos complejos, un redactor técnico al que le encanta escribir documentación limpia o blogs de ingeniería, o un entusiasta de Kubernetes que busca mejorar los despliegues, hay una forma de que tengas un impacto.

Eche un vistazo a las oportunidades a continuación y encuentre su combinación perfecta. Cada contribución ayuda a Milvus a avanzar, ¿y quién sabe? Su próxima solicitud de extracción podría impulsar la próxima ola de innovación. Entonces, ¿a qué espera? ¡Pongámonos manos a la obra! 🚀

ProyectosAdecuado paraDirectrices
milvus, milvus-sdk-goDesarrolladores de Go/
milvus, knowhereDesarrolladores de CPP/
pymilvus, milvus-sdk-node, milvus-sdk-javaDesarrolladores interesados en otros lenguajesContribuyendo a PyMilvus
milvus-helmEntusiastas de Kubernetes/
Milvus-docs, milvus-io/community/blogEscritores técnicosContribuir a milvus docs
milvus-insightDesarrolladores web/

Unas palabras finales

Milvus ofrece varios SDKs-Python (PyMilvus), Java, Go, y Node.js-quehacen que sea sencillo empezar a construir. Contribuir a Milvus no se trata solo de código, se trata de unirse a una comunidad vibrante e innovadora.

🚀¡Bienvenido a la comunidad de desarrolladores de Milvus y feliz programación! Estamos impacientes por ver lo que vas a crear.

Más información

Like the article? Spread the word

Sigue Leyendo