🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Вопросы и ответы
  • Home
  • Docs
  • Вопросы и ответы

  • Вопросы и ответы по эксплуатации

Часто задаваемые вопросы по эксплуатации

Что делать, если мне не удалось извлечь образ Milvus Docker из Docker Hub?

Если вам не удалось извлечь образ Milvus Docker из Docker Hub, попробуйте добавить другие зеркала реестра.

Пользователи из материкового Китая могут добавить URL "https://registry.docker-cn.com" в массив registry-mirrors в файле /etc.docker/daemon.json.

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

Является ли Docker единственным способом установки и запуска Milvus?

Docker - это эффективный способ развертывания Milvus, но не единственный. Вы также можете развернуть Milvus из исходного кода. Для этого требуется Ubuntu (18.04 или выше) или CentOS (7 или выше). Дополнительные сведения см. в разделе "Сборка Milvus из исходного кода".

Какие основные факторы влияют на отзыв?

На отзыв в основном влияют тип индекса и параметры поиска.

Для FLAT-индекса Milvus выполняет исчерпывающее сканирование внутри коллекции со 100-процентным возвратом.

Для индексов IVF параметр nprobe определяет объем поиска в коллекции. Увеличение параметра nprobe увеличивает долю искомых векторов и возврат, но снижает производительность запроса.

Для индекса HNSW параметр ef определяет широту поиска в графе. Увеличение ef увеличивает количество искомых точек на графе и запоминание, но снижает производительность запроса.

Дополнительные сведения см. в разделе Векторное индексирование.

Почему мои изменения в конфигурационных файлах не вступили в силу?

Milvus не поддерживает изменение конфигурационных файлов во время выполнения. Чтобы изменения в файлах конфигурации вступили в силу, необходимо перезапустить Milvus Docker.

Как узнать, что Milvus успешно запустился?

Если Milvus запущен с помощью Docker Compose, запустите docker ps, чтобы посмотреть, сколько контейнеров Docker запущено, и проверить, правильно ли запущены службы Milvus.

Для автономного Milvus вы должны наблюдать как минимум три запущенных Docker-контейнера, один из которых - служба Milvus, а два других - служба управления и хранения etcd. Для получения дополнительной информации см. раздел Установка Milvus Standalone.

Почему время в файлах журнала отличается от системного времени?

Разница во времени обычно связана с тем, что хост-машина не использует универсальное координированное время (UTC).

В файлах журнала внутри образа Docker по умолчанию используется UTC. Если на вашей хост-машине не используется UTC, может возникнуть такая проблема.

Как узнать, поддерживает ли мой процессор Milvus?

Вычислительные операции Milvus зависят от поддержки процессором набора инструкций расширения SIMD (Single Instruction, Multiple Data). Поддержка вашим процессором набора инструкций расширения SIMD имеет решающее значение для построения индексов и поиска векторного сходства в Milvus. Убедитесь, что ваш процессор поддерживает хотя бы один из следующих наборов инструкций SIMD:

  • SSE4.2
  • AVX
  • AVX2
  • AVX512

Выполните команду lscpu, чтобы проверить, поддерживает ли ваш процессор указанные выше наборы SIMD-инструкций:

$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512

Почему Milvus возвращает illegal instruction при запуске?

Milvus требует, чтобы ваш процессор поддерживал набор SIMD-инструкций: SSE4.2, AVX, AVX2 или AVX512. Для нормальной работы Milvus процессор должен поддерживать хотя бы одну из них. Ошибка illegal instruction, возвращаемая при запуске, указывает на то, что ваш процессор не поддерживает ни один из четырех вышеперечисленных наборов инструкций.

См. раздел Поддержка процессором набора инструкций SIMD.

Могу ли я установить Milvus на Windows?

Да. Вы можете установить Milvus на Windows, скомпилировав его из исходного кода или из бинарного пакета.

О том, как установить Milvus на Windows, читайте в разделе Запуск Milvus на Windows.

Я получил ошибку при установке pymilvus на Windows. Что мне делать?

Попробуйте использовать следующую команду, чтобы обновить pymilvus до последней версии.

pip install --upgrade pymilvus

Могу ли я установить Milvus, отключившись от Интернета?

Да. Вы можете установить Milvus в автономной среде. Дополнительные сведения см. в разделе Установка Milvus в автономном режиме.

Где я могу найти журналы, сгенерированные Milvus?

По умолчанию журнал Milvus печатается в stout (стандартный вывод) и stderr (стандартная ошибка), однако мы настоятельно рекомендуем перенаправлять журнал на постоянный том в производстве. Для этого обновите log.file.rootPath в milvus.yaml. Если вы развертываете Milvus с графиком milvus-helm, вам также необходимо сначала включить персистентность журнала через --set log.persistence.enabled=true.

Если вы не меняли конфигурацию, то найти журнал можно с помощью kubectl logs <pod-name> или docker logs CONTAINER.

Могу ли я создать индекс для сегмента перед вставкой в него данных?

Да, можно. Но мы рекомендуем вставлять данные партиями, каждая из которых не должна превышать 256 МБ, перед индексацией каждого сегмента.

Могу ли я использовать один экземпляр etcd совместно с несколькими экземплярами Milvus?

Да, вы можете использовать один экземпляр etcd совместно с несколькими экземплярами Milvus. Для этого вам нужно изменить etcd.rootPath на отдельное значение для каждого экземпляра Milvus в конфигурационных файлах каждого из них перед их запуском.

Могу ли я разделить экземпляр Pulsar между несколькими экземплярами Milvus?

