AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

MongoDB 검색 인덱스

이 가이드 에서는 C 운전자 사용하여 MongoDB Search 및 MongoDB Vector Search 인덱스를 프로그래밍 방식으로 관리 방법을 학습 수 있습니다.

MongoDB Search 기능 사용하면 MongoDB Atlas 에서 호스팅되는 컬렉션에서 전체 텍스트 검색을 수행할 수 있습니다. MongoDB Search에 대해 자세히 학습하려면, Atlas 설명서의 MongoDB Search 개요 를 참조하세요.

MongoDB Vector Search를 사용하면 MongoDB Atlas 에 저장된 벡터 임베딩에 대해 시맨틱 검색을 수행할 수 있습니다. MongoDB Vector Search에 대해 자세히 학습하려면 Atlas 설명서에서 MongoDB Vector Search 개요 를 참조하세요.

다음 섹션에서는 MongoDB Search 및 MongoDB Vector Search 검색 인덱스를 생성, 나열, 업데이트 및 삭제하는 방법을 보여주는 코드 예제를 제공합니다.

MongoDB Search 또는 MongoDB Vector Search 인덱스를 생성하려면 createSearchIndexes 명령을 mongoc_collection_command_simple() 함수에 전달합니다. 이 명령을 사용하여 하나 이상의 인덱스를 생성할 수 있습니다.

다음 코드 예시 MongoDB 검색 인덱스를 생성하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes" : "%s",
"indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<index name>"} ]
}),
"<collection name>");
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created search index\n");
} else {
fprintf(stderr, "Failed to create search index: %s", error.message);
}
bson_destroy(&cmd);

다음 코드 예시 MongoDB 벡터 검색 인덱스 생성하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"name": "<index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}]
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created Vector Search index\n");
} else {
fprintf(stderr, "Failed to create Vector Search index: %s", error.message);
}
bson_destroy(&cmd);

다음 코드 예시는 mongoc_collection_command_simple() 함수를 한 번 호출하여 두 검색 인덱스를 생성하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"definition": {
"mappings": {
"dynamic": false
}
},
"name": "<MongoDB Search index name>"
},
{
"name": "<Vector Search index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}
]
}),
"<collection name>");
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created search indexes\n");
} else {
fprintf(stderr, "Failed to create search indexes: %s", error.message);
}
bson_destroy(&cmd);

각 검색 인덱스를 정의하는 데 사용되는 구문에 대해 자세히 알아보려면 Atlas 문서의 다음 가이드를 참조하세요.

$listSearchIndexes 집계 단계를 mongoc_collection_aggregate() 함수에 전달하여 컬렉션의 모든 MongoDB Search 및 MongoDB Vector Search 검색 인덱스를 반환할 수 있습니다.

다음 코드 예시에서는 컬렉션의 검색 인덱스 목록을 출력하는 방법을 보여줍니다.

bson_t pipeline;
const bson_t *doc;
bson_error_t error;
const char *pipeline_str = BSON_STR({"pipeline" : [ {"$listSearchIndexes" : {}} ]});
bson_init_from_json(&pipeline, pipeline_str, -1, &error);
mongoc_cursor_t *cursor =
mongoc_collection_aggregate(collection, MONGOC_QUERY_NONE, &pipeline, NULL, NULL);
while (mongoc_cursor_next(cursor, &doc)) {
char *str = bson_as_canonical_extended_json(doc, NULL);
printf("%s\n", str);
bson_free(str);
}
bson_destroy(&pipeline);
mongoc_cursor_destroy(cursor);

updateSearchIndex 명령을 mongoc_collection_command_simple() 함수에 전달하여 MongoDB Search 또는 MongoDB Vector Search 인덱스 업데이트 할 수 있습니다.

다음 코드는 동적 매핑을 사용하도록 이 가이드의 검색 인덱스 만들기 섹션에서 만든 MongoDB Search 인덱스 업데이트 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf(
BSON_STR({
"updateSearchIndex" : "%s",
"definition" : {"mappings" : {"dynamic" : true}}, "name" : "<index name>"}),
"<collection name>");
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully updated search index\n");
} else {
fprintf(stderr, "Failed to create search index: %s", error.message);
}
bson_destroy(&cmd);

다음 코드는 이 가이드의 검색 인덱스 만들기 섹션에서 생성된 MongoDB Vector Search 인덱스를 업데이트하여 cosine 유사성 함수를 사용하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"updateSearchIndex": "%s",
"name": "<index name>",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "cosine"
}]
}
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully updated search index\n");
} else {
fprintf(stderr, "Failed to create search index: %s", error.message);
}
bson_destroy(&cmd);

dropSearchIndexes 명령을 mongoc_collection_command_simple() 함수에 전달하여 MongoDB Search 또는 MongoDB Vector Search 인덱스 삭제 수 있습니다.

경고

검색 인덱스 및 클러스터 삭제는 돌이킬 수 없습니다.

검색 인덱스 및 관련 클러스터를 삭제하는 것은 영구적인 조치입니다. MongoDB는 삭제된 검색 인덱스 또는 데이터 복구를 지원하지 않습니다. 진행하기 전에 백업 생성과 같은 적절한 조치를 취하여 데이터 손실을 방지하세요.

MongoDB는 삭제된 검색 인덱스 또는 데이터를 복구하도록 요청하는 것을 지원하지 않습니다. 클러스터의 데이터 무결성과 구성에 대한 책임은 사용자에게 있습니다.

다음 코드에서는 컬렉션에서 검색 인덱스를 삭제하는 방법을 보여줍니다.

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf(
BSON_STR({
"dropSearchIndexes" : "%s",
"index" : "<index name>"
}),
"<collection name>");
bson_init_from_json(&cmd, cmd_str, -1, &error);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully deleted search index\n");
} else {
fprintf(stderr, "Failed to delete search index: %s", error.message);
}
bson_destroy(&cmd);

MongoDB Search에 대해 자세히 학습하려면 Atlas 설명서에서 MongoDB 검색 인덱스 를 참조하세요.

MongoDB Vector Search에 대해 자세히 학습하려면 Atlas 설명서에서 MongoDB Vector Search를 위한 필드 인덱스 방법 을 참조하세요.

이 가이드 에서 설명하는 함수에 대해 자세히 학습 다음 API 문서를 참조하세요.