StructArray 제한 사항

StructArray 지원은 스키마 정의, 삽입 페이로드, 인덱싱, 검색 모드 및 StructArray 전용 필터에 걸쳐 있습니다. 프로덕션 환경에서 StructArray 동작을 활용하기 전에 이 페이지를 제한 사항 참조 자료로 활용하십시오.

대부분의 StructArray 제한 사항은 StructArray 스키마 모델, 벡터 하위 필드에 대해 선택한 검색 모드, 컬렉션이 실행되는 Milvus 버전의 세 가지 중 하나에서 비롯됩니다.

제한 사항 요약

영역제한 사항
스키마 구조Struct는 Array 필드의 요소 유형으로만 사용할 수 있습니다. Struct는 최상위 컬렉션 필드로 지원되지 않습니다.
하위 필드 스키마동일한 StructArray 필드 내의 모든 Struct 요소는 하나의 미리 정의된 Struct 스키마를 공유합니다.
용량max_capacity 는 필수 항목이며, 하나의 엔티티가 StructArray 필드에 저장할 수 있는 Struct 요소의 수를 제한합니다.
하위 필드 변경StructArray 필드가 생성된 후에는 기존 StructArray 필드에 하위 필드를 추가할 수 없습니다.
하위 필드 경로인덱스, 검색 대상, 출력 필드 및 필터에는 xml-ph-0001@deepl.internal와 같은 xml-ph-0000@deepl.internal 경로를 사용하십시오.인덱스, 검색 대상, 출력 필드 및 필터에는 chunks[emb] 와 같은 structArray[subfield] 경로를 사용하십시오. chunks.emb 는 사용하지 마십시오.
삽입 형상StructArray 필드를 객체 배열로 삽입하십시오. 삽입 페이로드 내부에서는 경로 구문을 사용하지 마십시오.
벡터 인덱스벡터 필드 또는 벡터 하위 필드는 하나의 인덱스만 허용합니다. EmbeddingList 검색과 요소 수준 검색에는 별도의 벡터 하위 필드를 사용하십시오.
함수StructArray 필드 내부의 필드나 하위 필드에서는 필드 함수가 지원되지 않습니다.
Nullable 필드Nullable StructArray 필드는 버전 제한이 있습니다. 지원되는 경우, null은 개별 Struct 요소가 아닌 전체 StructArray 필드에 적용됩니다.
동적 필드 추가기존 컬렉션에 StructArray 필드를 추가하는 기능은 버전에 따라 지원 여부가 다르며, 추가되는 필드는 null 허용형이어야 합니다.

스키마 제한

제한세부 정보
Struct는 최상위 필드 유형이 아닙니다.datatype=DataType.ARRAY 로 StructArray 필드를 생성하고, element_type=DataType.STRUCTstruct_schema 를 지정합니다.
모든 요소는 하나의 스키마를 공유합니다.StructArray 필드의 모든 Struct 요소는 동일한 하위 필드 목록과 하위 필드 데이터 유형을 따릅니다.
max_capacity 는 필수입니다.하나의 엔티티에 포함된 Struct 요소의 수는 StructArray 필드에 대해 구성된 max_capacity 을 초과해서는 안 됩니다.
기존 하위 필드는 고정되어 있습니다.기존 StructArray 필드에는 새로운 하위 필드를 추가할 수 없습니다. 하위 필드 스키마를 변경하려면 StructArray 필드를 삭제한 다음, 업데이트된 스키마로 다시 추가하십시오.
중첩된 StructArray는 지원되지 않습니다.StructArray 필드는 중첩된 Array, ArrayOfVector, Struct 또는 ArrayOfStruct 하위 필드를 포함할 수 없습니다.
StructArray 내부에서는 함수가 지원되지 않습니다.StructArray 필드나 그 하위 필드에 대해 필드 함수를 정의하지 마십시오.

스키마 생성 예제는 StructArray 필드 생성을 참조하십시오.

지원되는 하위 필드 데이터 유형

StructArray 하위 필드는 물리적 배열 스타일의 저장소에 매핑됩니다. 다음 표에는 지원되는 물리적 유형과 지원되지 않는 물리적 유형이 나열되어 있습니다.

