개요
이 가이드에서는 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
에는 다음과 같은 속성이 있습니다.
속성 | 유형 | 설명 |
---|---|---|
|
| 인덱스 정의를 지정합니다. 이 설정을 생략하면 드라이버가 동적 매핑을 사용하여 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": [...] }
검색 인덱스 업데이트
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 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.