컬렉션 생성

이 항목에서는 Milvus에서 컬렉션을 생성하는 방법에 대해 설명합니다.

컬렉션은 하나 이상의 파티션으로 구성됩니다. 새 컬렉션을 생성할 때 Milvus는 자동으로 _default라는 기본 파티션을 생성합니다.

다음 예제는 book이라는 이름의 컬렉션을 두 개의 샤드와 함께 생성합니다. 이 컬렉션에는 book_id라는 기본 키 필드, word_count라는 INT64 스칼라 필드, 그리고 book_intro라는 2차원 부동 소수점 벡터 필드가 포함되어 있습니다. 실제 응용 프로그램에서는 예시보다 더 높은 벡터 차원을 사용할 수 있습니다.

컬렉션 스키마 정의

생성될 컬렉션은 기본 키 필드와 벡터 필드를 포함해야 합니다. 기본 키 필드는 INT64 및 VarChar 데이터 유형을 지원합니다.

팁: 컬렉션의 스키마 정의는 MYSQL에서 테이블 구조를 정의하는 것과 유사합니다.

먼저 필드 스키마, 컬렉션 스키마 및 컬렉션 이름과 같은 필요한 매개변수를 준비합니다.

컬렉션 스키마를 정의하기 전에, 컬렉션의 각 필드에 대한 스키마를 생성합니다. Milvus는 데이터 삽입의 복잡성을 줄이기 위해 각 스칼라 필드에 대해 (기본 키 필드 제외) 기본값을 지정할 수 있습니다. 즉, 데이터 삽입 중에 필드가 비워진 경우, 해당 필드 스키마 생성 시 구성된 기본값이 사용됩니다.

var (
    collectionName = "book"
)
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "책 검색을 위한 테스트",
  Fields: []*entity.Field{
    {
      Name:       "book_id",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: true,
      AutoID:     false,
    },
    {
      Name:       "word_count",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: false,
      AutoID:     false,
    },
    {
      Name:     "book_intro",
      DataType: entity.FieldTypeFloatVector,
      TypeParams: map[string]string{
          "dim": "2",
      },
    },
  },
  EnableDynamicField: true
}
유형 매개변수 설명 옵션
entity.Schema CollectionName 생성할 컬렉션의 이름 없음
Description 생성할 컬렉션의 설명 없음
AutoID 자동 ID (기본 키) 할당 기능을 활성화 또는 비활성화하는 스위치 True 또는 False
Fields 생성할 컬렉션의 필드 스키마. 자세한 정보는 스키마를 참조하십시오 없음
EnableDynamicField 동적 스키마를 활성화할지 여부 없음
entity.Field Name 생성할 필드의 이름 없음
PrimaryKey 이 필드가 기본 키인지 여부. 기본 키 필드에 필요함 없음
AutoID 필드 값이 자동으로 증가하는지 여부. 기본 키 필드에 필요함 없음
Description 필드의 설명 없음
DataType 생성할 필드의 데이터 유형 기본 키 필드의 경우: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) 스칼라 필드의 경우: - entity.FieldTypeBool(Boolean) - entity.FieldTypeInt8(numpy.int8) - entity.FieldTypeInt16(numpy.int16) - entity.FieldTypeInt32(numpy.int32) - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeFloat(numpy.float32) - entity.FieldTypeDouble(numpy.double) - entity.FieldTypeVarChar(VARCHAR) 벡터 필드의 경우: - entity.FieldTypeBinaryVector (바이너리 벡터) - entity.FieldTypeFloatVector (부동 소수점 벡터)
TypeParams 특정 데이터 유형에 대한 매개변수를 설정하는 문자열에 대한 맵핑 없음
IndexParams 컬렉션 인덱스 매개변수를 설정하는 문자열에 대한 맵핑 없음
IsDynamic 이 필드가 동적 스키마를 활성화하는지 여부 없음
IsPartitionKey 이 필드가 파티션 키로 작동하는지 여부 없음

정의된 구조체를 기반으로 컬렉션 생성

다음은 지정된 스키마를 사용하여 컬렉션을 생성하는 것입니다.

err = milvusClient.CreateCollection(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("컬렉션 생성 실패: ", err.Error())
}
매개변수 설명 옵션
ctx API 호출 프로세스를 제어하는 컨텍스트 없음
shardNum 생성할 컬렉션의 샤드 수 [1,16]

컬렉션 제한 사항

리소스 구성

기능 최대 제한
컬렉션 이름의 길이 255자
컬렉션 내 파티션 수 4,096
컬렉션 내 필드 수 64
컬렉션 내 샤드 수 16

매개변수 default_value

  • default_value는 배열이 아니고 JSON 스칼라 필드가 아닌 경우에만 적용됩니다.
  • default_value는 주 키에는 적용되지 않습니다.
  • default_value의 데이터 유형은 dtype에 지정된 데이터 유형과 동일해야 하며, 그렇지 않을 경우 오류가 발생할 수 있습니다.
  • auto_id를 사용하는 경우 나머지 모든 필드를 기본값으로 설정하는 것은 허용되지 않습니다. 다시 말해, 삽입 또는 업데이트 작업을 수행할 때 적어도 하나의 필드에 대해 값을 지정해야 합니다. 그렇지 않을 경우 오류가 발생할 수 있습니다.

컬렉션이 존재하는지 확인

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("컬렉션이 존재하는지 확인하지 못했습니다: ", err.Error())
}

컬렉션 삭제

_ = milvusClient.DropCollection(ctx, collectionName)

모든 컬렉션 쿼리

collections, err := milvusClient.ListCollections(ctx)