Docs Menu
Docs Home
/ / /
PyMongo
/ /

Atlas Search 및 Vector Search 인덱스

이 페이지의 내용

  • 개요
  • 검색 인덱스 만들기
  • 검색 인덱스 나열
  • 검색 인덱스 업데이트
  • 검색 인덱스 삭제

PyMongo 드라이버를 사용하여 Atlas SearchAtlas Vector Search 인덱스를 관리할 수 있습니다. 인덱스는 검색 동작과 인덱싱할 필드를 지정합니다.

Atlas Search 기능을 사용하면 MongoDB Atlas에서 호스팅되는 컬렉션에서 전체 텍스트 검색을 수행할 수 있습니다. Atlas Search 인덱스는 검색 동작과 인덱싱할 필드를 지정합니다.

Atlas Vector Search를 사용하면 MongoDB Atlas에 저장된 벡터 임베딩에 대해 시맨틱 검색을 수행할 수 있습니다. 벡터 검색 인덱스는 쿼리하려는 벡터 임베딩에 대한 인덱스와 데이터를 사전 필터링하는 데 사용할 부울, 날짜, objectId, 숫자, 문자열 또는 UUID 값을 정의합니다.

컬렉션 에서 다음 메서드를 호출하여 Atlas Search 및 Vector Search 인덱스를 관리 있습니다.

  • create_search_index()

  • create_search_indexes()

  • list_search_indexes()

  • update_search_index()

  • drop_search_index()

참고

Atlas 검색 인덱스 관리 방법은 비동기적으로 실행됩니다. 드라이버 메서드는 성공적으로 실행되었는지 확인하기 전에 반환될 수 있습니다. 인덱스의 현재 상태를 확인하려면 list_search_indexes() 메서드를 호출합니다.

다음 섹션에서는 코드 예시를 제공하여 이전의 각 메서드를 사용하는 방법을 보여줍니다.

create_search_index()create_search_indexes() 메서드를 사용하여 Atlas Search 인덱스 또는 Atlas Vector Search 인덱스를 생성할 수 있습니다.

다음 코드 예시에서는 단일 Atlas Search 인덱스를 생성하는 방법을 보여줍니다.

index = {
"definition": {
"mappings": {
"dynamic": True
}
},
"name": "<index name>",
}
collection.create_search_index(index)

다음 코드 예시는 SearchIndexModel 객체를 사용하여 단일 Atlas Vector Search 인덱스를 만드는 방법을 보여줍니다.

from pymongo.operations import SearchIndexModel
search_index_model = SearchIndexModel(
definition={
"fields": [
{
"type": "vector",
"numDimensions": <number of dimensions>,
"path": "<field to index>",
"similarity": "<select from euclidean, cosine, dotProduct>"
}
]
},
name="<index name>",
type="vectorSearch",
)
collection.create_search_index(model=search_index_model)

create_search_indexes() 메서드를 사용하여 여러 인덱스를 만들 수 있습니다. 이러한 인덱스는 Atlas Search 또는 Vector Search 인덱스가 될 수 있습니다. create_search_indexes() 메서드는 생성하려는 각 인덱스에 해당하는 SearchIndexModel 객체 목록을 사용합니다.

다음 코드 예시는 Atlas Search 인덱스와 Atlas Vector Search 인덱스를 만드는 방법을 보여줍니다.

search_idx = SearchIndexModel(
definition ={
"mappings": {
"dynamic": True
}
},
name="my_index",
)
vector_idx = SearchIndexModel(
definition={
"fields": [
{
"type": "vector",
"numDimensions": <number of dimensions>,
"path": "<field to index>",
"similarity": "<select from euclidean, cosine, dotProduct>"
}
]
},
name="my_vector_index",
type="vectorSearch",
)
indexes = [search_idx, vector_idx]
collection.create_search_indexes(models=indexes)

list_search_indexes() 메서드를 사용하여 컬렉션의 Atlas Search 및 Vector Search 인덱스에 대한 정보를 얻을 수 있습니다.

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

results = list(collection.list_search_indexes())
for index in results:
print(index)

update_search_index() 메서드를 사용하여 Atlas Search 또는 Vector Search 인덱스를 업데이트할 수 있습니다.

다음 코드 예시에는 Atlas Search 인덱스를 업데이트하는 방법을 보여줍니다.

new_index_definition = {
"mappings": {
"dynamic": False
}
}
collection.update_search_index("my_index", new_index)

다음 코드 예시에는 Atlas Vector Search 인덱스를 업데이트하는 방법을 보여줍니다.

new_index_definition = {
"fields": [
{
"type": "vector",
"numDimensions": 1536,
"path": "<field to index>",
"similarity": "euclidean"
},
]
}
collection.update_search_index("my_vector_index", new_index_definition)

drop_search_index() 메서드를 사용하여 Atlas Search 또는 Vector Search 인덱스를 제거할 수 있습니다.

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

collection.drop_index("my_index")

돌아가기

멀티키