다음을 통해 공유


NoSQL용 Azure Cosmos DB의 하이브리드 검색(미리 보기)

NoSQL용 Azure Cosmos DB는 이제 RRF(상호 순위 퓨전) 함수를 사용하여 벡터 검색과 BM25(전체 텍스트 검색 점수 매기기)를 결합하는 강력한 하이브리드 검색 기능을 지원합니다.

참고 항목

전체 텍스트 및 하이브리드 검색은 초기 미리 보기로 제공되며 현재 모든 지역에서 사용할 수 없습니다.

하이브리드 검색은 벡터 기반 및 기존 키워드 기반 검색 방법의 장점을 활용하여 보다 관련성이 높고 정확한 검색 결과를 제공합니다. 동일한 문서 내에 메타데이터와 벡터를 모두 저장할 수 있기 때문에 Azure Cosmos DB for NoSQL에서 하이브리드 검색을 쉽게 수행할 수 있습니다.

NoSQL용 Azure Cosmos DB의 하이브리드 검색은 두 가지 고유한 검색 방법론을 통합합니다.

  • 벡터 검색: 기계 학습 모델을 활용하여 쿼리 및 문서의 의미 체계적 의미를 이해합니다. 이렇게 하면 보다 미묘하고 컨텍스트 인식 검색 결과가 가능하며, 특히 기존 키워드 검색이 부족할 수 있는 복잡한 쿼리에 유용합니다.
  • 전체 텍스트 검색(BM25): 단어와 용어의 존재 및 빈도에 따라 문서의 점수를 지정하는 잘 설정된 알고리즘입니다. BM25는 특히 간단한 키워드 검색에 효과적이며 검색 관련성에 대한 강력한 기준을 제공합니다.

그런 다음 벡터 검색 및 전체 텍스트 검색의 결과는 RRF(상호 순위 Fusion) 함수를 사용하여 결합됩니다. RRF는 여러 검색 알고리즘의 순위를 병합하여 단일 통합 순위를 생성하는 순위 집계 메서드입니다. 이렇게 하면 최종 검색 결과가 두 검색 방법의 장점을 모두 활용할 수 있으며 여러 가지 이점을 제공합니다.

  • 향상된 관련성: 의미 체계 이해와 키워드 일치를 결합하여 하이브리드 검색은 광범위한 쿼리에 대해 더 관련성 있는 결과를 제공합니다.
  • 정확도 향상: RRF 함수는 두 검색 방법에서 가장 적절한 결과의 우선 순위를 지정합니다.
  • 다용도: RAG(검색 증강 세대)를 비롯한 다양한 사용 사례에 적합하여 사용자 고유의 데이터에 기반을 두는 LLM에서 생성된 응답을 개선합니다.
  1. Azure Cosmos DB for NoSQL 기능에서 벡터 검색을 사용하도록 설정합니다.
  2. NoSQL 미리 보기 기능에 대한 전체 텍스트 및 하이브리드 검색을 사용하도록 설정합니다.
  3. 벡터 정책, 전체 텍스트 정책, 벡터 인덱스 및 전체 텍스트 인덱스가 있는 컨테이너를 만듭니다.
  4. 텍스트 및 벡터 속성을 사용하여 데이터를 삽입합니다.
  5. 데이터에 대해 하이브리드 쿼리를 실행합니다.

Important

현재 벡터 정책 및 벡터 인덱스는 만든 후에 변경할 수 없습니다. 변경하려면 새 컬렉션을 만드세요.

샘플 벡터 정책

{
   "vectorEmbeddings": [
       {
           "path":"/vector",
           "dataType":"float32",
           "distanceFunction":"cosine",
           "dimensions":3
       },

}

샘플 전체 텍스트 정책

{
    "defaultLanguage": "en-US",
    "fullTextPaths": [
        {
            "path": "/text",
            "language": "en-US"
        }
    ]
}

전체 텍스트 및 벡터 인덱스를 모두 사용하는 샘플 인덱싱 정책

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
        {
            "path": "/vector/*"
        }
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        }
    ],
    "vectorIndexes": [
        {
            "path": "/vector",
            "type": "DiskANN"
        }
    ]
}

하이브리드 검색 쿼리

하이브리드 검색 쿼리는 함수와 FullTextScore함수를 모두 VectorDistance 포함하는 절에서 시스템 함수를 ORDER BY RANK 활용하여 RRF 실행할 수 있습니다. 예를 들어 가장 관련성이 가장 큰 상위 k 결과를 찾기 위한 매개 변수가 있는 쿼리는 다음과 같습니다.

SELECT TOP @k *
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, @queryVector), FullTextScore(c.content, [@searchTerm1, @searchTerm2, ...]))

속성의 각 문서에 벡터 포함이 저장된 문서와 속성 c.vector c.text에 포함된 텍스트 데이터가 있다고 가정해 보겠습니다. 하이브리드 검색을 사용하여 가장 관련성이 큰 10개의 문서를 가져오기 위해 쿼리를 다음과 같이 작성할 수 있습니다.

SELECT TOP 10 * 
FROM c
ORDER BY RANK RRF(VectorDistance(c.vector, [1,2,3]), FullTextScore(c.text, ["text", "to", "search", "goes" ,"here])