MongoDB Atlas search Index Knn 사용방법 ( 비슷한 문서 찾기 )

2023. 6. 8. 08:36it

반응형

비슷한 문서를 찾는 여러가지 방법이 있는데, 그중 뭐 가장 심플한 방식이 knn 분석이다. 다양한 데이터베이스에서 knn 을 지원하고, mongodb도 해당 인덱스가 있는지 찾아보니, 존재한다. 심플한 로직이만, 어디에도 자료가 없어서 정리해보았다. 

 

 

1. altas 메인 페이지 접근

 

 

2. cluster 선택

 

반응형

 

 

3. create Index 에서 json editor 선택

 

728x90

 

 

4. collection 선택 후, 인덱스 생성 

주의 사항 : 필드가 될 컬럼의 차원(Dimensions)의 길이가 인덱스 생성 시, 길이와 동일해야 한다. 

예를 들어, 지도면, 위도 경도 두가지 차원으로 Dimensions에 2를 입력해야 한다.

 

{
  "mappings": {
    "fields": {
      "embedding": [
        {
          "dimensions": 384,
          "similarity": "euclidean",
          "type": "knnVector"
        }
      ]
    }
  }
}

 

5. 마지막으로 인덱스 확인 후 생성

 

 

6. 조회 쿼리

 

db.collection.aggregate(
    [
        {
                "$search": {
                            'index': "인덱스 이름",
                            "knnBeta": {
                                        "vector": [-0.0315272770822048, 0.148079127073288 ....... 0.0039815092459321, -0.0398255027830601],
                                        "path": "embedding( 필드 이름)",
                                        "k": 2 ( knn 의 k 수 ) ,
                                    }
                }
        }
    ]
)

 

반응형