개요
이 가이드에서는 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 설명서에서 샘플 데이터 로드 를 참조하세요.
검색 인덱스 모델 만들기
Atlas Search 또는 Vector Search 인덱스 만들려면 먼저 인덱스 사양을 설정하는 CreateSearchIndexModel
인스턴스 빌드 해야 합니다.
CreateSearchIndexModel
에는 다음과 같은 속성이 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 인덱스 정의를 지정합니다. 이 설정을 생략하면 드라이버가 동적 매핑을 사용하여 Atlas Search 인덱스를 생성합니다. |
|
| 인덱스 이름을 설정합니다. 이 설정을 생략하면 운전자 이름을 |
|
| 인덱스 유형을 설정합니다. 이 설정을 생략하면 운전자 기본값 으로 Atlas Search 인덱스 생성합니다. |
Atlas Search 필드 매핑에 대해 자세히 알아보려면 Atlas 설명서에서 필드 매핑 정의 를 참조하세요.
Atlas Vector Search 인덱스 정의에 대해 자세히 학습하려면 Atlas 설명서에서 벡터 검색을 위한 필드를 인덱싱하는 방법 을 참조하세요.
예제 모델
다음 예시 CreateSearchIndexModel
인스턴스 만들어 search_idx
이라는 인덱스 에 대한 사양을 제공합니다. 이 코드는 title
및 released
필드의 정적 매핑을 지정합니다.
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
를 매개 변수로 허용합니다.
예시
이 예에서는 다음 조치를 수행합니다.
as_idx
이라는 Atlas Search 인덱스 지정하는CreateSearchIndexModel
인스턴스 를 만듭니다.vs_idx
이라는 Atlas Vector Search 인덱스 지정하는CreateSearchIndexModel
인스턴스 를 만듭니다.두
CreateSearchIndexModel
인스턴스의List
을SearchIndexes.CreateMany()
메서드에 전달합니다.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": [...] }
검색 인덱스 업데이트
IMongoCollection
인스턴스 에서 SearchIndexes.Update()
메서드를 호출하여 Atlas Search 또는 Vector Search 인덱스 업데이트 할 수 있습니다. 이 메서드는 다음 매개변수를 허용합니다:
업데이트할 인덱스의 이름
수정된 인덱스 정의 문서
예시
다음 예는 이 페이지의 다중 검색 인덱스 생성 섹션에서 생성된 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);
검색 인덱스 삭제
IMongoCollection
인스턴스 에서 SearchIndexes.DropOne()
메서드를 호출하여 Atlas Search 또는 Vector Search 인덱스 삭제 수 있습니다. 이 메서드는 삭제 인덱스 의 이름을 매개 변수로 받습니다.
예시
다음 예에서는 이 페이지 의 Atlas Search 인덱스 만들기 섹션에서 생성된 Atlas Search (이)라는 이름의 인덱스를 삭제합니다.example_index
이 코드는 인덱스 이름을 SearchIndexes.DropOne()
메서드에 전달하여 인덱스를 삭제합니다.
movieCollection.SearchIndexes.DropOne("example_index");
추가 정보
.NET/ C# 드라이버 사용하여 만들 수 있는 다른 인덱스에 대해 학습하려면 인덱스 만들기 및 관리 가이드를 참조하세요.
Atlas Search에 대해 자세히 알아보려면 다음 Atlas 설명서를 참조하세요.
Atlas Vector Search에 대해 자세히 알아보려면 다음 Atlas 문서를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.