Azure AI 검색에서 벡터 및 전체 텍스트를 사용한 하이브리드 검색
하이브리드 검색은 검색 가능한 일반 텍스트 콘텐츠와 생성된 포함을 모두 포함하는 검색 인덱스에 대해 실행되는 전체 텍스트 및 벡터 쿼리의 조합입니다. 쿼리 용도의 하이브리드 검색은 다음과 같습니다.
search
및vectors
쿼리 매개 변수를 모두 포함하는 단일 쿼리 요청- 동시에 실행
- 쿼리 응답의 병합된 결과로 RRF(Reciprocal Rank Fusion)을 사용하여 점수가 매겨집니다.
이 문서에서는 하이브리드 검색의 개념, 이점 및 제한 사항을 설명합니다. 하이브리드 검색이 고품질 채팅 스타일 및 Copilot 앱에 어떻게 기여하는지에 대한 설명과 짧은 데모를 보려면 이 포함된 비디오를 시청하세요.
하이브리드 검색은 어떻게 작동하나요?
Azure AI 검색에서는 포함 항목이 포함된 벡터 필드를 텍스트 및 숫자 필드와 함께 사용할 수 있으므로 동시에 실행되는 하이브리드 쿼리를 작성할 수 있습니다. 하이브리드 쿼리는 단일 검색 요청에서 필터링, 패싯, 정렬, 점수 매기기 프로필 및 의미 체계 순위와 같은 기존 기능을 활용할 수 있습니다.
하이브리드 검색은 BM25, HNSW 및 EKNN과 같은 다양한 순위 함수를 사용하는 전체 텍스트 및 벡터 쿼리의 결과를 결합합니다. RRF(Reciprocal Rank Fusion) 알고리즘이 결과를 병합합니다. 쿼리 응답은 RRF를 사용하여 통합 결과의 순위를 지정하는 하나의 결과 집합만 제공합니다.
하이브리드 쿼리의 구조
하이브리드 검색은 일반 텍스트 및 숫자, 지리 공간적 검색을 원하는 경우 지역 좌표, 텍스트 청크의 수학적 표현을 위한 벡터를 비롯한 다양한 데이터 형식의 필드가 포함된 검색 인덱스를 갖는 것에 근거합니다. 자동 완성 및 제안과 같은 순수 텍스트 클라이언트 쪽 상호 작용을 제외하고 Azure AI Search의 거의 모든 쿼리 기능을 벡터 쿼리와 함께 사용할 수 있습니다.
대표적인 하이브리드 쿼리는 다음과 같습니다(벡터 쿼리에 간결성을 위한 자리 표시자 값이 있음).
POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
content-type: application/JSON
{
"count": true,
"search": "historic hotel walk to restaurants and shopping",
"select": "HotelId, HotelName, Category, Description, Address/City, Address/StateProvince",
"filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
"facets": [ "Address/StateProvince"],
"vectors": [
{
"value": [ <array of embeddings> ]
"k": 7,
"fields": "DescriptionVector"
},
{
"value": [ <array of embeddings> ]
"k": 7,
"fields": "Description_frVector"
}
],
"queryType": "semantic",
"queryLanguage": "en-us",
"semanticConfiguration": "my-semantic-config"
}
주요 사항은 다음과 같습니다.
search
는 단일 전체 텍스트 검색 쿼리를 지정합니다.- 여러 벡터 필드를 대상으로 하는 여러 벡터 쿼리의 경우
vectors
입니다. 포함 공간에 다국어 콘텐츠가 포함된 경우 벡터 쿼리는 언어 분석기나 번역이 없어도 일치하는 항목을 찾을 수 있습니다. select
는 결과에서 반환할 필드를 지정합니다. 이 필드는 사람이 읽을 수 있는 텍스트 필드여야 합니다.filters
은 지리 공간 검색이나 기타 포함 및 제외 조건(예: 주차 포함 여부)을 지정할 수 있습니다. 이 예제의 지리 공간 쿼리는 워싱턴 D.C.에서 반경 300km 이내에 있는 호텔을 찾습니다.facets
은 하이브리드 쿼리에서 반환된 결과에 대한 패싯 버킷을 계산하는 데 사용할 수 있습니다.queryType=semantic
는 의미 순위매기기를 호출하여 머신 읽기 이해를 적용해 더욱 관련성이 높은 검색 결과를 표시합니다. 의미 체계 순위는 선택 사항입니다. 해당 기능을 사용하지 않는 경우 하이브리드 쿼리의 마지막 세 줄을 제거합니다.
필터 및 패싯은 전체 텍스트 검색에 사용되는 반전된 인덱스 및 벡터 검색에 사용되는 벡터 인덱스와 구별되는 인덱스 내의 데이터 구조를 대상으로 합니다. 따라서 필터 및 패싯 작업이 실행되면 검색 엔진은 작업 결과를 응답의 하이브리드 검색 결과에 적용할 수 있습니다.
쿼리에 orderby
이 없다는 점에 유의하세요. 명시적 정렬 순서는 관련 순위 결과를 재정의하므로 유사성과 BM25 관련성을 원하는 경우 쿼리에서 정렬을 생략하세요.
위 쿼리의 응답은 다음과 같을 수 있습니다.
{
"@odata.count": 3,
"@search.facets": {
"Address/StateProvince": [
{
"count": 1,
"value": "NY"
},
{
"count": 1,
"value": "VA"
}
]
},
"value": [
{
"@search.score": 0.03333333507180214,
"@search.rerankerScore": 2.5229012966156006,
"HotelId": "49",
"HotelName": "Old Carrabelle Hotel",
"Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
"Category": "Luxury",
"Address": {
"City": "Arlington",
"StateProvince": "VA"
}
},
{
"@search.score": 0.032522473484277725,
"@search.rerankerScore": 2.111117362976074,
"HotelId": "48",
"HotelName": "Nordick's Motel",
"Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
"Category": "Boutique",
"Address": {
"City": "Washington D.C.",
"StateProvince": null
}
}
]
}
하이브리드 검색을 선택하는 이유는 무엇인가요?
하이브리드 검색은 벡터 검색과 키워드 검색의 장점을 결합한 것입니다. 벡터 검색의 장점은 반전된 인덱스에 일치하는 키워드가 없더라도 검색 쿼리와 개념적으로 유사한 정보를 찾는 것입니다. 키워드 또는 전체 텍스트 검색의 장점은 전체 자릿수이며, 초기 결과의 품질을 향상시키는 선택적 의미 체계 순위를 적용할 수 있습니다. 제품 코드, 고도로 특수화된 전문 용어, 날짜 및 사용자 이름에 대한 쿼리와 같은 일부 시나리오는 정확한 일치 항목을 식별할 수 있기 때문에 키워드 검색을 통해 더 나은 성능을 발휘할 수 있습니다.
실제 데이터 세트와 벤치마크 데이터 세트에 대한 벤치마크 테스트는 의미 순위매기기가 있는 하이브리드 검색이 검색 관련성에 상당한 이점을 제공한다는 것을 나타냅니다.
다음 비디오에서는 하이브리드 검색을 통해 유용한 AI 응답을 생성하기 위한 최적의 접지 데이터를 제공하는 방법을 설명합니다.