HTML에 대한 표 형식 검색
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 인덱스 유형을 참조하세요.
Amazon Kendra의 표 검색 기능은 HTML 문서에 포함된 표에서 답변을 검색하고 추출할 수 있습니다. 인덱스를 검색할 때 쿼리와 관련이 있는 경우 Amazon Kendra는 표에서 발췌한 내용을 포함하고 유용한 정보를 제공합니다.
Amazon Kendra는 표의 유용한 정보를 포함하여 문서 본문 텍스트 내의 모든 정보를 살펴봅니다. 예를 들어, 인덱스에는 운영 비용, 수입 및 기타 재무 정보에 대한 표가 포함된 비즈니스 보고서가 포함됩니다. “2020-2022년의 연간 운영 비용은 얼마입니까?”라는 쿼리의 경우, Amazon Kendra는 관련된 표 열 “운영(백만 달러)" 및 “회계 연도”와 2020년, 2021년, 2022년의 수입 값이 포함된 표의 행을 포함하는 표의 발췌문을 반환할 수 있습니다. 이 표 발췌문은 문서 제목, 전체 문서 링크 및 포함하려는 기타 문서 필드와 함께 결과에 포함됩니다.
정보가 표의 한 셀에 있든 여러 셀에 있든 상관없이 검색 결과에 표 발췌문을 표시할 수 있습니다. 예를 들어, Amazon Kendra는 다음과 같은 각 쿼리에 맞게 조정된 표 발췌문을 표시할 수 있습니다.
Amazon Kendra는 쿼리와 가장 관련이 있는 표 셀을 강조 표시합니다. 가장 관련성이 높은 셀과 해당 행, 열, 열 이름이 검색 결과에 표시됩니다. 표 발췌문에는 쿼리와 관련된 표의 셀 수와 원본 표에서 사용할 수 있는 열 수에 따라 최대 5개의 열과 3개의 행이 표시됩니다. 표 발췌문에는 가장 관련성이 높은 상위 셀이 다음으로 가장 관련성이 높은 셀과 함께 표시됩니다.
응답에는 표 답변이 쿼리와 얼마나 관련이 있는지를 보여주는 신뢰도 버킷(MEDIUM, HIGH, VERY_HIGH)이 포함됩니다. 표의 셀 값이 신뢰도 VERY_HIGH인 경우, 해당 값이 '상위 답변'이 되어 강조 표시됩니다. 신뢰도가 HIGH인 표 셀 값의 경우 해당 값이 강조 표시됩니다. 신뢰도가 MEDIUM인 표 셀 값의 경우 해당 값이 강조 표시되지 않습니다. 표 답변에 대한 전체 신뢰도가 응답에 반환됩니다. 예를 들어, 표에 대부분 HIGH 신뢰도인 표 셀이 포함된 경우, 표 답변에 대한 응답에 반환된 전체 신뢰도는 HIGH 신뢰도입니다.
기본적으로 표에는 문서의 다른 구성 요소보다 더 높은 중요도나 가중치가 부여되지 않습니다. 문서 내에서 표가 쿼리와 약간만 관련성이 있지만 관련성이 높은 단락이 있는 경우 Amazon Kendra가 해당 단락의 일부를 반환합니다. 검색 결과에는 동일한 문서나 다른 문서에서 가능한 최선의 답변과 가장 유용한 정보를 제공하는 콘텐츠가 표시됩니다. 표에 대한 신뢰도가 신뢰도 MEDIUM 밑으로 떨어지면 표 발췌문은 응답에 반환되지 않습니다.
기존 인덱스에서 표 형식 검색을 사용하려면 콘텐츠를 다시 인덱싱해야 합니다.
Amazon Kendra 표 형식 검색은 동의어(사용자 지정 동의어 포함)를 지원합니다. Amazon Kendra는 표 태그 내에 HTML 표가 있는 영어 문서만 지원합니다.
다음 예제는 쿼리 결과에 포함된 표 발췌문을 보여줍니다. 표 발췌문을 비롯한 쿼리 응답이 포함된 샘플 JSON을 보려면 쿼리 응답 및 유형을 참조하세요.
- Python
-
import boto3
import pprint
kendra = boto3.client("kendra")
# Provide the index ID
index_id = <index-id>
# Provide the query text
query = "search string"
response = kendra.query(
QueryText = query,
IndexId = index_id)
print("\nSearch results for query: " + query + "\n")
for query_result in response["ResultItems"]:
print("-------------------")
print("Type: " + str(query_result["Type"]))
print("Type: " + str(query_result["Format"]))
if query_result["Type"]=="ANSWER" and query_result["Format"]=="TABLE":
answer_table = query_result["TableExcerpt"]
print(answer_table)
if query_result["Type"]=="ANSWER" and query_result["Format"]=="TEXT":
answer_text = query_result["DocumentExcerpt"]
print(answer_text)
if query_result["Type"]=="QUESTION_ANSWER":
question_answer_text = query_result["DocumentExcerpt"]["Text"]
print(question_answer_text)
if query_result["Type"]=="DOCUMENT":
if "DocumentTitle" in query_result:
document_title = query_result["DocumentTitle"]["Text"]
print("Title: " + document_title)
document_text = query_result["DocumentExcerpt"]["Text"]
print(document_text)
print("------------------\n\n")
- Java
-
package com.amazonaws.kendra;
import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.QueryRequest;
import software.amazon.awssdk.services.kendra.model.QueryResponse;
import software.amazon.awssdk.services.kendra.model.QueryResultItem;
public class SearchIndexExample {
public static void main(String[] args) {
KendraClient kendra = KendraClient.builder().build();
String query = "search string";
String indexId = "index-id";
QueryRequest queryRequest = QueryRequest
.builder()
.queryText(query)
.indexId(indexId)
.build();
QueryResponse queryResponse = kendra.query(queryRequest);
System.out.println(String.format("\nSearch results for query: %s", query));
for(QueryResultItem item: queryResponse.resultItems()) {
System.out.println("----------------------");
System.out.println(String.format("Type: %s", item.type()));
System.out.println(String.format("Format: %s", item.format()));
switch(item.format()) {
case TABLE:
String answerTable = item.TableExcerpt();
System.out.println(answerTable);
break;
}
switch(item.format()) {
case TEXT:
String answerText = item.DocumentExcerpt();
System.out.println(answerText);
break;
}
switch(item.type()) {
case QUESTION_ANSWER:
String questionAnswerText = item.documentExcerpt().text();
System.out.println(questionAnswerText);
break;
case DOCUMENT:
String documentTitle = item.documentTitle().text();
System.out.println(String.format("Title: %s", documentTitle));
String documentExcerpt = item.documentExcerpt().text();
System.out.println(String.format("Excerpt: %s", documentExcerpt));
break;
default:
System.out.println(String.format("Unknown query result type: %s", item.type()));
}
System.out.println("-----------------------\n");
}
}
}