ScaNN 색인 오류 문제 해결

이 문서에서는 ScaNN 색인을 생성할 때 발생할 수 있는 오류를 설명합니다. 오류의 예시와 권장 해결 방법도 제공됩니다.

오류 목록

다음은 ScaNN 색인을 만들려고 할 때 생성되는 오류 목록입니다. 이러한 오류의 생성을 중지하고 색인을 계속 생성할 수 있습니다. 자세한 내용은 빈 테이블 또는 작은 테이블에서 색인 강제 생성을 참고하세요.

오류: 빈 테이블로 ScaNN 색인을 만들 수 없음

오류 메시지

데이터가 없는 테이블에 색인을 생성하려고 하거나 ScaNN 색인이 생성된 테이블을 자르려고 하면 다음 오류가 발생합니다.

ERROR: Cannot create ScaNN index with empty table. Once the table is populated with data, create the index. See documentation to bypass this validation.

오류를 유발하는 샘플 쿼리

  • 쿼리 예시 A

    create table t1 (a INT, b VECTOR(512));
    CREATE TABLE
    create index on t1 using ScaNN(b cosine) with (num_leaves = 10, quantizer = 'sq8');
    
  • 쿼리 예시 B

    truncate t1;
    

ScaNN 색인을 생성하기 전에 테이블이 임베딩 벡터로 채워져 있는지 확인합니다.

오류: ScaNN 색인을 만들 수 없음

오류 메시지

채워진 행이 거의 없는 테이블에 색인을 생성하려고 하면 다음 오류가 발생합니다.

Cannot create ScaNN index, error: INVALID_ARGUMENT: Number of row (5) must be larger than (1000).

오류를 유발하는 샘플 쿼리

create table t1 (a INT, b VECTOR(512));
CREATE TABLE
insert into t1 select (random()*1e9)::int, random_vector(512) from generate_series(1, 5);
INSERT 0 5
create index on t1 using scann(b cosine) with (num_leaves = 100, quantizer = 'sq8');

ScaNN 색인을 생성하기 전에 테이블이 임베딩 벡터로 채워져 있는지 확인합니다. 테이블의 행 수는 num_leaves 파라미터에 정의된 값보다 큰 것이 좋습니다.

오류: 상위 파티션 테이블에 ScaNN 색인을 만들 수 없음

오류 메시지

상위 테이블에서 파티션을 나눈 테이블을 만든 경우 상위 테이블에 ScaNN 색인을 만들면 다음 오류가 발생됩니다.

ERROR: Cannot create ScaNN index on parent partition table. Create ScaNN indexes on the child tables instead. See documentation to bypass this validation.

오류를 유발하는 샘플 쿼리

create table t1 (a INT, b VECTOR(512)) partition by range(a);
CREATE TABLE
CREATE TABLE t1_one_ten PARTITION of t1 for values from (1) to (10);
CREATE TABLE
insert into t1_one_ten select (random()*1e9)::int, random_vector(512) from generate_series(1, 100);
INSERT 0 100
CREATE TABLE t1_eleven_twenty PARTITION of t1 for values from (11) to (20);
CREATE TABLE
insert into t1_eleven_twenty select (random()*1e9)::int, random_vector(512) from generate_series(1, 100);
INSERT 0 100
create index on t1 using scann(b cosine) with (num_leaves = 10, quantizer = 'sq8');

파티션을 나눈 테이블의 상위 테이블에는 ScaNN 색인을 생성할 수 없습니다. 파티션을 나눈 테이블에는 ScaNN 색인을 생성해야 합니다.