Struct 하위 필드의 물리적 유형지원참고
Array지원됨서브필드를 ` DataType.BOOL` 형태로 정의하십시오.
Array지원됨서브필드를 DataType.INT8, DataType.INT16, DataType.INT32 또는 DataType.INT64 로 정의합니다.
Array지원됨서브필드를 DataType.FLOAT 또는 DataType.DOUBLE 로 정의합니다.
Array지원됨서브필드를 xml-ph-0000@deepl.internal 또는 xml-ph-0001@deepl.internal로 정의합니다.하위 필드를 DataType.VARCHAR 로 정의하고 max_length 를 설정합니다.
ArrayOfVector지원됨서브 필드를 DataType.FLOAT_VECTOR 로 정의하고 dim 를 설정하십시오.
ArrayOfVector지원됨서브 필드를 DataType.FLOAT16_VECTOR 로 정의하고 dim 를 설정하십시오.
ArrayOfVector지원됨서브 필드를 DataType.BFLOAT16_VECTOR 로 정의하고 dim 를 설정하십시오.
ArrayOfVector지원됨서브 필드를 DataType.INT8_VECTOR 로 정의하고 dim 를 설정하십시오.
ArrayOfVector지원됨서브 필드를 DataType.BINARY_VECTOR 로 정의하고 dim 를 설정하십시오.
ArrayOfVector지원되지 않음StructArray 필드에서는 스파스 벡터 하위 필드가 지원되지 않습니다.
Array지원되지 않음String 대신 VARCHAR 을 사용하십시오.
Array지원되지 않음StructArray 필드에서는 JSON 하위 필드가 지원되지 않습니다.
Array지원되지 않음StructArray 필드에서는 지오메트리 하위 필드 및 GIS 함수가 지원되지 않습니다.
Array지원되지 않음StructArray 필드에서는 텍스트 하위 필드가 지원되지 않습니다.
Array지원되지 않음StructArray 필드에서는 Timestamptz 하위 필드 및 시간 기반 표현식이 지원되지 않습니다.
중첩된 Array, ArrayOfVector, Struct 또는 ArrayOfStruct지원되지 않음StructArray 필드는 중첩된 배열, 벡터 배열, Struct 또는 Array-of-Struct 하위 필드를 지원하지 않습니다.

Nullable 및 동적 스키마 제한

Nullable StructArray의 동작 및 동적 StructArray 필드 추가는 버전에 따라 제한됩니다.

기능제한
Nullable StructArray 필드Nullable StructArray 및 Nullable 벡터 배열을 지원하는 버전에서만 지원됩니다.
Python의 null 값Python에서 null StructArray 값을 삽입하려면 ` None `를 사용하십시오. ` Null ` 또는 ` null`는 사용하지 마십시오.
Null 적용 범위Null은 StructArray 필드 전체에 적용됩니다. 예를 들어, chunks=Nonechunks 가 nullable일 때만 유효합니다.
부분적으로 null인 StructArray 값StructArray 필드에 유효한 배열 값이 포함된 경우, 동일한 값 내에서 null인 하위 필드 배열과 유효한 하위 필드 배열을 혼합하여 사용해서는 안 됩니다.
StructArray 필드의 동적 추가기존 컬렉션에 StructArray 필드를 추가하는 기능은 동적 StructArray 필드 지원이 포함된 버전에서만 지원됩니다.
동적 추가에 대한 null 허용 요구 사항기존 컬렉션에 추가된 StructArray 필드는 기존 엔티티에 새 필드의 값이 없으므로 null 허용 가능해야 합니다.
동적 추가 후의 기존 엔티티기존 엔티티는 추가된 StructArray 필드의 모든 하위 필드에 대해 ` null `를 반환합니다.

Milvus v3.0.x에서는 nullable StructArray 필드, nullable 벡터 배열 및 동적 StructArray 필드 추가 기능을 사용할 수 있습니다.

nullable StructArray 필드를 사용한 삽입 예제는 StructArray 필드에 데이터 삽입을 참조하십시오.

삽입 제한

제한세부 정보
페이로드 형상StructArray 필드를 chunks: [{"text": "...", "emb": [...]}] 와 같은 Struct 객체 배열로 삽입합니다.
하위 필드 이름각 Struct 객체 내부에서는 chunks[text] 와 같은 경로가 아닌, textemb 와 같은 하위 필드 이름을 사용하십시오.
스키마 준수각 Struct 요소는 Struct 스키마와 일치해야 합니다.
용량하나의 엔티티에 포함된 Struct 요소의 수는 max_capacity 을 초과해서는 안 됩니다.
벡터 차원벡터 값은 해당 벡터 하위 필드에 대해 구성된 dim 와 일치해야 합니다.
검색 모드 중복EmbeddingList 검색과 요소 수준 검색이 모두 필요한 경우, 벡터를 두 개의 별도 벡터 하위 필드에 작성하십시오.

인덱스 및 메트릭 제한

