OracleDB 23ai の Vector Pool と INDEX_VECTOR_MEMORY_ADVISOR
요약
OracleDB 23ai에서 도입된 Vector Pool은 Oracle AI Vector Search에 사용되는 SGA 컴포넌트로, HNSW 및 IVF와 같은 벡터 인덱스 정보를 저장하고 관리합니다. Autonomous AI Database Serverless(ADB-S) 환경에서는 `vector_memory_size`를 직접 설정할 수 없지만, 시스템이 자동으로 메모리를 동적으로 확장/축소하는 특징을 가집니다. 따라서 필요한 메모리 크기를 예측하기 위해 `INDEX_VECTOR_MEMORY_ADVISOR` 프로시저를 사용하여 벡터 인덱스에 필요한 메모리 사이즈를 시뮬레이션하고 최적화할 수 있습니다.
핵심 포인트
- Vector Pool은 Oracle AI Vector Search의 핵심 SGA 컴포넌트로, HNSW 및 IVF와 같은 벡터 인덱스를 관리합니다.
- ADB-S 환경에서는 `vector_memory_size`를 직접 설정할 수 없으며, 메모리 할당이 동적으로 이루어집니다.
- 벡터 풀 크기의 증가는 HNSW 인덱스 생성이나 PDB 재오픈 시 자동으로 트리거됩니다.
- 필요한 벡터 인덱스 메모리 사이즈는 `INDEX_VECTOR_MEMORY_ADVISOR` 프로시저를 사용하여 사전에 시뮬레이션할 수 있습니다.
Vector Pool は OracleDB 23ai で登場した SGA コンポーネントで、Oracle AI Vector Search で利用されます。
具体的には、インメモリ近傍グラフベクトル索引 (HNSW) と 近傍パーティションベクトル索引 (IVF) に関する情報の格納や操作に利用されます。
Vector Pool を有効にする (≒ベクトル索引を利用する) には、初期化パラメータvector_memory_size にゼロ以外の値を設定します。
ADB-S でvector_memory_sizeを確認するとゼロとなっており、変更不可でした。(ユーザは ADMIN を使用)
SQL> show parameter vector
NAME TYPE VALUE
---------------------------------- ----------- -------
...
改めてマニュアルを確認すると、vector_memory_sizeは ADB-S では明示的に設定することはできず、動的に拡大・縮小するようです。
Autonomous AI Database サーレス・サービス (ADB-S) を使用する場合、SGA 関連のメモリー・パラメータを明示的に設定することはできません。これには、ベクトル・プール・サイズの直接変更が含まれます。
ADB-S では、ベクトル・プールは動的に拡大および縮小できます。
ベクトル・プール・サイズの増加は、HNSW 索引の作成および HNSW 索引を含む PDB の再オープンによって自動的にトリガーされます。
ベクトル・プール・サイズの縮小は、HNSW 索引の削除、PDB のクローズおよび CPU の削減によって自動的にトリガーされます。
HNSW 索引の作成が拡大のトリガーとなっているようなので、索引を作成したところ拡大を確認できました。
SQL> show parameter vector_
NAME TYPE VALUE
---------------------------------- ----------- -------
...
インメモリ近傍グラフベクトル索引 (HNSW) を使用する場合多くのメモリが必要となるため、Vector Pool のサイジングがポイントとなります。
Vector Pool のサイジングに活用できるのが、INDEX_VECTOR_MEMORY_ADVISORプロシージャです。
INDEX_VECTOR_MEMORY_ADVISORプロシージャを使用して、ベクトル索引に必要なメモリサイズをシミュレーション可能です。
ベクトルデータの次元数・件数等を指定するか、既に存在するベクトルデータを持つ列を指定可能です。
SQL> SET SERVEROUTPUT ON;
DECLARE
response_json CLOB;
...
SQL> SET SERVEROUTPUT ON;
DECLARE
response_json CLOB;
...
768 次元・FLOAT32 で 10 万件から 10 万件ずつ件数を増やしていくと、下記のようになりました。
SQL> DECLARE
2 response_json CLOB;
3 BEGIN
...
机上で試算※すると下記の通りですので、1GB 以降は大胆に丸めているようです。
※次元数 × フォーマットサイズ × 件数 × 1.3 (オーバーヘッド)
| 件数 | サイズ (MB) |
|---|---|
| 100,000 | 381 |
| ... |
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기