Да, вы можете использовать один экземпляр Pulsar совместно с несколькими экземплярами Milvus. Для этого вы можете

  • Если на экземпляре Pulsar включена многопользовательская среда, выделите для каждого экземпляра Milvus отдельного арендатора или пространство имен. Для этого перед запуском необходимо изменить pulsar.tenant или pulsar.namespace в конфигурационных файлах экземпляров Milvus на уникальное значение для каждого из них.
  • Если вы не планируете включать многопользовательский режим на экземпляре Pulsar, перед запуском следует изменить msgChannel.chanNamePrefix.cluster в конфигурационных файлах экземпляров Milvus на уникальное значение для каждого из них.

Могу ли я разделить экземпляр MinIO между несколькими экземплярами Milvus?

Да, вы можете разделить экземпляр MinIO между несколькими экземплярами Milvus. Для этого вам нужно изменить minio.rootPath на уникальное значение для каждого экземпляра Milvus в конфигурационных файлах каждого из них перед запуском.

Как мне справиться с сообщением об ошибке pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>?

Сообщение об ошибке Illegal uri [example.db] указывает на то, что вы пытаетесь подключиться к Milvus Lite, используя более раннюю версию PyMilvus, которая не поддерживает этот тип соединения. Чтобы решить эту проблему, обновите свою установку PyMilvus как минимум до версии 2.4.2, которая включает поддержку подключения к Milvus Lite.

Обновить PyMilvus можно с помощью следующей команды:

pip install pymilvus>=2.4.2

Почему я получаю меньше результатов, чем limit, которые я задал в своем поиске/запросе?

Есть несколько причин, по которым вы можете получить меньше результатов, чем указанный вами limit:

  • Ограниченные данные: В коллекции может быть недостаточно сущностей, чтобы выполнить запрошенный вами лимит. Если общее количество сущностей в коллекции меньше установленного лимита, вы, естественно, получите меньше результатов.

  • Дублирование первичных ключей: Milvus отдает приоритет определенным сущностям, когда во время поиска встречаются дубликаты первичных ключей. Это поведение зависит от типа поиска:

  • Запрос (точное совпадение): Milvus выбирает последнюю сущность с совпадающим PK. ANN Search: Milvus выбирает сущность с наибольшим показателем сходства, даже если сущности имеют одинаковый PK. Такая расстановка приоритетов может привести к получению меньшего количества уникальных результатов, чем предел, если в вашей коллекции много дублирующихся первичных ключей.

  • Недостаточное количество совпадений: Выражения фильтрации поиска могут быть слишком строгими, в результате чего меньшее количество сущностей соответствует порогу сходства. Если условия поиска слишком строгие, то совпадет недостаточно сущностей, что приведет к меньшему количеству результатов, чем ожидалось.

MilvusClient("milvus_demo.db") gives an error: ModuleNotFoundError: No module named 'milvus_lite'. Что вызывает эту ошибку и как ее решить?

Эта ошибка возникает при попытке использовать Milvus Lite на платформе Windows. Milvus Lite в основном разработан для Linux и может не иметь встроенной поддержки Windows.

Решение заключается в использовании среды Linux:

  • Используйте операционную систему на базе Linux или виртуальную машину для запуска Milvus Lite.
  • Такой подход обеспечит совместимость с зависимостями и функциональностью библиотеки.

Что такое ошибки "длина превышает максимальную" в Milvus, и как их понять и устранить?

Ошибки "Длина превышает максимальную длину" в Milvus возникают, когда размер элемента данных превышает максимально допустимый размер для коллекции или поля. Вот несколько примеров и объяснений:

  • Ошибка поля JSON: <MilvusException: (code=1100, message=the length (398324) of json field (metadata) exceeds max length (65536): expected=valid length json string, actual=length exceeds max length: invalid parameter)>

  • Ошибка длины строки: <ParamError: (code=1, message=invalid input, length of string exceeds max length. length: 74238, max length: 60535)>

  • Ошибка поля VarChar: <MilvusException: (code=1100, message=the length (60540) of 0th VarChar paragraph exceeds max length (0)%!(EXTRA int64=60535): invalid parameter)>

Чтобы понять и устранить эти ошибки:

  • Поймите, что len(str) в Python обозначает количество символов, а не размер в байтах.
  • Для строковых типов данных, таких как VARCHAR и JSON, используйте len(bytes(str, encoding='utf-8')) для определения фактического размера в байтах, что и используется Milvus для "max-length".

Пример на языке Python:

# Python Example: result of len() str cannot be used as "max-length" in Milvus 
>>> s = "你好,世界!"
>>> len(s) # Number of characters of s.
6
>>> len(bytes(s, "utf-8")) # Size in bytes of s, max-length in Milvus.
18

pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>. Что вызывает эту ошибку и как ее решить?

Эта ошибка указывает на то, что вы пытаетесь подключиться к Milvus Lite, используя более раннюю версию pymilvus, которая не поддерживает его. Чтобы решить эту проблему, обновите свою установку pymilvus, по крайней мере, до версии 2.4.2. Эта версия поддерживает подключение к Milvus Lite. Для обновления используйте следующую команду:

pip install pymilvus>=2.4.2

У вас остались вопросы?

Вы можете:

  • Ознакомиться с Milvus на GitHub. Не стесняйтесь задавать вопросы, делиться идеями и помогать другим.
  • Присоединяйтесь к нашему форуму Milvus или каналу Slack, чтобы получить поддержку и взаимодействовать с нашим сообществом разработчиков с открытым исходным кодом.

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?