Inverted File Flatベクトル索引のオンライン再構築

索引の作成後に発生する新しいDML操作(挿入、更新または削除)によって発生するデータ分散のシフトは、結果の精度に大きな影響を与える可能性があります。これらの変更には、持続的な取得精度を確保するための慎重なメンテナンス戦略が必要です。

IVF索引の品質に対するデータ変更の影響を調べる前に、IVF (Inverted File Flat)索引がどのように構築されているかを簡単に思い出してみましょう。このプロセスは、実表からのベクトルのサンプル・セットに対してK-meansクラスタリングを実行し、結果として得られる重心ベクトルをCENTROIDS表に格納することから始まります。データ・ベクトルごとに、最も近い重心は距離に基づいて決定され、この割当は重心パーティション表に記録されます。IVF索引の有効性は、主として索引の作成中に行われた選択によって形成されます。これらのパラメータによって、索引がデータをどの程度適切にパーティション化し、最終的には、高品質な最近傍検索をどの程度効率的にサポートできるかがまとめて決定されます。たとえば、米国の都市を表すデータを考えてみます。索引の作成時に設定されたパラメータに基づいて、次の図に示すように、データが複数のパーティションに分割されます:

図6-14 米国の都市に対応するIVFクラスタ



IVF索引の作成後、挿入、更新、削除などの作成後のDML操作によって、基礎となるデータ分散が大幅に変化する可能性があります。これにより、パーティションの偏りが生じることが多くなります。つまり、一部の近傍パーティションが不均等に大きくなり、他のパーティションは小さいままになります。索引の作成時に使用される重心は静的なままであるため、進化するデータセットを正確に表せなくなる可能性があります。この不整合により、新しく追加されたベクトルが誤ったパーティションに分類され、想起率および索引の全体的な効果が低下する可能性があります。

前述の例について、索引の作成後に、新しい都市が(DML挿入によって)共有ジャーナル表に追加されることを考えてみます。新しい挿入は、最近傍のクラスタに追加されます。この場合、すべての新しい挿入が同じクラスタに追加され、1つのクラスタが他のクラスタよりも大幅に大きくなっていることがわかります。新しい挿入を次の図に示します:

図6-15 既存の索引に追加されたDML更新



"Redwood City"および"Gaithersburg"という検索問合せベクトルに対応する類似性検索について考えてみます。"Redwood City"に対応する上位3件の一致は、San Francisco、MontereyおよびSacramentoです。"Gaithersburg"に対応する上位3件の一致は、Philadelphia、TrentonおよびAnnapolisです。これらの検索結果は、上の図に示した元の索引からのものです。

図6-16 索引の再編成前の類似検索の例



"Redwood City"に対応する検索結果は問合せに一致しますが、"Gaithersburg"に対応する検索結果は問合せを正確に表していません。主な理由の1つは、(表に示されている)DML更新が重心パーティション表に対して行われ、新しいデータが索引で正確に表される場合も表されない場合もあることです。また、クラスタ・サイズが大きいため、取得時間が長くなる可能性があります。

最適な精度を維持するには、データの進化に伴ってこれらの問題に対処する適切な索引の再編成を実装することが不可欠です。内部の実験では、索引の再編成後、1秒当たりの問合せパフォーマンス(QPS)が大幅に向上することが確認されています。

現在、索引の再構築はユーザーによって開始されます。次の構文を使用して再構築を開始できます:
ALTER INDEX ivf_index_name REBUILD ONLINE 
[PARALLEL <degree of parallelism>];

構文情報の詳細と例は、Inverted File Flat ALTER INDEXを参照してください。

再編成は、索引の完全再構築をトリガーすることで実現されます。完全再構築は複数のフェーズで実行されます。静的再構築フェーズ中にジャーナル表に加えられた変更は、キャッチアップ・フェーズを通して索引に適用されます。

索引の再編成後、同じ米国の都市の索引には、追加された新しいデータを表すクラスタがより多く含まれるようになります。また、"Gaithersburg"に対応する検索では、Frederick、Washington DCおよびArlingtonが上位3件の結果として返されるようになりました。これは、索引の再編成前の結果と比較してより正確です。次のプロットは、新しいクラスタを表しています。また、再編成後のクラスタのサイズが均一であることにも注意してください。

図6-17 索引の再編成後の類似検索