Как внести вклад в Milvus: краткое руководство для разработчиков
Milvus - это векторная база данных с открытым исходным кодом, предназначенная для управления высокоразмерными векторными данными. Если вы создаете интеллектуальные поисковые системы, системы рекомендаций или решения нового поколения в области искусственного интеллекта, такие как поиск с расширенной генерацией(RAG), Milvus - это мощный инструмент в вашем распоряжении.
Но по-настоящему двигает Milvus вперед не только его передовая технология, но и активное, увлеченное сообщество разработчиков, стоящее за ним. Будучи проектом с открытым исходным кодом, Milvus процветает и развивается благодаря вкладу таких разработчиков, как вы. Каждое исправление ошибок, добавление функций и повышение производительности, предлагаемые сообществом, делают Milvus быстрее, масштабируемее и надежнее.
Если вы неравнодушны к открытому коду, хотите учиться или оказать значительное влияние на ИИ, Milvus - идеальное место для вашего вклада. Это руководство проведет вас через весь процесс - от создания среды разработки до отправки первого запроса на внесение изменений. Мы также расскажем о типичных проблемах, с которыми вы можете столкнуться, и предложим решения для их преодоления.
Готовы погрузиться в работу? Давайте вместе сделаем Milvus еще лучше!
Настройка среды разработки Milvus
Прежде всего, необходимо настроить среду разработки. Вы можете установить Milvus на локальную машину или использовать Docker - оба способа просты, но вам также потребуется установить несколько сторонних зависимостей, чтобы все заработало.
Сборка Milvus на локальной машине
Если вы любите создавать вещи с нуля, то сборка Milvus на локальной машине не составит труда. Milvus упрощает задачу, собирая все зависимости в скрипт install_deps.sh
. Вот быстрая настройка:
# Install third-party dependencies.
$ cd milvus/
$ ./scripts/install_deps.sh
# Compile Milvus.
$ make
Сборка Milvus с помощью Docker
Если вы предпочитаете Docker, есть два варианта: вы можете запускать команды в предварительно собранном контейнере или создать контейнер для разработчиков, чтобы использовать более практичный подход.
# 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
Примечания к платформе: Если вы работаете в Linux, то все в порядке - проблемы с компиляцией возникают довольно редко. Однако пользователи Mac, особенно с чипами M1, могут столкнуться с некоторыми трудностями на этом пути. Не волнуйтесь - у нас есть руководство, которое поможет вам справиться с наиболее распространенными проблемами.
Рисунок: Конфигурация ОС
Полное руководство по настройке можно найти в официальном руководстве по разработке Milvus.
Общие проблемы и способы их решения
Иногда настройка среды разработки Milvus проходит не так гладко, как планировалось. Не волнуйтесь - вот краткая информация о типичных проблемах, с которыми вы можете столкнуться, и о том, как их быстро решить.
Homebrew: Неожиданное отключение при чтении пакета Sideband
Если вы используете Homebrew и видите ошибку, подобную этой:
==> 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~ %
Исправление: Увеличьте размер http.postBuffer
:
git config --global http.postBuffer 1M
Если вы также столкнулись с Brew: command not found
после установки Homebrew, возможно, вам нужно настроить конфигурацию пользователя Git:
git config --global user.email xxxgit config --global user.name xxx
Docker: ошибка при получении учетных данных
При работе с Docker вы можете увидеть следующее:
error getting credentials - err: exit status 1, out: ``
Исправить: Откройте~/.docker/config.json
и удалите поле credsStore
.
Python: Нет модуля с именем 'imp'
Если Python выдает эту ошибку, это связано с тем, что в Python 3.12 удален модуль imp
, который все еще используется в некоторых старых зависимостях.
Исправьте: Перейдите на Python 3.11:
brew install python@3.11
Conan: Нераспознанные аргументы или команда не найдена
Проблема: Если вы видите Unrecognized arguments: --install-folder conan
, то, скорее всего, вы используете несовместимую версию Conan.
Исправить: Перейдите на Conan 1.61:
pip install conan==1.61
Проблема: Если вы видите Conan command not found
, это означает, что ваше окружение Python не настроено должным образом.
Исправление: Добавьте каталог bin Python в ваш PATH
:
export PATH="/path/to/python/bin:$PATH"
LLVM: Use of Undeclared Identifier 'kSecFormatOpenSSL'
Эта ошибка обычно означает, что ваши зависимости LLVM устарели.
Исправить: Переустановите LLVM 15 и обновите переменные окружения:
brew reinstall llvm@15
export LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"
Советы профессионала
Всегда перепроверяйте версии инструментов и зависимостей.
Если что-то не работает, то на странице Milvus GitHub Issues можно найти ответы или попросить помощи.
Настройка VS Code для интеграции C++ и Go
Обеспечить совместную работу C++ и Go в VS Code проще, чем кажется. При правильной настройке вы сможете упростить процесс разработки для Milvus. Просто измените свой файл user.settings
с помощью приведенной ниже конфигурации:
{
"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"
}
Вот что делает эта конфигурация:
Переменные окружения: Устанавливает пути для
PKG_CONFIG_PATH
,LD_LIBRARY_PATH
иRPATH
, которые важны для поиска библиотек во время сборки и тестирования.Интеграция инструментов Go: Включает языковой сервер Go (
gopls
) и настраивает такие инструменты, какgofumpt
для форматирования иgolangci-lint
для линтинга.Настройка тестирования: Добавляет
testTags
и увеличивает таймаут выполнения тестов до 10 минут.
После добавления эта настройка обеспечивает бесшовную интеграцию между рабочими процессами C++ и Go. Она идеально подходит для сборки и тестирования Milvus без постоянной настройки окружения.
Профессиональный совет
После настройки запустите быструю тестовую сборку, чтобы убедиться, что все работает. Если что-то не так, перепроверьте пути и версию расширения Go в VS Code.
Развертывание Milvus
Milvus поддерживает три режима развертывания - Lite, Standalone и Distributed.
Milvus Lite - это библиотека Python и сверхлегкая версия Milvus. Она идеально подходит для быстрого создания прототипов на Python или в среде ноутбука, а также для небольших локальных экспериментов.
Milvus Standalone - это вариант развертывания Milvus на одном узле, использующий модель клиент-сервер. Это Milvus-эквивалент MySQL, а Milvus Lite - SQLite.
Milvus Distributed - это распределенный режим Milvus, который идеально подходит для корпоративных пользователей, создающих крупномасштабные системы векторных баз данных или платформы векторных данных.
Все эти развертывания основаны на трех ключевых компонентах:
Milvus: движок векторной базы данных, который управляет всеми операциями.
Etcd: Механизм метаданных, управляющий внутренними метаданными Milvus.
MinIO: механизм хранения, обеспечивающий сохранность данных.
При работе в режиме Distributed в Milvus также встроен Pulsar для распределенной обработки сообщений с помощью механизма Pub/Sub, что делает его масштабируемым для сред с высокой пропускной способностью.
Milvus Standalone
Режим Standalone предназначен для установки одного экземпляра, что делает его идеальным для тестирования и небольших приложений. Вот как начать работу:
# 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 (ранее известный как Milvus Cluster)
Для больших наборов данных и высокого трафика режим Distributed предлагает горизонтальную масштабируемость. Он объединяет несколько экземпляров Milvus в единую целостную систему. Развертывание упрощается с помощью Milvus Operator, который работает на Kubernetes и управляет всем стеком Milvus за вас.
Хотите получить пошаговое руководство? Ознакомьтесь с руководством по установке Milvus.
Выполнение сквозных тестов (E2E)
После того как развертывание Milvus запущено, проверить его работоспособность можно с помощью тестов E2E. Эти тесты охватывают все части вашей установки, чтобы убедиться, что все работает так, как ожидалось. Вот как их проводить:
# Navigate to the test directory
cd tests/python_client
# Install dependencies
pip install -r requirements.txt
# Run E2E tests
pytest --tags=L0 -n auto
Подробные инструкции и советы по устранению неполадок см. в руководстве по разработке Milvus.
Совет профессионала
Если вы новичок в Milvus, начните с Milvus Lite или автономного режима, чтобы прочувствовать его возможности, а затем перейдите в распределенный режим для рабочих нагрузок производственного уровня.
Отправка вашего кода
Поздравляем! Вы прошли все модульные и E2E-тесты (или отладили и перекомпилировали при необходимости). Хотя первая сборка может занять некоторое время, последующие будут намного быстрее, так что не стоит беспокоиться. Когда все пройдено, вы готовы отправить свои изменения и внести свой вклад в Milvus!
Свяжите ваш Pull Request (PR) с проблемой
Каждый PR в Milvus должен быть привязан к соответствующему выпуску. Вот как это сделать:
Проверьте наличие существующих проблем: Просмотрите трекер выпусков Milvus, чтобы узнать, есть ли уже выпуск, связанный с вашими изменениями.
Создайте новую проблему: Если соответствующей проблемы не существует, откройте новую и объясните, какую проблему вы решаете или какую функцию добавляете.
Отправка вашего кода
Форк репозитория: Начните с форка репозитория Milvus на свой аккаунт GitHub.
Создайте ветку: Клонируйте форк локально и создайте новую ветку для своих изменений.
Сделайте коммит с подписью: Убедитесь, что ваши коммиты содержат подпись
Signed-off-by
, чтобы соответствовать лицензированию с открытым исходным кодом:
git commit -m "Commit of your change" -s
Этот шаг подтверждает, что ваш вклад соответствует Сертификату происхождения разработчика (DCO).
Полезные ресурсы
Для получения подробной информации о шагах и лучших практиках ознакомьтесь с руководством по внесению вклада в Milvus.
Возможности для внесения вклада
Поздравляем - вы запустили Milvus! Вы изучили его режимы развертывания, провели тесты и, возможно, даже покопались в коде. Теперь пришло время повысить свой уровень: внести свой вклад в Milvus и помочь сформировать будущее ИИ и неструктурированных данных.
Независимо от ваших навыков, в сообществе Milvus найдется место и для вас! Будь вы разработчиком, которому нравится решать сложные задачи, техническим писателем, которому нравится писать чистую документацию или инженерные блоги, или энтузиастом Kubernetes, стремящимся улучшить развертывание, - для вас найдется способ внести свой вклад.
Ознакомьтесь с представленными ниже возможностями и найдите свой идеальный вариант. Каждый вклад помогает Milvus двигаться вперед - и кто знает? Возможно, ваш следующий запрос на исправление приведет в движение следующую волну инноваций. Итак, чего же вы ждете? Давайте начнем! 🚀
Проекты | Подходит для | Руководство |
---|---|---|
milvus, milvus-sdk-go | Разработчики Go | / |
milvus, knowhere | Разработчики CPP | / |
pymilvus, milvus-sdk-node, milvus-sdk-java | Разработчики, интересующиеся другими языками | Вклад в PyMilvus |
milvus-helm | Энтузиасты Kubernetes | / |
Milvus-docs, milvus-io/community/blog | Технические писатели | Вклад в документацию milvus |
milvus-insight | Веб-разработчики | / |
Заключительное слово
Milvus предлагает различные SDK - на Питоне (PyMilvus), Java, Go и Node.js, - которые позволяют легко начать разработку. Вклад в Milvus - это не просто код, это присоединение к энергичному и инновационному сообществу.
Добро пожаловать в сообщество разработчиков Milvus и удачного кодинга! Нам не терпится увидеть, что вы создадите.
Читать далее
- Настройка среды разработки Milvus
- Развертывание Milvus
- Выполнение сквозных тестов (E2E)
- Отправка вашего кода
- Возможности для внесения вклада
- Заключительное слово
- Читать далее
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word