Docs Menu
Docs Home
/ / /
C#/ .NET 드라이버
/ /

Atlas Search 및 Vector Search 인덱스

이 가이드에서는 Atlas Search 및 Vector Search 인덱스를 만들고 관리 방법을 학습 수 있습니다. 이러한 인덱스를 통해 다음 기능을 사용할 수 있습니다.

  • Atlas Search: 빠른 전체 텍스트 검색 수행

  • Atlas Vector Search: 벡터 임베딩에 대한 시맨틱(유사성) 검색 수행

Atlas Search 및 Vector Search 인덱스는 인덱스 할 필드를 지정하고, 이러한 필드를 인덱싱하는 방법을 지정하고, 기타 선택적 구성을 설정하다 .

참고

Atlas Search 인덱스 관리 메서드는 비동기적으로 실행 . 운전자 메서드는 서버 에서 원하는 조치 완료되기 전에 결과를 반환할 수 있습니다.

이 가이드 다음 조치를 수행하여 Atlas Search 및 Vector Search 인덱스를 관리 방법에 대해 설명합니다.

  • 검색 인덱스 모델 만들기

  • 검색 인덱스 만들기

  • 다중 검색 인덱스 만들기

  • 검색 인덱스 나열

  • 검색 인덱스 업데이트

  • 검색 인덱스 삭제

참고

샘플 데이터

이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 중 하나인 sample_mflix 데이터베이스 의 embedded_movies 컬렉션 사용합니다. Atlas 샘플 데이터를 가져오는 방법에 대한 지침은 Atlas 설명서에서 샘플 데이터 로드 를 참조하세요.

To create an Atlas Search or Vector Search index, you must first build a CreateSearchIndexModel instance that sets your index specifications.

CreateSearchIndexModel 에는 다음과 같은 속성이 있습니다.

속성
유형
설명

definition

BsonDocument

인덱스 정의를 지정합니다. 이 설정을 생략하면 드라이버가 동적 매핑을 사용하여 Atlas Search 인덱스를 생성합니다.

name

string

인덱스 이름을 설정합니다. 이 설정을 생략하면 운전자 이름을 default(으)로 설정합니다.

type

SearchIndexType

인덱스 유형을 설정합니다. 이 설정을 생략하면 운전자 기본값 으로 Atlas Search 인덱스 생성합니다.

Atlas Search 필드 매핑에 대해 자세히 알아보려면 Atlas 설명서에서 필드 매핑 정의 를 참조하세요.

Atlas Vector Search 인덱스 정의에 대해 자세히 학습하려면 Atlas 설명서에서 벡터 검색을 위한 필드를 인덱싱하는 방법 을 참조하세요.

다음 예시 CreateSearchIndexModel 인스턴스 만들어 search_idx이라는 인덱스 에 대한 사양을 제공합니다. 이 코드는 titlereleased 필드의 정적 매핑을 지정합니다.

var def = new BsonDocument {
{ "mappings", new BsonDocument {
{ "dynamic", false },
{ "fields", new BsonDocument {
{ "title", new BsonDocument { {"type", "string" } } },
{ "released", new BsonDocument { { "type", "date" } } } } }
} }
};
var indexModel = new CreateSearchIndexModel(
"search_idx",
SearchIndexType.Search,
def
);

다음 예시에서는 CreateSearchIndexModel 인스턴스를 생성하여 vs_idx라는 이름의 인덱스에 대한 사양을 제공합니다. 코드는 임베딩 경로를 plot_embedding으로 지정하고, 1536 차원을 인덱싱하며, "euclidean" 벡터 유사성 함수를 사용합니다.

var def = new BsonDocument
{
{ "fields", new BsonArray
{
new BsonDocument
{
{ "type", "vector" },
{ "path", "plot_embedding" },
{ "numDimensions", 1536 },
{ "similarity", "euclidean" }
}
}
}
};
var indexModel = new CreateSearchIndexModel(
"vs_idx",
SearchIndexType.VectorSearch,
def
);

IMongoCollection 인스턴스 에서 SearchIndexes.CreateOne() 메서드를 호출하여 컬렉션 에 Atlas Search 또는 Vector Search 인덱스 만들 수 있습니다. 이 메서드는 CreateSearchIndexModel 인스턴스 에 지정된 인덱스 모델을 매개 변수로 허용합니다.

다음 예제에서는 embedded_movies collection에 Atlas Search를 생성합니다. 이 코드는 인덱스 이름을 설정하고 동적 매핑을 활성화하는 CreateSearchIndexModel 를 생성합니다. 그런 다음 이 코드는 CreateSearchIndexModel 인스턴스를 SearchIndexes.CreateOne() 메서드에 전달하여 Atlas Search 인덱스를 생성합니다.

var indexModel = new CreateSearchIndexModel(
"example_index",
SearchIndexType.Search,
new BsonDocument {
{ "mappings", new BsonDocument {
{ "dynamic", true },
} }
}
);
var result = movieCollection.SearchIndexes.CreateOne(indexModel);
Console.WriteLine("Created Atlas Search index:\n{0}", result);
Created Atlas Search index:
"example_index"

