구절 검색 - Amazon Kendra

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

구절 검색

Retrieve API를 검색 증강 생성(RAG) 시스템의 검색기로 사용할 수 있습니다.

RAG 시스템은 생성형 인공 지능을 사용하여 질문에 답하는 애플리케이션을 구축합니다. RAG 시스템은 검색기와 대규모 언어 모델(LLM)로 구성됩니다. 쿼리가 주어지면 검색기는 문서 모음에서 가장 관련성이 높은 텍스트 청크를 식별하고 이를 LLM에 공급하여 가장 유용한 답변을 제공합니다. 그런 다음 LLM은 관련 텍스트 청크 또는 구절을 분석하고 쿼리에 대한 포괄적인 응답을 생성합니다.

Retrieve API는 구절이라고 하는 텍스트 또는 발췌문을 살펴보고 쿼리와 가장 관련성이 높은 상위 구절을 반환합니다.

Query API와 마찬가지로 Retrieve API도 시맨틱 검색을 사용하여 관련 정보를 검색합니다. 시맨틱 검색은 검색 쿼리의 컨텍스트와 인덱싱된 문서에서 사용 가능한 모든 정보를 고려합니다. 하지만 기본적으로 Query API는 최대 100개 토큰 단어로 구성된 발췌문 구절만 반환합니다. Retrieve API를 사용하면 최대 200개의 토큰 단어로 된 긴 구절과 의미상 관련이 있는 최대 100개의 구절을 검색할 수 있습니다. 여기에는 인덱스의 질문-답변 또는 FAQ 유형 응답은 포함되지 않습니다. 구절은 여러 문서 및 동일한 문서의 여러 부분에서 의미론적으로 추출할 수 있는 텍스트 발췌문입니다. 극단적인 경우 Retrieve API를 사용하여 문서에서 구절이 전혀 생성되지 않는 경우 Query API와 해당 응답 유형을 대신 사용할 수 있습니다.

또한 Retrieve API를 사용하여 다음을 수행할 수 있습니다.

  • 인덱스 수준에서 부스팅을 재정의

  • 문서 필드 또는 속성을 기준으로 필터링

  • 문서에 대한 사용자 또는 그룹의 액세스 권한을 기준으로 필터링

  • 검색된 구절 결과에 대한 신뢰도 점수 버킷을 확인합니다. 신뢰도 버킷은 응답과 쿼리의 관련성을 Amazon Kendra 가 얼마나 확신하는지 나타내는 상대적 순위를 제공합니다.

    참고

    신뢰도 점수 버킷은 현재 영어로만 제공됩니다.

답변에 유용한 추가 정보를 제공할 수 있는 특정 필드를 포함시킬 수도 있습니다.

Retrieve API는 현재 Query API에서 지원하는 모든 기능을 지원하지는 않습니다. 고급 쿼리 구문을 사용한 쿼리, 쿼리에 대한 맞춤법 수정 제안, 패싯, 검색 쿼리 자동 완성을 위한 쿼리 제안, 증분 학습 등의 기능은 지원되지 않습니다. 단, 모든 기능이 API에 적용되는 것은 아닙니다. Retrieve 향후 Retrieve API 릴리스는 이 가이드에 문서화될 예정입니다.

Retrieve API는 인덱스에 설정한 쿼리 용량 단위 수를 공유합니다. 단일 용량 단위에 포함되는 항목 및 인덱스의 기본 용량에 대한 자세한 내용은 용량 조정을 참조하세요.

참고

Amazon Kendra 개발자 에디션을 사용하는 경우 용량을 추가할 수 없으며 Amazon Kendra Enterprise Edition을 사용할 때만 용량을 추가할 수 있습니다. Developer 및 Enterprise Edition에 포함된 내용에 대한 자세한 내용은 Amazon Kendra 에디션을 참조하세요.

다음은 Retrieve API를 사용하여 "how does amazon kendra work?" 쿼리의 인덱스에 있는 문서에서 가장 관련성이 높은 상위 100개 구절을 검색하는 예제입니다.

Python
import boto3 import pprint kendra = boto3.client("kendra") # Provide the index ID index_id = "index-id" # Provide the query text query = "how does amazon kendra work?" # You can retrieve up to 100 relevant passages # You can paginate 100 passages across 10 pages, for example page_size = 10 page_number = 10 result = kendra.retrieve( IndexId = index_id, QueryText = query, PageSize = page_size, PageNumber = page_number) print("\nRetrieved passage results for query: " + query + "\n") for retrieve_result in result["ResultItems"]: print("-------------------") print("Title: " + str(retrieve_result["DocumentTitle"])) print("URI: " + str(retrieve_result["DocumentURI"])) print("Passage content: " + str(retrieve_result["Content"])) print("------------------\n\n")
Java
package com.amazonaws.kendra; import software.amazon.awssdk.services.kendra.KendraClient; import software.amazon.awssdk.services.kendra.model.RetrieveRequest; import software.amazon.awssdk.services.kendra.model.RetrieveResult; import software.amazon.awssdk.services.kendra.model.RetrieveResultItem; public class RetrievePassageExample { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String indxId = "index-id"; String query = "how does amazon kendra work?"; Integer pgSize = 10; Integer pgNumber = 10; RetrieveRequest retrieveRequest = retrieveRequest .builder() .indexId(indxId) .queryText(query) .pageSize(pgSize) .pageNumber(pgNumber) .build(); RetrieveResult retrieveResult = kendra.retrieve(retrieveRequest); System.out.println(String.format("\nRetrieved passage results for query: %s", query)); for(RetrieveResultItem item: retrieveResult.resultItems()) { System.out.println("----------------------"); System.out.println(String.format("Title: %s", documentTitle)); System.out.println(String.format("URI: %s", documentURI)); System.out.println(String.format("Passage content: %s", content)); System.out.println("-----------------------\n"); } } }