運用に関するFAQ
Docker HubからのMilvus Dockerイメージの取得に失敗した場合はどうすればよいですか?
Docker HubからのMilvus Dockerイメージの取得に失敗した場合は、他のレジストリミラーを追加してみてください。
中国本土のユーザは、/etc.docker/daemon.jsonのregistry-mirrors配列に "https://registry.docker-cn.com "というURLを追加することができます。
{
"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が正常に起動したかどうかはどのように確認できますか?
Docker Composeを使用してMilvusを起動した場合、docker ps
。Dockerコンテナの起動状況を確認し、Milvusのサービスが正常に起動したかどうかを確認することができます。
Milvusスタンドアロンの場合、少なくとも3つのDockerコンテナが動作していることが確認できるはずです。1つはMilvusサービス、残りの2つはetcd管理とストレージサービスです。詳細については、Milvusスタンドアロンのインストールを参照してください。
ログファイルの時刻がシステム時刻と異なるのはなぜですか?
時間の違いは通常、ホストマシンが協定世界時(UTC)を使用していないことが原因です。
Dockerイメージ内のログファイルはデフォルトでUTCを使用しています。ホストマシンがUTCを使用していない場合、この問題が発生する可能性があります。
自分のCPUがMilvusをサポートしているかどうかを知るには?
Milvusの演算処理は、CPUがSIMD(Single Instruction, Multiple Data)拡張命令セットをサポートしているかどうかに依存します。お使いのCPUがSIMD拡張命令セットに対応しているかどうかは、Milvusのインデックス構築およびベクトル類似検索において非常に重要です。CPUが以下のSIMD命令セットの少なくとも1つをサポートしていることを確認してください:
- SSE4.2
- AVX
- AVX2
- AVX512
lscpuコマンドを実行し、CPUが上記のSIMD命令セットをサポートしているか確認してください:
$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512
起動中にMilvusがillegal instruction
。
MilvusはCPUがSIMD命令セットをサポートしている必要があります:SSE4.2、AVX、AVX2、またはAVX512です。Milvusが正常に動作するためには、CPUがこれらのうち少なくとも1つをサポートしている必要があります。起動時に返されるillegal instruction
のエラーは、CPUが上記4つの命令セットのいずれにも対応していないことを示唆しています。
CPUのSIMD命令セット対応状況をご覧ください。
WindowsにMilvusをインストールできますか?
ソースコードからコンパイルする方法とバイナリパッケージからコンパイルする方法があります。
WindowsへのMilvusのインストール方法については、WindowsでMilvusを動かすを参照してください。
Windowsにpymilvusをインストールする際にエラーが発生しました。どうすればよいですか?
WindowsにPyMilvusをインストールすることは推奨されません。しかし、もしWindowsにPyMilvusをインストールしなければならないのにエラーが出る場合は、Conda環境にインストールしてみてください。Conda環境にPyMilvusをインストールする方法の詳細については、Milvus SDKのインストールを参照してください。
インターネットに接続していない状態でもMilvusをデプロイできますか?
はい、オフライン環境にMilvusをインストールすることができます。詳しくはInstall Milvus Offlineを参照してください。
Milvusが生成したログはどこにありますか?
Milvusのログはデフォルトでstout (標準出力) とstderr (標準エラー) に出力されますが、本番環境ではログを永続ボリュームにリダイレクトすることを強く推奨します。そのためには、milvus.yamlの log.file.rootPath
。また、Milvusをmilvus-helm
チャートでデプロイする場合、--set log.persistence.enabled=true
を使ってログの永続化を有効にする必要があります。
設定を変更していない場合は、kubectl logs <pod-name>やdocker logs CONTAINERを使ってもログを見つけることができます。
セグメントにデータを挿入する前にインデックスを作成できますか?
はい、できます。しかし、各セグメントにインデックスを作成する前に、256MBを超えない範囲でまとめてデータを挿入することをお勧めします。
複数のMilvusインスタンス間でetcdインスタンスを共有できますか?
はい、複数のMilvusインスタンス間でetcdインスタンスを共有することができます。そのためには、各Milvusインスタンスを起動する前に、各Milvusインスタンスの設定ファイルでetcd.rootPath
を別々の値に変更する必要があります。
複数のMilvusインスタンス間でPulsarインスタンスを共有できますか?
はい、複数のMilvusインスタンス間でPulsarインスタンスを共有することができます。そのためには
- Pulsarインスタンスでマルチ・テナントが有効になっている場合は、各Milvusインスタンスに個別のテナントまたはネームスペースを割り当てることを検討してください。そのためには、Milvusインスタンスを起動する前に、設定ファイル内の
pulsar.tenant
またはpulsar.namespace
、それぞれ固有の値に変更する必要があります。 - Pulsarインスタンスでマルチテナントを有効にする予定がない場合は、Milvusインスタンスを起動する前に、各インスタンスの構成ファイル内の
msgChannel.chanNamePrefix.cluster
。
複数のMilvusインスタンス間でMinIOインスタンスを共有できますか?
はい、複数のMilvusインスタンス間でMinIOインスタンスを共有することができます。そのためには、各Milvusインスタンスを起動する前に、各Milvusインスタンスの設定ファイルで、minio.rootPath
を一意な値に変更する必要があります。
エラーメッセージpymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
の対処方法は?
エラーメッセージIllegal uri [example.db]
は、この接続タイプをサポートしていない以前のバージョンのPyMilvusを使ってMilvus Liteに接続しようとしていることを示しています。この問題を解決するには、インストールしたPyMilvusを、Milvus Liteへの接続がサポートされているバージョン2.4.2以上にアップグレードしてください。
PyMilvus は以下のコマンドでアップグレードできます:
pip install pymilvus>=2.4.2
検索/クエリで設定したlimit
よりも少ない結果しか得られないのはなぜですか?
指定したlimit
より少ない結果しか得られない理由はいくつかあります:
データが限られている:限られたデータ: コレクションには、要求した制限を満たすのに十分なエンティティがない可能性があります。コレクション内のエンティティの総数が制限を下回ると、当然、結果の数も少なくなります。
主キーの重複:Milvusは、検索中に主キーの重複に遭遇した場合、特定のエンティティに優先順位を付けます。この動作は検索タイプによって異なります:
クエリ(完全一致):ANN検索:この優先順位付けにより、重複する主キーが多い場合、一意の検索結果が制限数より少なくなることがあります。
不十分な一致:検索フィルタリング式が厳しすぎるため、類似度のしきい値を満たすエンティティが少なくなっている可能性があります。検索条件の設定が厳しすぎると、一致するエンティティが少なくなり、期待される結果よりも少ない結果になります。
まだ質問がありますか?
できます:
- GitHubでMilvusをチェックしてください。自由に質問し、アイデアを共有し、他の人を助けてください。
- Milvusフォーラムや Slackチャンネルに参加して、オープンソースコミュニティに参加してください。