精度とパフォーマンスのバランス:Zilliz Cloudの新しいパラメータがベクトル検索の最適化にどう役立つか
はじめに
ここ数年、大規模言語モデル(LLM)とベクトルデータベースは、Eコマースのレコメンデーションから顔認識、RAGシステムに至るまで、数え切れないほどのAI搭載アプリケーションの基盤となってきました。しかし、こうした多様なユースケースには共通の課題があります。それは、検索精度(リコール率)とパフォーマンス(レイテンシおよびスループット)のバランスをどう取るか、ということです。
まさにこの理由から、Milvusを基盤として構築されたフルマネージドベクトルデータベースであるZilliz Cloudの最新リリースで、2つの強力な新機能を導入できることを嬉しく思います。
levelパラメータ - 検索精度を微調整するためのシンプルながら強力なノブenable_recall_calculationパラメータ - リコール率を推定・検証するための組み込みツール
これらの追加機能により、開発者は特定のユースケースに最適なバランスを見つけられるようになります。超高速なレコメンデーションが必要な場合でも、高精度なセキュリティアプリケーションが必要な場合でも対応できます。このブログでは、ベクトル検索の実装を最適化するために、これらの機能をどのように活用すればよいかを具体的に紹介します。
ユースケースが異なれば、要件も異なる
ベクトル検索がさまざまな業界に広がるにつれ、リコール、レイテンシ、1秒あたりのクエリ数(QPS)に対する要件がアプリケーションごとに大きく異なることが分かってきました。対照的な2つの例を見てみましょう。
レコメンデーションシステム:完全な精度よりも速度
レコメンデーションシステムは、膨大なコンテンツライブラリをフィルタリングし、ユーザーの嗜好に基づいて関連性の高いアイテムを提案します。これらのシステムでは、リコール率は最優先事項ではありません。レコメンデーションは関連性があるべきですが、ある程度の多様性を取り入れることで、ユーザーの発見やエンゲージメントが高まることがよくあります。
その代わり、これらのシステムはリアルタイムで何千もの同時リクエストを処理する必要があり、次のことが求められます。
多数のユーザーに同時にサービスを提供するための高いQPS
応答性の高いユーザー体験のための非常に低いレイテンシ
多少の不完全な一致を許容する中程度のリコール(85〜95%)
遅いレコメンデーションによるビジネスへの影響は、たいていの場合、時折発生する不完全な提案を上回るため、パフォーマンス最適化が重要になります。
顔認識:精度は譲れない
顔認識システム、特にセキュリティの文脈では、まったく異なる要件があります。誤検知(セキュリティ侵害)と見逃し(正当なユーザーの拒否)の両方を防ぐために、承認されたユーザーを正確に識別しなければなりません。
これらのシステムには次のものが必要です。
正確な識別のための非常に高いリコール(99%以上)
中程度のレイテンシの許容(ユーザーは短い検証遅延を受け入れる)
低めのQPS要求(検証は比較的頻度の低いタスク)
誤認識の結果は重大であり、多少のパフォーマンスを犠牲にしてでも、精度は譲れない優先事項となります。
共通点:自分に合ったバランスを見つける
これらの対照的な例は、ベクトル検索設定において画一的なアプローチでは不十分である理由を浮き彫りにしています。すべてのアプリケーションはこのスペクトル上のどこかに位置しており、ビジネスニーズに基づいてリコール、レイテンシ、QPSを慎重に最適化する必要があります。
まさにこの理由から、私たちはlevelおよびenable_recall_calculationパラメータを導入しました。開発者が最適なバランスを見つけるためのツールを提供するためです。
Zilliz Cloudの精密チューニング機能の紹介
levelパラメータ:検索精度の微調整
levelパラメータは、1から10までの値で、検索精度をシンプルながら強力に制御できます。
| レベル値 | 最適な用途 | 一般的なリコール | パフォーマンスへの影響 |
|---|---|---|---|
| 低(1-3) | パフォーマンス重視のアプリケーション | 90-97% | レイテンシへの影響は最小、最高のQPS |
| 中(4-7) | バランス重視のアプリケーション | 97-99.5% | レイテンシへの影響は中程度、良好なQPS |
| 高(8-10) | 精度が重要なアプリケーション | 99.5%+ | レイテンシが高く、QPSが低下 |
ユーザーフィードバックに基づき、上限を5から10に拡張しました。これにより、セキュリティ、リスク管理、その他多くの高精度が求められるシナリオで、さらに高い精度を実現できます。
リコール率が高いことが、必ずしもユースケースにとって良いとは限らない点にご注意ください。たとえば、level=3または5で要件を満たす場合、さらにレベルを上げても不要なリソース使用量と高いレイテンシを招くだけです。
enable_recall_calculationパラメーター:精度の検証
levelパラメーターは検索精度を調整しますが、目標のリコール率に達していることをどのように検証すればよいでしょうか?そこでenable_recall_calculationが役立ちます。
検索操作中に有効にすると、このパラメーターは次のことを行います。
現在の設定の実際のリコール率を推定します
検索結果とともにこの値を返します
設定変更についてデータに基づいた意思決定を可能にします
この1回限りの計算により、外部のベンチマークツールを必要とせずに、現在の設定が精度要件を満たしているかどうかを検証できます。
実践的な実装:ステップバイステップガイド
これらの新機能を使用してベクトル検索実装を最適化する実際の例を見ていきましょう。
前提条件
Zilliz Cloudインスタンス(まだお持ちでない場合はこちらからサインアップしてください)
PyMilvus 2.5.4以降
テストデータセット(この例ではcohere-1Mデータセットを使用します)
ステップ1:要件を定義する
パラメーターチューニングに入る前に、要件を明確に定義します。
目標リコール率:99.5%
許容可能な最大レイテンシ:5ms
その他の考慮事項:QPS、リソース使用率
クエリパターン:純粋なベクトル検索
TopK: 16,000
ステップ2:テストデータをインポートする
正確なテストのためには、本番環境に近いデータを使用する必要があります。この例では、cohere-1Mデータセットを使用し、VectorDBBench経由でZilliz Cloudにインポートします。
ステップ3:ベースラインリコール率を推定する
まず、デフォルト設定(level=1)がどのように機能するかを確認しましょう。
search_params = {
"params": {
"level": 1,
"enable_recall_calculation": True
}
}
res = client.search(
collection_name = "ZillizCloudVectorDBBench",
# テストデータ
data = [
[0.22252834,0.26758388,0.3414864,0.31775144,0.25819996,-0.06176423,0.60313016,-0.31930527,-0.05070293,0.80085576,-0.7066278,-0.14704825,0.07324219,-0.051405758,0.24823247,0.20365287,-0.005265507,0.24754052,0.06302843,-0.24397966,-0.2805658,0.543768,0.018544307,0.14154078,0.03093845,-0.25058296,-0.61569184,0.08389459,-0.27519965,0.2121497,0.26527727,-0.03291658,-0.2631627,0.026973603,-0.22165383,0.38862047,0.012616088,-0.066382475,-0.013436819,-0.59001106,-0.08682751,0.13704056,0.08583454,0.0802483,0.01096984,0.20214474,0.11156094,0.5482859,-0.0807617,-0.16539982,-0.29261217,0.08269717,0.03385099,-0.48874223,-0.013168857,0.01616468,-0.6270225,0.13169415,1.0166928,0.6573267,0.40487188,0.2235163,-0.68331105,-0.24911362,-0.1763628,0.34692895,0.077760294,0.96388775,-0.10841275,0.3977706,0.08965021,0.29019687,0.106024966,0.11854912,-0.070255764,-0.24960922,-0.5354312,-0.70186704,0.25364435,0.43369204,0.42516047,0.15078346,-0.35151976,0.4886603,0.37026608,0.39485633,-0.046821307,0.18807457,0.13850202,-0.15630293,0.1469321,0.13219471,-0.31201053,0.22278261,-0.23063508,0.42379102,0.66762435,-0.11903275,0.22101034,-0.10102379,0.21675844,-0.2571628,-0.26546052,0.6185626,0.241754,-0.15792729,-0.37045696,0.23996626,-0.27011713,-0.11512929,0.31577003,0.11118326,-0.76019096,-0.1682175,0.5329204,0.3614348,-0.2348311,0.108711846,0.068240434,-1.3124024,0.20385003,0.6049856,-0.2924265,-0.07293733,0.5181119,0.15742214,0.7537572,-0.656809,0.57201636,0.09775318,0.5414663,-0.53804034,-0.0802571,0.62367904,0.023681821,0.6950041,0.3207407,0.36089638,0.53875273,-0.7288189,-0.12956187,0.15076943,0.057313107,0.41065657,-0.00928412,0.090415776,0.18091775,-0.010793066,-0.010142676,-0.20986095,-0.3740831,0.25086942,-0.31494206,0.17761512,0.04850758,-0.06098805,0.7605751,0.3038707,0.5178377,-0.5769507,0.80365956,0.22879237,-0.34868854,-0.2688102,-0.20910782,0.3392469,0.2990533,0.5502763,0.6561665,0.04177933,-0.45408615,-0.055697974,0.05596695,-0.22720425,0.63778013,-0.1921504,-0.16227654,-0.053658817,0.04536426,-0.28570235,0.30350783,0.5217574,0.0025516534,0.10135456,0.5973671,0.09276529,0.7803261,0.45648357,-0.21722879,-0.3496141,0.18574907,0.1729008,0.6754883,-0.5101994,0.16308193,-0.32053986,-0.0013728795,0.0371755,-0.114131995,0.19870742,0.3973309,0.17016156,0.016581284,0.3074155,0.32889378,-0.6682561,0.36933577,0.45571226,-0.19315217,-0.5065343,0.15996625,0.026897952,0.046443015,0.2667398,-0.18946062,-0.4283052,-0.44281873,-0.24062063,0.41703427,-0.30064407,0.35975343,0.31060407,0.18125875,0.14912511,0.10962614,-0.06901708,-0.2846222,-0.027887726,0.037055127,0.031954445,0.56672156,-0.0863331,0.1497875,-0.1635759,-0.25121027,0.6303942,0.17385906,0.4313834,0.15800661,-0.6267578,-0.03539913,0.32520285,0.42759246,0.24401832,0.2115575,-0.8652025,0.13317755,-0.5719402,0.17294376,-0.12595764,0.34818307,0.24802469,0.05904272,0.1538172,-0.57994705,0.2582915,0.45511153,-0.44164076,-0.074042775,0.04943926,-0.1648779,0.3280813,0.5601293,-0.0018850226,-0.140464,-0.07845455,0.44026145,0.56197315,0.1462102,-0.18595229,0.014953136,0.46956787,-0.14819877,0.1859354,0.019512085,-0.01712815,0.5366789,0.7835224,-0.7423546,0.6503855,0.44647282,0.3631722,-0.66614413,0.10151727,-0.1348695,0.32992417,0.10387001,-0.26746857,-0.33413792,-0.5662058,0.36110422,0.7741211,-0.039930806,-0.15249825,0.09454683,0.4891987,0.0062028184,0.06745152,0.55465925,-0.06739082,0.5588079,-0.43696547,0.555966,0.56702,0.056295626,-0.62005293,-0.3722073,0.21030217,-0.017268468,0.95288086,0.51696795,-0.25066343,-0.3169728,0.42543235,0.31396082,0.17551036,0.3922707,0.07407632,0.91187936,0.38888615,-0.12070266,0.011815081,-0.45720986,0.04727247,0.62094855,-0.45443076,0.16062841,-0.40287957,-0.55417335,-0.3830013,0.055438586,0.1718703,-0.6422826,0.22917171,-0.5290951,0.1585279,0.07934802,0.50577295,-0.035466444,0.088082545,0.5693788,0.11773129,0.1821725,0.41347143,-0.2278498,0.50422746,0.29794943,-0.9369089,0.47065943,0.28594327,-0.6866015,-0.63375616,-0.15243755,-0.46409172,-0.4630497,-0.25025153,0.6375835,0.54886156,0.19831929,-0.03725618,0.20592122,0.36338213,0.31409082,-0.05410012,0.14887711,0.09740482,0.05067692,0.14775206,0.28025475,-0.34377113,-0.27423778,-0.354568,-0.20043556,0.3899774,-0.19812085,-0.36292082,-0.18255037,0.07038237,0.642794,-0.060884897,0.2948623,0.68766963,0.6928454,-0.3849391,0.17996079,0.12549743,0.10299729,-0.25861496,-0.09246836,-0.32353002,-0.01378604,-0.095313616,-0.04558251,0.20014873,-0.4066689,-0.08052519,-0.4618455,0.37693843,0.45283204,-0.114583425,0.050728872,0.13196129,-0.1941961,-0.11727777,3.9586966,0.05150596,0.11701303,0.5739518,0.07567582,0.48247826,0.25156844,0.38180268,0.12796494,0.009531708,-0.04081167,-0.30954623,-0.035167653,0.43064785,0.24091315,-0.11113215,0.027972942,0.3501582,0.54151994,0.14281327,-0.6420307,0.48611403,0.5221564,0.47878447,0.8510151,0.5528693,0.27463847,0.7548287,0.760392,0.4057206,0.5247366,0.6815815,0.46189928,-0.0665814,0.29575244,-0.13240056,0.44400057,-0.26975283,-0.15510945,0.15475176,-0.46221858,0.054507546,0.14640503,0.66453534,0.19300742,-0.3626597,-0.16279799,0.3795997,0.122737944,-0.20419496,0.18285695,0.027228406,-0.22584598,-0.16478994,0.28747237,0.53937024,0.44095138,0.6340223,-0.41380823,0.38367343,0.39497304,-0.043954037,0.38885015,-0.33315817,-0.4766579,0.17371525,-0.23392603,0.7948543,0.3054392,-0.72041094,0.2532946,0.415873,0.80443436,-0.34634262,-0.4886025,0.30351955,-0.049782824,-0.47253707,-0.11401102,-0.096243046,0.19083612,-0.34427363,-0.24545296,0.5773733,0.16357873,0.38620606,0.39995435,-0.65907687,0.6957725,0.24120355,0.34054404,-0.039899644,0.80393964,0.06337182,0.14144897,0.117613785,-0.019442292,-3.7490542,-0.38971332,0.14894387,-0.61240107,0.19039957,0.23817067,0.022639165,0.015894404,-0.6198486,0.14320132,0.041371442,-0.30882874,-0.30676636,1.0463533,-0.034157425,0.31748047,0.4891939,0.5333419,-0.3289819,0.14962271,0.2807266,0.35519713,0.4001028,-0.18559772,-0.7066097,0.14664957,-0.565848,0.013109448,-0.18452193,-0.07372118,0.28156808,-0.36035228,0.8867393,-0.16306667,-0.04191513,0.4594507,0.43135175,-0.091903865,-0.042651527,-0.32555583,-0.19054003,-0.06525034,0.16911364,0.04686202,-0.038171988,0.1336097,0.3761719,-0.050084345,-0.2679286,0.64759475,0.7107872,0.2074471,-0.27312976,0.40090975,0.5491712,-0.10747743,0.74496686,0.18130445,-0.09431538,0.19524746,-0.21418755,-0.12488151,0.15227054,-0.3852693,-0.7784234,-0.14571632,0.041122317,-0.16407914,0.03949264,-0.1925929,0.32901394,0.12069722,0.23391949,-0.16763128,-0.12962814,0.5088096,0.21486548,-0.20993523,0.603585,0.24633685,-0.14029086,-0.27401388,-0.49189645,-0.10249644,2.3196032,-0.12417316,2.1448603,0.058190174,-0.6551869,0.6827868,0.6356786,0.7710372,0.3722568,0.8363127,0.3799041,0.26085538,-0.20764771,0.512162,0.08349497,-0.15835808,0.5738307,-0.66654295,0.18993358,0.32188657,0.0764867,0.64592606,-0.2310478,0.18350935,-0.3915338,0.028645294,-0.101273224,0.8696747,-0.50792813,-0.39119712,-0.30162883,0.7319297,0.71813834,0.39383802,-0.012138247,0.3298783,0.23386809,4.5470805,-0.049004212,0.107414484,0.052308656,0.2678271,-0.15366946,0.5438965,-0.47809094,-0.14649442,0.022792917,0.1358324,-0.4503206,0.57014287,-0.13368002,0.23805767,-0.22125027,-0.08700341,0.045676652,0.16678812,-0.27974084,0.45245427,-0.2107062,0.6667994,0.036875203,0.54632777,0.20104687,0.5349449,0.06913179,-0.086024776,0.76876926,0.16203642,5.155099,0.2797164,0.21450946,-0.17529553,-0.038863413,0.5156995,0.08603405,-0.516439,-0.35604522,0.10131945,0.008194211,0.084706515,-0.34049395,0.21572115,-0.83385843,-0.046860088,-0.48247585,0.023293016,0.22008015,-0.5305121,0.5061096,0.0183293,0.1326365,0.22057603,-0.43027383,-0.3885953,0.1500542,-0.1449458,-0.38747045,0.2789606,0.27069542,-0.37978157,-0.58541,0.5139468,-0.60586643,-0.5236463,0.22003366,0.15764758,0.3512009,0.13694952,0.7772281,0.28431293,0.113065295,0.14233269,-0.047996823,0.0024461043,0.06218189,-0.28065726,-0.2061346,-0.36278206,0.24291486,-0.0869041,0.7448049,0.36513415,0.61559093,0.42820337,0.41123256,-0.32082868,-0.10876272,-0.028618973,0.6750199,-0.048880983,-0.12521495,0.1926665,0.6695621,0.21937566,0.46856737,0.30544627,0.2650348,-0.11578811,-0.15696093,-0.047148716,0.19283816,0.12149068,-0.03274016,0.021503512,0.008024155,0.19709297,0.15727529,0.14134975,-0.16997191,-0.063695885,-0.39591065,-0.11891319,-0.04673462,0.16978487,-0.09345571,0.11924938,0.13301763,-0.2266567,0.4164705,0.3571622,0.09038913,0.18044233,0.09119875,-0.23754075,0.45051736,0.35435763,0.20957275,0.5704436,-0.36682,0.26963162,0.15532929,-0.24306794,0.17486432,0.39116114,0.12234816,0.21448524,-0.019066956,-0.09756305,0.4465544,0.3394048,-0.7088385,-0.5032021,0.03529406]
],
limit = 16000,
search_params = search_params
)
print(f"recall: {res.recalls}")
出力は次のとおりです:
recall: [0.9886875152587891]
リコールが 98.87% であり、目標の 99.5% を下回っています。 レイテンシも測定してみましょう(任意):
search_params = {
"params": {
"level": 1,
# "enable_recall_calculation": True
}
}
start_time = time.perf_counter()
client.search(collection_name = "ZillizCloudVectorDBBench",
data = data,
limit = limit,
search_params = search_params
)
end_time = time.perf_counter()
elapsed_time = end_time - start_time
print(f"latency at level=1: {elapsed_time:.2f} seconds")
そして出力は次のとおりです:
latency at level=1: 0.03 seconds
ステップ 4: 最適な level 値を見つける
次に、最適な設定を見つけるために、さまざまな level 値を体系的にテストしてみましょう:
recall at level=1: [0.9886875152587891]
latency at level=1: 0.03 seconds
...
recall at level=6: [0.9947500228881836]
latency at level=6: 0.04 seconds
recall at level=7: [0.9961249828338623]
latency at level=7: 0.04 seconds
...
recall at level=10: [1.0]
latency at level=10: 0.06 seconds
実験では、level=7 がリコール目標(99.61% > 99.5%)を満たしながら、レイテンシを許容範囲内に維持できることが示されています。
ステップ 5: システムパフォーマンスの監視(任意)
Zilliz Cloud は、パフォーマンスを効果的に監視するのに役立つ包括的なシステムメトリクス一式を提供します。level パラメータを調整して新しい設定を適用すると、Zilliz Cloud は QPS やレイテンシなどの主要メトリクスをリアルタイムで追跡します。これにより、パラメータ調整がシステム全体のパフォーマンスに与える影響を評価でき、より情報に基づいた意思決定が可能になります。
ステップ 6: 本番ワークロードで検証する
本番環境での検証には、以下を推奨します:
代表的なクエリベクトルを使用してテストを実行する
Zilliz Cloud ダッシュボードで以下を監視する:
平均レイテンシ
QPS
リソース使用率
ステップ 7: 包括的なベンチマークを実施する(任意)
より厳密な評価のために、オープンソースのベンチマークツールである VectorDBBench を使用し、1,000 回の検索操作でさまざまな設定をテストしました:
| level | 平均レイテンシ(ms) | QPS | VectorDBBench からのリコール | Zilliz Cloud からのリコール |
|---|---|---|---|---|
| 1 | 3.1 | 1266 | 0.9519 | 0.953 |
| 2 | 3.2 | 1080 | 0.9644 | 0.9669 |
| 3 | 3.4 | 972 | 0.9728 | 0.9755 |
| 4 | 3.6 | 814 | 0.9816 | 0.9846 |
| 5 | 3.9 | 704 | 0.9871 | 0.99 |
| 6 | 4.4 | 549 | 0.9916 | 0.995 |
| 7 | 5 | 448 | 0.9936 | 0.9971 |
| 8 | 5.4 | 375 | 0.9945 | 0.9983 |
| 9 | 5.9 | 340 | 0.9952 | 0.9991 |
| 10 | 6.3 | 296 | 0.9958 | 0.9995 |
表 1: VDBBench の 1,000 回の検索操作に基づくテスト結果
これらのベンチマーク結果から、以下が確認できます:
enable_recall_calculationの推定値は、実際のリコール性能とほぼ一致するリコールを高めると、レイテンシの増加と QPS の低下というコストが伴う
私たちの目標要件に対しては、
level=7が最適なバランスを提供する
一般的に、リコールの向上にはレイテンシの増加と QPS の低下というコストが伴う点に注意することが重要です。現在のリコールがビジネスニーズを満たしているものの QPS が最適でない場合は、スループットを向上させるために CU リソースのスケールアップやレプリカの追加を検討できます。
ステップ 8: 最適な設定を確認する
実験結果に基づくと、この例での最適な構成は level=7 であり、許容可能なレイテンシを維持しながら 99.6% のリコールを実現します。
結論
検索精度とパフォーマンスの完璧なバランスを見つけることは、ベクトルデータベースのユーザーにとって長年の課題でした。Zilliz Cloud の新しい level および enable_recall_calculation パラメータにより、開発者はそれぞれの要件に合わせてベクトル検索の実装を最適化するための強力なツールを手に入れました。
速度を優先するレコメンデーションシステム、高い精度が求められるセキュリティアプリケーション、またはその中間のあらゆるものを構築している場合でも、これらの機能により、次のことが可能になります。
要件を満たすように検索精度を正確に調整する
組み込みの推定機能で実際のリコール率を検証する
構成上のトレードオフについてデータに基づいた意思決定を行う
私たちは、ベクトル検索をより強力で柔軟かつ最適化しやすくする機能によって、Zilliz Cloud を継続的に強化していくことに取り組んでいます。これらの新しいパラメータは、開発者が優れた AI 活用アプリケーションを構築できるよう支援するための私たちの取り組みの始まりにすぎません。
ベクトル検索の最適化を始める準備はできましたか?今すぐ Zilliz Cloud にサインアップ するか、既存のアカウントにログインして、これらの新機能をお試しください。
読み続けて

From Vector Database to Vector Lakebase
Zilliz offers a fully managed Vector Lakebase powered by Milvus, unifying real-time vector search, lake-scale discovery, and Al data operations.

Zilliz Cloud Now Available in Azure North Europe: Bringing AI-Powered Vector Search Closer to European Customers
The addition of the Azure North Europe (Ireland) region further expands our global footprint to better serve our European customers.

Build for the Boom: Why AI Agent Startups Should Build Scalable Infrastructure Early
Explore strategies for developing AI agents that can handle rapid growth. Don't let inadequate systems undermine your success during critical breakthrough moments.




