密ベクトル検索に関する質問 | KandaSearch Community Support Forum

密ベクトル検索に関する質問

トピック作成者:ks-solruserml-bot (2025/10/24 18:26 投稿)
4
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/p2bj254qppx55wtv086wbf2qz9wf7tyo into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは。

私は Solr 9.8 のベクトル検索を使って、テキスト断片に対応するベクトルを検索しています。

そのために「knn Query Parser」を使用しています。これまでは「Top-K」を 1000 に設定しており、パフォーマンスと関連性のバランスが自分にはちょうど良いように思えていました。

しかし現在、ベクトル数が 100 万を超え、レイテンシが非常に高くなってきました(10 秒以上)。そこで「Top-K」を下げ始めました(実際には 1000 件もの結果は必要ありません)。

確かに「Top-K」を下げることで応答時間は大幅に改善されましたが、関連性が下がってしまいました。非常に良い回答が「Top-K」を下げた場合には返されなくなってしまいます。

この種の「トレードオフ」は HNSW アルゴリズムの本質に内在するものだと理解しています。ただし「hnswMaxConnections」と「hnswBeamWidth」パラメータの役割を試してみたいと思っています。これらが関連性と性能のバランス改善に役立つかどうか確認したいのです。

これらのパラメータはインデックス作成時に関与するのでしょうか?検索時でしょうか?それとも両方でしょうか?テストのたびに全てのベクトルを再インデックスする必要があるのかを知りたいのです。

もしそうでなければ、性能改善に最も影響する要因は何でしょうか?Solr コア自体はあまりメモリを消費していないように思えます。HNSW アルゴリズム(またはベクトル関連キャッシュ)により多くのメモリを割り当てることは可能でしょうか?

ご検討いただきありがとうございます。
Guillaume

返信投稿者:ks-solruserml-bot (2025/10/24 18:27 投稿)

hnswMaxConnections は、HNSW グラフにおけるノード間の接続数を設定します。
(数値を大きくすると接続性は向上しますが、メモリ使用量も増えます)

hnswBeamWidth は、挿入フェーズにおける探索の深さを設定します。
(数値を大きくすると高品質なグラフになりますが、インデックス作成時間は遅くなります)

両方ともインデックス作成時のパラメータであり、再インデックスが必要です。
デフォルト値は比較的控えめなので、まずは 32/300 を試してみるとよいでしょう。

k=1000 で 10 秒というのは非常に遅い印象です。インスタンスには十分なメモリがありますか?

返信投稿者:ks-solruserml-bot (2025/10/24 18:27 投稿)

私たちは約 400 万件のドキュメントを、512 次元のベクトルフィールド付きで扱っています。
そのため、Solr ノードのインスタンスが利用できるメモリが、Solr コレクションサイズよりも大きいことを保証しなければなりません。そうすることで OS がキャッシュに使えるようになります。iotop で確認すると、Solr ノードが処理している間はディスク読み込みが 0 バイトであることが分かります。メモリキャッシュがすべてを左右します。メモリがなければパフォーマンスは十分ではなく(Web ページを配信するのに耐えられません)。

私たちは Solr 8 の時代から密ベクトル検索を使い始めましたが、その頃は RAM ディスクをマウントして試していました。ただし後になって、Linux が自動的にデータキャッシュを非常にうまく行うことに気づき、RAM ディスクをいじる必要はないと分かりました。つまり、JDK にどれだけメモリを割り当てるかと Linux にどれだけメモリを割り当てるか、という選択に行き着きます。そして Linux 側のメモリ割り当てはパフォーマンスにとても重要です。コレクションサイズより多くのメモリが必須であり(どれだけ多ければ十分かは分かりませんが、試行錯誤の結果、現在はなんとか回っています)。

Derek

返信投稿者:ks-solruserml-bot (2025/10/24 18:27 投稿)

Matthias が言ったようにハイパーパラメータはインデックス作成時のものなので(再インデックスが必要です)、
クエリのレイテンシーを減らすためのヒントが得られる Bloomberg の講演が、直近の Berlin Buzzwords でありました:

https://www.youtube.com/watch?v=cDiCX3mVAlQ

Alessandro Benedetti
Sease Ltd. ディレクター
Apache Lucene/Solr コミッター
Apache Solr PMC 議長

返信投稿者:ks-solruserml-bot (2025/10/24 18:27 投稿)

ご回答ありがとうございます!
そして Alessandro、この動画をありがとうございます。まさに自分のユースケースにぴったりです ;-)

進展があればまた報告します。
Solr のベクトル検索を使っている他の開発者の方々と話せるのは本当に嬉しいです。
とてもエキサイティングで進化の早いテーマですね!

Guillaume

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2025 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?