StructArray 벡터 하위 필드는 EmbeddingList 검색 또는 요소 수준 검색 중 하나를 위해 인덱싱될 수 있습니다. 각 벡터 필드 또는 벡터 하위 필드는 하나의 인덱스만 허용하므로, 동일한 벡터 하위 필드에서 두 메트릭 계열을 모두 사용할 수는 없습니다.

검색 모드메트릭 계열결과 수준
EmbeddingList 검색MAX_SIM, MAX_SIM_COSINE, MAX_SIM_IP, MAX_SIM_L2 또는 이진 MAX_SIM_* 메트릭엔티티 수준 결과.
요소 수준 검색L2, IP, COSINE, HAMMING 와 같은 일반 벡터 메트릭 또는 JACCARD일치하는 요소 오프셋을 포함할 수 있는 요소 수준 결과.

두 모드가 모두 필요한 경우 별도의 벡터 하위 필드를 사용하십시오. 예를 들어, EmbeddingList 검색에는 chunks[emb_list_vector] 를, 요소 수준 검색에는 chunks[emb] 를 사용하십시오.

컬렉션 스키마를 계획할 때 StructArray 벡터 하위 필드는 벡터 하위 필드로 간주됩니다. 벡터 필드와 벡터 하위 필드의 총 개수가 대상 버전 및 서비스 계층의 제한 범위 내에 있도록 유지하십시오.

지원되는 인덱스 유형 및 메트릭 유형 행렬에 대해서는 ‘StructArray 필드 색인’을 참조하십시오.

검색 제한

검색 동작지원 및 제한 사항
기본 EmbeddingList 검색MAX_SIM* 메트릭으로 인덱싱된 StructArray 벡터 하위 필드에서 지원됩니다. 엔티티 수준의 결과를 반환합니다.
기본 요소 수준 검색일반 벡터 메트릭으로 인덱싱된 StructArray 벡터 하위 필드에서 지원됩니다. 일치하는 요소의 오프셋을 반환할 수 있습니다.
범위 검색대상 버전의 검색 모드 및 인덱스/메트릭 지원 여부에 따라 지원됩니다. 요소 수준 StructArray 요청에 대한 하이브리드 범위 검색 동작 여부는 대상 버전을 확인하십시오.
그룹화 검색요소 수준 그룹화 검색은 오프셋을 반환할 수 있습니다. 요소 수준 StructArray 요청에 대한 하이브리드 검색의 그룹화 동작은 버전에 따라 다릅니다.
하이브리드 검색하이브리드 검색 요청은 대상 버전이 해당 검색 조합을 지원하는 경우에만 StructArray 벡터 하위 필드 요청을 포함할 수 있습니다. 각 요청은 여전히 인덱싱된 벡터 하위 필드의 메트릭 패밀리를 따릅니다.
오프셋 출력오프셋은 요소 수준 검색 결과에 사용할 수 있습니다. EmbeddingList 검색은 엔티티 수준 결과를 반환하며, 요소 오프셋을 주요 결과 단위로 사용하지 않습니다.

필터 및 연산자 제한

StructArray 스칼라 필터링은 ` element_filter ` 및 ` MATCH_* ` 계열과 같은 StructArray 연산자에 의해 처리됩니다. 자세한 술어 지원 매트릭스는 StructArray 연산자 문서에 수록되어 있습니다.

개요:

  • $[subfield] 는 StructArray 연산자 내부에서만 사용하십시오.

  • 스칼라 술어에는 스칼라 하위 필드를 사용하십시오.

  • $[...] 스칼라 술어 입력으로 벡터 하위 필드를 사용하지 마십시오.

  • JSON 경로 구문, JSON 함수, 배열 컨테이너 함수, 텍스트 일치 함수, 기하학/GIS 함수 및 Timestamptz 표현식은 StructArray 요소 수준 조건식에서 지원되지 않습니다.

  • 단순한 부울 표현식 대신 $[has_code] == true 와 같은 명시적인 부울 비교를 우선적으로 사용하십시오.

  1. StructArray 필드를 생성하려면 StructArray 필드 생성을 참조하십시오.

  2. 데이터를 삽입하려면 StructArray 필드에 데이터 삽입을 참조하십시오.

  3. 벡터 및 스칼라 인덱스를 생성하려면 StructArray 필드 인덱싱을 참조하십시오.

  4. StructArray 필터 구문을 확인하려면 ‘StructArray 연산자’를 참조하십시오.

번역DeepL

관리형 Milvus를 무료로 사용해 보세요

Zilliz Cloud는 번거로움이 없으며, Milvus 기반으로 10배 더 빠릅니다.

시작하기
피드백

이 페이지가 도움이 되었나요?