IMongoCollection 인스턴스 에서 SearchIndexes.CreateMany() 메서드를 호출하여 여러 개의 Atlas Search 및 Vector Search 인덱스를 만들 수 있습니다. 이 메서드는 CreateSearchIndexModel 인스턴스의 IEnumerable 를 매개 변수로 허용합니다.

이 예에서는 다음 조치를 수행합니다.

  1. as_idx이라는 Atlas Search 인덱스 지정하는 CreateSearchIndexModel 인스턴스 를 만듭니다.

  2. vs_idx이라는 Atlas Vector Search 인덱스 지정하는 CreateSearchIndexModel 인스턴스 를 만듭니다.

  3. CreateSearchIndexModel 인스턴스의 ListSearchIndexes.CreateMany() 메서드에 전달합니다.

  4. embedded_movies 컬렉션 에 Atlas Search 및 Vector Search 인덱스를 생성합니다.

var searchModel = new CreateSearchIndexModel(
"as_idx",
SearchIndexType.Search,
new BsonDocument {
{ "mappings", new BsonDocument {
{ "dynamic", true },
} }
}
);
var vectorModel = new CreateSearchIndexModel(
"vs_idx",
SearchIndexType.VectorSearch,
new BsonDocument
{
{ "fields", new BsonArray
{
new BsonDocument
{
{ "type", "vector" },
{ "path", "plot_embedding" },
{ "numDimensions", 1536 },
{ "similarity", "euclidean" }
}
}
}
}
);
var models = new List<CreateSearchIndexModel> { searchModel, vectorModel };
var indexes = movieCollection.SearchIndexes.CreateMany(models);
Console.WriteLine("Created Search indexes:\n{0} {1}", indexes.ToArray());
Created Search indexes:
as_idx vs_idx

컬렉션에서 SearchIndexes.List() 메서드를 호출하여 컬렉션의 기존 Atlas Search 및 Vector Search 인덱스에 대한 정보에 액세스할 수 있습니다.

다음 예시는 이 페이지의 다중 검색 인덱스 생성 섹션에서 생성된 Atlas Search 및 Vector Search 인덱스에 대한 정보에 액세스합니다. 코드는 SearchIndexes.List() 메서드를 호출하고 컬렉션의 Atlas Search 및 Vector Search 인덱스 목록을 출력합니다.

var indexesList = movieCollection.SearchIndexes.List().ToList();
foreach (var i in indexesList)
{
Console.WriteLine(i);
}
{ "id": "...", "name": "as_idx", "status": "READY", "queryable":
true, "latestDefinitionVersion": {...}, "latestDefinition": {
"mappings": { "dynamic": true } }, "statusDetail": [...] }
{ "id": "...", "name": "vs_idx", "type": "vectorSearch", "status":
"READY", "queryable": true, ..., "latestDefinition": { "fields": [{
"type": "vector", "path": "plot_embedding", "numDimensions": 1536,
"similarity": "euclidean" }] }, "statusDetail": [...] }

You can update an Atlas Search or Vector Search index by calling the SearchIndexes.Update() method on an IMongoCollection instance. This method accepts the following parameters:

  • 업데이트할 인덱스의 이름

  • 수정된 인덱스 정의 문서

다음 예는 이 페이지의 다중 검색 인덱스 생성 섹션에서 생성된 vs_index라는 Vector Search 인덱스를 업데이트합니다. 코드는 "dotProduct"를 벡터 유사성 함수로 사용하도록 인덱스에 지시하는 새로운 인덱스 정의 문서를 생성합니다. 그런 다음 SearchIndexes.Update() 메서드를 호출하여 인덱스를 업데이트합니다.

var updatedDef = new BsonDocument
{
{ "fields", new BsonArray
{
new BsonDocument
{
{ "type", "vector" },
{ "path", "plot_embedding" },
{ "numDimensions", 1536 },
{ "similarity", "dotProduct" }
}
}
}
};
movieCollection.SearchIndexes.Update("vs_index", updatedDef);

You can delete an Atlas Search or Vector Search index by calling the SearchIndexes.DropOne() method on an IMongoCollection instance. This method accepts the name of the index to delete as a parameter.

다음 예에서는 이 페이지 의 Atlas Search 인덱스 만들기 섹션에서 생성된 Atlas Search (이)라는 이름의 인덱스를 삭제합니다.example_index 이 코드는 인덱스 이름을 SearchIndexes.DropOne() 메서드에 전달하여 인덱스를 삭제합니다.

movieCollection.SearchIndexes.DropOne("example_index");

To learn about other indexes you can create by using the .NET/C# Driver, see the Indexes guide.

Atlas Search에 대해 자세히 알아보려면 다음 Atlas 설명서를 참조하세요.

Atlas Vector Search에 대해 자세히 알아보려면 다음 Atlas 문서를 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.

돌아가기

Indexes

이 페이지의 내용