컬렉션 생성
이 항목에서는 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)