컬렉션 관리
이 가이드에서는 선택한 SDK를 사용하여 컬렉션을 만들고 관리하는 방법을 안내합니다.
시작하기 전에
Milvus 스탠드얼론 또는 Milvus 클러스터를 설치했습니다.
선호하는 SDK를 설치했습니다. Python, Java, Go, Node.js 등 다양한 언어 중에서 선택할 수 있습니다.
개요
Milvus에서는 벡터 임베딩을 컬렉션에 저장합니다. 컬렉션 내의 모든 벡터 임베딩은 유사성 측정을 위해 동일한 차원과 거리 메트릭을 공유합니다.
Milvus 컬렉션은 동적 필드(즉, 스키마에 미리 정의되지 않은 필드)와 기본 키의 자동 증분을 지원합니다.
다양한 환경 설정을 수용하기 위해 Milvus는 컬렉션을 만드는 두 가지 방법을 제공합니다. 하나는 빠른 설정을 제공하는 반면, 다른 하나는 컬렉션 스키마와 인덱스 매개변수를 세부적으로 사용자 지정할 수 있습니다.
또한 필요할 때 컬렉션을 보고, 로드하고, 해제하고, 삭제할 수 있습니다.
컬렉션 만들기
다음 중 한 가지 방법으로 컬렉션을 만들 수 있습니다:
빠른 설정
이 방식에서는 이름을 지정하고 이 컬렉션에 저장할 벡터 임베딩의 차원 수를 지정하기만 하면 컬렉션을 만들 수 있습니다. 자세한 내용은 빠른 설정을 참조하세요.
사용자 지정 설정
컬렉션의 거의 모든 것을 In Milvus가 결정하도록 하는 대신, 컬렉션의 스키마와 인덱스 매개변수를 직접 결정할 수 있습니다. 자세한 내용은 사용자 지정 설정을 참조하세요.
빠른 설정
AI 산업의 비약적인 발전을 배경으로 대부분의 개발자는 간단하면서도 역동적인 컬렉션만 있으면 시작할 수 있습니다. Milvus에서는 단 세 가지 인수를 사용하여 이러한 컬렉션을 빠르게 설정할 수 있습니다:
생성할 컬렉션의 이름,
삽입할 벡터 임베딩의 차원, 그리고
벡터 임베딩 간의 유사성을 측정하는 데 사용되는 메트릭 유형입니다.
빠른 설정을 위해서는 create_collection()
클래스의 MilvusClient
클래스의 메서드를 사용하여 지정된 이름과 차원을 가진 컬렉션을 만듭니다.
빠른 설정을 위해서는 클래스의 createCollection()
클래스의 메서드를 사용하여 MilvusClientV2
클래스의 메서드를 사용하여 지정된 이름과 차원을 가진 컬렉션을 만듭니다.
빠른 설정을 위해서는 클래스의 createCollection()
클래스의 메서드를 사용하여 MilvusClient
클래스의 메서드를 사용하여 지정된 이름과 차원을 가진 컬렉션을 만듭니다.
빠른 설정의 경우 POST /v2/vectordb/collections/create
API 엔드포인트를 사용하여 지정된 이름과 차원을 가진 컬렉션을 만듭니다.
from pymilvus import MilvusClient, DataType
# 1. Set up a Milvus client
client = MilvusClient(
uri="http://localhost:19530"
)
# 2. Create a collection in quick setup mode
client.create_collection(
collection_name="quick_setup",
dimension=5
)
res = client.get_load_state(
collection_name="quick_setup"
)
print(res)
# Output
#
# {
# "state": "<LoadState: Loaded>"
# }
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.collection.request.GetLoadStateReq;
import io.milvus.v2.service.collection.request.CreateCollectionReq;
String CLUSTER_ENDPOINT = "http://localhost:19530";
// 1. Connect to Milvus server
ConnectConfig connectConfig = ConnectConfig.builder()
.uri(CLUSTER_ENDPOINT)
.build();
MilvusClientV2 client = new MilvusClientV2(connectConfig);
// 2. Create a collection in quick setup mode
CreateCollectionReq quickSetupReq = CreateCollectionReq.builder()
.collectionName("quick_setup")
.dimension(5)
.build();
client.createCollection(quickSetupReq);
// Thread.sleep(5000);
GetLoadStateReq quickSetupLoadStateReq = GetLoadStateReq.builder()
.collectionName("quick_setup")
.build();
Boolean res = client.getLoadState(quickSetupLoadStateReq);
System.out.println(res);
// Output:
// true
address = "http://localhost:19530"
// 1. Set up a Milvus Client
client = new MilvusClient({address});
// 2. Create a collection in quick setup mode
let res = await client.createCollection({
collection_name: "quick_setup",
dimension: 5,
});
console.log(res.error_code)
// Output
//
// Success
//
res = await client.getLoadState({
collection_name: "quick_setup"
})
console.log(res.state)
// Output
//
// LoadStateLoaded
//
$ export MILVUS_URI="localhost:19530"
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/create" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "quick_setup",
"dimension": 5
}'
# Output
#
# {
# "code": 0,
# "data": {},
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "quick_setup"
}'
# {
# "code": 0,
# "data": {
# "loadProgress": 100,
# "loadState": "LoadStateLoaded"
# }
# }
위 코드에서 생성된 컬렉션에는 id
(기본 키)와 vector
(벡터 필드)의 두 필드만 포함되며 auto_id
및 enable_dynamic_field
설정이 기본적으로 활성화되어 있습니다.
auto_id
이 설정을 활성화하면 기본 키가 자동으로 증가합니다. 데이터 삽입 중에 기본 키를 수동으로 제공할 필요가 없습니다.
enable_dynamic_field
이 설정을 활성화하면 삽입할 데이터에서
id
및vector
을 제외한 모든 필드가 동적 필드로 처리됩니다. 이러한 추가 필드는$meta
이라는 특수 필드 내에 키-값 쌍으로 저장됩니다. 이 기능을 사용하면 데이터 삽입 중에 추가 필드를 포함할 수 있습니다.
제공된 코드에서 자동으로 색인되고 로드된 컬렉션은 즉시 데이터를 삽입할 수 있습니다.
맞춤형 설정
Milvus가 컬렉션의 거의 모든 것을 결정하는 대신, 사용자가 직접 컬렉션의 스키마와 인덱스 매개변수를 결정할 수 있습니다.
1단계: 스키마 설정
스키마는 컬렉션의 구조를 정의합니다. 스키마 내에서 enable_dynamic_field
를 활성화 또는 비활성화하고, 미리 정의된 필드를 추가하고, 각 필드에 대한 속성을 설정할 수 있는 옵션이 있습니다. 스키마의 개념과 사용 가능한 데이터 유형에 대한 자세한 설명은 스키마 설명을 참조하세요.
스키마를 설정하려면 create_schema()
을 사용하여 스키마 개체를 만들고 add_field()
를 사용하여 스키마에 필드를 추가합니다.
스키마를 설정하려면 createSchema()
을 사용하여 스키마 개체를 만들고 addField()
를 사용하여 스키마에 필드를 추가합니다.
스키마를 설정하려면 createCollection()
.
스키마를 설정하려면 스키마 참조 페이지에 표시된 대로 스키마 형식을 따르는 JSON 개체를 정의해야 합니다. POST /v2/vectordb/collections/create
API 엔드포인트 참조 페이지를 참조하세요.
# 3. Create a collection in customized setup mode
# 3.1. Create schema
schema = MilvusClient.create_schema(
auto_id=False,
enable_dynamic_field=True,
)
# 3.2. Add fields to schema
schema.add_field(field_name="my_id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="my_vector", datatype=DataType.FLOAT_VECTOR, dim=5)
import io.milvus.v2.common.DataType;
import io.milvus.v2.service.collection.request.CreateCollectionReq;
// 3. Create a collection in customized setup mode
// 3.1 Create schema
CreateCollectionReq.CollectionSchema schema = client.createSchema();
// 3.2 Add fields to schema
schema.addField(AddFieldReq.builder()
.fieldName("my_id")
.dataType(DataType.Int64)
.isPrimaryKey(true)
.autoID(false)
.build());
schema.addField(AddFieldReq.builder()
.fieldName("my_vector")
.dataType(DataType.FloatVector)
.dimension(5)
.build());
// 3. Create a collection in customized setup mode
// 3.1 Define fields
const fields = [
{
name: "my_id",
data_type: DataType.Int64,
is_primary_key: true,
auto_id: false
},
{
name: "my_vector",
data_type: DataType.FloatVector,
dim: 5
},
]
export fields='[{ \
"fieldName": "my_id", \
"dataType": "Int64", \
"isPrimary": true \
}, \
{ \
"fieldName": "my_vector", \
"dataType": "FloatVector", \
"elementTypeParams": { \
"dim": 5 \
} \
}]'
매개변수 | 설명 |
---|---|
auto_id |
기본 필드가 자동으로 증가하는지 여부를 결정합니다. 이 값을 True로 설정하면 기본 필드가 자동으로 증가합니다. 이 경우 오류를 방지하기 위해 기본 필드가 삽입할 데이터에 포함되지 않아야 합니다. 자동 생성된 ID는 길이가 고정되어 있으며 변경할 수 없습니다. |
enable_dynamic_field |
대상 컬렉션에 삽입되는 데이터에 컬렉션의 스키마에 정의되지 않은 필드가 포함된 경우 Milvus가 정의되지 않은 필드의 값을 동적 필드에 저장할지 여부를 결정합니다. 이 값을 True로 설정하면 Milvus는 $meta라는 필드를 만들어 삽입되는 데이터에서 정의되지 않은 필드와 해당 값을 저장합니다. |
field_name |
필드의 이름입니다. |
datatype |
필드의 데이터 유형입니다. 사용 가능한 데이터 유형 목록은 데이터 유형을 참조하세요. |
is_primary |
현재 필드가 컬렉션의 기본 필드인지 여부. 각 컬렉션에는 기본 필드가 하나만 있습니다. 기본 필드는 DataType.INT64 유형 또는 DataType.VARCHAR 유형이어야 합니다. |
dim |
벡터 임베딩의 차원. DataType.FLOAT_VECTOR, DataType .BINARY_VECTOR, DataType .FLOAT16_VECTOR 또는 DataType.BFLOAT16_VECTOR 유형의 필드에 필수입니다. DataType.SPARSE_FLOAT_VECTOR를 사용하는 경우 이 매개변수는 생략하세요. |
파라미터 | 설명 |
---|---|
fieldName |
필드의 이름입니다. |
dataType |
필드의 데이터 유형입니다. 사용 가능한 데이터 유형 목록은 데이터 유형을 참조하십시오. |
isPrimaryKey |
현재 필드가 컬렉션의 기본 필드인지 여부입니다. 각 컬렉션에는 기본 필드가 하나만 있습니다. 기본 필드는 DataType.Int64 유형 또는 DataType.VarChar 유형이어야 합니다. |
autoID |
기본 필드가 자동으로 증가하도록 허용 여부 이 값을 true로 설정하면 기본 필드가 자동으로 증가합니다. 이 경우 오류를 방지하기 위해 기본 필드를 삽입할 데이터에 포함하지 않아야 합니다. |
dimension |
벡터 임베딩의 차원. DataType.FloatVector, DataType.BinaryVector, DataType .Float16Vector 또는 DataType.BFloat16Vector 유형의 필드에 대해 필수입니다. |
파라미터 | 설명 |
---|---|
name |
필드의 이름입니다. |
data_type |
필드의 데이터 유형입니다. 사용 가능한 모든 데이터 유형에 대한 열거는 DataType을 참조하십시오. |
is_primary_key |
현재 필드가 컬렉션의 기본 필드인지 여부입니다. 각 컬렉션에는 기본 필드가 하나만 있습니다. 기본 필드는 DataType.INT64 유형 또는 DataType.VARCHAR 유형이어야 합니다. |
auto_id |
이 컬렉션에 데이터가 삽입될 때 기본 필드가 자동으로 증가하는지 여부입니다. 기본값은 False입니다. 이를 True로 설정하면 기본 필드가 자동으로 증가합니다. 사용자 지정 스키마로 컬렉션을 설정해야 하는 경우 이 매개 변수를 건너뛰세요. |
dim |
벡터 임베딩을 보유하는 컬렉션 필드의 차원. 이 값은 1보다 큰 정수여야 하며 일반적으로 벡터 임베딩을 생성하는 데 사용하는 모델에 따라 결정됩니다. |
파라미터 | 설명 |
---|---|
fieldName |
대상 컬렉션에 생성할 필드의 이름입니다. |
dataType |
필드 값의 데이터 유형입니다. |
isPrimary |
현재 필드가 기본 필드인지 여부입니다. True 로 설정하면 현재 필드가 기본 필드가 됩니다. |
elementTypeParams |
추가 필드 매개 변수. |
dim |
플로트벡터 또는 이진벡터 필드에 대한 선택적 매개변수로 벡터 차원을 결정합니다. |
2단계: 인덱스 매개변수 설정
인덱스 매개변수는 Milvus가 컬렉션 내에서 데이터를 구성하는 방법을 결정합니다. metric_type
및 index_type
을 조정하여 특정 필드에 대한 인덱싱 프로세스를 맞춤 설정할 수 있습니다. 벡터 필드의 경우, 작업 중인 벡터 유형에 따라 COSINE
, L2
, IP
, HAMMING
또는 JACCARD
를 metric_type
로 유연하게 선택할 수 있습니다. 자세한 내용은 유사성 메트릭을 참조하세요.
인덱스 매개변수를 설정하려면 prepare_index_params()
을 사용하여 인덱스 매개변수를 준비하고 add_index()
을 사용하여 인덱스를 추가합니다.
인덱스 매개변수를 설정하려면 IndexParam을 사용합니다.
인덱스 매개변수를 설정하려면 createIndex()
.
인덱스 매개변수를 설정하려면 인덱스 매개변수 형식을 따르는 JSON 객체를 정의해야 합니다. POST /v2/vectordb/collections/create
API 엔드포인트 참조 페이지를 참조하세요.
# 3.3. Prepare index parameters
index_params = client.prepare_index_params()
# 3.4. Add indexes
index_params.add_index(
field_name="my_id",
index_type="STL_SORT"
)
index_params.add_index(
field_name="my_vector",
index_type="IVF_FLAT",
metric_type="IP",
params={ "nlist": 128 }
)
import io.milvus.v2.common.IndexParam;
// 3.3 Prepare index parameters
IndexParam indexParamForIdField = IndexParam.builder()
.fieldName("my_id")
.indexType(IndexParam.IndexType.STL_SORT)
.build();
IndexParam indexParamForVectorField = IndexParam.builder()
.fieldName("my_vector")
.indexType(IndexParam.IndexType.IVF_FLAT)
.metricType(IndexParam.MetricType.L2)
.extraParams(Map.of("nlist", 1024))
.build();
List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForIdField);
indexParams.add(indexParamForVectorField);
// 3.2 Prepare index parameters
const index_params = [{
field_name: "my_id",
index_type: "STL_SORT"
},{
field_name: "my_vector",
index_type: "IVF_FLAT",
metric_type: "IP",
params: { nlist: 1024}
}]
export indexParams='[{ \
"fieldName": "my_id", \
"indexName": "my_id", \
"params": { \
"index_type": "SLT_SORT" \
} \
}, { \
"fieldName": "my_vector", \
"metricType": "COSINE", \
"indexName": "my_vector", \
"params": { \
"index_type": "IVF_FLAT", \
"nlist": 1024 \
} \
}]'
매개변수 | 설명 |
---|---|
field_name |
이 객체를 적용할 대상 파일의 이름입니다. |
index_type |
특정 필드에서 데이터를 정렬하는 데 사용되는 알고리즘의 이름입니다. 적용 가능한 알고리즘은 인메모리 인덱스 및 온디스크 인덱스를 참조하세요. |
metric_type |
벡터 간의 유사성을 측정하는 데 사용되는 알고리즘입니다. 사용 가능한 값은 IP, L2, COSINE, JACCARD, HAMMING입니다. 지정된 필드가 벡터 필드인 경우에만 사용할 수 있습니다. 자세한 내용은 Milvus에서 지원되는 인덱스를 참조하세요. |
params |
지정된 인덱스 유형에 대한 미세 조정 매개변수입니다. 사용 가능한 키 및 값 범위에 대한 자세한 내용은 인메모리 인덱스를 참조하세요. |
파라미터 | 설명 |
---|---|
fieldName |
이 IndexParam 객체를 적용할 대상 필드의 이름입니다. |
indexType |
특정 필드에서 데이터를 정렬하는 데 사용되는 알고리즘의 이름입니다. 적용 가능한 알고리즘에 대해서는 인메모리 인덱스 및 온디스크 인덱스를 참조하세요. |
metricType |
인덱스에 사용할 거리 메트릭입니다. 사용 가능한 값은 IP, L2, COSINE, JACCARD, HAMMING입니다. |
extraParams |
추가 인덱스 매개변수. 자세한 내용은 인메모리 인덱스 및 온디스크 인덱스를 참조하세요. |
파라미터 | 설명 |
---|---|
field_name |
인덱스를 생성할 대상 필드의 이름입니다. |
index_type |
특정 필드에서 데이터를 정렬하는 데 사용되는 알고리즘의 이름입니다. 적용 가능한 알고리즘은 인메모리 인덱스 및 온디스크 인덱스를 참조하십시오. |
metric_type |
벡터 간의 유사성을 측정하는 데 사용되는 알고리즘입니다. 사용 가능한 값은 IP, L2, COSINE, JACCARD, HAMMING입니다. 지정된 필드가 벡터 필드인 경우에만 사용할 수 있습니다. 자세한 내용은 Milvus에서 지원되는 인덱스를 참조하세요. |
params |
지정된 인덱스 유형에 대한 미세 조정 매개변수입니다. 사용 가능한 키 및 값 범위에 대한 자세한 내용은 인메모리 인덱스를 참조하세요. |
파라미터 | 설명 |
---|---|
fieldName |
인덱스를 생성할 대상 필드의 이름입니다. |
indexName |
만들 인덱스의 이름입니다. 기본값은 대상 필드 이름입니다. |
metricType |
벡터 간의 유사성을 측정하는 데 사용되는 알고리즘입니다. 사용 가능한 값은 IP, L2, COSINE, JACCARD, HAMMING입니다. 지정된 필드가 벡터 필드인 경우에만 사용할 수 있습니다. 자세한 내용은 Milvus에서 지원되는 인덱스를 참조하세요. |
params |
인덱스 유형 및 관련 설정. 자세한 내용은 인메모리 인덱스를 참조하세요. |
params.index_type |
생성할 인덱스의 유형입니다. |
params.nlist |
클러스터 단위 수입니다. IVF 관련 인덱스 유형에 적용됩니다. |
위의 코드 조각은 각각 벡터 필드와 스칼라 필드에 대한 인덱스 매개 변수를 설정하는 방법을 보여줍니다. 벡터 필드의 경우 메트릭 유형과 인덱스 유형을 모두 설정합니다. 스칼라 필드의 경우 인덱스 유형만 설정합니다. 필터링에 자주 사용되는 벡터 필드와 스칼라 필드에 대한 인덱스를 만드는 것이 좋습니다.
3단계: 컬렉션 만들기
컬렉션과 인덱스 파일을 따로 만들거나, 만들 때 인덱스가 동시에 로드된 컬렉션을 만들 수 있습니다.
create_collection()을 사용하여 지정된 스키마 및 인덱스 매개변수로 컬렉션을 생성하고 get_load_state()를 사용하여 컬렉션의 로드 상태를 확인합니다.
createCollection()을 사용하여 지정된 스키마 및 인덱스 매개변수로 컬렉션을 생성하고 getLoadState()를 사용하여 컬렉션의 로드 상태를 확인합니다.
createCollection()을 사용하여 지정된 스키마 및 인덱스 매개변수로 컬렉션을 만들고 getLoadState()를 사용하여 컬렉션의 로드 상태를 확인합니다.
생성 시 인덱스가 동시에 로드된 컬렉션을 생성합니다.
# 3.5. Create a collection with the index loaded simultaneously client.create_collection( collection_name="customized_setup_1", schema=schema, index_params=index_params ) time.sleep(5) res = client.get_load_state( collection_name="customized_setup_1" ) print(res) # Output # # { # "state": "<LoadState: Loaded>" # }
import io.milvus.v2.service.collection.request.CreateCollectionReq; import io.milvus.v2.service.collection.request.GetLoadStateReq; // 3.4 Create a collection with schema and index parameters CreateCollectionReq customizedSetupReq1 = CreateCollectionReq.builder() .collectionName("customized_setup_1") .collectionSchema(schema) .indexParams(indexParams) .build(); client.createCollection(customizedSetupReq1); // Thread.sleep(5000); // 3.5 Get load state of the collection GetLoadStateReq customSetupLoadStateReq1 = GetLoadStateReq.builder() .collectionName("customized_setup_1") .build(); res = client.getLoadState(customSetupLoadStateReq1); System.out.println(res); // Output: // true
// 3.3 Create a collection with fields and index parameters res = await client.createCollection({ collection_name: "customized_setup_1", fields: fields, index_params: index_params, }) console.log(res.error_code) // Output // // Success // res = await client.getLoadState({ collection_name: "customized_setup_1" }) console.log(res.state) // Output // // LoadStateLoaded //
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/create" \ -H "Content-Type: application/json" \ -d '{ "collectionName": "customized_setup_1", "schema": { "autoId": false, "enabledDynamicField": false, "fields": [ { "fieldName": "my_id", "dataType": "Int64", "isPrimary": true }, { "fieldName": "my_vector", "dataType": "FloatVector", "elementTypeParams": { "dim": "5" } } ] }, "indexParams": [ { "fieldName": "my_vector", "metricType": "COSINE", "indexName": "my_vector", "params": { "index_type": "IVF_FLAT", "nlist": "1024" } }, { "fieldName": "my_id", "indexName": "my_id", "params": { "index_type": "STL_SORT" } } ] }' # Output # # { # "code": 0, # "data": {}, # } $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \ -H "Content-Type: application/json" \ -d '{ "collectionName": "customized_setup_1" }' # { # "code": 0, # "data": { # "loadProgress": 100, # "loadState": "LoadStateLoaded" # } # }
위에서 만든 컬렉션은 자동으로 로드됩니다. 컬렉션 로드 및 해제에 대해 자세히 알아보려면 컬렉션 로드 및 해제하기를 참조하세요.
컬렉션과 인덱스 파일을 별도로 생성합니다.
# 3.6. Create a collection and index it separately client.create_collection( collection_name="customized_setup_2", schema=schema, ) res = client.get_load_state( collection_name="customized_setup_2" ) print(res) # Output # # { # "state": "<LoadState: NotLoad>" # }
// 3.6 Create a collection and index it separately CreateCollectionReq customizedSetupReq2 = CreateCollectionReq.builder() .collectionName("customized_setup_2") .collectionSchema(schema) .build(); client.createCollection(customizedSetupReq2);
// 3.4 Create a collection and index it seperately res = await client.createCollection({ collection_name: "customized_setup_2", fields: fields, }) console.log(res.error_code) // Output // // Success // res = await client.getLoadState({ collection_name: "customized_setup_2" }) console.log(res.state) // Output // // LoadStateNotLoad //
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/create" \ -H "Content-Type: application/json" \ -d '{ "collectionName": "customized_setup_2", "schema": { "autoId": false, "enabledDynamicField": false, "fields": [ { "fieldName": "my_id", "dataType": "Int64", "isPrimary": true }, { "fieldName": "my_vector", "dataType": "FloatVector", "elementTypeParams": { "dim": "5" } } ] } }' # Output # # { # "code": 0, # "data": {}, # } $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \ -H "Content-Type: application/json" \ -d '{ "collectionName": "customized_setup_2" }' # { # "code": 0, # "data": { # "loadState": "LoadStateNotLoaded" # } # }
위에서 만든 컬렉션은 자동으로 로드되지 않습니다. 컬렉션에 대한 인덱스는 다음과 같이 만들 수 있습니다. 컬렉션에 대한 인덱스를 별도로 생성해도 컬렉션이 자동으로 로드되지 않습니다. 자세한 내용은 컬렉션 로드 및 해제하기를 참조하세요.
파라미터 설명 collection_name
컬렉션의 이름입니다. schema
이 컬렉션의 스키마입니다.
이를 없음으로 설정하면 이 컬렉션이 기본 설정으로 생성됩니다.
사용자 정의 스키마로 컬렉션을 설정하려면 CollectionSchema 객체를 만들어 여기에서 참조해야 합니다. 이 경우 Milvus는 요청에 포함된 다른 모든 스키마 관련 설정을 무시합니다.index_params
이 컬렉션의 벡터 필드에 인덱스를 구축하기 위한 매개변수입니다. 사용자 정의 스키마로 컬렉션을 설정하고 컬렉션을 메모리에 자동으로 로드하려면 IndexParams 개체를 만들고 여기에서 참조해야 합니다.
이 컬렉션의 벡터 필드에 대한 인덱스는 최소한 추가해야 합니다. 나중에 인덱스 매개변수를 설정하려는 경우 이 매개변수를 건너뛸 수도 있습니다.파라미터 설명 collectionName
컬렉션의 이름입니다. collectionSchema
이 컬렉션의 스키마입니다.
비워 두면 이 컬렉션이 기본 설정으로 만들어집니다. 사용자 정의 스키마로 컬렉션을 설정하려면 CollectionSchema 개체를 만들어 여기에서 참조해야 합니다.indexParams
이 컬렉션의 벡터 필드에 인덱스를 구축하기 위한 매개 변수입니다. 사용자 정의 스키마로 컬렉션을 설정하고 컬렉션을 메모리에 자동으로 로드하려면 IndexParams 객체 목록이 포함된 IndexParams 객체를 만들고 여기에서 참조하세요. 매개변수 설명 collection_name
컬렉션의 이름입니다. fields
컬렉션의 필드입니다. index_params
만들 컬렉션의 인덱스 매개변수입니다. 매개변수 설명 collectionName
컬렉션의 이름입니다. schema
스키마는 대상 컬렉션의 데이터를 구성하는 역할을 합니다. 유효한 스키마에는 기본 키, 벡터 필드 및 여러 스칼라 필드를 포함하는 여러 필드가 있어야 합니다. schema.autoID
기본 필드가 자동으로 증가하도록 허용할지 여부를 설정합니다. 이 옵션을 True로 설정하면 기본 필드가 자동으로 증가합니다. 이 경우 오류를 방지하기 위해 기본 필드를 삽입할 데이터에 포함하지 않아야 합니다. 필드에서 이 매개변수를 is_primary를 True로 설정합니다. schema.enableDynamicField
예약된 $meta 필드를 사용하여 스키마에 정의되지 않은 필드를 키-값 쌍으로 보유할 수 있도록 허용할지 여부입니다. fields
필드 객체 목록입니다. fields.fieldName
대상 컬렉션에 생성할 필드의 이름입니다. fields.dataType
필드 값의 데이터 유형입니다. fields.isPrimary
현재 필드가 기본 필드인지 여부입니다. 이 값을 True로 설정하면 현재 필드가 기본 필드가 됩니다. fields.elementTypeParams
추가 필드 매개 변수. fields.elementTypeParams.dim
벡터 차원을 결정하는 플로트벡터 또는 바이너리벡터 필드에 대한 선택적 매개 변수입니다. 위에서 만든 컬렉션은 자동으로 로드되지 않습니다. 다음과 같이 컬렉션에 대한 인덱스를 만들 수 있습니다. 컬렉션에 대한 인덱스를 별도로 생성해도 컬렉션이 자동으로 로드되지 않습니다. 자세한 내용은 컬렉션 로드 및 해제하기를 참조하세요.
# 3.6 Create index client.create_index( collection_name="customized_setup_2", index_params=index_params ) res = client.get_load_state( collection_name="customized_setup_2" ) print(res) # Output # # { # "state": "<LoadState: NotLoad>" # }
CreateIndexReq createIndexReq = CreateIndexReq.builder() .collectionName("customized_setup_2") .indexParams(indexParams) .build(); client.createIndex(createIndexReq); // Thread.sleep(1000); // 3.7 Get load state of the collection GetLoadStateReq customSetupLoadStateReq2 = GetLoadStateReq.builder() .collectionName("customized_setup_2") .build(); res = client.getLoadState(customSetupLoadStateReq2); System.out.println(res); // Output: // false
// 3.5 Create index res = await client.createIndex({ collection_name: "customized_setup_2", field_name: "my_vector", index_type: "IVF_FLAT", metric_type: "IP", params: { nlist: 1024} }) res = await client.getLoadState({ collection_name: "customized_setup_2" }) console.log(res.state) // Output // // LoadStateNotLoad //
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/indexes/create" \ -H "Content-Type: application/json" \ -d '{ "collectionName": "customized_setup_2", "indexParams": [ { "metricType": "L2", "fieldName": "my_vector", "indexName": "my_vector", "indexConfig": { "index_type": "IVF_FLAT", "nlist": "1024" } } ] }' # Output # # { # "code": 0, # "data": {}, # } $ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \ -H "Content-Type: application/json" \ -d '{ "collectionName": "customized_setup_2" }' # { # "code": 0, # "data": { # "loadState": "LoadStateNotLoaded" # } # }
매개변수 설명 collection_name
컬렉션의 이름입니다. index_params
인덱스 파라 미터 객체 목록이 포함된 인덱스 파라 미터 객체입니다.
파라미터 | 설명 |
---|---|
collectionName |
컬렉션의 이름입니다. |
indexParams |
IndexParam 객체 목록입니다. |
파라미터 | 설명 |
---|---|
collection_name |
컬렉션의 이름입니다. |
field_name |
인덱스를 생성할 필드의 이름입니다. |
index_type |
특정 필드에서 데이터를 정렬하는 데 사용되는 알고리즘의 이름입니다. 적용 가능한 알고리즘은 인메모리 인덱스 및 온디스크 인덱스를 참조하세요. |
metric_type |
벡터 간의 유사성을 측정하는 데 사용되는 알고리즘입니다. 사용 가능한 값은 IP, L2, COSINE, JACCARD, HAMMING입니다. 지정된 필드가 벡터 필드인 경우에만 사용할 수 있습니다. 자세한 내용은 Milvus에서 지원되는 인덱스를 참조하세요. |
params |
지정된 인덱스 유형에 대한 미세 조정 매개변수입니다. 사용 가능한 키 및 값 범위에 대한 자세한 내용은 인메모리 인덱스를 참조하세요. |
파라미터 | 설명 |
---|---|
collectionName |
컬렉션의 이름입니다. |
indexParams |
만들 컬렉션의 인덱스 매개변수입니다. |
indexParams.metricType |
인덱스를 작성하는 데 사용되는 유사성 메트릭 유형입니다. 기본값은 COSINE입니다. |
indexParams.fieldName |
인덱스를 생성할 대상 필드의 이름입니다. |
indexParams.indexName |
만들 인덱스의 이름(기본값은 대상 필드 이름)입니다. |
indexParams.indexConfig.index_type |
생성할 인덱스의 유형입니다. |
indexParams.indexConfig.nlist |
클러스터 단위 수입니다. IVF 관련 인덱스 유형에 적용됩니다. |
컬렉션 보기
기존 컬렉션의 세부 정보를 확인하려면 describe_collection()을 사용합니다.
기존 컬렉션의 세부 정보를 확인하려면 describeCollection()을 사용합니다.
기존 컬렉션의 세부 정보를 확인하려면 describeCollection()을 사용합니다.
컬렉션의 정의를 보려면 컬렉션에서 POST /v2/vectordb/collections/describe
및 POST /v2/vectordb/collections/list
API 엔드포인트를 사용하면 됩니다.
# 5. View Collections
res = client.describe_collection(
collection_name="customized_setup_2"
)
print(res)
# Output
#
# {
# "collection_name": "customized_setup_2",
# "auto_id": false,
# "num_shards": 1,
# "description": "",
# "fields": [
# {
# "field_id": 100,
# "name": "my_id",
# "description": "",
# "type": 5,
# "params": {},
# "element_type": 0,
# "is_primary": true
# },
# {
# "field_id": 101,
# "name": "my_vector",
# "description": "",
# "type": 101,
# "params": {
# "dim": 5
# },
# "element_type": 0
# }
# ],
# "aliases": [],
# "collection_id": 448143479230158446,
# "consistency_level": 2,
# "properties": {},
# "num_partitions": 1,
# "enable_dynamic_field": true
# }
import io.milvus.v2.service.collection.request.DescribeCollectionReq;
import io.milvus.v2.service.collection.response.DescribeCollectionResp;
// 4. View collections
DescribeCollectionReq describeCollectionReq = DescribeCollectionReq.builder()
.collectionName("customized_setup_2")
.build();
DescribeCollectionResp describeCollectionRes = client.describeCollection(describeCollectionReq);
System.out.println(JSONObject.toJSON(describeCollectionRes));
// Output:
// {
// "createTime": 449005822816026627,
// "collectionSchema": {"fieldSchemaList": [
// {
// "autoID": false,
// "dataType": "Int64",
// "name": "my_id",
// "description": "",
// "isPrimaryKey": true,
// "maxLength": 65535,
// "isPartitionKey": false
// },
// {
// "autoID": false,
// "dataType": "FloatVector",
// "name": "my_vector",
// "description": "",
// "isPrimaryKey": false,
// "dimension": 5,
// "maxLength": 65535,
// "isPartitionKey": false
// }
// ]},
// "vectorFieldName": ["my_vector"],
// "autoID": false,
// "fieldNames": [
// "my_id",
// "my_vector"
// ],
// "description": "",
// "numOfPartitions": 1,
// "primaryFieldName": "my_id",
// "enableDynamicField": true,
// "collectionName": "customized_setup_2"
// }
// 5. View Collections
res = await client.describeCollection({
collection_name: "customized_setup_2"
})
console.log(res)
// Output
//
// {
// virtual_channel_names: [ 'by-dev-rootcoord-dml_13_449007919953017716v0' ],
// physical_channel_names: [ 'by-dev-rootcoord-dml_13' ],
// aliases: [],
// start_positions: [],
// properties: [],
// status: {
// extra_info: {},
// error_code: 'Success',
// reason: '',
// code: 0,
// retriable: false,
// detail: ''
// },
// schema: {
// fields: [ [Object], [Object] ],
// properties: [],
// name: 'customized_setup_2',
// description: '',
// autoID: false,
// enable_dynamic_field: false
// },
// collectionID: '449007919953017716',
// created_timestamp: '449024569603784707',
// created_utc_timestamp: '1712892797866',
// shards_num: 1,
// consistency_level: 'Bounded',
// collection_name: 'customized_setup_2',
// db_name: 'default',
// num_partitions: '1'
// }
//
curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/describe" \
-H "Content-Type: application/json" \
-d '{
"dbName": "default",
"collectionName": "test_collection"
}'
# {
# "code": 0,
# "data": {
# "aliases": [],
# "autoId": false,
# "collectionID": 448707763883002014,
# "collectionName": "test_collection",
# "consistencyLevel": "Bounded",
# "description": "",
# "enableDynamicField": true,
# "fields": [
# {
# "autoId": false,
# "description": "",
# "id": 100,
# "name": "id",
# "partitionKey": false,
# "primaryKey": true,
# "type": "Int64"
# },
# {
# "autoId": false,
# "description": "",
# "id": 101,
# "name": "vector",
# "params": [
# {
# "key": "dim",
# "value": "5"
# }
# ],
# "partitionKey": false,
# "primaryKey": false,
# "type": "FloatVector"
# }
# ],
# "indexes": [
# {
# "fieldName": "vector",
# "indexName": "vector",
# "metricType": "COSINE"
# }
# ],
# "load": "LoadStateLoaded",
# "partitionsNum": 1,
# "properties": [],
# "shardsNum": 1
# }
# }
기존 컬렉션을 모두 나열하려면 다음과 같이 하면 됩니다:
# 6. List all collection names
res = client.list_collections()
print(res)
# Output
#
# [
# "customized_setup_2",
# "quick_setup",
# "customized_setup_1"
# ]
import io.milvus.v2.service.collection.response.ListCollectionsResp;
// 5. List all collection names
ListCollectionsResp listCollectionsRes = client.listCollections();
System.out.println(listCollectionsRes.getCollectionNames());
// Output:
// [
// "customized_setup_2",
// "quick_setup",
// "customized_setup_1"
// ]
// 5. List all collection names
ListCollectionsResp listCollectionsRes = client.listCollections();
System.out.println(listCollectionsRes.getCollectionNames());
// Output:
// [
// "customized_setup_1",
// "quick_setup",
// "customized_setup_2"
// ]
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/list" \
-H "Content-Type: application/json" \
-d '{
"dbName": "default"
}'
# {
# "code": 0,
# "data": [
# "quick_setup",
# "customized_setup_1",
# "customized_setup_2"
# ]
# }
컬렉션 로드 및 릴리스
컬렉션을 로드하는 과정에서 Milvus는 컬렉션의 인덱스 파일을 메모리에 로드합니다. 반대로 컬렉션을 해제할 때는 Milvus가 메모리에서 인덱스 파일을 언로드합니다. 컬렉션에서 검색을 수행하기 전에 컬렉션이 로드되었는지 확인하세요.
컬렉션 로드
컬렉션을 로드하려면 컬렉션 이름을 지정하여 load_collection()
메서드를 사용하여 컬렉션 이름을 지정합니다. 또한 replica_number
을 설정하여 컬렉션이 로드될 때 쿼리 노드에 생성할 데이터 세그먼트의 인메모리 복제본 수를 결정할 수 있습니다.
- Milvus 독립형:
replica_number
의 최대 허용 값은 1입니다. - Milvus 클러스터: 최대값은 Milvus 구성에 설정된
queryNode.replicas
을 초과하지 않아야 합니다. 자세한 내용은 쿼리 노드 관련 구성을 참조하세요.
컬렉션을 로드하려면 컬렉션 이름을 지정하여 loadCollection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 로드하려면 컬렉션 이름을 지정하여 loadCollection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 로드하려면 POST /v2/vectordb/collections/load
및 POST /v2/vectordb/collections/get_load_state
API 엔드포인트를 사용합니다.
# 7. Load the collection
client.load_collection(
collection_name="customized_setup_2",
replica_number=1 # Number of replicas to create on query nodes. Max value is 1 for Milvus Standalone, and no greater than `queryNode.replicas` for Milvus Cluster.
)
res = client.get_load_state(
collection_name="customized_setup_2"
)
print(res)
# Output
#
# {
# "state": "<LoadState: Loaded>"
# }
import io.milvus.v2.service.collection.request.LoadCollectionReq;
// 6. Load the collection
LoadCollectionReq loadCollectionReq = LoadCollectionReq.builder()
.collectionName("customized_setup_2")
.build();
client.loadCollection(loadCollectionReq);
// Thread.sleep(5000);
// 7. Get load state of the collection
GetLoadStateReq loadStateReq = GetLoadStateReq.builder()
.collectionName("customized_setup_2")
.build();
res = client.getLoadState(loadStateReq);
System.out.println(res);
// Output:
// true
// 7. Load the collection
res = await client.loadCollection({
collection_name: "customized_setup_2"
})
console.log(res.error_code)
// Output
//
// Success
//
await sleep(3000)
res = await client.getLoadState({
collection_name: "customized_setup_2"
})
console.log(res.state)
// Output
//
// LoadStateLoaded
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/load" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2"
}'
# Output
#
# {
# "code": 0,
# "data": {},
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2"
}'
# {
# "code": 0,
# "data": {
# "loadProgress": 100,
# "loadState": "LoadStateLoaded"
# }
# }
컬렉션 부분 로드(공개 미리 보기)
이 기능은 현재 공개 미리 보기 중입니다. API와 기능은 향후 변경될 수 있습니다.
로드 요청을 받으면 Milvus는 모든 벡터 필드 인덱스와 모든 스칼라 필드 데이터를 메모리에 로드합니다. 일부 필드가 검색 및 쿼리에 포함되지 않을 경우, 메모리 사용량을 줄이기 위해 로드에서 제외하여 검색 성능을 개선할 수 있습니다.
# 7. Load the collection
client.load_collection(
collection_name="customized_setup_2",
load_fields=["my_id", "my_vector"], # Load only the specified fields
skip_load_dynamic_field=True # Skip loading the dynamic field
)
res = client.get_load_state(
collection_name="customized_setup_2"
)
print(res)
# Output
#
# {
# "state": "<LoadState: Loaded>"
# }
load_fields
에 나열된 필드만 검색 및 쿼리에서 필터링 조건 및 출력 필드로 사용할 수 있습니다. 목록에는 항상 기본 키를 포함해야 합니다. 로드에서 제외된 필드 이름은 필터링이나 출력에 사용할 수 없습니다.
skip_load_dynamic_field=True
을 사용하여 동적 필드 로드를 건너뛸 수 있습니다. Milvus는 동적 필드를 단일 필드로 취급하므로 동적 필드의 모든 키가 함께 포함되거나 제외됩니다.
컬렉션 릴리스
컬렉션을 릴리스하려면 컬렉션 이름을 지정하여 release_collection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 해제하려면 컬렉션 이름을 지정하여 releaseCollection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 릴리스하려면 컬렉션 이름을 지정하여 releaseCollection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 릴리스하려면 POST /v2/vectordb/collections/release
및 POST /v2/vectordb/collections/get_load_state
API 엔드포인트를 사용합니다.
# 8. Release the collection
client.release_collection(
collection_name="customized_setup_2"
)
res = client.get_load_state(
collection_name="customized_setup_2"
)
print(res)
# Output
#
# {
# "state": "<LoadState: NotLoad>"
# }
import io.milvus.v2.service.collection.request.ReleaseCollectionReq;
// 8. Release the collection
ReleaseCollectionReq releaseCollectionReq = ReleaseCollectionReq.builder()
.collectionName("customized_setup_2")
.build();
client.releaseCollection(releaseCollectionReq);
// Thread.sleep(1000);
res = client.getLoadState(loadStateReq);
System.out.println(res);
// Output:
// false
// 8. Release the collection
res = await client.releaseCollection({
collection_name: "customized_setup_2"
})
console.log(res.error_code)
// Output
//
// Success
//
res = await client.getLoadState({
collection_name: "customized_setup_2"
})
console.log(res.state)
// Output
//
// LoadStateNotLoad
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/release" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2"
}'
# Output
#
# {
# "code": 0,
# "data": {},
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/get_load_state" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2"
}'
# {
# "code": 0,
# "data": {
# "loadState": "LoadStateNotLoad"
# }
# }
별칭 설정
컬렉션에 별칭을 지정하여 컬렉션을 특정 맥락에서 더 의미 있게 만들 수 있습니다. 컬렉션에 여러 개의 별칭을 지정할 수 있지만 여러 컬렉션이 하나의 별칭을 공유할 수는 없습니다.
별칭 만들기
별칭을 만들려면 컬렉션 이름과 create_alias()
메서드를 사용하여 컬렉션 이름과 별칭을 지정합니다.
별칭을 만들려면 컬렉션 이름과 별칭을 지정하여 createAlias()
메서드를 사용하여 컬렉션 이름과 별칭을 지정합니다.
별칭을 만들려면 컬렉션 이름과 별칭을 지정하여 createAlias()
메서드를 사용하여 컬렉션 이름과 별칭을 지정합니다.
컬렉션의 별칭을 만들려면 컬렉션의 POST /v2/vectordb/aliases/create
API 엔드포인트를 사용하면 됩니다.
# 9.1. Create aliases
client.create_alias(
collection_name="customized_setup_2",
alias="bob"
)
client.create_alias(
collection_name="customized_setup_2",
alias="alice"
)
import io.milvus.v2.service.utility.request.CreateAliasReq;
// 9. Manage aliases
// 9.1 Create alias
CreateAliasReq createAliasReq = CreateAliasReq.builder()
.collectionName("customized_setup_2")
.alias("bob")
.build();
client.createAlias(createAliasReq);
createAliasReq = CreateAliasReq.builder()
.collectionName("customized_setup_2")
.alias("alice")
.build();
client.createAlias(createAliasReq);
// 9. Manage aliases
// 9.1 Create aliases
res = await client.createAlias({
collection_name: "customized_setup_2",
alias: "bob"
})
console.log(res.error_code)
// Output
//
// Success
//
res = await client.createAlias({
collection_name: "customized_setup_2",
alias: "alice"
})
console.log(res.error_code)
// Output
//
// Success
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/create" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2",
"aliasName": "bob"
}'
# Output
#
# {
# "code": 0,
# "data": {}
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/create" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2",
"aliasName": "alice"
}'
# Output
#
# {
# "code": 0,
# "data": {}
# }
매개변수 | 설명 |
---|---|
collection_name |
별칭을 만들 컬렉션의 이름입니다. |
alias |
컬렉션의 별칭입니다. 이 작업을 수행하기 전에 별칭이 이미 존재하지 않는지 확인하세요. 존재하는 경우 예외가 발생합니다. |
매개변수 | 설명 |
---|---|
collectionName |
별칭을 만들 컬렉션의 이름입니다. |
alias |
컬렉션의 별칭입니다. 이 작업을 수행하기 전에 별칭이 이미 존재하지 않는지 확인하세요. 존재하는 경우 예외가 발생합니다. |
매개변수 | 설명 |
---|---|
collection_name |
별칭을 만들 컬렉션의 이름입니다. |
alias |
컬렉션의 별칭입니다. 이 작업을 수행하기 전에 별칭이 이미 존재하지 않는지 확인하세요. 존재하는 경우 예외가 발생합니다. |
매개변수 | 설명 |
---|---|
collectionName |
별칭을 만들 컬렉션의 이름입니다. |
aliasName |
컬렉션의 별칭입니다. 이 작업을 수행하기 전에 별칭이 이미 존재하지 않는지 확인하세요. 존재하는 경우 예외가 발생합니다. |
별칭 목록
별칭을 나열하려면 컬렉션 이름을 지정하여 list_aliases()
메서드를 사용하여 컬렉션 이름을 지정합니다.
별칭을 나열하려면 컬렉션 이름을 지정하여 listAliases()
메서드를 사용하여 컬렉션 이름을 지정합니다.
별칭을 나열하려면 컬렉션 이름을 지정하여 listAliases()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션의 별칭을 나열하려면 컬렉션의 POST /v2/vectordb/aliases/list
API 엔드포인트를 사용하면 됩니다.
# 9.2. List aliases
res = client.list_aliases(
collection_name="customized_setup_2"
)
print(res)
# Output
#
# {
# "aliases": [
# "bob",
# "alice"
# ],
# "collection_name": "customized_setup_2",
# "db_name": "default"
# }
import io.milvus.v2.service.utility.request.ListAliasesReq;
import io.milvus.v2.service.utility.response.ListAliasResp;
// 9.2 List alises
ListAliasesReq listAliasesReq = ListAliasesReq.builder()
.collectionName("customized_setup_2")
.build();
ListAliasResp listAliasRes = client.listAliases(listAliasesReq);
System.out.println(listAliasRes.getAlias());
// Output:
// [
// "bob",
// "alice"
// ]
// 9.2 List aliases
res = await client.listAliases({
collection_name: "customized_setup_2"
})
console.log(res.aliases)
// Output
//
// [ 'bob', 'alice' ]
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/list" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2"
}'
# {
# "code": 0,
# "data": [
# "bob",
# "alice"
# ]
# }
별칭 설명하기
별칭을 설명하려면 별칭을 지정하는 describe_alias()
메서드를 사용하여 별칭을 지정합니다.
별칭을 설명하려면 별칭을 지정하여 describeAlias()
메서드를 사용하여 별칭을 지정합니다.
별칭을 설명하려면 별칭을 지정하여 describeAlias()
메서드를 사용하여 별칭을 지정합니다.
컬렉션의 별칭을 설명하려면 컬렉션의 POST /v2/vectordb/aliases/describe
API 엔드포인트를 사용하면 됩니다.
# 9.3. Describe aliases
res = client.describe_alias(
alias="bob"
)
print(res)
# Output
#
# {
# "alias": "bob",
# "collection_name": "customized_setup_2",
# "db_name": "default"
# }
import io.milvus.v2.service.utility.request.DescribeAliasReq;
import io.milvus.v2.service.utility.response.DescribeAliasResp;
// 9.3 Describe alias
DescribeAliasReq describeAliasReq = DescribeAliasReq.builder()
.alias("bob")
.build();
DescribeAliasResp describeAliasRes = client.describeAlias(describeAliasReq);
System.out.println(JSONObject.toJSON(describeAliasRes));
// Output:
// {
// "alias": "bob",
// "collectionName": "customized_setup_2"
// }
// 9.3 Describe aliases
res = await client.describeAlias({
collection_name: "customized_setup_2",
alias: "bob"
})
console.log(res)
// Output
//
// {
// status: {
// extra_info: {},
// error_code: 'Success',
// reason: '',
// code: 0,
// retriable: false,
// detail: ''
// },
// db_name: 'default',
// alias: 'bob',
// collection: 'customized_setup_2'
// }
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/describe" \
-H "Content-Type: application/json" \
-d '{
"aliasName": "bob"
}'
# {
# "code": 0,
# "data": {
# "aliasName": "bob",
# "collectionName": "quick_setup",
# "dbName": "default"
# }
# }
별칭 재할당하기
별칭을 다른 컬렉션에 다시 할당하려면 컬렉션 이름과 별칭을 지정하여 alter_alias()
메서드를 사용하여 컬렉션 이름과 별칭을 지정합니다.
별칭을 다른 컬렉션에 재할당하려면 컬렉션 이름과 별칭을 지정하여 alterAlias()
메서드를 사용하여 컬렉션 이름과 별칭을 지정합니다.
별칭을 다른 컬렉션에 재할당하려면 컬렉션 이름과 별칭을 지정하여 alterAlias()
메서드를 사용하여 컬렉션 이름과 별칭을 지정합니다.
다른 컬렉션에 별칭을 재할당하려면 별칭을 다른 컬렉션에 재할당하려면 POST /v2/vectordb/aliases/alter
API 엔드포인트를 사용하면 됩니다.
# 9.4 Reassign aliases to other collections
client.alter_alias(
collection_name="customized_setup_1",
alias="alice"
)
res = client.list_aliases(
collection_name="customized_setup_1"
)
print(res)
# Output
#
# {
# "aliases": [
# "alice"
# ],
# "collection_name": "customized_setup_1",
# "db_name": "default"
# }
res = client.list_aliases(
collection_name="customized_setup_2"
)
print(res)
# Output
#
# {
# "aliases": [
# "bob"
# ],
# "collection_name": "customized_setup_2",
# "db_name": "default"
# }
import io.milvus.v2.service.utility.request.AlterAliasReq;
// 9.4 Reassign alias to other collections
AlterAliasReq alterAliasReq = AlterAliasReq.builder()
.collectionName("customized_setup_1")
.alias("alice")
.build();
client.alterAlias(alterAliasReq);
listAliasesReq = ListAliasesReq.builder()
.collectionName("customized_setup_1")
.build();
listAliasRes = client.listAliases(listAliasesReq);
System.out.println(listAliasRes.getAlias());
// Output:
// ["alice"]
listAliasesReq = ListAliasesReq.builder()
.collectionName("customized_setup_2")
.build();
listAliasRes = client.listAliases(listAliasesReq);
System.out.println(listAliasRes.getAlias());
// Output:
// ["bob"]
// 9.4 Reassign aliases to other collections
res = await client.alterAlias({
collection_name: "customized_setup_1",
alias: "alice"
})
console.log(res.error_code)
// Output
//
// Success
//
res = await client.listAliases({
collection_name: "customized_setup_1"
})
console.log(res.aliases)
// Output
//
// [ 'alice' ]
//
res = await client.listAliases({
collection_name: "customized_setup_2"
})
console.log(res.aliases)
// Output
//
// [ 'bob' ]
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/alter" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_1",
"aliasName": "alice"
}'
# {
# "code": 0,
# "data": {}
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/list" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_1"
}'
# {
# "code": 0,
# "data": [
# "alice"
# ]
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/list" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2"
}'
# {
# "code": 0,
# "data": [
# "bob"
# ]
# }
별칭 삭제
별칭을 삭제하려면 별칭을 지정하는 drop_alias()
메서드를 사용하여 별칭을 지정합니다.
별칭을 삭제하려면 별칭을 지정하여 dropAlias()
메서드를 사용하여 별칭을 지정합니다.
별칭을 삭제하려면 별칭을 지정하여 dropAlias()
메서드를 사용하여 별칭을 지정합니다.
컬렉션의 별칭을 삭제하려면 컬렉션의 POST /v2/vectordb/aliases/drop
API 엔드포인트를 사용하면 됩니다.
# 9.5 Drop aliases
client.drop_alias(
alias="bob"
)
client.drop_alias(
alias="alice"
)
import io.milvus.v2.service.utility.request.DropAliasReq;
// 9.5 Drop alias
DropAliasReq dropAliasReq = DropAliasReq.builder()
.alias("bob")
.build();
client.dropAlias(dropAliasReq);
dropAliasReq = DropAliasReq.builder()
.alias("alice")
.build();
client.dropAlias(dropAliasReq);
// 9.5 Drop aliases
res = await client.dropAlias({
alias: "bob"
})
console.log(res.error_code)
// Output
//
// Success
//
res = await client.dropAlias({
alias: "alice"
})
console.log(res.error_code)
// Output
//
// Success
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/drop" \
-H "Content-Type: application/json" \
-d '{
"aliasName": "bob"
}'
# {
# "code": 0,
# "data": {}
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/aliases/drop" \
-H "Content-Type: application/json" \
-d '{
"aliasName": "alice"
}'
# {
# "code": 0,
# "data": {}
# }
속성 설정
ttl.seconds
및 mmap.enabled
과 같은 컬렉션의 속성을 설정할 수 있습니다. 자세한 내용은 set_properties()를 참조하세요.
이 섹션의 코드 스니펫은 PyMilvus ORM 모듈을 사용하여 Milvus와 상호 작용합니다. 새로운 MilvusClient SDK가 포함된 코드 스니펫은 곧 제공될 예정입니다.
TTL 설정
컬렉션에 있는 데이터의 TTL(Time-To-Live)을 설정하여 데이터가 자동으로 삭제되기 전에 유지되어야 하는 기간을 지정합니다.
from pymilvus import Collection, connections
# Connect to Milvus server
connections.connect(host="localhost", port="19530") # Change to your Milvus server IP and port
# Get existing collection
collection = Collection("quick_setup")
# Set the TTL for the data in the collection
collection.set_properties(
properties={
"collection.ttl.seconds": 60
}
)
MMAP 설정
쿼리 성능을 개선하기 위해 데이터를 메모리에 매핑할지 여부를 결정하는 컬렉션의 메모리 매핑(MMAP) 속성을 구성합니다. 자세한 내용은 메모리 매핑 구성을 참조하세요.
MMAP 속성을 설정하기 전에 먼저 컬렉션을 해제하세요. 그렇지 않으면 오류가 발생합니다.
from pymilvus import Collection, connections
# Connect to Milvus server
connections.connect(host="localhost", port="19530") # Change to your Milvus server IP and port
# Get existing collection
collection = Collection("quick_setup")
# Before setting memory mapping property, we need to release the collection first.
collection.release()
# Set memory mapping property to True or Flase
collection.set_properties(
properties={
"mmap.enabled": True
}
)
컬렉션 삭제
컬렉션이 더 이상 필요하지 않은 경우 컬렉션을 삭제할 수 있습니다.
컬렉션을 삭제하려면 컬렉션 이름을 지정하여 drop_collection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 삭제하려면 컬렉션 이름을 지정하여 dropCollection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 삭제하려면 컬렉션 이름을 지정하여 dropCollection()
메서드를 사용하여 컬렉션 이름을 지정합니다.
컬렉션을 삭제하려면 POST /v2/vectordb/collections/drop
API 엔드포인트를 사용하면 됩니다.
# 10. Drop the collections
client.drop_collection(
collection_name="quick_setup"
)
client.drop_collection(
collection_name="customized_setup_1"
)
client.drop_collection(
collection_name="customized_setup_2"
)
import io.milvus.v2.service.collection.request.DropCollectionReq;
// 10. Drop collections
DropCollectionReq dropQuickSetupParam = DropCollectionReq.builder()
.collectionName("quick_setup")
.build();
client.dropCollection(dropQuickSetupParam);
DropCollectionReq dropCustomizedSetupParam = DropCollectionReq.builder()
.collectionName("customized_setup_1")
.build();
client.dropCollection(dropCustomizedSetupParam);
dropCustomizedSetupParam = DropCollectionReq.builder()
.collectionName("customized_setup_2")
.build();
client.dropCollection(dropCustomizedSetupParam);
// 10. Drop the collection
res = await client.dropCollection({
collection_name: "customized_setup_2"
})
console.log(res.error_code)
// Output
//
// Success
//
res = await client.dropCollection({
collection_name: "customized_setup_1"
})
console.log(res.error_code)
// Output
//
// Success
//
res = await client.dropCollection({
collection_name: "quick_setup"
})
console.log(res.error_code)
// Output
//
// Success
//
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/drop" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "quick_setup"
}'
# {
# "code": 0,
# "data": {}
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/drop" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_1"
}'
# {
# "code": 0,
# "data": {}
# }
$ curl -X POST "http://${MILVUS_URI}/v2/vectordb/collections/drop" \
-H "Content-Type: application/json" \
-d '{
"collectionName": "customized_setup_2"
}'
# {
# "code": 0,
# "data": {}
# }