

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

# Amazon Bedrock Knowledge Bases를 사용하여 데이터 검색 및 AI 응답 생성
<a name="knowledge-base"></a>

파운데이션 모델에는 일반적인 지식이 있지만 검색 증강 생성(RAG)을 사용하여 응답을 더욱 개선할 수 있습니다. RAG는 데이터 소스의 정보를 사용하여 생성된 응답의 관련성과 정확도를 개선하는 기법입니다. Amazon Bedrock Knowledge Bases를 사용하면 독점 정보를 생성형 AI 애플리케이션에 통합할 수 있습니다. 쿼리가 생성되면 지식 기반이 데이터를 검색하여 쿼리에 답변할 관련 정보를 찾습니다. 그런 다음 검색된 정보를 사용하여 생성된 응답을 개선할 수 있습니다. Amazon Bedrock Knowledge Bases의 기능을 사용하여 자체 RAG 기반 애플리케이션을 구축할 수 있습니다.

Amazon Bedrock Knowledge Bases를 사용하면 다음을 수행할 수 있습니다.
+ 데이터 소스에서 관련 정보를 반환하여 사용자 쿼리에 응답합니다.
+ 데이터 소스에서 가져온 정보를 사용하여 사용자 쿼리에 대한 정확하고 관련성 있는 응답을 생성할 수 있습니다.
+ 반환된 관련 정보를 프롬프트에 제공하여 자체 프롬프트를 보강합니다.
+ 원본 데이터 소스를 참조하고 정확도를 확인할 수 있도록 생성된 응답에 인용을 포함합니다.
+ 쿼리에 대한 응답에서 이미지를 추출하고 검색할 수 있는 방대한 시각적 리소스가 포함된 문서를 포함합니다. 검색된 데이터를 기반으로 응답을 생성하면 모델은 이러한 이미지를 기반으로 추가 인사이트를 제공할 수 있습니다.
+ 이미지를 쿼리로 사용하여 검색하여 시각적으로 유사한 콘텐츠를 찾거나, 멀티모달 임베딩 모델을 사용하여 보다 정확한 결과를 얻기 위해 텍스트와 이미지를 쿼리로 결합합니다.
+ 자연어를 구조화된 데이터베이스에 맞게 사용자 지정된 쿼리(예: SQL 쿼리)로 변환합니다. 이러한 쿼리는 구조화된 데이터 스토어에서 데이터를 검색하는 데 사용됩니다.
+ 데이터 소스를 업데이트하고 변경 사항을 지식 기반에 직접 수집하여 즉시 액세스할 수 있도록 합니다.
+ 순위 조정 모델을 사용하여 데이터 소스에서 검색되는 결과에 영향을 줍니다.
+ [Amazon Bedrock Agents](agents.md) 워크플로에 지식 기반을 포함합니다.

지식 기반을 설정하려면 다음 일반 단계를 완료해야 합니다.

1. (선택 사항) 지식 기반을 비정형 데이터 소스에 연결하는 경우, 데이터의 벡터 임베딩 표현을 인덱싱할 수 있는 [지원되는 벡터 스토어](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)를 직접 설정합니다. Amazon Bedrock 콘솔을 사용하여 Amazon OpenSearch Serverless 벡터 스토어를 생성할 계획이라면 이 단계는 건너뛸 수 있습니다.

1. 지식 기반을 비정형 또는 정형 데이터 소스에 연결합니다.

1. 지식 기반으로 데이터 소스를 동기화합니다.

1. 애플리케이션 또는 에이전트를 설정하려면 다음을 수행합니다.
   + 지식 기반을 쿼리하고 관련 소스를 반환합니다.
   + 지식 기반을 쿼리하고 검색된 결과를 기반으로 자연어 응답을 생성합니다.
   + (정형 데이터 스토어에 연결된 지식 기반을 쿼리하는 경우) 쿼리를 정형 데이터 언어별 쿼리(예: SQL 쿼리)로 변환합니다.

**Topics**
+ [지식 기반 작동 방식](kb-how-it-works.md)
+ [지원되는 모델 및 리전](knowledge-base-supported.md)
+ [설정 없이 문서와의 채팅](knowledge-base-chatdoc.md)
+ [지식 기반을 생성 및 관리할 수 있는 권한 설정](knowledge-base-prereq-permissions-general.md)
+ [데이터 소스에 연결하여 지식 기반 빌드](knowledge-base-build.md)
+ [멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md)
+ [구조화된 데이터 스토어에 연결하여 지식 기반 빌드](knowledge-base-build-structured.md)
+ [Amazon Kendra GenAI 인덱스를 사용하여 지식 기반 구축](knowledge-base-build-kendra-genai-index.md)
+ [Amazon Neptune Analytics 그래프를 사용하여 지식 기반 구축](knowledge-base-build-graphs.md)
+ [쿼리 및 응답을 사용하여 지식 기반 테스트](knowledge-base-test.md)
+ [애플리케이션을 위한 지식 기반 배포](knowledge-base-deploy.md)
+ [지식 기반과 관련된 정보 확인](kb-info.md)
+ [지식 기반 수정](kb-update.md)
+ [지식 기반 삭제](kb-delete.md)

# Amazon Bedrock Knowledge Bases 작동 방식
<a name="kb-how-it-works"></a>

Amazon Bedrock Knowledge Bases는 데이터 저장소에서 정보를 가져와 대규모 언어 모델(LLM)에서 생성된 응답을 보강하는 것으로 널리 사용되는 기술인 검색 증강 생성(RAG)을 활용할 수 있도록 도와줍니다. 데이터 소스로 지식 기반을 설정하면 애플리케이션에서 지식 기반을 쿼리하여 소스에서 직접 인용하거나 쿼리 결과에서 생성된 자연스러운 응답으로 쿼리에 답하는 정보를 반환할 수 있습니다.

Amazon Bedrock Knowledge Bases를 사용하면 지식 기반을 쿼리하여 검색한 컨텍스트를 통해 보강된 애플리케이션을 구축할 수 있습니다. 복잡한 구축 파이프라인을 축약하고 바로 사용할 수 있는 RAG 솔루션을 제공하여 애플리케이션 빌드 시간을 단축함으로써 출시 시간을 단축할 수 있습니다. 지식 기반을 추가하면 프라이빗 데이터를 활용하기 위해 모델을 지속적으로 학습시킬 필요가 없으므로 비용 효율성도 향상됩니다.

다음 다이어그램은 RAG가 수행되는 방식을 개략적으로 보여 줍니다. 지식 기반은 이 프로세스의 여러 단계를 자동화하여 RAG의 설정 및 구현을 간소화합니다.

**비정형 데이터 사전 처리**

구조화된 프라이빗 데이터(구조화된 데이터 스토어에 존재하지 않는 데이터)에서 효과적으로 검색할 수 있도록 하기 위한 일반적인 방법은 데이터를 텍스트로 변환하고 이를 관리 가능한 청크로 분할하는 것입니다. 그런 다음 청크는 원본 문서와의 매핑을 유지하면서 임베딩으로 변환되고 벡터 인덱스에 작성됩니다. 이러한 임베딩은 데이터 소스의 쿼리와 텍스트 간의 시맨틱 유사성을 결정하는 데 사용됩니다. 아래 이미지에서는 벡터 데이터베이스의 데이터 사전 처리 과정을 보여줍니다.

![\[검색 증강 생성을 위한 데이터 사전 처리\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/rag-preprocess.png)


벡터 임베딩은 각 텍스트 청크를 나타내는 일련의 숫자입니다. 모델은 각 텍스트 청크를 벡터라고 하는 일련의 숫자로 변환하므로 텍스트를 수학적으로 비교할 수 있습니다. 이러한 벡터는 부동 소수점 숫자(float32) 또는 바이너리 숫자일 수 있습니다. Amazon Bedrock에서 지원하는 대부분의 임베딩 모델은 기본적으로 부동 소수점 벡터를 사용합니다. 그러나 일부 모델은 바이너리 벡터를 지원합니다. 바이너리 임베딩 모델을 선택하는 경우 바이너리 벡터를 지원하는 모델 및 벡터 스토어도 선택해야 합니다.

차원당 1비트만 사용하는 이진 벡터는 차원당 32비트를 사용하는 부동 소수점(float32) 벡터만큼 스토리지 비용이 많이 들지 않습니다. 그러나 이진 벡터는 텍스트 표현에서 부동 소수점 벡터만큼 정확하지 않습니다.

다음 예제에서는 텍스트 조각을 세 가지 표현으로 보여줍니다.


****  

| 표시 | 값 | 
| --- | --- | 
| 텍스트 | “Amazon Bedrock은 선도적인 AI 회사 및 Amazon의 고성능 파운데이션 모델을 사용합니다.” | 
| 부동 소수점 벡터 | [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...] | 
| 이진 벡터 | [1,1,0,0,0, ...] | 

**런타임 실행**

런타임 시 임베딩 모델을 사용하여 사용자 쿼리를 벡터로 변환합니다. 그런 다음, 벡터 인덱스를 쿼리하여 문서 벡터와 사용자 쿼리 벡터를 비교하는 방식으로 사용자 쿼리와 의미상 유사한 문서를 찾습니다. 마지막 단계에서는 벡터 인덱스에서 검색된 청크의 추가 컨텍스트를 사용하여 사용자 프롬프트를 증강합니다. 그런 다음 추가 컨텍스트와 함께 프롬프트가 모델로 전송되어 사용자를 위한 응답을 생성합니다. 아래 이미지에서는 RAG가 런타임 시 어떤 방식으로 작동하여 사용자 쿼리에 대한 응답을 증강하는지 보여줍니다.

![\[런타임 시 검색 증강 생성\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/rag-runtime.png)


데이터를 지식 기반으로 전환하는 방법, 지식 기반을 설정한 후 쿼리하는 방법, 수집 중에 데이터 소스에 적용할 수 있는 사용자 지정에 대해 자세히 알아보려면 다음 주제를 참조하세요.

**Topics**
+ [데이터를 지식 기반으로 전환](kb-how-data.md)
+ [Amazon Bedrock Knowledge Bases를 사용하여 데이터 소스에서 정보 검색](kb-how-retrieval.md)
+ [지식 기반 사용자 지정](kb-how-customization.md)

# 데이터를 지식 기반으로 전환
<a name="kb-how-data"></a>

지식 기반을 생성하려면 지식 기반이 액세스할 수 있도록 하려는 지원되는 데이터 소스에 연결합니다. 지식 기반은 사용자 쿼리에 응답하거나 검색된 데이터를 기반으로 응답을 생성할 수 있습니다.

 Amazon Bedrock Knowledge Bases는 테이블, 차트, 다이어그램 및 기타 이미지가 포함된 텍스트, 이미지 또는 멀티모달 문서를 비롯한 다양한 문서를 지원합니다. *멀티모달* 데이터는 텍스트와 시각적 데이터의 조합을 나타냅니다. 비정형 데이터가 포함된 파일 유형의 예로는 텍스트, 마크다운, HTML 및 PDF가 있습니다.

다음 섹션에서는 Amazon Bedrock Knowledge Bases가 지원하는 데이터 유형과 각 데이터 유형에 대해 지식 기반을 연결할 수 있는 서비스에 대해 설명합니다.

## 비정형 데이터
<a name="kb-how-unstructured"></a>

비정형 데이터는 사전 정의된 구조로 강제되지 않는 데이터를 말합니다. Amazon Bedrock Knowledge Bases는 다음 서비스에 연결하여 지식 기반에 비정형 데이터를 추가할 수 있도록 지원합니다.
+ Amazon S3
+ Confluence(미리 보기)
+ Microsoft SharePoint(미리 보기)
+ Salesforce(미리 보기)
+ Web Crawler(미리 보기)
+ 사용자 지정 데이터 소스(동기화할 필요 없이 데이터를 지식 기반으로 직접 수집할 수 있음)

데이터 소스에는 문서의 원시 형식이 포함됩니다. 쿼리 프로세스를 최적화하기 위해 지식 기반은 원시 데이터를 데이터의 수치 표현인 *벡터 임베딩*으로 변환하여 벡터 임베딩으로도 변환되는 쿼리와의 유사성을 정량화합니다. Amazon Bedrock Knowledge Bases는 데이터 소스를 변환하는 과정에서 다음 리소스를 사용합니다.
+ 임베딩 모델 - 데이터를 벡터 임베딩으로 변환하는 파운데이션 모델입니다. 텍스트와 이미지를 모두 포함하는 멀티모달 데이터의 경우 Amazon Titan Multimodal Embeddings G1 또는 Cohere Embed v3와 같은 멀티모달 임베딩 모델을 사용할 수 있습니다.
+ 벡터 스토어 - 데이터의 벡터 표현을 저장하는 서비스입니다. 다음 벡터 스토어가 지원됩니다.
  + Amazon OpenSearch Serverless
  + Amazon Neptune
  + Amazon Aurora(RDS)
  + Pinecone
  + Redis Enterprise Cloud
  + MongoDB 아틀라스

데이터를 벡터 임베딩으로 변환하는 프로세스를 *수집*이라고 합니다. 데이터를 지식 기반으로 전환하는 수집 프로세스에는 다음 단계가 포함됩니다.

**수집**

1. 데이터는 선택한 구문 분석기에 의해 구문 분석됩니다. 구문 분석에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.

1. 데이터 소스의 각 문서는 토큰 수 및 기타 파라미터로 정의할 수 있는 데이터의 하위 분할인 *청크*로 분할됩니다. 청킹에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.

1. 선택한 임베딩 모델은 데이터를 벡터 임베딩으로 변환합니다. 멀티모달 콘텐츠의 경우 이미지는 시각적 벡터로 포함되고 텍스트는 텍스트 벡터로 포함되므로 두 모달 모두에서 검색할 수 있습니다.

1. 벡터 임베딩은 선택한 벡터 스토어의 벡터 인덱스에 기록됩니다.

수집 프로세스가 완료되면 지식 기반을 쿼리할 준비가 된 것입니다. 지식 기반에서 정보를 쿼리하고 검색하는 방법에 대한 자세한 내용은 [Amazon Bedrock Knowledge Bases를 사용하여 데이터 소스에서 정보 검색](kb-how-retrieval.md) 섹션을 참조하세요.

데이터 소스를 변경하는 경우 추가, 수정 및 삭제에 대한 변경 사항을 지식 기반에 동기화해야 합니다. 일부 데이터 소스는 지식 기반으로 파일을 직접 수집하거나 삭제할 수 있도록 지원하므로 데이터 소스 수정 및 수집을 별도의 단계로 처리하고 항상 전체 동기화를 수행할 필요가 없습니다. 문서를 지식 기반 및 이를 지원하는 데이터 소스에 직접 수집하는 방법을 알아보려면 [변경 사항을 지식 기반에 직접 수집](kb-direct-ingestion.md) 섹션을 참조하세요.

Amazon Bedrock Knowledge Bases는 데이터 수집 방식을 사용자 지정하는 다양한 옵션을 제공합니다. 이 프로세스의 사용자 지정에 대한 자세한 내용은 [지식 기반 사용자 지정](kb-how-customization.md) 섹션을 참조하세요.

## 구조화된 데이터
<a name="kb-how-structured"></a>

구조화된 데이터는 존재하는 데이터 스토어에 의해 사전 정의된 형식의 테이블 형식 데이터를 나타냅니다. Amazon Bedrock Knowledge Bases는 Amazon Redshift 쿼리 엔진을 통해 지원되는 구조화된 데이터 스토어에 연결됩니다. Amazon Bedrock Knowledge Bases는 쿼리 패턴, 쿼리 기록 및 스키마 메타데이터를 분석하여 자연어 쿼리를 SQL 쿼리로 변환하는 완전관리형 메커니즘을 제공합니다. 이렇게 변환된 쿼리는 지원되는 데이터 소스에서 관련 정보를 검색하는 데 사용됩니다.

Amazon Bedrock Knowledge Bases는 다음 서비스에 연결하여 지식 기반에 구조화된 데이터 스토어를 추가할 수 있도록 지원합니다.
+ Amazon Redshift
+ AWS Glue Data Catalog(AWS Lake Formation)

지식 기반을 구조화된 데이터 스토어에 연결하는 경우 데이터를 벡터 임베딩으로 변환할 필요가 없습니다. 대신 Amazon Bedrock Knowledge Bases는 구조화된 데이터 스토어를 직접 쿼리할 수 있습니다. 쿼리 중에 Amazon Bedrock Knowledge Bases는 사용자 쿼리를 SQL 쿼리로 변환하여 사용자 쿼리와 관련된 데이터를 검색하고 더 정확한 응답을 생성할 수 있습니다. 데이터를 검색하지 않고 SQL 쿼리를 생성하고 다른 워크플로에서 사용할 수도 있습니다.

예를 들어 데이터베이스 리포지토리에는 고객 및 구매에 대한 정보가 포함된 다음 테이블이 포함되어 있습니다.


****  

| 고객 ID | 2020년에 구매한 금액 | 2021년에 구매한 금액 | 2022년에 구매한 금액 | 현재까지 구매한 총 금액 | 
| --- | --- | --- | --- | --- | 
| 1 | 200 | 300 | 500 | 1000 | 
| 2 | 150 | 100 | 120 | 370 | 
| 3 | 300 | 300 | 300 | 900 | 
| 4 | 720 | 180 | 100 | 900 | 
| 5 | 500 | 400 | 100 | 1000 | 
| 6 | 900 | 800 | 1000 | 2700 | 
| 7 | 470 | 420 | 400 | 1290 | 
| 8 | 250 | 280 | 250 | 780 | 
| 9 | 620 | 830 | 740 | 2190 | 
| 10 | 300 | 200 | 300 | 800 | 

사용자 쿼리에 "상위 5개 지출 고객에 대한 요약 제공"이라고 표시되면 지식 기반에서 다음을 수행할 수 있습니다.
+ 쿼리를 SQL 쿼리로 변환합니다.
+ 테이블에서 다음을 포함하는 발췌문을 반환합니다.
  + 관련 테이블 열 "고객 ID" 및 "현재까지 총 구매 금액"
  + 지출이 가장 많은 고객 10명의 총 구매 금액이 포함된 테이블 행
+ 어떤 고객이 상위 5개 지출 고객이고 얼마나 많이 구매했는지를 설명하는 응답을 생성합니다.

지식 기반이 테이블 발췌문을 생성할 수 있는 쿼리의 다른 예는 다음과 같습니다.
+ “2020년 지출 기준 상위 5개 고객”
+ "2020년 구매 금액별 상위 고객"
+ “2020-2022의 구매 금액별 상위 5개 고객”
+ “2020-2022년 지출이 가장 많은 상위 5개 고객”
+ “총 구매 금액이 \$110 미만인 고객”
+ "최저 지출 고객 5명"

쿼리가 더 구체적이거나 세부적일수록 지식 기반에서 반환할 정확한 정보의 범위를 좁힐 수 있습니다. 예를 들어 쿼리 "2020년 지출 기준 상위 10개 고객" 대신에 보다 구체적인 쿼리는 "2020년 현재까지 고객의 총 구매 금액 중 가장 높은 10개를 찾습니다"입니다. 특정 쿼리는 고객 지출 데이터베이스 테이블의 열 이름 "총 구매 금액 종료 날짜"를 참조하며 데이터를 "가장 높음"으로 정렬해야 함을 나타냅니다.

# Amazon Bedrock Knowledge Bases를 사용하여 데이터 소스에서 정보 검색
<a name="kb-how-retrieval"></a>

지식 기반을 설정한 후 애플리케이션을 설정하여 해당 지식 기반의 데이터 소스를 쿼리할 수 있습니다. 지식 기반을 쿼리하려면 다음 API 작업을 활용할 수 있습니다.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) - 쿼리와 가장 관련성이 높은 데이터에서 소스 청크 또는 이미지를 검색하고 응답에서 이를 배열로 반환합니다.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) - Amazon Bedrock의 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 작업과 `Retrieve`를 조인하여 쿼리와 가장 관련성이 높은 데이터에서 소스 청크를 검색하고 자연어 응답을 생성합니다. 데이터의 특정 소스 청크에 대한 인용을 포함합니다. 데이터 소스에 시각적 요소가 포함된 경우 모델은 텍스트 응답을 생성할 때 이러한 이미지의 인사이트를 활용하고 이미지에 대한 소스 속성을 제공합니다.
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) - 자연어 사용자 쿼리를 구조화된 데이터 스토어에 적합한 형식의 쿼리로 변환합니다.

`RetrieveAndGenerate` 작업은 기본적으로 `GenerateQuery`(지식 기반이 구조화된 데이터 스토어에 연결된 경우) `Retrieve` 및 `InvokeModel`을 사용하여 전체 RAG 프로세스를 수행하는 결합된 작업입니다. Amazon Bedrock Knowledge Bases는 `Retrieve` 작업에 대한 액세스 권한도 제공하므로 RAG의 단계를 분리하여 특정 사용 사례에 맞게 사용자 지정할 수 있는 유연성이 있습니다.

`Retrieve` 또는 `RetrieveAndGenerate`를 사용할 때 [순위 변경 모델](rerank.md)을 사용하여 쿼리 중에 검색된 문서의 관련성 순위를 다시 매길 수도 있습니다.

지식 기반을 쿼리할 때 이러한 API 작업을 사용하는 방법을 알아보려면 [쿼리 및 응답을 사용하여 지식 기반 테스트](knowledge-base-test.md) 섹션을 참조하세요.

# 지식 기반 사용자 지정
<a name="kb-how-customization"></a>

Amazon Bedrock Knowledge Bases는 데이터 소스가 지식 기반으로 처리되는 방식을 사용자 지정하여 데이터를 저장, 구문 분석 및 최종 사용자에게 반환하는 방법에 유연성을 제공하는 옵션을 제공합니다. 지식 기반을 설정하는 동안 고려할 수 있는 사용자 지정 옵션에 대해 자세히 알아보려면 다음 주제 중 하나를 선택합니다.

**Topics**
+ [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md)
+ [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md)
+ [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md)
+ [데이터 소스에 메타데이터를 포함하여 지식 기반 쿼리 개선](kb-metadata.md)

# 지식 기반에서 콘텐츠 청킹 작동 방식
<a name="kb-chunking"></a>

데이터를 수집할 때 Amazon Bedrock은 먼저 효율적인 데이터 검색을 위해 문서 또는 콘텐츠를 관리 가능한 청크로 분할합니다. 그런 다음 청크는 원본 문서와의 매핑을 유지하면서 임베딩으로 변환되고 벡터 인덱스(데이터의 벡터 표현)에 작성됩니다. 벡터 임베딩을 사용하면 텍스트를 양적으로 비교할 수 있습니다.

**Topics**
+ [표준 청킹](#kb-standard-chunking)
+ [계층적 청킹](#kb-hiearchical-chunking)
+ [시맨틱 청킹](#kb-semantic-chunking)
+ [멀티모달 콘텐츠 청킹](#kb-multimodal-chunking)

## 표준 청킹
<a name="kb-standard-chunking"></a>

Amazon Bedrock은 청킹에 대해 다음과 같은 표준 접근 방식을 지원합니다.

**참고**  
텍스트 청킹 전략은 텍스트 문서에만 적용됩니다. 멀티모달 콘텐츠(오디오, 비디오, 이미지)의 경우 청킹은 이러한 텍스트 기반 전략이 아닌 임베딩 모델 수준에서 발생합니다.
+ 고정 크기 청킹: 청크당 토큰 수와 중복 비율을 지정하여 원하는 청크 크기를 구성할 수 있으므로 특정 요구 사항에 맞는 유연한 조정이 가능합니다. 청크당 초과할 수 없는 최대 토큰 수와 연속된 청크 간의 오버랩 비율을 설정할 수 있습니다.
**참고**  
구문 분석된 콘텐츠(예: 고급 구문 분석기를 사용하거나 HTML에서 변환된 콘텐츠)의 경우 Amazon Bedrock 지식 기반은 최상의 결과를 위해 콘텐츠를 청크하여 최적화할 수 있습니다. 청커는 논리적 문서 경계(예: 페이지 또는 섹션)를 존중하며 최대 토큰 크기를 늘리면 더 큰 청크가 허용되더라도 이러한 경계를 넘어 콘텐츠를 병합하지 않습니다.
+ 기본 청킹: 콘텐츠를 약 300개의 토큰으로 구성된 텍스트 청크로 분할합니다. 청킹 프로세스는 문장 경계를 고려하여 각 청크 내에 완전한 문장이 유지되도록 합니다.

문서에 대해 청킹 없음을 선택할 수도 있습니다. 그러면 각 문서가 단일 텍스트 청크로 처리됩니다. 청킹 접근 방식/전략으로 청킹 없음을 선택하려면 먼저 문서를 별도의 파일로 분할하여 사전 처리하는 것이 좋습니다. 문서에 청킹을 선택하지 않으면 인용에서 페이지 번호를 보거나 *x-amz-bedrock-kb-document-page-number* 메타데이터 필드/속성을 기준으로 필터링할 수 없습니다.

## 계층적 청킹
<a name="kb-hiearchical-chunking"></a>

계층적 청킹에는 하위 청크와 상위 청크의 중첩 구조로 정보를 구성하는 작업이 포함됩니다. 데이터 소스를 만들 때 상위 청크 크기와 하위 청크 크기, 각 청크 간의 오버랩 토큰 수를 정의할 수 있습니다. 검색 과정에서 시스템이 하위 청크를 먼저 검색하지만, 모델에 보다 포괄적인 컨텍스트를 제공할 수 있도록 이후에 이를 더 광범위한 상위 청크로 대체합니다.

작은 텍스트 임베딩은 더 정확하지만, 검색에서는 포괄적인 컨텍스트를 목표로 합니다. 계층적 청킹 시스템은 필요한 경우 검색된 하위 청크를 상위 청크로 대체하여 이러한 요구 사항의 균형을 맞춥니다.

**참고**  
하위 청크는 검색 중에 상위 청크로 대체되므로 반환된 결과 수가 요청된 양보다 적을 수 있습니다.
S3 벡터 버킷을 벡터 스토어로 사용할 때는 계층적 청킹이 권장되지 않습니다. 청킹에 많은 수의 토큰을 사용하는 경우(합계 8,000개 이상의 토큰) 메타데이터 크기 제한이 발생할 수 있습니다.

계층적 청킹에서 Amazon Bedrock Knowledge Bases는 청킹에 대해 두 가지 수준 또는 다음과 같은 깊이를 지정할 수 있도록 지원합니다.
+ 상위: 최대 상위 청크 토큰 크기를 설정합니다.
+ 하위: 최대 하위 청크 토큰 크기를 설정합니다.

청크 간 오버랩 토큰도 설정합니다. 연속된 상위 청크와 연속된 하위 청크 간 오버랩 토큰의 절대 수를 설정합니다.

## 시맨틱 청킹
<a name="kb-semantic-chunking"></a>

시맨틱 청킹은 텍스트를 의미 있는 청크로 나누어 이해도와 정보 검색을 향상시키는 자연어 처리 기법입니다. 이는 단지 구문 구조가 아닌 의미적 콘텐츠에 집중하여 검색 정확도를 개선하는 것을 목표로 합니다. 이렇게 하면 관련 정보를 보다 정확하게 추출하고 조작할 수 있습니다.

시맨틱 청킹을 구성할 때 다음과 같은 하이퍼파라미터를 지정할 수 있습니다.
+ 최대 토큰: 문장 경계를 고려하면서 단일 청크에 포함되어야 하는 최대 토큰 수입니다.
+ 버퍼 크기: 지정된 문장의 경우 버퍼 크기는 임베딩 생성을 위해 추가할 주변 문장 수를 정의합니다. 예를 들어 버퍼 크기가 1이면 3개의 문장(현재, 이전 및 다음 문장)이 결합되고 임베딩됩니다. 이 파라미터는 각 청크의 경계를 결정하기 위해 함께 검사되는 텍스트의 양에 영향을 미칠 수 있으며, 이는 결과 청크의 세분성과 일관성에 영향을 미칩니다. 버퍼 크기가 클수록 더 많은 컨텍스트를 캡처할 수 있지만, 노이즈가 발생할 수도 있습니다. 또한 버퍼 크기가 작을수록 중요한 컨텍스트를 놓칠 수 있지만, 더 정확한 청킹을 보장할 수 있습니다.
+ 중단점 백분위수 임계값: 문장 사이의 중단점을 찾기 위한 문장 간 거리/유사성의 백분위수 임계값입니다. 더 높은 임계값을 적용하려면 문장을 여러 부분으로 나눌 수 있도록 문장의 구별이 더 쉬워야 합니다. 임계값이 높을수록 청크 수가 줄어들고 일반적으로 평균 청크 크기가 커집니다.
**참고**  
파운데이션 모델을 사용하기 때문에 시맨틱 청킹을 사용하면 추가 비용이 발생합니다. 비용은 보유한 데이터의 양에 따라 달라집니다. 파운데이션 모델의 비용에 대한 자세한 내용은 [Amazon Bedrock 요금](https://aws.amazon.com/bedrock/pricing/)을 참조하세요.

## 멀티모달 콘텐츠 청킹
<a name="kb-multimodal-chunking"></a>

멀티모달 콘텐츠(오디오, 비디오, 이미지)의 경우 청킹 동작은 텍스트 문서와 다릅니다.
+ **Nova 멀티모달 임베딩:** 청킹은 임베딩 모델 수준에서 발생합니다. 오디오 및 비디오 청크 지속 시간을 1\$130초(기본값: 5초)로 구성할 수 있습니다. 비디오 파일의 경우 비디오에 오디오가 포함되어 있더라도 비디오 청크 기간만 적용됩니다. 오디오 청크 지속 시간은 독립 실행형 오디오 파일에만 적용됩니다.
+ **Bedrock Data Automation(BDA) 구문 분석기:** 콘텐츠는 먼저 텍스트(트랜스크립트 및 장면 요약)로 변환된 다음 변환된 텍스트에 표준 텍스트 청킹 전략이 적용됩니다.

**참고**  
Nova 멀티모달 임베딩을 사용하는 경우 지식 기반에 구성된 텍스트 청킹 전략은 오디오, 비디오 또는 이미지 파일이 아닌 데이터 소스의 텍스트 문서에만 영향을 미칩니다.

# 데이터 소스에 대한 구문 분석 옵션
<a name="kb-advanced-parsing"></a>

구문 분석이란 원시 데이터에서 콘텐츠를 이해하고 추출하는 것을 말합니다. Amazon Bedrock Knowledge Bases는 수집 중에 데이터 소스를 구문 분석하기 위한 다음 옵션을 제공합니다.
+ **Amazon Bedrock 기본 구문 분석기** - .txt, .md, .html, .doc/.docx, .xls/.xlsx 및 .pdf 파일을 포함한 텍스트 파일의 텍스트만 구문 분석합니다. 이 구문 분석기에는 사용 요금이 발생하지 않습니다.
**참고**  
기본 구문 분석기는 텍스트만 출력하므로 문서에 그림, 차트, 테이블 또는 이미지가 포함된 경우 Amazon Bedrock Data Automation 또는 파운데이션 모델을 기본 구문 분석기 대신 구문 분석기로 사용하는 것이 좋습니다. Amazon Bedrock Data Automation 및 파운데이션 모델은 문서에서 이러한 요소를 추출하여 출력으로 반환할 수 있습니다.
+ Amazon Bedrock Knowledge Bases는 .jpeg 및 .png 이미지 파일 외에도 .pdf 파일의 그림, 차트 및 테이블을 포함한 멀티모달 데이터를 구문 분석하는 다음과 같은 구문 분석기를 제공합니다. 또한 이러한 파서는 이러한 그림, 차트, 테이블 및 이미지를 추출하여 지식 기반 생성 중에 지정한 S3 대상에 파일로 저장할 수 있습니다. 지식 기반 검색 중에 이러한 파일을 응답 또는 소스 속성으로 반환할 수 있습니다.
  + **Amazon Bedrock 데이터 자동화** - 추가 프롬프트를 제공할 필요 없이 멀티모달 데이터를 효과적으로 처리하는 완전관리형 서비스입니다. 이 구문 분석기의 비용은 문서의 페이지 수 또는 처리할 이미지 수에 따라 달라집니다. 이 서비스에 대한 자세한 내용은 [Amazon Bedrock 데이터 자동화](bda.md)를 참조하세요.
  + **파운데이션 모델** - 파운데이션 모델을 사용하여 멀티모달 데이터를 처리합니다. 이 구문 분석기는 데이터 추출에 사용되는 기본 프롬프트를 사용자 지정하는 옵션을 제공합니다. 이 구문 분석기의 비용은 파운데이션 모델에서 처리한 입력 및 출력 토큰 수에 따라 달라집니다. Amazon Bedrock Knowledge Bases 데이터 구문 분석을 지원하는 모델 목록은 [구분 분석에 지원되는 모델 및 리전](knowledge-base-supported.md#knowledge-base-supported-parsing) 섹션을 참조하세요.

**중요**  
Amazon Bedrock Data Automation 또는 파운데이션 모델을 구문 분석기로 선택하면 .pdf 파일에 텍스트만 포함되어 있더라도 선택한 메서드를 사용하여 데이터 소스의 모든 .pdf 파일을 구문 분석합니다. 기본 구문 분석기는 이러한 .pdf 파일을 구문 분석하는 데 사용되지 않습니다. 계정에 Amazon Bedrock Data Automation 또는 파운데이션 모델을 사용하여 이러한 파일을 구문 분석하면 요금이 부과됩니다.

데이터 구문 분석 방법을 선택할 때는 다음 사항을 고려하세요.
+ 데이터가 순전히 텍스트인지 아니면 지식 기반이 쿼리할 수 있게 하려는 이미지, 그래프 및 차트와 같은 멀티모달 데이터가 포함되어 있는지 여부입니다.
+ 데이터를 구문 분석하는 방법을 모델에 지시하는 데 사용되는 프롬프트를 옵션을 사용자 지정할지 여부입니다.
+ 구문 분석기의 비용입니다. Amazon Bedrock Data Automation은 페이지당 요금을 사용하는 반면 파운데이션 모델 파서는 입력 및 출력 토큰을 기준으로 요금을 부과합니다. 자세한 내용은 [Amazon Bedrock 요금](https://aws.amazon.com/bedrock/pricing/)을 참조하세요.
+ 총 파일 크기 제한입니다. 파운데이션 모델을 구문 분석기로 사용하는 경우 모든 파일의 총 파일 크기는 100GB를 초과할 수 없습니다.

지식 기반 구문 분석 방법을 구성하는 방법을 알아보려면 [데이터 소스를 지식 기반에 연결](data-source-connectors.md)의 데이터 소스에 대한 연결 구성을 참조하세요.

# 사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의
<a name="kb-custom-transformation"></a>

사용자 지정 변환 Lambda 함수를 정의하여 지식 기반 수집 프로세스에 자체 로직을 주입할 수 있습니다.

Amazon Bedrock Knowledge Bases에서 기본적으로 지원되지 않는 특정 청킹 로직이 있을 수 있습니다. 청킹 없음 전략 옵션을 사용하고 해당 청킹 로직이 포함된 Lambda 함수를 지정합니다. 또한 Lambda 함수에서 청킹할 파일을 작성하려면 지식 기반에 Amazon S3 버킷을 지정해야 합니다.

청킹 후 Lambda 함수는 청킹된 파일을 동일한 버킷에 다시 쓰고 추가 처리를 위해 지식 기반에 대한 참조를 반환합니다. 필요한 경우 S3 버킷에 저장되는 파일의 암호화를 위한 자체 AWS KMS 키를 제공할 수 있습니다.

**참고**  
웹 커넥터를 사용하는 경우 HTML 대신 마크다운 텍스트가 Lambda에 전달됩니다.

또는 청크 수준 메타데이터를 지정하고 지식 기반이 기본적으로 지원되는 청킹 전략 중 하나를 적용하도록 할 수도 있습니다. 이 경우 사전 정의된 청킹 전략(예: 기본 또는 고정 크기 청킹) 중 하나를 선택하고 Lambda 함수 및 S3 버킷에 대한 참조를 제공합니다. 이 경우 지식 기반은 사전 정의된 S3 버킷에 구문 분석 및 사전 청킹된 파일을 저장한 후 Lambda 함수를 직접적으로 호출하여 청크 수준 메타데이터를 추가합니다.

청크 수준 메타데이터를 추가한 후 Lambda 함수는 청킹된 파일을 동일한 버킷에 다시 쓰고 추가 처리를 위해 지식 기반에 대한 참조를 반환합니다. 충돌이 발생할 경우 청크 수준 메타데이터가 우선하며 파일 수준 메타데이터를 덮어씁니다.

사용자 지정 청킹에 Python Lambda 함수를 사용하는 예제는 [Lambda 함수를 사용하여 사용자 지정 청킹](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/rag/knowledge-bases/features-examples/03-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb)을 참조하세요.

API 및 파일 계약은 아래 구조를 참조하세요.

**Lambda 함수를 사용하여 사용자 지정 변환을 추가할 때의 API 계약**

```
{
...
    "vectorIngestionConfiguration": {
        "customTransformationConfiguration": { // Custom transformation 
            "intermediateStorage": {
                "s3Location": { // the location where input/output of the Lambda is expected 
                    "uri": "string"
                }
            },
            "transformations": [{
                "transformationFunction": {
                    "transformationLambdaConfiguration": {
                        "lambdaArn": "string"
                    }
                },
                "stepToApply": "string" // enum of POST_CHUNKING
            }]
        },
        "chunkingConfiguration": {
            "chunkingStrategy": "string",
            "fixedSizeChunkingConfiguration": {
                "maxTokens": "number",
                "overlapPercentage": "number"
            }
            ...
        }
    }
}
```

**사용자 지정 Lambda 변환 입력 형식**

```
{
    "version": "1.0",
    "knowledgeBaseId": "string",
    "dataSourceId": "string",
    "ingestionJobId": "string",
    "bucketName": "string",
    "priorTask": "string",
    "inputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key":"string"
        }]
    }]
}
```

**사용자 지정 Lambda 변환 출력 형식**

```
{
    "outputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key": "string"
        }]
    }]
}
```

**에서 참조된 객체에 대한 파일 형식`fileContents`**

```
{
    "fileContents": [{
        "contentBody": "...",
        "contentType": "string", // enum of TEXT, PDF, ...
        "contentMetadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
    ...
    ]
}
```

# 데이터 소스에 메타데이터를 포함하여 지식 기반 쿼리 개선
<a name="kb-metadata"></a>

CSV(쉼표로 구분된 값) 파일을 수집할 때 지식 기반이 특정 열을 콘텐츠 필드와 메타데이터 필드로 취급하도록 할 수 있습니다. 이제 수백 또는 수천 개의 콘텐츠/메타데이터 파일 페어를 처리하는 대신 단일 CSV 파일과 해당 metadata.json 파일을 사용해 CSV 내의 각 열을 처리하는 방법에 대한 지식 기반 힌트를 제공할 수 있습니다.

청크당 문서 메타데이터 필드/속성에는 한도가 있습니다. [지식 기반 할당량](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)을 참조하세요

CSV 파일을 수집하기 전에 다음을 확인합니다.
+ CSV가 RFC4180 형식이며 UTF-8로 인코딩되어 있습니다.
+ CSV의 첫 번째 행에 헤더 정보가 포함되어 있습니다.
+ metadata.json 파일에 제공된 메타데이터 필드가 CSV에 열로 표시됩니다.
+ 다음 형식의 fileName.csv.metadata.json 파일을 제공해야 합니다.

  ```
  {
      "metadataAttributes": {
          "${attribute1}": "${value1}",
          "${attribute2}": "${value2}",
          ...
      },
      "documentStructureConfiguration": {
          "type": "RECORD_BASED_STRUCTURE_METADATA",
          "recordBasedStructureMetadata": {
              "contentFields": [
                  {
                      "fieldName": "string"
                  }
              ],
              "metadataFieldsSpecification": {
                  "fieldsToInclude": [
                      {
                          "fieldName": "string"
                      }
                  ],
                  "fieldsToExclude": [
                      {
                          "fieldName": "string"
                      }
                  ]
              }
          }
      }
  }
  ```

CSV 파일은 한 번에 한 행씩 구문 분석되고 청킹 전략과 벡터 임베딩이 콘텐츠 필드에 적용됩니다. Amazon Bedrock Knowledge Bases는 현재 하나의 콘텐츠 필드를 지원합니다. 콘텐츠 필드는 청크로 분할되고 각 청크와 연결된 메타데이터 필드(열)는 문자열 값으로 처리됩니다.

예를 들어 'Description' 열과 'Creation\$1Date' 열이 있는 CSV가 있다고 가정해 보겠습니다. 설명 필드는 콘텐츠 필드이고 생성 날짜는 연결된 메타데이터 필드입니다. 설명 텍스트는 청크로 분할되고 CSV의 각 행에 대해 벡터 임베딩으로 변환됩니다. 생성 날짜 값은 날짜를 문자열로 표현한 것으로 취급되며 설명의 각 청크와 연결됩니다.

포함/제외 필드가 제공되지 않으면 콘텐츠 열을 제외한 모든 열이 메타데이터 열로 처리됩니다. 포함 필드만 제공된 경우 제공된 열만 메타데이터로 처리됩니다. 제외 필드만 제공된 경우 제외 열을 제외한 모든 열이 메타데이터로 처리됩니다. `fieldsToInclude` 및 `fieldsToExclude` 모두에서 동일한 `fieldName`을 제공하는 경우 Amazon Bedrock은 검증 예외를 발생시킵니다. 포함과 제외 사이에 충돌이 있는 경우 실패로 이어집니다.

CSV 내에서 발견된 빈 행은 무시되거나 건너뜁니다.

# Amazon Bedrock 지식 기반에서 지원되는 모델과 리전
<a name="knowledge-base-supported"></a>

Amazon Bedrock 지식 기반은 다음 파운데이션 모델을 사용한 쿼리를 지원합니다.


| 제공업체 | 모델 | 모델 ID | 단일 리전 모델 지원 | 교차 리전 추론 프로파일 지원 | 
| --- | --- | --- | --- | --- | 
| AI21 Labs | Jamba 1.5 Large | ai21.jamba-1-5-large-v1:0 |  us-east-1  |  | 
| AI21 Labs | Jamba 1.5 Mini | ai21.jamba-1-5-mini-v1:0 |  us-east-1  |  | 
| Amazon | Nova Lite | amazon.nova-lite-v1:0 |  ap-northeast-1 ap-southeast-2 eu-north-1 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Micro | amazon.nova-micro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Pro | amazon.nova-pro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude 3 Haiku | anthropic.claude-3-haiku-20240307-v1:0 |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-gov-west-1 us-west-2  |  eu-central-1 us-east-2 us-gov-east-1  | 
| Anthropic | Claude 3 Sonnet | anthropic.claude-3-sonnet-20240229-v1:0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1  | 
| Anthropic | Claude 3.5 Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 |  us-west-2  |  us-east-1 us-east-2  | 
| Anthropic | claude-3.5-sonnet | anthropic.claude-3-5-sonnet-20240620-v1:0 |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1 eu-central-2 us-east-1 us-gov-west-1 us-west-2  |  ap-south-1 ap-southeast-2 eu-central-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude 3.5 Sonnet v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 |  ap-southeast-2 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 us-east-1 us-east-2  | 
| Anthropic | Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 |  eu-west-2 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 |  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude Sonnet 4.5 | anthropic.claude-sonnet-4-5-20250929-v1:0 | 해당 사항 없음 |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | Command R | cohere.command-r-v1:0 |  us-east-1 us-west-2  |  | 
| Cohere | Command R\$1 | cohere.command-r-plus-v1:0 |  us-east-1 us-west-2  |  | 
| DeepSeek | DeepSeek-R1 | deepseek.r1-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3 70B 지침 | meta.llama3-70b-instruct-v1:0 |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3 8B 지침 | meta.llama3-8b-instruct-v1:0 |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3.1 405B 지침 | meta.llama3-1-405b-instruct-v1:0 |  us-west-2  |  us-east-2  | 
| Meta | Llama 3.1 70B Instruct | meta.llama3-1-70b-instruct-v1:0 |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.1 8B 지침 | meta.llama3-1-8b-instruct-v1:0 |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 11B 지침 | meta.llama3-2-11b-instruct-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 90B 지침 | meta.llama3-2-90b-instruct-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.3 70B 지침 | meta.llama3-3-70b-instruct-v1:0 |  us-east-2  |  us-east-1 us-east-2 us-west-2  | 
| Mistral AI | Mistral Large(24.02) | mistral.mistral-large-2402-v1:0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  | 
| Mistral AI | Mistral Large(24.07) | mistral.mistral-large-2407-v1:0 |  us-west-2  |  | 
| Mistral AI | Mistral Small(24.02) | mistral.mistral-small-2402-v1:0 |  us-east-1  |  | 

또한 Amazon Bedrock Knowledge Bases는 데이터 구문 분석 또는 응답 생성 시 추론 프로파일 사용을 지원합니다. 추론 프로파일을 사용하면 비용 및 지표를 추적하고 교차 리전 추론을 수행하여 모델 추론 요청을 여러 리전에 분산하여 처리량을 높일 수 있습니다. [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 또는 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청에서 추론 프로파일을 지정할 수 있습니다. 자세한 내용은 [추론 프로파일을 사용하여 모델 간접 호출 리소스 설정](inference-profiles.md) 단원을 참조하십시오.

**중요**  
교차 리전 추론을 사용하는 경우, 데이터를 리전 간에 공유할 수 있습니다.

자체 데이터로 훈련하는 SageMaker AI 모델 또는 [사용자 지정 모델](custom-models.md)을 사용할 수도 있습니다.

**참고**  
SageMaker AI 또는 사용자 지정 모델을 사용하는 경우 오케스트레이션 및 생성 프롬프트를 지정해야 합니다(자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)의 **지식 기반 프롬프트 템플릿** 참조). 사용자의 입력 및 컨텍스트에 액세스하려면 프롬프트에 정보 변수가 반드시 포함되어야 합니다.

리전 및 모델 지원은 Amazon Bedrock Knowledge Bases의 일부 기능에 따라 다릅니다. 기능에 대한 지원을 보려면 주제를 선택합니다.

**Topics**
+ [벡터 임베딩에 지원되는 모델](#knowledge-base-supported-embeddings)
+ [구분 분석에 지원되는 모델 및 리전](#knowledge-base-supported-parsing)
+ [쿼리 중에 결과 순위를 다시 매기는 데 지원되는 모델 및 리전](#knowledge-base-supported-rerank)
+ [구조화된 데이터 스토어가 있는 지식 기반에 지원되는 리전](#knowledge-base-supported-structured)

## 벡터 임베딩에 지원되는 모델
<a name="knowledge-base-supported-embeddings"></a>

Amazon Bedrock Knowledge Bases는 임베딩 모델을 사용하여 데이터를 벡터 임베딩으로 변환하고, 이를 벡터 데이터베이스에 저장합니다. 자세한 내용은 [데이터를 지식 기반으로 전환](kb-how-data.md) 단원을 참조하십시오.

Amazon Bedrock 지식 기반은 다음 파운데이션 모델을 사용하여 벡터 임베딩을 지원합니다.


| 제공업체 | 모델 | 모델 ID | 단일 리전 모델 지원 | 
| --- | --- | --- | --- | 
| Amazon | Titan Embeddings G1 - Text | amazon.titan-embed-text-v1 |  ap-northeast-1 eu-central-1 us-east-1 us-west-2  | 
| Amazon | Titan Text Embeddings V2 | amazon.titan-embed-text-v2:0 |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | Embed English | cohere.embed-english-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 
| Cohere | Embed Multilingual | cohere.embed-multilingual-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 

임베딩 모델은 다음 벡터 유형을 지원합니다.


****  

| 모델 이름 | 지원되는 벡터 유형 | 지원되는 차원 수 | 
| --- | --- | --- | 
| Amazon Titan Embeddings G1 - Text | 부동 소수점 | 1536 | 
| Amazon Titan Text Embeddings V2 | 부동 소수점, 바이너리 | 256, 512, 1024 | 
| Cohere Embed (English) | 부동 소수점, 바이너리 | 1024 | 
| Cohere Embed (Multilingual) | 부동 소수점, 바이너리 | 1024 | 
| Amazon Titan Multimodal Embeddings G1 | 부동 소수점 | 1024 | 
| Cohere 임베드 v3(멀티모달) | 부동 소수점, 바이너리 | 1024 | 

## 구분 분석에 지원되는 모델 및 리전
<a name="knowledge-base-supported-parsing"></a>

데이터를 벡터 임베딩으로 변환할 때 Amazon Bedrock Knowledge Bases에서 데이터를 구문 분석하는 다양한 옵션이 있습니다. 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 단원을 참조하십시오.

다음은 구문 분석 옵션에 대한 지원 목록입니다.
+ Amazon Bedrock 데이터 자동화 구문 분석기는 미국 서부(오리건)에서 지원되며 미리 보기 중이며 변경될 수 있습니다.
+ 파서로 사용할 수 있는 파운데이션 모델 패밀리는 다음과 같습니다.
  + Claude 비전 모델
  + Nova 비전 모델
  + LLama 4 비전 모델

  파운데이션 모델 구문 분석은 이러한 모델을 (교차 리전 추론을 통하지 않고) 직접 사용할 수 있는 AWS 리전에서 사용할 수 있습니다. 리전별 현재 모델 가용성을 확인하려면 [Amazon Bedrock에서 지원되는 파운데이션 모델](models-supported.md) 섹션을 참조하세요.

## 쿼리 중에 결과 순위를 다시 매기는 데 지원되는 모델 및 리전
<a name="knowledge-base-supported-rerank"></a>

지식 기반 쿼리 결과를 검색할 때 순위 조정 모델을 사용하여 지식 기반 쿼리의 결과 순위를 다시 지정할 수 있습니다. 자세한 내용은 [지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 및 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md)를 참조하세요.

순위 조정을 지원하는 모델 및 리전 목록은 [Amazon Bedrock에서 순위 재지정이 지원되는 리전 및 모델](rerank-supported.md) 섹션을 참조하세요.

## 구조화된 데이터 스토어가 있는 지식 기반에 지원되는 리전
<a name="knowledge-base-supported-structured"></a>

구조화된 데이터 스토어가 있는 지식 기반을 사용하면 지식 기반을 구조화된 데이터 스토어에 연결하고 자연어 쿼리를 SQL 쿼리로 변환할 수 있습니다. 자세한 내용은 [구조화된 데이터 스토어에 연결하여 지식 기반 빌드](knowledge-base-build-structured.md) 단원을 참조하십시오.

구조화된 데이터 스토어가 있는 지식 기반은 AWS 리전다음에서 사용할 수 있습니다.
+ 유럽(프랑크푸르트)
+ 유럽(취리히)
+ 유럽(아일랜드)
+ 유럽(런던)
+ 유럽(파리)
+ 아시아 태평양(도쿄)
+ 아시아 태평양(서울)
+ 아시아 태평양(뭄바이)
+ 아시아 태평양(싱가포르)
+ 아시아 태평양(시드니)
+ 캐나다(중부)
+ 남아메리카(상파울루)
+ 미국 동부(버지니아 북부)
+ 미국 동부(오하이오)
+ 미국 서부(오리건)
+ AWSGovCloud(미국 서부)

# 지식 기반이 구성되지 않은 문서와의 채팅
<a name="knowledge-base-chatdoc"></a>

Amazon Bedrock 콘솔의 **문서와의 채팅** 기능을 사용하면 지식 기반을 구성할 필요 없이 지식 기반을 손쉽게 테스트할 수 있습니다. 콘솔 채팅 창에서 문서를 로드하거나 채팅 창에 문서를 끌어서 놓은 다음 질문을 시작할 수 있습니다. **문서와의 채팅**은 문서를 사용하여 질문에 답변하거나, 분석을 수행하거나, 요약을 생성하거나, 번호가 매겨진 목록에서 필드를 항목화하거나, 콘텐츠를 다시 작성할 수 있는 기능입니다. **문서와의 채팅**을 사용한 다음에도 문서 또는 해당 데이터가 저장되지 않습니다.

**참고**  
**문서와의 채팅** 기능은 현재 Anthropic Sonnet 모델에서 가장 잘 지원됩니다. 지식 기반 모델에 대한 액세스 및 사용 방법에 대한 자세한 내용은 [지식 베이스에서 지원되는 모델](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html)을 참조하세요.  
문서와 채팅할 때는 리랭커 모델을 사용할 수 없습니다.

지식 기반을 구성할 필요 없이 채팅 또는 흐름 애플리케이션의 프로토타입을 손쉽게 만들 수도 있습니다. [Amazon Bedrock Studio](https://docs.aws.amazon.com/bedrock/latest/userguide/br-studio.html)를 사용하면 컴퓨터에서 문서를 업로드하여 애플리케이션에 대한 데이터 또는 '데이터 소스'를 제공할 수 있습니다. Amazon Bedrock IDE로 이름이 변경된 Amazon Bedrock Studio는 이제 Amazon SageMaker Unified Studio에서 사용할 수 있습니다. 자세한 내용은 [Amazon Bedrock IDE](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/bedrock.html)를 참조하세요.

**문서와의 채팅** 기능을 지식 기반의 일부로 사용하려면 아래 탭을 선택하고 단계를 따릅니다.

------
#### [ Console ]

**Amazon Bedrock에서 문서와의 채팅을 사용하는 방법:**

1. [https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택하고 **문서와의 채팅**을 선택합니다.

1. **문서와의 채팅 탭**의 **모델** 아래에서 **모델 선택**을 선택합니다.

1. 문서 분석에 사용할 모델을 선택하고 **적용**을 선택합니다.

1. **문서와의 채팅** 탭에 시스템 프롬프트를 입력합니다.

1. **데이터**에서 **내 컴퓨터** 또는 **S3**를 선택합니다.

1. **문서 선택**을 선택하여 문서를 업로드합니다. 채팅 콘솔의 **쿼리 작성** 상자에 문서를 끌어다 놓을 수도 있습니다.
**참고**  
파일 유형: PDF, MD, TXT, DOC, DOCX, HTML, CSV, XLS, XLSX. 10MB 미만의 파일을 사용할 경우 미리 설정된 고정 토큰 제한이 있습니다. 텍스트가 많고 크기가 10MB보다 작은 파일은 토큰 제한보다 클 수 있습니다.

1. **쿼리 작성**이라고 되어 있는 상자에 사용자 지정 프롬프트를 입력합니다. 사용자 지정 프롬프트를 입력하거나 기본 프롬프트를 사용할 수 있습니다. 로드된 문서와 프롬프트가 채팅 창의 하단에 나타납니다.

1. **실행**을 선택합니다. 응답은 답변에 대한 소스 자료 정보를 표시하는 **소스 청크 표시** 옵션을 사용하여 검색 결과를 생성합니다.

1. 새 파일을 로드하려면 X를 선택하여 채팅 창에 로드된 현재 파일을 삭제하고 새 파일을 끌어서 놓습니다. 새 프롬프트를 입력하고 **실행**을 선택합니다.
**참고**  
새 파일을 선택하면 이전 쿼리와 응답이 지워지고 새 세션이 시작됩니다.

------

# 지식 기반을 생성하고 관리할 수 있는 사용자 또는 역할에 대한 권한 설정
<a name="knowledge-base-prereq-permissions-general"></a>

사용자 또는 역할이 Amazon Bedrock Knowledge Bases와 관련된 작업을 수행하려면 작업을 수행할 수 있는 권한을 부여하는 정책을 여기에 연결해야 합니다. 사용자가 이러한 지식 기반에서 정보를 검색하고 해당 지식 기반에서 응답을 생성할 수 있는 권한을 설명합니다.

다음 섹션을 확장하여 특정 사용 사례에 대한 권한을 설정하는 방법을 알아봅니다.

## 역할이 지식 기반을 생성하고 관리할 수 있도록 허용
<a name="w2aac28c10c21b7b1"></a>

IAM 역할이 지식 기반을 생성하고, 이를 구조화된 데이터 스토어에 연결하고, 지식 기반을 관리하고, 데이터 소스에서 지식 기반으로의 수집 작업을 시작하고 관리할 수 있도록 하려면 `KnowledgeBase`, `DataSource` 및 `IngestionJob` 작업에 대한 권한을 제공해야 합니다. 지식 기반에 태그를 지정할 수 있는 권한을 제공하려면 `bedrock:TagResource` 및 `bedrock:UntagResource`에 대한 권한을 포함합니다.

**참고**  
사용자 또는 역할에 [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess) AWS 관리형 정책이 연결되어 있는 경우이 사전 조건을 건너뛸 수 있습니다.

역할이 이러한 작업을 수행하도록 허용하려면 역할에 다음 정책을 연결합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateKnowledgeBase"
            ],
            "Resource": "*"
        },
        {
            "Sid": "KBDataSourceManagement",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase",
                "bedrock:ListKnowledgeBases",
                "bedrock:UpdateKnowledgeBase",
                "bedrock:DeleteKnowledgeBase",
                "bedrock:StartIngestionJob",
                "bedrock:GetIngestionJob",
                "bedrock:ListIngestionJobs",
                "bedrock:StopIngestionJob",
                "bedrock:TagResource",
                "bedrock:UntagResource"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/*"
            ]
        }
    ]
}
```

------

지식 기반을 생성한 후에는 와일드카드(*\$1*)를 생성한 지식 기반의 ID로 대체하여 `KBDataSourceManagement` 통계의 권한 범위를 줄이는 것이 좋습니다.

## 역할이 지식 기반 API 작업을 수행하도록 허용
<a name="w2aac28c10c21b7b3"></a>

이 섹션에서는 지식 기반에 대한 `Retrieve` 및 `RetrieveAndGenerate` API 작업을 수행하는 데 필요한 권한을 설명합니다.

다음 정책을 역할에 연결합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

사용 사례에 따라 필요하지 않은 문을 제거할 수 있습니다.
+ `GetKB` 문은 지식 기반 정보를 가져오는 데 사용됩니다.
+ `Retrieve` 문은 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)를 호출하여 데이터 스토어에서 데이터를 검색하는 데 필요합니다.
+ `RetrieveAndGenerate` 문은 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)를 호출하여 데이터 스토어에서 데이터를 검색하고 데이터를 기반으로 응답을 생성하는 데 필요합니다.

## RetrieveAndGenerate의 파운데이션 모델에 대한 액세스 요청
<a name="knowledge-base-prereq-structured-model-access"></a>

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)를 사용하여 데이터 소스에서 검색된 데이터를 기반으로 응답을 생성하려는 경우 [Amazon Bedrock 파운데이션 모델 액세스](model-access.md)의 단계에 따라 생성에 사용할 파운데이션 모델에 대한 액세스를 요청합니다.

권한을 더욱 제한하려면 작업을 생략하거나 리소스 및 조건 키를 지정하여 권한을 필터링할 수 있습니다. 작업, 리소스 및 조건 키에 대한 자세한 내용은 *서비스 권한 부여 참조*에서 다음 주제를 참조하세요.
+ [Amazon Bedrock에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) - 작업, `Resource` 필드에서 작업의 범위를 지정할 수 있는 리소스 유형, `Condition` 필드에서 권한을 필터링할 수 있는 조건 키에 대해 알아봅니다.
+ [Amazon Bedrock에서 정의한 리소스 유형](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) - Amazon Bedrock의 리소스 유형에 대해 알아봅니다.
+ [Amazon Bedrock의 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) - Amazon Bedrock의 조건 키에 대해 알아봅니다.

# 데이터 소스에 연결하여 지식 기반 빌드
<a name="knowledge-base-build"></a>

Amazon Bedrock 지식 기반은 데이터 소스에 저장된 다양한 파일 유형을 지원합니다. 데이터 소스의 데이터를 해석하려면 Amazon Bedrock 지식 기반에서 데이터를 숫자로 표현한 벡터 임베딩으로 변환해야 합니다. 이러한 임베딩을 쿼리의 벡터 표현과 비교하여 유사성을 평가하고 데이터 검색 중에 반환할 소스를 결정할 수 있습니다.

지식 기반을 데이터 소스에 연결하는 일반적인 단계는 다음과 같습니다.

1. 지식 기반을 지원되는 데이터 소스에 연결합니다.

1. 데이터 소스에 이미지, 오디오 및 비디오 파일을 포함한 멀티모달 데이터가 포함된 경우 멀티모달 콘텐츠를 지원하는 적절한 처리 접근 방식과 임베딩 모델을 선택해야 합니다.
**참고**  
멀티모달 데이터는 Amazon S3 및 사용자 지정 데이터 소스에서만 지원됩니다. 멀티모달 콘텐츠 작업에 대한 포괄적인 지침은 섹션을 참조하세요[멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md).

1. 데이터 소스의 데이터를 벡터 임베딩으로 변환할 임베딩 모델을 선택합니다.

1. 벡터 스토어는 데이터의 벡터 표현을 저장합니다.

1. 벡터 임베딩으로 변환되도록 데이터를 동기화합니다.

1. 데이터 소스의 데이터를 수정하는 경우 변경 사항을 다시 동기화해야 합니다.

**Topics**
+ [비정형 데이터 소스를 사용하여 Amazon Bedrock 지식 기반을 생성하기 위한 사전 조건](knowledge-base-prereq.md)
+ [Amazon Bedrock Knowledge Bases에서 OpenSearch 관리형 클러스터를 사용하는 데 필요한 사전 조건 및 권한](kb-osm-permissions-prereq.md)
+ [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md)
+ [Amazon Bedrock Knowledge Bases으로 데이터 동기화](kb-data-source-sync-ingest.md)
+ [변경 사항을 지식 기반에 직접 수집](kb-direct-ingestion.md)
+ [Amazon Bedrock Knowledge Bases에 대한 데이터 소스 정보 확인](kb-ds-info.md)
+ [Amazon Bedrock Knowledge Bases의 데이터 소스 수정](kb-ds-update.md)
+ [Amazon Bedrock Knowledge Bases에서 데이터 소스 삭제](kb-ds-delete.md)

# 비정형 데이터 소스를 사용하여 Amazon Bedrock 지식 기반을 생성하기 위한 사전 조건
<a name="knowledge-base-prereq"></a>

Amazon Bedrock 지식 기반에는 응답을 검색하고 생성하기 위한 데이터 및 모델, 데이터의 벡터 표현을 저장하기 위한 벡터 스토어, 데이터에 액세스하고 작업을 수행할 수 있는 AWS Identity and Access Management 권한이 필요합니다.

지식 기반을 만들려면 먼저 다음 사전 조건을 충족해야 합니다. 일반 권한 요구 사항은 [지식 기반을 생성하고 관리할 수 있는 사용자 또는 역할에 대한 권한 설정](knowledge-base-prereq-permissions-general.md) 섹션을 참조하세요

1. 데이터가 [지원되는 데이터 소스 커넥터](data-source-connectors.md)에 있는지 확인합니다.

1. (선택 사항) [지원되는 자체 벡터 스토어를 설정합니다](knowledge-base-setup.md). 를 사용하여 벡터 저장소를 AWS Management Console 자동으로 생성하려는 경우이 단계를 건너뛸 수 있습니다.

1. (선택 사항)의 지침에 따라 적절한 권한을 가진 사용자 지정 AWS Identity and Access Management (IAM) [서비스 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role) 생성합니다[Amazon Bedrock Knowledge Bases에 대한 서비스 역할 생성](kb-permissions.md). AWS Management Console 을 사용하여 서비스 역할을 자동으로 만들 수 있습니다.
**참고**  
Amazon OpenSearch Service(Amazon OpenSearch Serverless 포함)를 사용하여 지식 기반을 생성하는 경우 서비스 역할에는 AWS 관리형 BedrockFullAccess 정책에서 다루는 권한 이외의 추가 권한이 필요합니다. 여기에는 `aoss:CreateAccessPolicy`, `iam:CreateServiceLinkedRole` 및 `iam:CreateRole` 권한이 포함됩니다.

1. (선택 사항) [지식 기반 리소스 암호화](encryption-kb.md)의 단계에 따라 추가 보안 구성을 설정합니다.

1. (선택 사항) [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 작업을 사용하여 지식 기반에서 검색된 정보를 기반으로 응답을 생성하려는 경우, [Amazon Bedrock 파운데이션 모델 액세스](model-access.md)의 단계에 따라 리전에서 사용할 모델에 대한 액세스를 요청합니다.

**Topics**
+ [Amazon Bedrock 지식 기반 데이터의 사전 조건](knowledge-base-ds.md)
+ [지식 기반에 대해 생성된 벡터 저장소 사용의 사전 조건](knowledge-base-setup.md)

# Amazon Bedrock 지식 기반 데이터의 사전 조건
<a name="knowledge-base-ds"></a>

데이터 소스에는 지식 기반이 쿼리될 때 검색할 수 있는 정보가 포함된 파일 또는 콘텐츠가 포함되어 있습니다. [지원되는 데이터 소스](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html) 중 하나 이상에 문서 또는 콘텐츠를 저장해야 합니다.

## 지식 기반 데이터에 지원되는 문서 형식 및 제한
<a name="kb-ds-supported-doc-formats-limits"></a>

[지원되는 데이터 소스](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)에 연결하면 콘텐츠가 지식 기반에 수집됩니다.

Amazon S3를 사용하여 파일을 저장하거나 데이터 소스에 연결된 파일이 포함된 경우, 먼저 각 소스 문서 파일이 다음을 준수하는지 확인해야 합니다.
+ 지원되는 소스 파일 형식은 다음과 같습니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-ds.html)
+ 각 파일 크기는 50MB의 할당량을 초과하지 않습니다.

Amazon S3 또는 사용자 지정 데이터 소스를 사용하는 경우 JPEG(.jpeg) 또는 PNG(.png) 이미지 또는 테이블, 차트, 다이어그램 또는 기타 이미지가 포함된 파일을 포함한 멀티모달 데이터를 사용할 수 있습니다.

**참고**  
.JPEG 및 .PNG 파일의 최대 크기는 3.75MB입니다.

# 지식 기반에 대해 생성된 벡터 저장소 사용의 사전 조건
<a name="knowledge-base-setup"></a>

문서가 변환되는 벡터 임베딩을 저장하려면 벡터 스토어를 사용합니다. Amazon Bedrock Knowledge Bases은 일부 벡터 스토어에 대한 빠른 생성 흐름을 지원하므로 Amazon Bedrock이 이러한 벡터 스토어 중 하나에서 자동으로 벡터 인덱스를 생성하도록 하려면 이 사전 조건을 건너뛰고 [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md)로 진행합니다.

표준 부동 소수점(float32) 벡터 임베딩 대신 바이너리 벡터 임베딩을 저장하려면 바이너리 벡터를 지원하는 벡터 스토어를 사용해야 합니다.

**참고**  
Amazon OpenSearch Serverless 및 Amazon OpenSearch Managed 클러스터는 바이너리 벡터 저장을 지원하는 유일한 벡터 스토어입니다.

지원되는 자체 벡터 스토어를 설정하여 데이터의 벡터 임베딩 표현을 인덱싱할 수 있습니다. 다음 데이터에 대한 필드를 만듭니다.
+ 선택한 임베딩 모델에 의해 데이터 소스의 텍스트에서 생성된 벡터의 필드입니다.
+ 데이터 소스의 파일에서 추출된 텍스트 청크의 필드입니다.
+ Amazon Bedrock이 관리하는 소스 파일 메타데이터의 필드입니다.
+ (Amazon Aurora 데이터베이스를 사용 중이고 [메타데이터에 필터링](kb-test-config.md)을 설정하려는 경우) 소스 파일에 연결한 메타데이터의 필드입니다. 다른 벡터 스토어에서 필터링을 설정하려면 필터링을 위해 이러한 필드를 설정할 필요가 없습니다.

KMS 키를 사용하여 타사 벡터 스토어를 암호화할 수 있습니다. 자세한 내용은 [지식 기반 리소스의 암호화](https://docs.aws.amazon.com/bedrock/latest/userguide/encryption-kb.html)를 참조하세요.

벡터 인덱스를 만드는 데 사용할 벡터 스토어 서비스에 해당하는 탭을 선택합니다.

**참고**  
임베딩 모델 및 벡터 차원을 선택하면 사용 가능한 벡터 스토어 선택에 영향을 미칠 수 있습니다. 원하는 벡터 스토어를 사용할 수 없는 경우 임베딩 모델 및 벡터 차원과 호환되는 옵션을 선택합니다.

------
#### [ Amazon OpenSearch Serverless ]

1. 의 Amazon OpenSearch Serverless에서 권한을 구성하고 벡터 검색 컬렉션을 생성하려면 Amazon OpenSearch Service 개발자 안내서의 [벡터 검색 컬렉션 작업](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)에서 1단계와 2단계를 AWS Management Console따르세요. 컬렉션을 설정하는 과정에서 다음 고려 사항에 유의하세요.

   1. 컬렉션에 원하는 이름과 설명을 지정합니다.

   1. 컬렉션을 비공개로 설정하려면 **보안** 섹션에서 **표준 생성**을 선택합니다. 그런 다음 **네트워크 액세스 설정** 섹션에서 **액세스 유형**으로 **VPC**를 선택하고 VPC 엔드포인트를 선택합니다. Amazon OpenSearch Serverless 컬렉션의 VPC 엔드포인트 설정에 대한 자세한 내용은 Amazon OpenSearch Service 개발자 안내서의 [인터페이스 엔드포인트(AWS PrivateLink)를 사용하여 Amazon OpenSearch Serverless에 액세스](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)를 참조하세요.

1. 컬렉션이 만들어지면 지식 기반을 만들 때 사용할 수 있도록 **컬렉션 ARN**을 기록해 둡니다.

1. 왼쪽 탐색 창에서 **서버리스** 아래의 **컬렉션**을 선택합니다. 그런 다음 벡터 검색 컬렉션을 선택합니다.

1. **인덱스** 탭을 선택합니다. 그런 다음 **벡터 인덱스 생성**을 선택합니다.

1. **벡터 인덱스 세부 정보** 섹션에서 **벡터 인덱스 이름** 필드에 인덱스의 이름을 입력합니다.

1. **벡터 필드** 섹션에서 **벡터 필드 추가**를 선택합니다. Amazon Bedrock은 데이터 소스의 벡터 임베딩을 이 필드에 저장합니다. 다음과 같은 구성을 제공하세요.
   + **벡터 필드 이름** - 필드의 이름을 입력합니다(예: **embeddings**).
   + **엔진** - 검색에 사용되는 벡터 엔진입니다. **faiss**를 선택합니다.
   + **차원** - 벡터의 차원 개수입니다. 벡터에 얼마나 많은 차원을 포함해야 하는지 확인하려면 다음 테이블을 참조하세요.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)
   + **거리 지표** - 벡터 간의 유사성을 측정하는 데 사용되는 지표입니다. 부동 소수점 벡터 임베딩에는 **유클리드**를 사용하는 것이 좋습니다.

1. **메타데이터 관리** 섹션을 확장하고 두 개의 필드를 추가하여 벡터 인덱스를 구성하고, 지식 기반이 벡터를 통해 검색할 수 있는 추가 메타데이터를 저장합니다. 다음 테이블에서는 필드와 각 필드에 지정할 값을 설명합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)

1. 지식 기반을 만들 때 사용할 수 있도록 벡터 인덱스 이름, 벡터 필드 이름, 메타데이터 관리 매핑 필드 이름에 대해 선택한 이름을 기록해 둡니다. 그런 다음 **생성**을 선택합니다.

벡터 인덱스가 만들어진 후 [지식 기반 생성](knowledge-base-create.md)을 진행할 수 있습니다. 다음 테이블에는 기록해 둔 각 정보를 입력할 위치가 요약되어 있습니다.


| Field | 지식 기반 설정의 해당 필드(콘솔) | 지식 기반 설정의 해당 필드(API) | 설명 | 
| --- | --- | --- | --- | 
| 컬렉션 ARN | 컬렉션 ARN | collectionARN | 벡터 검색 컬렉션의 Amazon 리소스 이름(ARN)입니다. | 
| 벡터 인덱스 이름 | 벡터 인덱스 이름 | vectorIndexName | 벡터 인덱스의 이름입니다. | 
| 벡터 필드 이름 | 벡터 필드 | vectorField | 데이터 소스에 대한 벡터 임베딩을 저장할 필드의 이름입니다. | 
| 메타데이터 관리(첫 번째 매핑 필드) | 텍스트 필드 | textField | 데이터 소스의 원시 텍스트를 저장할 필드의 이름입니다. | 
| 메타데이터 관리(두 번째 매핑 필드) | Bedrock 관리형 메타데이터 필드 | metadataField | Amazon Bedrock이 관리하는 메타데이터를 저장할 필드의 이름입니다. | 

Amazon OpenSearch Serverless에서 벡터 스토어를 설정하는 방법에 대한 자세한 설명서는 Amazon OpenSearch Service 개발자 안내서의 [벡터 검색 컬렉션 작업하기](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)를 참조하세요.

------
#### [ Amazon OpenSearch Service Managed Clusters ]

**중요**  
OpenSearch 관리형 클러스터에서 도메인 리소스를 사용하기 전에 특정 IAM 액세스 권한 및 정책을 구성해야 합니다. 자세한 내용은 [Amazon Bedrock Knowledge Bases에서 OpenSearch 관리형 클러스터를 사용하는 데 필요한 사전 조건 및 권한권한 구성 개요](kb-osm-permissions-prereq.md) 단원을 참조하십시오.
데이터 수집에 실패하면 OpenSearch 도메인 용량이 부족한 것일 수 있습니다. 이 문제를 해결하려면 더 높은 IOPS를 프로비저닝하고 처리량 설정을 늘려 도메인의 용량을 늘리세요. 자세한 내용은 [Amazon OpenSearch Service 운영 모범 사례를 참조하세요](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html).

1.  AWS Management Console의 OpenSearch 클러스터에서 도메인 및 벡터 인덱스를 생성하려면 *Amazon OpenSearch Service 개발자 안내서*의 [OpenSearch Service 도메인 생성 및 관리](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)에 설명된 단계를 따릅니다.

   도메인을 설정하는 과정에서 다음 고려 사항에 유의하세요.

   1. 도메인에 원하는 이름을 지정합니다.

   1. 도메인 **생성을 빠르게 시작하려면 간편** 생성 옵션을 사용하는 것이 좋습니다.
**참고**  
이 옵션은 처리량이 낮은 도메인을 제공합니다. 처리량이 더 높은 워크로드가 있는 경우 **표준 생성** 옵션을 선택합니다. 필요에 따라 나중에 용량을 조정할 수 있습니다. 이 옵션을 사용하면 가장 낮은 용량으로 시작한 다음 필요에 따라 나중에 수정할 수 있습니다.

   1. 네트워크에서 **퍼블릭 액세스**를 선택해야 합니다. VPC 뒤에 있는 OpenSearch 도메인은 지식 기반에서 지원되지 않습니다.

   1. **버전**에서 바이너리 벡터 임베딩을 사용하는 경우 Amazon Bedrock Knowledge Bases에는 엔진 버전 2.16 이상이 필요합니다. 또한 k-nn 인덱스를 생성하려면 2.13 이상의 버전이 필요합니다. 자세한 내용은 *Amazon OpenSearch Service 개발자 안내서*의 [K-NN 검색](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/knn.html)을 참조하세요.

   1. **듀얼 스택 모드를** 사용하는 것이 좋습니다.

   1. 도메인의 데이터를 보호하려면 **세분화된 액세스 제어**를 활성화하고, 지식 기반 서비스 역할에 OpenSearch 도메인에 대한 액세스 권한을 부여하고 요청하는 권한을 추가로 제어하는 것이 좋습니다.

   1. 자체 도메인을 만들려면 다른 모든 설정은 기본값으로 두고 **생성**을 선택합니다.

1. 도메인이 생성되면 이를 클릭하여 지식 기반을 생성할 때에 대한 **도메인 ARN** 및 **도메인 엔드포인트**를 기록해 둡니다.

1. 도메인을 생성한 후 OpenSearch 대시보드에서 다음 명령을 실행하거나 curl 명령을 사용하여 벡터 인덱스를 생성할 수 있습니다. 자세한 내용은 [OpenSearch 설명서](https://opensearch.org/docs/latest/search-plugins/knn/knn-index/)를 참조하세요.

   명령을 실행할 때:
   + 벡터 필드에 이름을 제공합니다(예: **embeddings**).
   + 검색에 사용되는 벡터가 **faiss**인지 확인합니다. **nmslib**는 지원되지 않습니다.
   + 벡터의 차원 수의 경우, 벡터에 얼마나 많은 차원을 포함해야 하는지 확인하기 위해 다음 테이블을 참조하세요.
**참고**  
Titan V2 임베딩 - 텍스트 모델은 여러 차원을 지원합니다. 256 또는 512일 수도 있습니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)
   + 두 개의 필드를 추가하여 벡터 인덱스를 구성하고, 지식 기반이 벡터를 통해 검색할 수 있는 추가 메타데이터를 저장합니다. 다음 테이블에서는 필드와 각각에 지정할 값을 설명합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)

   ```
   PUT /<index-name>
   {
       "settings": {
           "index": {
               "knn": true
           }
       },
       "mappings": {
           "properties": {
               "<vector-name>": {
                   "type": "knn_vector",
                   "dimension": <embedding-dimension>,
                   "data_type": "binary",          # Only needed for binary embeddings
                   "space_type": "l2" | "hamming", # Use l2 for float embeddings and hamming for binary embeddings
                   "method": {
                       "name": "hnsw",
                       "engine": "faiss",
                       "parameters": {
                           "ef_construction": 128,
                           "m": 24
                       }
                   }
               },
   
               "AMAZON_BEDROCK_METADATA": {
                   "type": "text",
                   "index": "false"
               },
               "AMAZON_BEDROCK_TEXT_CHUNK": {
                   "type": "text",
                   "index": "true"            
               }
           }
       }
   }
   ```

1. 지식 기반을 생성할 때 사용할 벡터 인덱스 이름, 벡터 필드 이름, 메타데이터 관리 매핑 필드 이름과 함께 도메인 ARN 및 엔드포인트를 기록해 두세요.

벡터 인덱스가 만들어진 후 [지식 기반 생성](knowledge-base-create.md)을 진행할 수 있습니다. 다음 테이블에는 기록해 둔 각 정보를 입력할 위치가 요약되어 있습니다.


| Field | 지식 기반 설정의 해당 필드(콘솔) | 지식 기반 설정의 해당 필드(API) | 설명 | 
| --- | --- | --- | --- | 
| 도메인 ARN | 도메인 ARN | domainARN | OpenSearch Service 도메인의 Amazon 리소스 이름(ARN). | 
| 도메인 엔드포인트 | 도메인 엔드포인트 | domainEndpoint | OpenSearch 도메인에 연결할 엔드포인트입니다. | 
| 벡터 인덱스 이름 | 벡터 인덱스 이름 | vectorIndexName | 벡터 인덱스의 이름입니다. | 
| 벡터 필드 이름 | 벡터 필드 | vectorField | 데이터 소스에 대한 벡터 임베딩을 저장할 필드의 이름입니다. | 
| 메타데이터 관리(첫 번째 매핑 필드) | 텍스트 필드 | textField | 데이터 소스의 원시 텍스트를 저장할 필드의 이름입니다. | 
| 메타데이터 관리(두 번째 매핑 필드) | Bedrock 관리형 메타데이터 필드 | metadataField | Amazon Bedrock이 관리하는 메타데이터를 저장할 필드의 이름입니다. | 

------
#### [ Amazon S3 Vectors ]

Amazon S3 Vectors는 벡터 데이터를 저장하고 쿼리하는 데 사용할 수 있는 Amazon S3의 비용 효율적인 벡터 스토리지를 제공합니다. 1초 미만의 쿼리 성능을 갖춘 대용량 벡터 데이터세트의 내구성과 탄력적 스토리지를 제공합니다. Amazon S3 Vectors는 자주 사용하지 않는 쿼리 워크로드에 가장 적합하며 검색 증강 생성(RAG) 및 시맨틱 검색 애플리케이션에 사용할 때 비용을 절감하는 데 도움이 될 수 있습니다.

Amazon S3 Vectors는 의미와 유사성을 기반으로 쿼리할 수 있는 벡터 인덱스가 포함된 S3 벡터 버킷을 도입합니다. 인프라를 프로비저닝하지 않고도 벡터 데이터를 대규모로 저장, 액세스 및 쿼리하는 동시에 1초 미만의 쿼리 응답 시간을 제공하고 비용을 절감하는 데 사용할 수 있습니다. 벡터 버킷에서 벡터 지수 내에서 벡터 데이터를 조직할 수 있습니다. 벡터 버킷에는 여러 벡터 인덱스가 있을 수 있습니다. 자세한 내용을 알아보려면 *Amazon S3 사용 설명서*의 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)를 참조하세요.

**참고**  
Amazon Bedrock과 Amazon S3 벡터를 모두 사용할 수 있는 모든 AWS 리전에서 Amazon S3 벡터에 대한 지식 기반을 생성할 수 있습니다. Amazon S3 Vectors의 리전별 가용성에 대한 자세한 내용은 *Amazon S3 사용 설명서*의 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)를 참조하세요.
Amazon Bedrock 지식 기반에서 계층적 청킹과 함께 매우 높은 토큰 수를 사용하는 경우 상위-하위 청크 관계 및 계층적 컨텍스트가 Amazon S3 벡터에 필터링할 수 없는 메타데이터로 저장되므로 최대 메타데이터 크기 제한을 초과할 수 있습니다. 벡터당 메타데이터 크기 제한에 대한 자세한 내용은 *Amazon S3 사용 설명서*의 [제한 및 제한을](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html) 참조하세요. 데이터 분리에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.
<a name="metadata-support"></a>
**메타데이터 지원**  
메타데이터를 각 벡터에 키-값 페어로 연결할 수 있습니다. 기본적으로 메타데이터는 필터링이 가능하며 유사성 검색 쿼리에서 날짜, 범주 또는 사용자 기본 설정과 같은 조건을 기준으로 필터링하는 데 사용할 수 있습니다.

벡터 인덱스를 생성할 때 필터링할 수 없도록 메타데이터를 구성할 수도 있습니다. Amazon S3 Vectors 인덱스는 문자열, 불리언, 숫자 타입을 지원합니다.

Amazon Bedrock 지식 기반과 함께 Amazon S3 벡터를 사용하는 경우 벡터당 최대 1KB의 사용자 지정 메타데이터(필터링 가능한 메타데이터와 필터링할 수 없는 메타데이터 모두 포함)와 35개의 메타데이터 키를 연결할 수 있습니다. 벡터당 메타데이터 크기 제한에 대한 자세한 내용은 *Amazon S3 사용 설명서*의 [제한 및 제한을](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html) 참조하세요.

메타데이터가 이러한 제한을 초과하면 벡터 인덱스를 채울 때 수집 작업에서 예외가 발생합니다. 자세한 내용을 알아보려면 *Amazon S3 사용 설명서*의 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)를 참조하세요.

**필수 권한**  
IAM 정책이 Amazon Bedrock이 S3 벡터 버킷의 벡터 인덱스에 액세스할 수 있도록 허용하는지 확인합니다. 필요한 권한에 대한 자세한 정보는 [Amazon Bedrock Knowledge Bases에 대한 서비스 역할 생성](kb-permissions.md) 섹션을 참조하세요.

**S3 벡터 버킷 및 인덱스 생성**  
Amazon S3 Vectors를 지식 기반과 함께 사용하려면 S3 벡터 버킷과 벡터 인덱스를 생성해야 합니다. Amazon S3 콘솔 AWS CLI또는 AWS SDK를 사용하여 벡터 버킷과 인덱스를 생성할 수 있습니다. 자세한 지침은 *Amazon S3 사용 설명서*의 [벡터 지수 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-index-create.html)을 참조하세요.

[Amazon S3 콘솔](https://console.aws.amazon.com/s3/vector-buckets#)에서 벡터 버킷 및 인덱스를 생성할 때 다음 고려 사항에 유의하세요.

1. S3 벡터 버킷을 생성할 때 다음 고려 사항에 유의하세요.
   + 고유한 **벡터 버킷 이름**을 제공합니다.
   + (선택 사항) Amazon S3는 **Amazon S3 관리형 키(SSE-S3)를 사용한 기본 서버 측 암호화**를 사용하여 데이터를 자동으로 암호화합니다. 대신이 기본 암호화를 사용할지 아니면 ** AWS Key Management Service 키(SSE-KMS)를 사용한 서버 측 암호화**를 사용할지 선택할 수 있습니다.
**참고**  
벡터 버킷을 만든 후에는 암호화 유형을 변경할 수 없습니다.

     step-by-step 지침은 [AWS KMS 키를 사용한 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-bucket-encryption.html)를 참조하세요.

1. S3 벡터 버킷을 생성한 후에는 지식 기반을 생성할 때 벡터 버킷의 **Amazon 리소스 이름(ARN)**을 기록해 둡니다.

1. 생성한 벡터 버킷을 선택한 다음 벡터 인덱스를 생성합니다. 벡터 인덱스를 생성할 때 다음 고려 사항에 유의하세요.
   + **벡터 지수 이름** - 필드의 이름을 입력합니다(예: **embeddings**).
   + **차원** - 벡터의 차원 개수입니다. 차원은 1에서 4096 사이의 값이어야 합니다. 다음 표를 참고하여 사용하려는 임베딩 모델에 따라 벡터가 가져야 할 차원 수를 확인하세요.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)
   + 
**참고**  
Amazon S3 Vectors는 부동 소수점 임베딩만 지원합니다. 바이너리 임베딩은 지원되지 않습니다.

     **거리 지표** - 벡터 간의 유사성을 측정하는 데 사용되는 지표입니다. **코사인** 또는 **유클리드 거리**을 사용할 수 있습니다.

1. **추가 설정**을 확장하고 필터링할 수 없는 메타데이터 필드에 **필터링할 수 없는 메타데이터**를 제공합니다.

   필터링할 수 없는 메타데이터 키는 최대 10개까지 구성할 수 있습니다. **키 추가**를 선택한 다음 키로 `AMAZON_BEDROCK_TEXT` 및 `AMAZON_BEDROCK_METADATA`를 추가합니다.

1. **암호화**에서 **암호화 유형 지정**을 선택합니다. **암호화에 버킷 설정을 사용**하거나 벡터 인덱스에 대한 암호화 설정을 재정의할 수 있습니다. 버킷 수준 설정을 재정의하는 경우 벡터 인덱스의 암호화 유형을 ** AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KMS)** 또는 ** Amazon S3 관리형 키를 사용한 기본 서버 측 암호화(SSE-S3)**로 지정할 수 있습니다. 벡터 인덱스의 암호화 구성 설정에 대한 자세한 내용은 [ Amazon S3 벡터의 데이터 보호 및 암호화를 참조하세요](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-data-encryption.html).

1. **태그(선택 사항)**에서 태그를 키-값 페어로 추가하여 AWS Billing and Cost Management를 사용하여 벡터 인덱스 비용을 추적하고 구성할 수 있습니다. **키**와 **값**을 입력합니다. 태그를 더 추가하려면 **태그 추가(Add Tag)**를 선택합니다. 벡터 인덱스에 최대 50개의 태그를 입력할 수 있습니다. 자세한 내용은 [ Amazon S3 벡터 인덱스에서 태그 사용을 참조하세요](https://docs.aws.amazon.com/console/s3/vector-index-create-with-tag).

1. 벡터 인덱스를 생성하고 지식 기반을 생성할 때 벡터 인덱스의 **Amazon 리소스 이름(ARN)**을 기록해 둡니다.

**S3 벡터 버킷에 대한 지식 기반 생성**  
이 정보를 수집한 후 [지식 기반을 생성](knowledge-base-create.md)할 수 있습니다. S3 벡터 버킷을 사용하여 지식 기반을 생성할 때 벡터 버킷의 ARN과 벡터 인덱스를 제공해야 합니다. 벡터 인덱스는 데이터 소스에서 생성된 임베딩을 저장합니다. 다음 표는 각 정보를 입력할 위치를 요약한 것입니다.


| Field | 지식 기반 설정의 해당 필드(콘솔) | 지식 기반 설정의 해당 필드(API) | 설명 | 
| --- | --- | --- | --- | 
| 벡터 버킷 ARN | S3 벡터 버킷 ARN | vectorBucketArn | S3 벡터 버킷의 Amazon 리소스 이름(ARN). | 
| 벡터 인덱스 ARN | S3 벡터 인덱스 ARN | vectorIndexARN | S3 벡터 버킷에 대한 벡터 인덱스의 Amazon 리소스 이름(ARN)입니다. | 

------
#### [ Amazon Aurora (RDS) ]

1. [Aurora PostgreSQL을 지식 기반으로 사용](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)에 나와 있는 단계에 따라 Amazon Aurora 데이터베이스(DB) 클러스터, 스키마, 테이블을 만듭니다. 테이블을 만들 때는 다음 열과 데이터 유형으로 구성합니다. 다음 테이블에 나열된 이름 대신 원하는 열 이름을 사용할 수 있습니다. 지식 기반 설정 중에 입력할 수 있도록 선택한 열 이름을 기록해 둡니다.

   지식 기반을 생성하기 전에 이러한 필드를 제공해야 합니다. 지식 기반이 생성되면 업데이트되지 않습니다.
**중요**  
Aurora 클러스터는 Amazon Bedrock에 대한 지식 기반이 생성된 클러스터 AWS 계정 와 동일한에 있어야 합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)

1. 텍스트 및 임베딩 필드의 열 벡터 및 텍스트에 인덱스를 생성해야 합니다. 사용자 지정 메타데이터 필드를 사용하는 경우 이 열에 GIN 인덱스도 생성해야 합니다. GIN 인덱스를 사용하여 메타데이터 필터링을 위해 jsonb 문서에서 키-값 페어를 효율적으로 검색할 수 있습니다. 자세한 내용은 *PostgreSQL 설명서*의 [jsonb 인덱싱](https://www.postgresql.org/docs/current/datatype-json.html#JSON-INDEXING)을 참조하세요.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)
**참고**  
영어 콘텐츠로 하이브리드 검색 정확도와 지연 시간을 개선하려면 '단순' 대신 '영어' 사전을 사용하는 것이 좋습니다.  

   ```
   CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('english', chunks));
   ```

1. (선택 사항) [필터링을 위해 파일에 메타데이터를 추가](kb-test-config.md)한 경우 사용자 지정 메타데이터 필드에 열 이름을 제공하여 모든 메타데이터를 단일 열에 저장하는 것이 좋습니다. [데이터를 수집](kb-data-source-sync-ingest.md)하는 동안 이 열은 데이터 소스의 메타데이터 파일에 있는 모든 정보로 채워집니다. 이 필드를 제공하기로 선택한 경우 이 열에 GIN 인덱스를 생성해야 합니다.
**참고**  
숫자 메타데이터에 범위 필터를 자주 사용하는 경우 성능을 최적화하려면 특정 키에 대한 인덱스를 생성합니다. 예를 들어 `"lessThan": { "key": "year", "value": 1989 }`와 같은 필터를 사용하는 경우 `year` 키에 표현식 인덱스를 생성합니다. 자세한 내용은 *PostgreSQL 설명서*의 [표현식 인덱스](https://www.postgresql.org/docs/current/indexes-expressional.html)를 참조하세요.  

   ```
   CREATE INDEX ON your_table ((custom_metadata->>'year')::double precision
   ```

   또는 이 필드 이름을 제공하지 않으면 파일의 각 메타데이터 속성에 대한 열을 생성하고 데이터 유형(텍스트, 숫자 또는 부울)을 지정할 수 있습니다. 예를 들어, `genre` 속성이 데이터 소스에 있는 경우 `genre`라는 열을 추가하고 `text`를 데이터 유형으로 지정합니다. [데이터 수집](kb-data-source-sync-ingest.md) 과정에서 이러한 별도의 열은 해당 속성 값으로 채워집니다.

1. [Amazon Aurora 및를 사용한 암호 관리의 단계에 따라 Aurora AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) DB 클러스터의 AWS Secrets Manager 암호를 구성합니다.

1. DB 클러스터를 생성하고 암호를 설정한 후에는 다음 정보를 기록해 둡니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)

------
#### [ Neptune Analytics graphs (GraphRAG) ]

1.  AWS Management Console의 Neptune Analytics에서 그래프 및 벡터 스토어를 생성하려면 *Neptune Analytics 사용 설명서*의 [Neptune Analytics의 벡터 인덱싱](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/vector-index.html)에 설명된 단계를 따르세요.
**참고**  
Neptune GraphRAG를 사용하려면 벡터 검색 인덱스를 사용하여 빈 Neptune Analytics 그래프를 생성합니다. 벡터 검색 인덱스는 그래프가 생성될 때만 생성할 수 있습니다. [콘솔에서 Neptune Analytics 그래프](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/create-graph-using-console.html)를 생성할 때 프로세스 종료 부근의 **벡터 검색 설정**에서 인덱스 차원을 지정합니다.

   그래프를 생성할 때 다음 고려 사항에 유의하세요.

   1. 그래프에 원하는 이름을 지정합니다.

   1. **데이터 소스**에서 **빈 그래프 생성**을 선택하고 할당할 m-NCU의 수를 지정합니다. 각 m-NCU에는 약 1GiB의 메모리 용량과 해당 컴퓨팅 및 네트워킹이 있습니다.
**참고**  
그래프의 용량은 나중에 수정할 수 있습니다. 가장 작은 인스턴스로 시작한 후 필요한 경우 다른 인스턴스를 선택하는 것이 좋습니다.

   1. 기본 네트워크 연결 설정을 그대로 둘 수 있습니다. Amazon Bedrock은 지식 기반을 연결하는 Neptune Analytics 그래프에 대한 네트워킹 연결을 생성합니다. 그래프에 대해 퍼블릭 연결 또는 프라이빗 엔드포인트를 구성할 필요가 없습니다.

   1. **벡터 검색 설정**에서 **벡터 차원 사용**을 선택하고 각 벡터의 차원 수를 지정합니다.
**참고**  
각 벡터의 차원 수는 임베딩 모델의 벡터 차원과 일치해야 합니다. 벡터에 얼마나 많은 차원을 포함해야 하는지 확인하려면 다음 테이블을 참조하세요.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)

   1. 다른 모든 설정은 기본값으로 두고 그래프를 생성합니다.

1. 그래프가 생성되면 이를 클릭하여 지식 기반을 생성할 때에 대한 **리소스 ARN** 및 **벡터 차원**을 기록해 둡니다. Amazon Bedrock에서 임베딩 모델을 선택할 때는 Neptune Analytics 그래프에서 구성한 **벡터 차원과 동일한 차원**을 가진 모델을 선택해야 합니다.

벡터 인덱스가 만들어진 후 [지식 기반 생성](knowledge-base-create.md)을 진행할 수 있습니다. 다음 테이블에는 기록해 둔 각 정보를 입력할 위치가 요약되어 있습니다.


| Field | 지식 기반 설정의 해당 필드(콘솔) | 지식 기반 설정의 해당 필드(API) | 설명 | 
| --- | --- | --- | --- | 
| 그래프 ARN | Neptune 분석 그래프 ARN | graphARN | Neptune 분석 그래프의 Amazon 리소스 이름(ARN)입니다. | 
| 메타데이터 관리(첫 번째 매핑 필드) | 텍스트 필드 이름 | textField | 데이터 소스의 원시 텍스트를 저장할 필드의 이름입니다. 텍스트와 같이 이 필드에 값을 제공할 수 있습니다. | 
| 메타데이터 관리(두 번째 매핑 필드) | Bedrock 관리형 메타데이터 필드 | metadataField | Amazon Bedrock이 관리하는 메타데이터를 저장할 필드의 이름입니다. 메타데이터와 같이 이 필드에 값을 제공할 수 있습니다. | 

------
#### [ Pinecone ]

**참고**  
를 사용하는 경우 Pinecone벡터 스토어 서비스를 제공하기 위해에 사용자를 대신하여 지정된 타사 소스에 AWS 액세스할 수 있는 권한을 부여하는 데 동의하는 것입니다. 귀하는 타사 서비스에서의 데이터 사용 및 전송에 적용되는 모든 타사 약관을 준수할 책임이 있습니다.

Pinecone에서 벡터 스토어를 설정하는 방법에 대한 자세한 내용은 [Amazon Bedrock용 지식 기반으로 Pinecone 사용하기](https://docs.pinecone.io/docs/amazon-bedrock)를 참조하세요.

벡터 스토어를 설정하는 동안, 지식 기반을 생성할 때 작성하게 될 다음과 같은 정보를 기록해 둡니다.
+ **엔드포인트 URL** – 인덱스 관리 페이지의 엔드포인트 URL.
+ **자격 증명 보안 암호 ARN** - 데이터베이스 사용자의 사용자 이름과 암호가 AWS Secrets Manager 포함된에서 생성한 보안 암호의 Amazon 리소스 이름(ARN)입니다.
+ **(선택 사항) 자격 증명 보안 ARN에 대한 고객 관리형 KMS 키** - 자격 증명 보안 ARN을 암호화한 경우 Amazon Bedrock이 암호를 해독할 수 있도록 KMS 키를 제공합니다.
+ **네임스페이스** - (선택 사항) 데이터베이스에 새 데이터를 쓰는 데 사용되는 네임스페이스입니다. 자세한 내용은 [네임스페이스 사용](https://docs.pinecone.io/docs/namespaces)을 참조하세요.

Pinecone 인덱스를 만들 때 제공해야 하는 추가 구성이 있습니다.
+ **텍스트 필드 이름** - Amazon Bedrock이 원시 청크 텍스트를 저장해야 하는 필드의 이름입니다.
+ **메타데이터 필드 이름** - Amazon Bedrock이 소스 속성 메타데이터를 저장해야 하는 필드의 이름입니다.

Pinecone 인덱스에 액세스하려면 AWS Secrets Manager을 통해 Amazon Bedrock에 Pinecone API 키를 제공해야 합니다.

**Pinecone 구성에 대한 보안 암호를 설정하는 방법**

1. [AWS Secrets Manager 보안 암호 생성](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)의 단계에 따라 키를 로 설정하고 `apiKey` 값을 API 키로 설정하여 Pinecone 인덱스에 액세스합니다.

1. API 키를 찾으려면 [Pinecone 콘솔](https://app.pinecone.io/)을 열고 **API 키**를 선택합니다.

1. 보안 암호를 생성한 후 KMS 키의 ARN을 기록해 둡니다.

1. [지식 기반이 포함된 벡터 저장소의 AWS Secrets Manager 보안 암호를 해독할 수 있는 권한](encryption-kb.md#encryption-kb-3p)의 단계에 따라 서비스 역할에 권한을 연결하여 KMS 키의 ARN을 복호화합니다.

1. 나중에 지식 기반을 생성할 때 **자격 증명 암호 ARN** 필드에 ARN을 입력합니다.

------
#### [ Redis 엔터프라이즈 클라우드 ]

**참고**  
를 사용하는 경우 벡터 스토어 서비스를 제공하기 위해 Redis Enterprise Cloud에 사용자를 대신하여 지정된 타사 소스에 AWS 액세스할 수 있는 권한을 부여하는 데 동의하는 것입니다. 사용자는 타사 서비스에서의 데이터 사용 및 전송에 적용되는 모든 타사 약관을 준수할 책임이 있습니다.

Redis Enterprise Cloud에서 벡터 스토어를 설정하는 방법에 대한 자세한 설명서는 [Redis Enterprise Cloud를 Amazon Bedrock에 통합](https://docs.redis.com/latest/rc/cloud-integrations/aws-marketplace/aws-bedrock/)을 참조하세요.

벡터 스토어를 설정하는 동안, 지식 기반을 생성할 때 작성하게 될 다음과 같은 정보를 기록해 둡니다.
+ **엔드포인트 URL** - 데이터베이스의 퍼블릭 엔드포인트 URL입니다.
+ **벡터 인덱스 이름** - 데이터베이스에 대한 벡터 인덱스의 이름입니다.
+ **벡터 필드** - 벡터 임베딩을 저장할 필드의 이름입니다. 벡터에 얼마나 많은 차원을 포함해야 하는지 확인하려면 다음 테이블을 참조하세요.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/knowledge-base-setup.html)
+ **텍스트 필드** - Amazon Bedrock이 원시 텍스트 청크를 저장하는 필드의 이름입니다.
+ **Bedrock 관리형 메타데이터 필드** - Amazon Bedrock이 지식 기반과 관련된 메타데이터를 저장하는 필드의 이름입니다.

Redis Enterprise Cloud 클러스터에 액세스하려면 AWS Secrets Manager을 통해 Amazon Bedrock에 Redis Enterprise Cloud 보안 구성을 제공해야 합니다.

**Redis Enterprise Cloud 구성에 대한 보안 암호를 설정하는 방법**

1. [Transport Layer Security(TLS)](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/)의 단계에 따라 TLS가 Amazon Bedrock과 함께 데이터베이스를 사용할 수 있도록 활성화합니다.

1. [AWS Secrets Manager 보안 암호 생성](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)의 단계를 따릅니다. Redis Enterprise Cloud 구성의 적절한 값을 보안 암호에 입력하여 다음과 같은 키를 설정합니다.
   + `username` - Redis Enterprise Cloud 데이터베이스에 액세스할 수 있는 사용자 이름입니다. 사용자 이름을 찾으려면 [Redis 콘솔](http://app.redislabs.com/)에서 데이터베이스의 **보안** 섹션을 확인합니다.
   + `password` - Redis Enterprise Cloud 데이터베이스에 액세스할 수 있는 암호입니다. 암호를 찾으려면 [Redis 콘솔](http://app.redislabs.com/)에서 데이터베이스의 **보안** 섹션을 확인합니다.
   + `serverCertificate` - Redis Cloud 인증 기관에서 발급한 인증서의 내용입니다. [인증서 다운로드](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)의 단계에 따라 Redis 관리 콘솔에서 서버 인증서를 다운로드합니다.
   + `clientPrivateKey` - Redis Cloud 인증 기관에서 발급한 인증서의 프라이빗 키입니다. [인증서 다운로드](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)의 단계에 따라 Redis 관리 콘솔에서 서버 인증서를 다운로드합니다.
   + `clientCertificate` - Redis Cloud 인증 기관에서 발급한 인증서의 퍼블릭 키입니다. [인증서 다운로드](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)의 단계에 따라 Redis 관리 콘솔에서 서버 인증서를 다운로드합니다.

1. 보안 암호를 생성한 후 해당 ARN을 기록해 둡니다. 나중에 지식 기반을 생성할 때 **자격 증명 암호 ARN** 필드에 ARN을 입력합니다.

------
#### [ MongoDB Atlas ]

**참고**  
MongoDB Atlas를 사용하는 경우 벡터 스토어 서비스를 제공하기 위해에 사용자를 대신하여 지정된 타사 소스에 AWS 액세스할 수 있는 권한을 부여하는 데 동의하는 것입니다. 귀하는 타사 서비스에서의 데이터 사용 및 전송에 적용되는 모든 타사 약관을 준수할 책임이 있습니다.

MongoDB Atlas에서 벡터 스토어를 설정하는 방법에 대한 자세한 내용은 [MongoDB Atlas 및 Amazon Bedrock을 사용하여 완전 관리형 RAG 워크플로 시작](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)을 참조하세요.

벡터 스토어를 설정하는 동안, 지식 기반을 만들 때 추가하게 될 다음과 같은 정보를 기록해 둡니다.
+ **엔드포인트 URL** - MongoDB Atlas 클러스터의 엔드포인트 URL입니다.
+ **데이터베이스 이름** - MongoDB Atlas 클러스터의 데이터베이스 이름입니다.
+ **컬렉션 이름** - 데이터베이스의 컬렉션 이름입니다.
+ **자격 증명 보안 암호 ARN** - MongoDB Atlas 클러스터에 있는 데이터베이스 사용자의 사용자 이름과 암호 AWS Secrets Manager 가 포함된에서 생성한 보안 암호의 Amazon 리소스 이름(ARN)입니다. 보안 암호에는 `username` 및 `password`라는 키가 포함되어야 합니다.
+ **(선택 사항) 자격 증명 보안 ARN에 대한 고객 관리형 KMS 키** - 자격 증명 보안 ARN을 암호화한 경우 Amazon Bedrock이 암호를 해독할 수 있도록 KMS 키를 제공합니다.

MongoDB Atlas 인덱스를 만들 때 **필드 매핑**에 제공해야 하는 추가 구성이 있습니다.
+ **벡터 인덱스 이름** - 컬렉션에 있는 MongoDB Atlas 벡터 검색 인덱스의 이름입니다.
+ **벡터 필드 이름** - Amazon Bedrock이 벡터 임베딩을 저장해야 하는 필드의 이름입니다.
+ **텍스트 필드 이름** - Amazon Bedrock이 원시 청크 텍스트를 저장해야 하는 필드의 이름입니다.
+ **메타데이터 필드 이름** - Amazon Bedrock이 소스 속성 메타데이터를 저장해야 하는 필드의 이름입니다.
+ **(선택 사항)텍스트 검색 인덱스 이름** - 컬렉션에 있는 MongoDB Atlas Search 인덱스의 이름입니다.

**중요**  
MongoDB Atlas 지식 기반에서 메타데이터 필터링을 사용하려는 경우 벡터 인덱스에서 필터를 수동으로 구성해야 합니다. 메타데이터 필터링은 기본적으로 작동하지 않으며 MongoDB Atlas 벡터 인덱스 구성에서 추가 설정이 필요합니다.

(선택 사항) Amazon Bedrock이 MongoDB Atlas 클러스터에 연결되도록 하려면 [ Amazon Bedrock을 사용하여 MongoDB Atlas를 사용하는 RAG 워크플로](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)를 AWS PrivateLink참조하세요.

------

# Amazon Bedrock Knowledge Bases에서 OpenSearch 관리형 클러스터를 사용하는 데 필요한 사전 조건 및 권한
<a name="kb-osm-permissions-prereq"></a>

이 섹션에서는 Amazon OpenSearch Service 관리형 클러스터를 사용하여 자체 벡터 데이터베이스를 생성하는 경우 권한을 구성하는 방법을 보여줍니다. 지식 기반을 생성하기 전에 이 구성을 수행해야 합니다. 이 단계에서는 Amazon OpenSearch Service에서 도메인 및 벡터 인덱스를 이미 생성했다고 가정합니다. 자세한 내용을 알아보려면 [Amazon OpenSearch Service 개발자 안내서](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)의 *OpenSearch Service 도메인 생성 및 관리*를 참조하세요.

## 주요 고려 사항
<a name="kb-osm-permissions-prereq-considerations"></a>

다음은 Amazon OpenSearch Service 관리형 클러스터에서 Amazon Bedrock Knowledge Bases를 사용하기 위한 몇 가지 주요 고려 사항입니다.
+ OpenSearch 관리형 클러스터에서 도메인 리소스를 사용하기 전에 특정 IAM 액세스 권한 및 정책을 구성해야 합니다. 관리형 클러스터와 지식 기반 통합의 경우 이 섹션의 단계를 수행하기 전에 도메인에 제한적인 액세스 정책이 있는 경우 필요한 IAM 액세스 권한을 부여하고 리소스 기반 정책을 구성해야 합니다. 또한 권한 범위를 좁히도록 세분화된 액세스 제어를 구성하는 것이 좋습니다.
+ 지식 기반에 대한 데이터를 수집할 때 오류가 발생하면 수집 속도를 처리하기에 OpenSearch 도메인 용량이 부족한 것일 수 있습니다. 이 문제를 해결하려면 더 높은 IOPS(초당 입력/출력 작업 수)를 프로비저닝하고 처리량 설정을 늘려 도메인의 용량을 늘립니다. 새 용량이 프로비저닝될 때까지 몇 분 기다린 다음 수집 프로세스를 다시 시도합니다. 문제가 해결되었는지 확인하기 위해 재시도 프로세스 중에 성능을 모니터링할 수 있습니다. 스로틀링이 여전히 지속되면 효율성을 높이기 위해 용량을 추가로 조정해야 할 수 있습니다. 자세한 내용은 [Amazon OpenSearch Service 운영 모범 사례](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)를 참조하세요.

## 권한 구성 개요
<a name="kb-osm-permissions-prereq-overview"></a>

관리형 클러스터와 지식 기반을 통합하려면 다음과 같은 IAM 액세스 권한 및 리소스 기반 정책을 구성해야 합니다. 세분화된 액세스 정책을 활성화하여 사용자 액세스와 속성 수준까지 범위가 축소되어야 하는 세부 수준을 추가로 제어하는 것이 좋습니다.

다음 단계에서는 권한을 구성하는 방법에 대한 개략적인 개요를 제공합니다.

1. 

**지식 기반 서비스 역할 생성 및 사용**

   구성하려는 권한의 경우 자체 사용자 지정 역할을 제공할 수 있지만 Amazon Bedrock Knowledge Bases에 대한 옵션을 지정하여 지식 기반 서비스 역할을 생성하는 것이 좋습니다.

1. 

**리소스 기반 정책 구성**

   OpenSearch 도메인은 도메인에 액세스하고 도메인에서 작업할 수 있는 위탁자를 결정하는 리소스 기반 정책을 지원합니다. Knowledge Bases와 함께 사용하려면 도메인에 대한 리소스 기반 정책을 적절하게 구성해야 합니다.

1. 

***(매우 권장)* 세분화된 액세스 제어를 위한 역할 매핑 제공**

   세분화된 액세스 제어는 선택 사항이지만 속성 수준에서 권한 범위를 축소해야 하는 세부 수준을 제어하도록 활성화하는 것이 좋습니다.

## IAM 정책 구성
<a name="kb-osm-permissions-iam"></a>

도메인의 액세스 정책은 계정의 역할별로 필요한 OpenSearch API 작업을 수행할 수 있는 권한을 부여해야 합니다.

도메인에 제한적인 액세스 정책이 있는 경우 다음과 같이 업데이트해야 할 수 있습니다.
+ Amazon Bedrock 서비스에 대한 액세스 권한을 부여하고 `GET`, `POST`, `PUT`, 및 `DELETE`과 같은 필수 HTTP 작업을 포함해야 합니다.
+ 또한 인덱스 리소스에서 `es:DescribeDomain` 작업을 수행할 수 있는 권한을 Amazon Bedrock에 부여해야 합니다. 이를 통해 Amazon Bedrock Knowledge Bases는 지식 기반을 구성할 때 필요한 검증을 수행할 수 있습니다.

## (선택 사항) 세분화된 액세스 제어
<a name="kb-osm-permissions-console-fgap"></a>

세분화된 액세스 제어는 속성 levelYou 권한 범위를 축소해야 하는 세분화를 제어할 수 있습니다. 세분화된 액세스 정책을 구성하여 지식 기반에서 생성한 서비스 역할에 필요한 읽기-쓰기 권한을 부여할 수 있습니다.

세분화된 액세스 제어를 구성하고 역할 매핑을 제공하려면

1. 생성한 OpenSearch 도메인에 세분화된 액세스 제어가 활성화되어 있는지 확인합니다.

1. 아직 생성하지 않은 경우 OpenSearch UI(대시보드)를 생성합니다. 이는 역할 매핑을 구성하는 데 사용됩니다

1. OpenSearch 대시보드에서 OpenSearch 역할을 생성하고 벡터 인덱스 이름과 클러스터 및 인덱스 권한을 지정합니다. 권한을 추가하려면 권한 그룹을 생성한 다음 역할에 대해 `delete`, `search`, `get` 및 `index` 등의 작업 세트를 수행할 수 있는 액세스 권한을 부여하는 필수 권한을 추가해야 합니다.

1. 필요한 권한을 추가한 후에는 OpenSearch 백엔드 역할에 대한 지식 기반 서비스 역할의 ARN을 입력해야 합니다. 이 단계를 수행하면 지식 기반 서비스 역할과 OpenSearch 역할 간의 매핑이 완료되고, 그러면 Amazon Bedrock Knowledge Bases에 OpenSearch 도메인의 벡터 인덱스에 액세스하고 필요한 작업을 수행할 수 있는 권한을 부여합니다.

**Topics**
+ [주요 고려 사항](#kb-osm-permissions-prereq-considerations)
+ [권한 구성 개요](#kb-osm-permissions-prereq-overview)
+ [IAM 정책 구성](#kb-osm-permissions-iam)
+ [(선택 사항) 세분화된 액세스 제어](#kb-osm-permissions-console-fgap)
+ [OpenSearch 관리형 클러스터에 대한 리소스 기반 정책 구성](kb-osm-permissions-slr-rbp.md)
+ [세분화된 액세스 제어를 사용하여 OpenSearch 권한 구성](kb-osm-permissions-console-fgap.md)

# OpenSearch 관리형 클러스터에 대한 리소스 기반 정책 구성
<a name="kb-osm-permissions-slr-rbp"></a>

지식 기반을 생성할 때 사용자 지정 역할을 생성하거나 Amazon Bedrock이 사용자를 대신하여 역할을 생성하도록 할 수 있습니다. 권한을 구성하는 방법은 새 역할을 생성하는지 아니면 기존 역할을 사용하는지에 따라 달라집니다. 기존 IAM 역할이 이미 있는 경우 도메인의 액세스 정책으로 인해 계정의 역할이 필요한 OpenSearch API 작업을 수행하지 못하게 되지 않도록 해야 합니다.

Amazon Bedrock Knowledge Bases가 IAM 역할을 생성하도록 하려면 도메인의 액세스 정책이 계정의 역할별로 필요한 OpenSearch API 작업을 수행할 수 있는 권한을 부여하는지 확인해야 합니다. 도메인에 제한적인 액세스 정책이 있는 경우 역할이 이러한 작업을 수행하지 못하게 할 수 있습니다. 다음은 제한적인 리소스 기반 정책의 예시를 보여줍니다.

이 경우 다음 중 하나를 수행할 수 있습니다.
+ OpenSearch 도메인이 필요한 작업을 수행하기 위해 이 역할에 대한 액세스 권한을 부여할 수 있는 기존 IAM 역할을 사용하여 지식 기반을 생성합니다.
+ 또는 Amazon Bedrock에서 새 역할을 생성하도록 할 수 있습니다. 이 경우 도메인의 액세스 정책이 계정의 역할이 필요한 OpenSearch API 작업을 수행할 수 있는 권한을 부여해야 합니다.

다음 섹션에서는 필요한 권한을 부여하는 샘플 IAM 정책과 도메인의 액세스 정책을 업데이트하여 필요한 OpenSearch API 작업을 수행할 수 있는 권한을 부여하는 방법을 보여줍니다.

**Topics**
+ [샘플 IAM 자격 증명 기반 및 리소스 기반 정책](#kb-osm-permissions-iam)
+ [Amazon Bedrock Knowledge Bases 서비스 역할 생성](#kb-osm-permissions-slr)
+ [리소스 기반 정책 업데이트](#kb-osm-permissions-console-rbp)

## 샘플 IAM 자격 증명 기반 및 리소스 기반 정책
<a name="kb-osm-permissions-iam"></a>

이 섹션에서는 Amazon Bedrock Knowledge Bases와 통합할 때 OpenSearch 도메인에 대해 구성할 수 있는 샘플 자격 증명 정책과 리소스 기반 정책을 제공합니다. 지식 기반을 제공하는 인덱스에서 이러한 작업을 수행할 수 있는 권한을 Amazon Bedrock에 부여해야 합니다.


****  

| 작업 | Resource | 설명 | 
| --- | --- | --- | 
| es:ESHttpPost | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 인덱스에 정보 삽입 | 
| es:ESHttpGet |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 인덱스에서 정보를 검색하는 데 사용됩니다. 이 작업은 domain/index 레벨과 domain/index/\$1 레벨 모두에서 구성됩니다. domain/index 레벨에서 엔진 유형과 같은 인덱스에 대한 상위 수준 세부 정보를 가져올 수 있습니다. 인덱스 내에 저장된 세부 정보를 검색하려면 domain/index/\$1 수준에서 권한이 필요합니다. | 
| es:ESHttpHead |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 인덱스에서 정보를 가져오는 데 사용됩니다. 이 작업은 특정 인덱스가 존재하는지 여부와 같이 더 높은 수준에서 정보를 얻어야 하는 경우 domain/index 수준과 domain/index/\$1 수준 모두에서 로 구성됩니다. | 
| es:ESHttpDelete | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 인덱스에 대한 정보 삭제 | 
| es:DescribeDomain | arn:<partition>:es:<region>:<accountId>:domain/<domainName> | 사용된 엔진 버전과 같은 도메인에 대한 검증을 수행하는 데 사용됩니다. | 

### 샘플 ID 기반 정책
<a name="kb-osm-permissions-idpolicy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "OpenSearchIndexAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpPost",
                "es:ESHttpPut",
                "es:ESHttpDelete"
            ],
            "Resource": [
                "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName/*"
            ]
        },
        {
            "Sid": "OpenSearchIndexGetAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpHead"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName"
            ]
        },
        {
            "Sid": "OpenSearchDomainValidation",
            "Effect": "Allow",
            "Action": [
                "es:DescribeDomain"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName"
            ]
        }
    ]
}
```

------

### 샘플 리소스 기반 정책
<a name="kb-osm-permissions-rbp"></a>

**참고**  
리소스 기반 정책에서 사용할 서비스 역할이 생성되었는지 확인합니다.

## Amazon Bedrock Knowledge Bases 서비스 역할 생성
<a name="kb-osm-permissions-slr"></a>

지식 기반을 생성할 때 새 서비스 역할을 생성하고 사용하는 옵션을 선택할 수 있습니다. 이 섹션에서는 Amazon Bedrock Knowledge Bases 서비스 역할을 생성하는 방법을 안내합니다. 리소스 기반 정책과 세분화된 액세스 정책을 이 역할에 매핑하면 Amazon Bedrock에 OpenSearch 도메인에 요청할 수 있는 권한을 부여합니다.

**Amazon Bedrock Knowledge Bases 서비스 역할을 지정하려면**

1. Amazon Bedrock 콘솔에서 [지식 기반](https://console.aws.amazon.com/bedrock/home#/knowledge-bases)으로 이동합니다.

1. **생성**을 선택한 다음 **벡터 스토어가 있는 지식 기반**을 선택합니다.

1. **새 서비스 역할 생성 및 사용**을 선택합니다. 기본값을 사용하거나 사용자 지정 역할 이름을 제공하면 Amazon Bedrock이 자동으로 지식 기반 서비스 역할을 생성합니다.

1. 콘솔을 계속 진행하여 데이터 소스를 구성하고 구문 분석 및 청킹 전략을 구성합니다.

1. 임베딩 모델을 선택한 다음 **기존 벡터 스토어 선택**에서 **Amazon OpenSearch 관리형 클러스터**를 선택합니다.

**중요**  
지식 기반을 생성하기 전에 다음 단계를 완료하여 리소스 기반 정책과 세분화된 액세스 정책을 구성합니다. 지식 기반 생성에 대한 자세한 단계는 [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md) 섹션을 참조하세요.

## 리소스 기반 정책 업데이트
<a name="kb-osm-permissions-console-rbp"></a>

OpenSearch 도메인에 제한적인 액세스 정책이 있는 경우 이 페이지의 지침에 따라 리소스 기반 정책을 업데이트할 수 있습니다. 이러한 권한을 통해 지식 기반은 사용자가 제공한 인덱스를 사용하고 OpenSearch 도메인 정의를 검색하여 도메인에서 필요한 검증을 수행할 수 있습니다.

**에서 리소스 기반 정책을 구성하려면 AWS Management Console**

1. [Amazon OpenSearch Service 콘솔](https://console.aws.amazon.com/aos/home?region=us-east-1#opensearch/dashboard)로 돌아갑니다.

1. 생성한 도메인으로 이동한 다음 리소스 기반 정책이 구성된 **보안 구성**으로 이동합니다.

1. **JSON** 탭에서 정책을 편집한 [샘플 리소스 기반 정책](#kb-osm-permissions-rbp)와 유사한 정책을 업데이트합니다.

1. 이제 Amazon Bedrock 콘솔로 돌아가 [관리형 클러스터의 지식 기반 설정](knowledge-base-setup.md#knowledge-base-setup-osm)에 설명된 대로 OpenSearch 도메인 및 인덱스에 대한 세부 정보를 제공할 수 있습니다.

# 세분화된 액세스 제어를 사용하여 OpenSearch 권한 구성
<a name="kb-osm-permissions-console-fgap"></a>

선택 사항이지만 OpenSearch 도메인에 대해 세분화된 액세스 제어를 활성화하는 것이 좋습니다. 세분화된 액세스 제어를 사용하면 역할 기반 액세스 제어를 사용하여 특정 권한이 있는 OpenSearch 역할을 생성하고 지식 기반 서비스 역할에 매핑할 수 있습니다. 매핑은 지식 기반에 OpenSearch 도메인 및 인덱스에 액세스하고 작업을 수행할 수 있는 최소 필수 권한을 부여합니다.

세분화된 액세스 제어를 구성하고 사용하려면

1. 사용 중인 OpenSearch 도메인에 세분화된 액세스 제어가 활성화되어 있는지 확인합니다.

1. 세분화된 액세스 제어를 사용하는 도메인의 경우 OpenSearch 역할 형태로 범위가 축소된 정책과 함께 권한을 구성합니다.

1. 역할을 생성하는 도메인의 경우 지식 기반 서비스 역할에 역할 매핑을 추가합니다.

다음 단계에서는 OpenSearch 역할을 구성하고 OpenSearch 역할과 지식 기반 서비스 역할 간의 올바른 매핑을 확인하는 방법을 보여줍니다.

**OpenSearch 역할을 생성하고 권한을 구성하려면**  
세분화된 액세스 제어를 활성화하고 OpenSearch Service에 연결하도록 Amazon Bedrock을 구성한 후 각 OpenSearch 도메인에 대해 OpenSearch 대시보드 링크를 사용하여 권한을 구성할 수 있습니다.

**Amazon Bedrock에 대한 액세스를 허용하도록 도메인에 대한 권한을 구성하려면**

1. 작업하려는 OpenSearch 도메인의 OpenSearch 대시보드를 엽니다. 대시보드에 대한 링크를 찾으려면 OpenSearch Service 콘솔에서 생성한 도메인으로 이동합니다. OpenSearch 실행하는 도메인의 경우 URL은 `domain-endpoint/_dashboards/` 형식입니다. 자세한 내용은 *Amazon OpenSearch Service 개발자 안내서*의 [대시보드](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html)를 참조하세요.

1. OpenSearch 대시보드에서 **보안**을 선택하고 **역할**을 선택합니다.

1. **역할 생성**을 선택합니다.

1. **kb\$1opensearch\$1role**과 같이 역할의 이름을 입력합니다.

1. **클러스터 권한**에 다음 권한을 추가합니다.
   + `indices:data/read/msearch`
   + `indices:data/write/bulk*`
   + `indices:data/read/mget*`

1. **인덱스 권한**에서 벡터 인덱스의 이름을 입력합니다. **새 권한 그룹 생성**을 선택한 다음 **새 작업 그룹 생성**을 선택합니다. `KnowledgeBasesActionGroup` 같은 작업 그룹에 다음 권한을 추가합니다. 작업 그룹에 다음 권한을 추가합니다.
   + `indices:admin/get`
   + `indices:data/read/msearch`
   + `indices:data/read/search`
   + `indices:data/write/index`
   + `indices:data/write/update`
   + `indices:data/write/delete`
   + `indices:data/write/delete/byquery`
   + `indices:data/write/bulk*`
   + `indices:admin/mapping/put`
   + `indices:data/read/mget*`  
![\[클러스터 및 인덱스 권한을 추가하기 위해 OpenSearch 대시보드에서 생성할 작업 그룹입니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/kb-test-os-action-groups.png)

1. OpenSearch 역할을 만들려면 **생성**을 선택합니다.

다음은 권한이 추가된 샘플 OpenSearch 역할을 보여줍니다.

![\[권한이 추가된 OpenSearch 대시보드의 샘플 OpenSearch 역할입니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/kb-test-os-dashboards-permissions.png)


**지식 기반 서비스 역할에 대한 역할 매핑을 생성하려면**

1. 매핑해야 할 IAM 역할을 식별합니다.
   + 사용자 지정 IAM 역할을 생성한 경우 IAM 콘솔에서 이 역할에 대한 역할 ARN을 복사할 수 있습니다.
   + 지식 기반에서 역할을 생성하도록 허용하는 경우 지식 기반을 생성할 때 역할 ARN을 기록한 다음 이 역할 ARN을 복사할 수 있습니다.

1. 작업하려는 OpenSearch 도메인의 OpenSearch 대시보드를 엽니다. URL 형식은 `domain-endpoint/_dashboards/`입니다.

1. 탐색 창에서 **보안**을 선택합니다.

1. **kb\$1opensearch\$1role**과 같이 목록에서 방금 생성한 역할을 검색하고 엽니다.

1. **매핑된 사용자** 탭에서 **매핑 관리**를 선택합니다

1. **백엔드 역할** 섹션에서 지식 기반에 대한 AWS 관리형 IAM 역할의 ARN을 입력합니다. 사용자 지정 역할을 생성했는지 아니면 지식 기반에서 역할을 생성하도록 했는지에 따라 IAM 콘솔 또는 Amazon Bedrock 콘솔에서 역할 ARN 정보를 복사한 다음 OpenSearch 콘솔에서 **백엔드 역할**에 대한 정보를 입력합니다. 다음은 한 예입니다.

   ```
   arn:aws:iam::<accountId>:role/service-role/<knowledge-base-service-role>
   ```

1. **맵**을 선택합니다.

   지식 기반 서비스 역할은 이제 OpenSearch 역할에 연결하고 도메인 및 인덱스에서 필요한 작업을 수행할 수 있습니다.

# Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성
<a name="knowledge-base-create"></a>

데이터 소스에 연결하여 지식 기반을 생성할 때 다음을 설정하거나 지정합니다.
+ 지식 기반을 정의하고 식별하는 일반 정보
+ 지식 기반에 대한 권한이 있는 서비스 역할입니다.
+ 지식 베이스 구성을 위한 설정으로, 여기에는 데이터 소스에서 데이터를 변환할 때 사용할 임베딩 모델, 임베딩을 저장할 서비스의 저장 구성, 그리고 선택 사항으로 멀티모달 데이터를 저장할 S3 위치가 포함됩니다.

**참고**  
루트 사용자로는 지식 기반을 생성할 수 없습니다. 이 단계를 시작하기 전에 IAM 사용자로 로그인하세요.

해당하는 사용 사례의 섹션을 확장해 내용을 살펴보세요.

## 콘솔을 사용합니다.
<a name="knowledge-base-create-console"></a>

**지식 기반을 설정하는 방법**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명AWS Management Console으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 생성 버튼을 선택하고 벡터 스토어로 지식 기반 생성을 선택합니다.

1. (선택 사항) 지식 기반의 기본 이름을 변경하고 설명을 제공합니다.

1. 다른 필수 AWS서비스에 액세스할 수 있는 Amazon Bedrock 권한을 제공하는 AWS Identity and Access Management(IAM) 역할을 선택합니다. Amazon Bedrock이 서비스 역할을 만들도록 하거나 [Neptune Analytics를 위해 만든 자체 사용자 지정 역할](kb-permissions.md#kb-permissions-neptune)을 선택할 수 있습니다.

1. 지식 기반을 연결할 데이터 소스를 선택합니다.

1. (선택 사항) 지식 기반에 태그를 추가합니다. 자세한 내용은 [Amazon Bedrock 리소스 태그 지정](tagging.md) 단원을 참조하십시오.

1. (선택 사항) 지식 기반에 대한 활동 로그를 전달할 서비스를 구성합니다.

1. 다음 섹션으로 이동하여 [데이터 소스를 지식 기반에 연결](data-source-connectors.md)의 단계에 따라 데이터 소스를 구성합니다.

1. **임베딩 모델** 섹션에서 다음을 수행합니다.

   1. 데이터를 벡터 임베딩으로 변환할 임베딩 모델을 선택합니다. 멀티모달 데이터(이미지, 오디오 및 비디오)의 경우 Amazon Titan Multimodal Embeddings G1 또는 Cohere Embed v3와 같은 멀티모달 임베딩 모델을 선택합니다.
**참고**  
Amazon Titan Multimodal Embeddings G1을 사용하는 경우 S3 콘텐츠 버킷을 제공해야 하며 기본 구문 분석기만 사용할 수 있습니다. 이 모델은 이미지 검색 사용 사례에 최적화되어 있습니다. 멀티모달 접근 방식 선택에 대한 포괄적인 지침은 섹션을 참조하세요[멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md).

   1. (선택 사항) **추가 구성** 섹션을 확장하여 다음 구성 옵션을 확인합니다(모든 모델이 모든 구성을 지원하는 것은 아님).
      + **임베딩 유형** - 데이터를 부동 소수점(float32) 벡터 임베딩(더 정확하지만 비용이 많이 듦) 또는 바이너리 벡터 임베딩(덜 정확하지만 비용이 적게 듦)으로 변환할지 여부입니다. 바이너리 벡터를 지원하는 임베딩 모델에 대해 알아보려면 [지원되는 임베딩 모델](knowledge-base-supported.md)을 참조하세요.
      + **벡터 차원** - 값이 높을수록 정확도는 향상되지만 비용과 지연 시간은 증가합니다.

1. **벡터 데이터베이스** 섹션에서 다음을 수행합니다.

   1. 벡터 스토어를 선택하여 쿼리에 사용할 벡터 임베딩을 저장합니다. 다음과 같은 옵션이 있습니다.
      + **새 벡터 스토어 빠른 생성** - Amazon Bedrock에서 생성할 수 있는 벡터 스토어 중 하나를 선택합니다. 벡터 스토어에 대한 AWS KMS키 암호화를 선택적으로 구성할 수도 있습니다.
**참고**  
이 옵션을 사용하면 Amazon Bedrock이 각 벡터 스토어의 메타데이터 배치를 자동으로 처리합니다.
        + **Amazon OpenSearch Serverless** - Amazon Bedrock Knowledge Bases는 Amazon OpenSearch Serverless 벡터 검색 컬렉션 및 인덱스를 생성하고 필요한 필드로 구성합니다.
        + **Amazon Aurora PostgreSQL Serverless** – Amazon Bedrock은 Amazon Aurora PostgreSQL Serverless 벡터 스토어를 설정합니다. 이 프로세스는 Amazon S3 버킷에서 비정형 텍스트 데이터를 가져와 텍스트 청크와 벡터로 변환한 다음 PostgreSQL 데이터베이스에 저장합니다. 자세한 정보는 [Aurora PostgreSQL Knowledge Bases for Amazon Bedrock 지식 기반 빠른 생성](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.quickcreatekb.html) 섹션을 살펴보세요.
        + **Amazon Neptune Analytics** - Amazon Bedrock은 그래프와 결합된 검색 증강 생성(RAG) 기술을 사용하여 생성형 AI 애플리케이션을 개선하므로 최종 사용자가 더 정확하고 포괄적인 응답을 얻을 수 있습니다.
        + **Amazon S3 Vectors** - Amazon Bedrock Knowledge Bases는 데이터 소스에서 생성된 임베딩을 저장하는 S3 벡터 버킷과 벡터 인덱스를 생성합니다.

          Amazon Bedrock과 Amazon S3 벡터를 모두 사용할 수 있는 모든 AWS 리전에서 Amazon S3 벡터에 대한 지식 기반을 생성할 수 있습니다. 리전 가용 정보는 *Amazon S3 사용 설명서*에서 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)를 참조하세요.
**참고**  
Amazon Bedrock 지식 기반과 함께 Amazon S3 벡터를 사용하는 경우 벡터당 최대 1KB의 사용자 지정 메타데이터(필터링 가능한 메타데이터와 필터링할 수 없는 메타데이터 모두 포함)와 35개의 메타데이터 키를 연결할 수 있습니다. 메타데이터 제한에 대한 자세한 내용은 [메타데이터 지원](knowledge-base-setup.md#metadata-support)의 섹션을 참조하세요[지식 기반에 대해 생성된 벡터 저장소 사용의 사전 조건](knowledge-base-setup.md).
      + **생성한 벡터 스토어 선택** - 지원되는 벡터 스토어를 선택하고 벡터 필드 이름과 벡터 인덱스의 메타데이터 필드 이름을 식별합니다. 자세한 내용은 [지식 기반에 대해 생성된 벡터 저장소 사용의 사전 조건](knowledge-base-setup.md) 단원을 참조하십시오.
**참고**  
데이터 소스가 Confluence, Microsoft SharePoint 또는 Salesforce 인스턴스인 경우 지원되는 유일한 벡터 스토어 서비스는 Amazon OpenSearch Serverless입니다.

   1. (선택 사항) **추가 구성** 섹션을 확장하고 관련 구성을 수정합니다.

1. 데이터 소스에 이미지가 포함된 경우 파서가 **멀티모달 스토리지 대상**의 데이터에서 추출할 이미지를 저장할 Amazon S3 URI를 지정합니다. 쿼리 중에 이미지를 반환할 수 있습니다. 데이터를 암호화AWS 관리형 키하기 위해 기본값 대신 고객 관리형 키를 선택할 수도 있습니다.
**참고**  
멀티모달 데이터는 Amazon S3 및 사용자 지정 데이터 소스에서만 지원됩니다.
**참고**  
멀티모달 임베딩 모델을 사용하는 경우:  
Amazon Titan Multimodal Embeddings G1에는 S3 콘텐츠 버킷이 필요하며 기본 구문 분석기를 사용하는 이미지 전용 데이터 세트에 가장 적합합니다.
Cohere Embed v3는 혼합 텍스트 및 이미지 데이터 세트를 지원하며 모든 구문 분석기 구성과 함께 사용할 수 있습니다.
이미지 검색 사용 사례의 경우 토큰 제한으로 인해 Titan G1과 함께 Bedrock Data Automation(BDA) 또는 파운데이션 모델 파서를 사용하지 마세요.
멀티모달 스토리지 대상은 검색 목적으로 파일 복사본을 생성하므로 추가 스토리지 요금이 발생할 수 있습니다.

1. **다음**을 선택하고 지식 기반의 세부 정보를 검토합니다. 계속해서 지식 기반을 만들기 전에 모든 섹션을 편집할 수 있습니다.
**참고**  
지식 기반을 만드는 데 걸리는 시간은 구체적인 구성에 따라 달라집니다. 지식 기반 생성이 완료되면 지식 기반 상태가 준비 또는 사용 가능 상태로 변경됩니다.  
지식 기반이 준비되고 사용 가능해지면 데이터 소스를 최초로 한 번 동기화하고, 이후에는 콘텐츠를 최신 상태로 유지하고 싶을 때마다 동기화하세요. 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택하면 됩니다.

## API 사용
<a name="knowledge-base-create-api"></a>

지식 기반을 생성하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 요청을 전송합니다.

**참고**  
Amazon Bedrock이 벡터 스토어를 생성하고 관리하도록 하려면 콘솔을 사용합니다. 자세한 내용은 이 주제의 **콘솔 사용** 섹션을 확장하세요.

필수 필드는 다음과 같습니다.


****  

| Field | 기본 설명 | 
| --- | --- | 
| 이름 | 지식 기반 이름 | 
| roleArn | [Amazon Bedrock Knowledge Bases 서비스 역할](kb-permissions.md)의 ARN입니다. | 
| knowledgeBaseConfiguration | 지식 기반에 대한 구성을 포함합니다. 아래 세부 정보를 참조하세요. | 
| storageConfiguration | (정형화되지 않은 데이터 소스에 연결하는 경우에만 필요).  선택한 데이터 소스 서비스에 대한 구성을 포함합니다. | 

다음 필드는 선택 사항입니다.


****  

| Field | 사용 사례: | 
| --- | --- | 
| description | 지식 기반에 대한 설명입니다. | 
| clientToken | API 요청이 한 번만 완료되도록 합니다. 자세한 내용은 [멱등성 보장](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)을 참조하세요. | 
| tags | 태그를 흐름에 연결합니다. 자세한 내용은 [Amazon Bedrock 리소스 태그 지정](tagging.md) 단원을 참조하십시오. | 

[KnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseConfiguration.html) 객체에 매핑되는 `knowledgeBaseConfiguration` 필드에서 `type` 필드에 `VECTOR`를 지정하고 [VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html) 객체를 포함합니다. 객체는 다음 필드를 포함합니다.
+ `embeddingModelArn` - 사용할 임베딩 모델의 ARN입니다.
+ `embeddingModelConfiguration` - 임베딩 모델의 구성입니다. 지원되는 각 모델에 대해 지정할 수 있는 값을 보려면 [Amazon Bedrock 지식 기반에서 지원되는 모델과 리전](knowledge-base-supported.md) 섹션을 참조하세요.
+ (이미지, 그림, 차트 또는 테이블을 포함하는 멀티모달 데이터를 지식 기반에 포함하려는 경우) `supplementalDataStorageConfiguration` - 추출된 데이터를 저장할 S3 위치를 지정하는 [SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html) 객체에 매핑합니다. 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 단원을 참조하십시오.

[StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html) 객체에 매핑되는 `storageConfiguration` 필드에서 `type` 필드에 연결할 벡터 스토어를 지정하고 해당 벡터 스토어에 해당하는 필드를 포함합니다. 제공해야 하는 정보에 대한 자세한 내용은 [StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html)에서 각 벡터 스토어 구성 유형을 참조하세요.

다음은 Amazon OpenSearch Serverless 컬렉션에 연결된 지식 기반을 생성하기 위한 요청의 예를 보여줍니다. 연결된 데이터 소스의 데이터는 Amazon Titan Text Embeddings V2를 사용하여 바이너리 벡터 임베딩으로 변환되며 구문 분석기에서 추출한 멀티모달 데이터는 *MyBucket*이라는 버킷에 저장되도록 설정됩니다.

```
PUT /knowledgebases/ HTTP/1.1
Content-type: application/json

{
   "name": "MyKB",
   "description": "My knowledge base",
   "roleArn": "arn:aws:iam::111122223333:role/service-role/AmazonBedrockExecutionRoleForKnowledgeBase_123",
   "knowledgeBaseConfiguration": {
      "type": "VECTOR",
      "vectorKnowledgeBaseConfiguration": { 
         "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v2:0",
         "embeddingModelConfiguration": { 
            "bedrockEmbeddingModelConfiguration": { 
               "dimensions": 1024,
               "embeddingDataType": "BINARY"
            }
         },
         "supplementalDataStorageConfiguration": { 
            "storageLocations": [ 
               { 
                  "s3Location": { 
                     "uri": "arn:aws:s3:::MyBucket"
                  },
                  "type": "S3"
               }
            ]
         }
      }
   },
   "storageConfiguration": { 
      "opensearchServerlessConfiguration": { 
         "collectionArn": "arn:aws:aoss:us-east-1:111122223333:collection/abcdefghij1234567890",
         "fieldMapping": { 
            "metadataField": "metadata",
            "textField": "text",
            "vectorField": "vector"
         },
         "vectorIndexName": "MyVectorIndex"
      }
   }
}
```

**Topics**
+ [데이터 소스를 지식 기반에 연결](data-source-connectors.md)
+ [데이터 소스에 대한 수집 사용자 지정](kb-data-source-customize-ingestion.md)
+ [지식 기반의 보안 구성 설정](kb-create-security.md)

# 데이터 소스를 지식 기반에 연결
<a name="data-source-connectors"></a>

지식 기반에 대한 구성을 완료한 후 지원되는 데이터 소스를 지식 기반에 연결합니다.

Amazon Bedrock 지식 기반은 쿼리 엔진을 통해 비정형 데이터 소스 또는 정형 데이터 스토어에 연결할 수 있도록 지원합니다. 주제를 선택하여 해당 유형의 데이터 소스에 연결하는 방법을 알아봅니다.

**멀티모달 콘텐츠 지원**  
멀티모달 콘텐츠(이미지, 오디오 및 비디오 파일)는 Amazon S3 및 사용자 지정 데이터 소스에서만 지원됩니다. 다른 데이터 소스 유형은 수집 중에 다중 모달 파일을 건너뜁니다. 멀티모달 콘텐츠 작업에 대한 포괄적인 지침은 섹션을 참조하세요[멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md).

Amazon Bedrock 콘솔을 사용하여 데이터 소스에 연결하는 방법을 알아보려면 이 페이지 하단에서 데이터 소스 유형에 해당하는 주제를 선택합니다.

Amazon Bedrock API를 사용하여 데이터 소스에 연결하려면 [Amazon Bedrock Agents 런타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)를 사용하여 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청을 보냅니다.

필수 필드는 다음과 같습니다.


****  

| Field | 기본 설명 | 
| --- | --- | 
| knowledgeBaseId | 기술 자료의 ID입니다. | 
| 이름 | 지식 기반의 이름입니다. | 
| dataSourceConfiguration | type 필드에 데이터 소스 서비스 또는 유형을 지정하고 해당 필드를 포함합니다. 서비스별 구성에 대한 자세한 내용은 이 페이지 하단의 주제에서 서비스의 주제를 선택합니다. | 

다음 필드는 선택 사항입니다.


****  

| Field | 사용 사례: | 
| --- | --- | 
| description | 데이터 소스에 대한 설명을 제공합니다. | 
| vectorIngestionConfiguration | 수집 프로세스를 사용자 지정하기 위한 구성이 포함되어 있습니다. 자세한 내용은 [데이터 소스에 대한 수집 사용자 지정](kb-data-source-customize-ingestion.md) 단원을 참조하십시오. | 
| dataDeletionPolicy | 벡터 저장소에 벡터 임베딩을 RETAIN할지 아니면 DELETE할지 지정합니다. | 
| serverSideEncryptionConfiguration | 고객 관리형 키와 데이터를 동기화하는 동안 임시 데이터를 암호화하려면 kmsKeyArn 필드에 해당 ARN을 지정합니다. | 
| clientToken | API 요청이 한 번만 완료되도록 합니다. 자세한 내용은 [멱등성 보장](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)을 참조하세요. | 

주제를 선택하여 서비스 및 구성에 대해 자세히 알아봅니다.

**Topics**
+ [지식 기반을 위해 Amazon S3에 연결](s3-data-source-connector.md)
+ [지식 기반을 위해 Confluence에 연결](confluence-data-source-connector.md)
+ [지식 기반을 위해 Microsoft SharePoint에 연결](sharepoint-data-source-connector.md)
+ [지식 기반을 위해 Salesforce에 연결](salesforce-data-source-connector.md)
+ [지식 기반을 위한 웹 페이지 크롤링](webcrawl-data-source-connector.md)
+ [지식 기반을 사용자 지정 데이터 소스에 연결](custom-data-source-connector.md)

# 지식 기반을 위해 Amazon S3에 연결
<a name="s3-data-source-connector"></a>

Amazon S3는 데이터를 버킷 내의 객체로 저장하는 객체 스토리지 서비스입니다. Amazon Bedrock[AWS용 관리 콘솔 또는 CreateDataSource API를 사용하여 Amazon Bedrock 지식 기반용 Amazon](https://console.aws.amazon.com/bedrock/home) Amazon S3 버킷에 연결할 수 있습니다(Amazon Bedrock [지원 SDKs 및AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) 참조). [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 

**멀티모달 콘텐츠 지원**  
Amazon S3 데이터 소스는 이미지, 오디오 및 비디오 파일을 포함한 멀티모달 콘텐츠를 지원합니다. 멀티모달 콘텐츠 작업에 대한 포괄적인 지침은 섹션을 참조하세요[멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md).

Amazon S3 콘솔 또는 API를 사용하여 Amazon S3 버킷에 작은 파일 배치를 업로드할 수 있습니다. 또는 [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/create-s3-location.html)를 사용하여 여러 파일을 S3에 지속적으로 업로드하고 온프레미스, 엣지, 기타 클라우드 또는 AWS스토리지에서 일정에 따라 파일을 전송할 수 있습니다.

현재는 General Purpose S3 버킷만 지원됩니다.

크롤링할 수 있는 파일 수와 파일당 MB 크기에는 제한이 있습니다. [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)를 참조하세요.

**Topics**
+ [지원되는 기능](#supported-features-s3-connector)
+ [사전 조건](#prerequisites-s3-connector)
+ [연결 구성](#configuration-s3-connector)

## 지원되는 기능
<a name="supported-features-s3-connector"></a>
+ 문서 메타데이터 필드
+ 포함 접두사
+ 추가, 업데이트, 삭제된 콘텐츠에 대한 증분 콘텐츠 동기화

## 사전 조건
<a name="prerequisites-s3-connector"></a>

**Amazon S3에서 다음 사항을 확인하세요.**
+ Amazon S3 버킷 URI, Amazon 리소스 이름(ARN) 및 버킷 소유자의 AWS 계정 ID를 기록해 둡니다. Amazon S3 콘솔의 속성 섹션에서 URI 및 ARN을 찾을 수 있습니다. 버킷은 Amazon Bedrock 지식 기반과 동일한 리전에 있어야 합니다. 사용자는 버킷에 대한 액세스 권한이 있어야 합니다.

**AWS계정에서 다음을 확인합니다.**
+ 지식 기반에 대한 AWS Identity and Access Management(IAM) 역할/권한 정책에 데이터 소스에 연결하는 데 필요한 권한을 포함합니다. 이 데이터 소스가 지식 기반 IAM역할에 추가하는 데 필요한 권한에 대한 자세한 내용은 [데이터 소스에 액세스할 수 있는 권한을](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds) 참조하세요.

**참고**  
콘솔을 사용하는 경우 지식 기반을 생성하는 단계의 일부로 필요한 모든 권한이 있는 IAM역할을 생성할 수 있습니다. 데이터 소스 및 기타 구성을 구성한 후에는 필요한 모든 권한이 있는 IAM 역할이 특정 지식 기반에 적용됩니다.

## 연결 구성
<a name="configuration-s3-connector"></a>

Amazon S3 버킷에 연결하려면 필요한 구성 정보를 제공해야만 Amazon Bedrock이 데이터에 액세스하고 크롤링할 수 있습니다. 또한 [사전 조건](#prerequisites-s3-connector)를 따라야 합니다.

이 데이터 소스에 대한 구성의 예제가 이 섹션에 포함되어 있습니다.

포함 필터, 문서 메타데이터 필드, 증분 동기화 및 작동 방식에 대한 자세한 내용을 알아보려면 아래에서 관련 항목을 선택하세요.

### 문서 메타데이터 필드
<a name="ds-s3-metadata-fields"></a>

Amazon S3 데이터 소스의 각 파일에 대한 문서 메타데이터 필드/속성 및 데이터 소스를 벡터 저장소로 인덱싱할 때 임베딩에 포함할지 여부를 지정하는 별도의 파일을 포함할 수 있습니다. 예를 들어 다음 형식으로 파일을 생성하고 *fileName.extension.metadata.json*이라는 이름을 지정하여 S3 버킷에 업로드할 수 있습니다.

```
{
  "metadataAttributes": {
    "company": {
      "value": {
        "type": "STRING",
        "stringValue": "BioPharm Innovations"
      },
      "includeForEmbedding": true
    },
    "created_date": {
      "value": {
        "type": "NUMBER",
        "numberValue": 20221205
      },
      "includeForEmbedding": true
    },
    "author": {
      "value": {
        "type": "STRING",
        "stringValue": "Lisa Thompson"
      },
      "includeForEmbedding": true
    },
    "origin": {
      "value": {
        "type": "STRING",
        "stringValue": "Overview"
      },
      "includeForEmbedding": true
    }
  }
}
```

메타데이터 파일은 연결된 소스 문서 파일과 동일한 이름을 사용해야 하며, 파일 이름 끝에 `.metadata.json`이 추가됩니다. 메타데이터 파일은 Amazon S3 버킷의 소스 파일과 동일한 폴더 또는 위치에 저장해야 합니다. 파일은 10KB 제한을 초과해서는 안 됩니다. 지원되는 속성/필드 데이터 유형 및 메타데이터 필드에 적용할 수 있는 필터링 연산자에 대한 자세한 내용은 [Metadata and filtering](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)을 참조하세요.

### 포함 접두사
<a name="ds-s3-inclusion-exclusion"></a>

포함 접두사인 Amazon S3 경로 접두사를 지정할 수 있습니다. 여기서 전체 버킷 대신 S3 파일 또는 폴더를 사용하여 S3 데이터 소스 커넥터를 생성할 수 있습니다.

### 증분 동기화
<a name="ds-s3-incremental-sync"></a>

데이터 소스 커넥터는 데이터 소스가 지식 기반과 동기화될 때마다 새 콘텐츠, 수정된 콘텐츠 및 삭제된 콘텐츠를 크롤링합니다. Amazon Bedrock는 데이터 소스의 메커니즘을 사용하여 콘텐츠 변경을 추적하고 마지막 동기화 이후 변경된 콘텐츠를 크롤링할 수 있습니다. 데이터 소스를 처음으로 지식 기반과 동기화하는 경우 기본적으로 모든 콘텐츠가 동기화됩니다.

데이터 소스를 지식 기반과 동기화하려면 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API를 사용하거나 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택합니다.

**중요**  
데이터 소스에서 동기화하는 모든 데이터는 데이터를 검색할 수 있는 `bedrock:Retrieve` 권한이 있는 모든 사용자에게 제공됩니다. 여기에는 제어된 데이터 소스 권한이 있는 모든 데이터가 포함될 수 있습니다. 자세한 내용은 [Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)를 참조하세요.

------
#### [ Console ]

**Amazon S3 버킷을 지식 기반에 연결하려면**

1. [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md)의 단계에 따라 **Amazon S3**를 데이터 소스로 선택합니다.

1. 데이터 소스 이름을 제공합니다.

1. Amazon S3 버킷이 현재AWS 계정에 있는지 아니면 다른 AWS계정에 있는지 지정합니다. 버킷은 지식 기반과 동일한 리전에 있어야 합니다.

1. (선택 사항) Amazon S3 버킷이 KMS 키로 암호화된 경우 키를 포함합니다. 자세한 내용은 [Amazon S3에서 데이터 소스의 AWS KMS 키를 복호화할 수 있는 권한](encryption-kb.md#encryption-kb-ds) 단원을 참조하십시오.

1. (선택 사항) **콘텐츠 구문 분석 및 청킹** 섹션에서 데이터를 구문 분석하고 청킹하는 방법을 사용자 지정할 수 있습니다. 이러한 사용자 지정에 대한 자세한 내용은 다음 리소스를 참조하세요.
   + 구문 분석 옵션에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.
   + 청킹 전략에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.
**주의**  
데이터 소스로 연결한 후에는 청킹 전략을 변경할 수 없습니다.
   + Lambda 함수를 사용하여 데이터 청킹 및 메타데이터 처리를 사용자 지정하는 방법에 대한 자세한 내용은 [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md) 섹션을 참조하세요.

1. **고급 설정** 섹션에서 선택적으로 다음을 구성할 수 있습니다.
   + **임시 데이터 스토리지용 KMS 키입니다.** - 데이터를 기본 AWS 관리형 키또는 자체 KMS 키를 사용하여 임베딩으로 변환하는 동안 임시 데이터를 암호화할 수 있습니다. 자세한 내용은 [데이터 모으기 중 임시 데이터 스토리지의 암호화](encryption-kb.md#encryption-kb-ingestion) 단원을 참조하십시오.
   + **데이터 삭제 정책** - 기본적으로 벡터 저장소에 저장된 데이터 소스의 벡터 임베딩을 삭제하거나 벡터 저장소 데이터를 보존하도록 선택할 수 있습니다.

1. 임베딩 모델 및 벡터 저장소를 계속 선택합니다. 나머지 단계를 보려면 [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md) 섹션으로 돌아가서 데이터 소스를 연결한 후 단계를 계속합니다.

------
#### [ API ]

다음은 Amazon Bedrock 지식 기반을 Amazon S3에 연결하기 위한 구성의 예제입니다. AWS CLI또는 Python과 같은 지원되는 SDK와 함께 API를 사용하여 데이터 소스를 구성합니다. [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)를 직접 호출한 후 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)를 직접 호출하여 `dataSourceConfiguration`의 연결 정보로 데이터 소스를 만듭니다.

선택적 `vectorIngestionConfiguration` 필드를 포함하여 수집에 적용할 수 있는 사용자 지정에 대해 알아보려면 [데이터 소스에 대한 수집 사용자 지정](kb-data-source-customize-ingestion.md) 섹션을 참조하세요.

**AWS Command Line Interface**

```
aws bedrock-agent create-data-source \
 --name "S3-connector" \
 --description "S3 data source connector for Amazon Bedrock to use content in S3" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://s3-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":{"maxTokens":100,"overlapPercentage":10}}}'
                    
s3-bedrock-connector-configuration.json
{
    "s3Configuration": {
	    "bucketArn": "arn:aws:s3:::bucket-name",
	    "bucketOwnerAccountId": "000000000000",
	    "inclusionPrefixes": [
	        "documents/"
	    ]
    },
    "type": "S3"	
}
```

------

# 지식 기반을 위해 Confluence에 연결
<a name="confluence-data-source-connector"></a>

Atlassian Confluence는 프로젝트 계획, 소프트웨어 개발 및 제품 관리를 공유, 저장 및 작업하도록 설계된 협업 작업 관리 도구입니다. [Amazon Bedrock용 AWS 관리 콘솔](https://console.aws.amazon.com/bedrock/home) 또는 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API를 사용하여 Amazon Bedrock 지식 기반에 대한 Confluence 인스턴스에 연결할 수 있습니다(Amazon Bedrock [지원 SDK 및 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) 참조).

**참고**  
Confluence 데이터 소스 커넥터는 평가판 릴리스로 제공 중이며 변경될 수 있습니다.  
Confluence 데이터 소스는 테이블, 차트, 다이어그램 또는 기타 이미지와 같은 멀티모달 데이터를 지원하지 않습니다.

Amazon Bedrock은 Confluence Cloud 인스턴스에 대한 연결을 지원합니다. 현재는 Amazon OpenSearch Serverless 벡터 저장소만 이 데이터 소스와 함께 사용할 수 있습니다.

크롤링할 수 있는 파일 수와 파일당 MB 크기에는 제한이 있습니다. [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)를 참조하세요.

**Topics**
+ [지원 기능](#supported-features-confluence-connector)
+ [사전 조건](#prerequisites-confluence-connector)
+ [연결 구성](#configuration-confluence-connector)

## 지원 기능
<a name="supported-features-confluence-connector"></a>
+ 기본 문서 필드 자동 감지
+ 포함/제외 콘텐츠 필터
+ 추가, 업데이트, 삭제된 콘텐츠에 대한 증분 콘텐츠 동기화
+ OAuth 2.0 인증, Confluence API 토큰을 사용한 인증

## 사전 조건
<a name="prerequisites-confluence-connector"></a>

**Confluence에서 다음을 충족해야 합니다.**
+ Confluence 인스턴스 URL을 메모해 두세요. 예를 들어 Confluence Cloud의 경우 URL은 *https://example.atlassian.net* 형식입니다. Confluence Cloud의 URL은 *.atlassian.net*으로 끝나는 기본 URL이어야 합니다.
+ Amazon Bedrock이 Confluence Cloud 인스턴스에 연결할 수 있도록 사용자 이름(관리자 계정 이메일) 및 암호(Confluence API 토큰)가 포함된 기본 인증 자격 증명을 구성합니다. Confluence API 토큰을 만드는 방법에 대한 자세한 내용은 Atlassian 웹사이트의 [Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)를 참조하세요.
+ (선택 사항) 앱 키, 앱 보안 암호, 액세스 토큰, 새로 고침 토큰의 자격 증명을 사용하여 OAuth 2.0 애플리케이션을 구성합니다. 자세한 내용은 Atlassian 웹 사이트의 [OAuth 2.0 앱](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)을 참조하세요.
+ OAuth 2.0 앱이 Confluence에 연결되려면 특정 읽기 권한 또는 범위를 활성화해야 합니다.

  Confluence API:
  + offline\$1access
  + read:content:confluence - 세부 내용 보기 
  + read:content-details:confluence – 콘텐츠 세부 정보 보기 
  + read:space-details:confluence – 스페이스 세부 정보 보기
  + read:audit-log:confluence – 감사 레코드 보기 
  + read:page:confluence – 페이지 보기 
  + read:attachment:confluence – 콘텐츠 첨부 파일 보기 및 다운로드 
  + read:blogpost:confluence – 블로그 게시물 보기 
  + read:custom-content:confluence – 사용자 지정 콘텐츠 보기 
  + read:comment:confluence – 설명 보기 
  + read:template:confluence – 콘텐츠 템플릿 보기 
  + read:label:confluence – 레이블 보기 
  + read:watcher:confluence – 콘텐츠 감시자 보기 
  + read:relation:confluence - 엔터티 관계 보기 
  + read:user:confluence – 사용자 세부 정보 보기 
  + read:configuration:confluence - Confluence 설정 보기 
  + read:space:confluence – 스페이스 세부 정보 보기 
  + read:space.property:confluence - 스페이스 속성 보기 
  + read:user.property:confluence - 사용자 속성 보기 
  + read:space.setting:confluence - 공간 설정 보기 
  + read:analytics.content:confluence – 콘텐츠에 대한 분석 보기
  + read:content.property:confluence – 콘텐츠 속성 보기
  + read:content.metadata:confluence – 콘텐츠 요약 보기 
  + read:inlinetask:confluence – 태스크 보기 
  + read:task:confluence – 태스크 보기 
  + read:whiteboard:confluence – 화이트보드 보기 
  + read:app-data:confluence – 앱 데이터 읽기 
  + read:folder:confluence - 폴더 보기
  + read:embed:confluence - 스마트 링크 데이터 보기

**AWS 계정에서 다음과 같이 하세요.**
+ 인증 자격 증명 정보를 [AWS Secrets Manager 보안 암호](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)에 저장하고 보안 암호의 Amazon 리소스 이름(ARN)을 메모해 둡니다. 이 페이지의 **연결 구성** 지침에 따라 보안 암호에 포함되어야 하는 키-값 페어를 포함합니다.
+ 지식 기반에 대한 AWS Identity and Access Management(IAM) 역할/권한 정책에 데이터 소스에 연결하는 데 필요한 권한을 포함합니다. 이 데이터 소스를 지식 기반 IAM 역할에 추가하는 데 필요한 권한에 대한 자세한 내용은 [Permissions to access data sources](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)를 참조하세요.

**참고**  
콘솔을 사용하는 경우, 데이터 소스 구성 단계의 일부로 AWS Secrets Manager로 이동하여 보안 암호를 추가하거나 기존 보안 암호를 사용할 수 있습니다. 지식 기반을 만들기 위한 콘솔 단계의 일부로, 필요한 모든 권한이 있는 IAM 역할을 만들 수 있습니다. 데이터 소스 및 기타 구성을 구성한 후에는 필요한 모든 권한이 있는 IAM 역할이 특정 지식 기반에 적용됩니다.  
보안 인증 정보와 보안 암호를 정기적으로 새로 고치거나 교체하는 것이 좋습니다. 보안을 위해 필요한 액세스 수준만 제공하세요. 데이터 소스 전체에서 자격 증명 및 보안 암호를 재사용하는 것은 권장하지 않습니다.

## 연결 구성
<a name="configuration-confluence-connector"></a>

Confluence 인스턴스에 연결하려면 필요한 구성 정보를 제공해야만 Amazon Bedrock이 데이터에 액세스하고 크롤링할 수 있습니다. 또한 [사전 조건](#prerequisites-confluence-connector)를 따라야 합니다.

이 데이터 소스에 대한 구성의 예제가 이 섹션에 포함되어 있습니다.

문서 필드의 자동 감지, 포함/제외 필터, 증분 동기화, 보안 인증 자격 증명 및 이러한 작업의 작동 방식에 대해 알아보려면 아래에서 관련 항목을 선택하세요.

### 기본 문서 필드 자동 감지
<a name="ds-confluence-document-fields"></a>

데이터 소스 커넥터는 문서 또는 콘텐츠의 모든 기본 메타데이터 필드를 자동으로 감지하고 크롤링합니다. 예를 들어, 데이터 소스 커넥터는 문서, 문서 제목, 문서 생성 또는 수정 날짜, 또는 문서에 적용될 수 있는 기타 핵심 필드에 해당하는 문서 본문을 크롤링할 수 있습니다.

**중요**  
콘텐츠에 민감한 정보가 포함된 경우 Amazon Bedrock은 민감한 정보를 사용하여 응답할 수 있습니다.

메타데이터 필드에 필터링 연산자를 적용하여 응답 관련성을 더욱 개선할 수 있습니다. 예를 들어, 문서의 'epoch\$1modification\$1time' 또는 문서가 마지막으로 업데이트된 1970년 1월 1일 이후의 초 수가 있습니다. 'epoch\$1modification\$1time'이 특정 수*보다 큰* 최신 데이터를 기준으로 필터링할 수 있습니다. 메타데이터 필드에 적용할 수 있는 필터링 연산자에 대한 자세한 내용은 [Metadata and filtering](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)을 참조하세요.

### 포함/제외 필터
<a name="ds-confluence-inclusion-exclusion"></a>

특정 콘텐츠 크롤링을 포함하거나 제외할 수 있습니다. 예를 들어, 제외 접두사/정규 표현식 패턴을 지정하여 파일 이름에 ‘private’이 포함된 파일의 크롤링을 건너뛸 수 있습니다. 특정 콘텐츠 엔터티 또는 콘텐츠 유형을 포함하도록 포함 접두사/정규 표현식 패턴을 지정할 수도 있습니다. 포함 및 제외 필터를 지정하고 둘 모두가 문서와 일치하는 경우, 제외 필터가 우선하며 문서가 크롤링되지 않습니다.

파일 이름에 ‘private’이 포함된 PDF 파일을 제외하거나 필터링하는 정규식 패턴의 예시는 *".\$1private.\$1\$1\$1.pdf"*입니다.

다음 콘텐츠 유형에 포함/제외 필터를 적용할 수 있습니다.
+ `Space`: 고유 스페이스 키
+ `Page`: 기본 페이지 제목
+ `Blog`: 기본 블로그 제목
+ `Comment`: 특정 페이지 또는 블로그에 속하는 주석. *Re: Page/Blog Title* 지정.
+ `Attachment`: 확장자가 있는 첨부 파일 이름

### 증분 동기화
<a name="ds-confluence-incremental-sync"></a>

데이터 소스 커넥터는 데이터 소스가 지식 기반과 동기화될 때마다 새 콘텐츠, 수정된 콘텐츠, 삭제된 콘텐츠를 크롤링합니다. Amazon Bedrock은 데이터 소스의 메커니즘을 사용하여 콘텐츠 변경 사항을 추적하고 마지막 동기화 이후 변경된 콘텐츠를 크롤링할 수 있습니다. 데이터 소스를 처음으로 지식 기반과 동기화하는 경우 기본적으로 모든 콘텐츠가 동기화됩니다.

데이터 소스를 지식 기반과 동기화하려면 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API를 사용하거나 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택합니다.

**중요**  
데이터 소스에서 동기화하는 모든 데이터는 데이터를 검색할 수 있는 `bedrock:Retrieve` 권한이 있는 모든 사용자에게 제공됩니다. 여기에는 제어된 데이터 소스 권한이 있는 모든 데이터가 포함될 수 있습니다. 자세한 내용은 [Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)를 참조하세요.

### 보안 인증 자격 증명
<a name="ds-confluence-secret-auth-credentials"></a>

(기본 인증을 사용하는 경우) AWS Secrets Manager의 보안 인증 자격 증명에는 다음과 같은 키-값 페어가 포함되어야 합니다.
+ `username`: *Atlassian 계정의 관리자 사용자 이메일 주소*
+ `password`: *Confluence API 토큰*

(OAuth 2.0 인증을 사용하는 경우) AWS Secrets Manager의 보안 인증 자격 증명에는 다음과 같은 키-값 페어가 포함되어야 합니다.
+ `confluenceAppKey`: *앱 키*
+ `confluenceAppSecret`: *앱 보안 암호*
+ `confluenceAccessToken`: *앱 액세스 토큰*
+ `confluenceRefreshToken`: *앱 새로 고침 토큰*

**참고**  
Confluence OAuth2.0 **액세스** 토큰의 기본 만료 시간은 60분입니다. 데이터 소스가 동기화(동기화 작업)되는 동안 이 토큰이 만료되면 Amazon Bedrock은 제공된 **새로 고침** 토큰을 사용하여 이 토큰을 재생성합니다. 이 재생성은 액세스 토큰과 새로 고침 토큰을 모두 새로 고칩니다. 토큰을 현재 동기화 작업에서 다음 동기화 작업으로 업데이트하려면 Amazon Bedrock에 지식 기반 IAM 역할의 일부로 보안 자격 증명에 대한 쓰기/입력 권한이 필요합니다.

**참고**  
AWS Secrets Manager의 보안 암호는 지식 기반과 동일한 리전을 사용해야 합니다.

------
#### [ Console ]

**지식 기반에 Confluence 인스턴스 연결**

1. [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md)의 단계에 따라 **Confluence**를 데이터 소스로 선택합니다.

1. 데이터 소스 이름을 입력하고, 선택적으로 설명을 제공합니다.

1. Confluence 인스턴스 URL을 제공합니다. 예를 들어 Confluence Cloud의 경우 URL은 *https://example.atlassian.net* 형식입니다. Confluence Cloud의 URL은 *.atlassian.net*으로 끝나는 기본 URL이어야 합니다.

1. **고급 설정** 섹션에서 선택적으로 다음을 구성할 수 있습니다.
   + **임시 데이터 스토리지용 KMS 키입니다.** - 데이터를 기본 AWS 관리형 키 또는 자체 KMS 키를 사용하여 임베딩으로 변환하는 동안 임시 데이터를 암호화할 수 있습니다. 자세한 내용은 [데이터 모으기 중 임시 데이터 스토리지의 암호화](encryption-kb.md#encryption-kb-ingestion) 섹션을 참조하세요.
   + **데이터 삭제 정책** - 기본적으로 벡터 저장소에 저장된 데이터 소스의 벡터 임베딩을 삭제하거나 벡터 저장소 데이터를 보존하도록 선택할 수 있습니다.

1. Confluence 인스턴스에 연결할 인증 정보를 제공합니다.
   + 기본 인증의 경우 AWS Secrets Manager로 이동하여 보안 인증 자격 증명을 추가하거나 생성한 보안 암호에 기존 Amazon 리소스 이름(ARN)을 사용합니다. 보안 암호에는 Atlassian 계정의 관리자 사용자 이메일 주소가 사용자 이름으로, Confluence API 토큰이 암호로 포함되어야 합니다. Confluence API 토큰을 만드는 방법에 대한 자세한 내용은 Atlassian 웹사이트의 [Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)를 참조하세요.
   + OAuth 2.0 인증의 경우 AWS Secrets Manager로 이동하여 보안 인증 자격 증명을 추가하거나 생성한 보안 암호에 기존 Amazon 리소스 이름(ARN)을 사용합니다. 보안 암호에는 Confluence 앱 키, 앱 보안 암호, 액세스 토큰, 새로 고침 토큰이 포함되어야 합니다. 자세한 내용은 Atlassian 웹 사이트의 [OAuth 2.0 앱](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)을 참조하세요.

1. (선택 사항) **콘텐츠 구문 분석 및 청킹** 섹션에서 데이터를 구문 분석하고 청킹하는 방법을 사용자 지정할 수 있습니다. 이러한 사용자 지정에 대한 자세한 내용은 다음 리소스를 참조하세요.
   + 구문 분석 옵션에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.
   + 청킹 전략에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.
**주의**  
데이터 소스로 연결한 후에는 청킹 전략을 변경할 수 없습니다.
   + Lambda 함수를 사용하여 데이터 청킹 및 메타데이터 처리를 사용자 지정하는 방법에 대한 자세한 내용은 [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md) 섹션을 참조하세요.

1. 필터/정규 표현식 패턴을 사용하여 특정 콘텐츠를 포함하거나 제외하도록 선택합니다. 선택하지 않으면 모든 표준 콘텐츠가 크롤링됩니다.

1. 임베딩 모델 및 벡터 저장소를 계속 선택합니다. 나머지 단계를 보려면 [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md) 섹션으로 돌아가서 데이터 소스를 연결한 후 단계를 계속합니다.

------
#### [ API ]

다음은 Amazon Bedrock 지식 기반을 위해 Confluence Cloud에 연결하기 위한 구성의 예제입니다. Python과 같은 AWS CLI 또는 지원되는 SDK와 함께 API를 사용하여 데이터 소스를 구성할 수 있습니다. [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)를 직접 호출한 후 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)를 직접 호출하여 `dataSourceConfiguration`의 연결 정보로 데이터 소스를 만듭니다.

선택적 `vectorIngestionConfiguration` 필드를 포함하여 수집에 적용할 수 있는 사용자 지정에 대해 알아보려면 [데이터 소스에 대한 수집 사용자 지정](kb-data-source-customize-ingestion.md) 섹션을 참조하세요.

**AWS Command Line Interface**

```
aws bedrock create-data-source \
 --name "Confluence Cloud/SaaS connector" \
 --description "Confluence Cloud/SaaS data source connector for Amazon Bedrock to use content in Confluence" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://confluence-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

confluence-bedrock-connector-configuration.json
{
    "confluenceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://example.atlassian.net",
            "hostType": "SAAS",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Confluence"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Attachment",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "CONFLUENCE"
}
```

------

# 지식 기반을 위해 Microsoft SharePoint에 연결
<a name="sharepoint-data-source-connector"></a>

Microsoft SharePoint는 문서, 웹 페이지, 웹 사이트, 목록 등을 작업하기 위한 웹 기반 공동 작업 서비스입니다. Amazon Bedrock[AWS 용 관리 콘솔 또는 CreateDataSource API를 사용하여 Amazon Bedrock](https://console.aws.amazon.com/bedrock/home) 지식 기반의 SharePoint 인스턴스에 연결할 수 있습니다(Amazon Bedrock [지원 SDKs 및 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) 참조). [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 

**참고**  
SharePoint 데이터 소스 커넥터는 평가판 릴리스로 제공 중이며 변경될 수 있습니다.  
Microsoft SharePoint 데이터 소스는 테이블, 차트, 다이어그램 또는 기타 이미지와 같은 멀티모달 데이터를 지원하지 않습니다.

Amazon Bedrock은 SharePoint Online 인스턴스에 대한 연결을 지원합니다. OneNote 문서 크롤링은 현재 지원되지 않습니다. 현재는 Amazon OpenSearch Serverless 벡터 저장소만 이 데이터 소스와 함께 사용할 수 있습니다.

크롤링할 수 있는 파일 수와 파일당 MB 크기에는 제한이 있습니다. [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)를 참조하세요.

**Topics**
+ [지원되는 기능](#supported-features-sharepoint-connector)
+ [사전 조건](#prerequisites-sharepoint-connector)
+ [연결 구성](#configuration-sharepoint-connector)

## 지원되는 기능
<a name="supported-features-sharepoint-connector"></a>
+ 기본 문서 필드 자동 감지
+ 포함/제외 콘텐츠 필터
+ 추가, 업데이트, 삭제된 콘텐츠에 대한 증분 콘텐츠 동기화
+ SharePoint 앱 전용 인증

## 사전 조건
<a name="prerequisites-sharepoint-connector"></a>

### SharePoint(온라인)
<a name="prerequisites-sharepoint-connector-online"></a>

**SharePoint(온라인)에서 SharePoint 앱 전용 인증을 사용하려면 다음 단계를 완료합니다.**
+ SharePoint Online 사이트 URL/URL을 적어 둡니다. (예: *https://yourdomain.sharepoint.com/sites/mysite*) URL은 *https*로 시작하고 *sharepoint.com*을 포함해야 합니다. 사이트 URL은 *sharepoint.com/* 또는 *site/mysite/home.aspx*가 아닌 실제 SharePoint 사이트여야 합니다.
+ SharePoint Online 인스턴스 URL/URL의 도메인 이름을 적어 둡니다.
+ Microsoft 365 테넌트 ID를 복사합니다. 테넌트 ID는 Microsoft Entra 포털의 속성에서 찾을 수 있습니다. 자세한 내용은 [Microsoft 365 테넌트 ID 찾기](https://learn.microsoft.com/en-us/sharepoint/find-your-office-365-tenant-id)를 참조하세요.
**참고**  
예제 애플리케이션은 Microsoft Learn 웹 사이트의 [Register a client application in Microsoft Entra ID](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)(이전 명칭: Azure Active Directory)을 참조하세요.
+ SharePoint 앱 전용 자격 증명을 구성합니다.
+ SharePoint 앱 전용에 권한을 부여할 때 클라이언트 ID와 클라이언트 보안 암호 값을 복사합니다. 자세한 내용은 [Granting access using SharePoint App-Only](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)를 참조하세요.
**참고**  
SharePoint 앱 전용에 대한 API 권한은 설정할 필요가 없습니다. 하지만 SharePoint 측에서 APP 권한을 구성해야 합니다. 필요한 APP 권한에 대한 자세한 내용은 Microsoft 설명서의 [Granting access using SharePoint App-Only](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)를 참조하세요.

### AWS 계정
<a name="prerequisites-sharepoint-connector-account"></a>

** AWS 계정에서 다음을 확인합니다.**
+ 인증 자격 증명 정보를 [AWS Secrets Manager 보안 암호](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)에 저장하고 보안 암호의 Amazon 리소스 이름(ARN)을 메모해 둡니다. 이 페이지의 **연결 구성** 지침에 따라 보안 암호에 포함되어야 하는 키-값 페어를 포함합니다.
+ 지식 기반에 대한 AWS Identity and Access Management (IAM) 역할/권한 정책에 데이터 소스에 연결하는 데 필요한 권한을 포함합니다. 이 데이터 소스가 지식 기반 IAM 역할에 추가하는 데 필요한 권한에 대한 자세한 내용은 [데이터 소스에 액세스할 수 있는 권한을](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds) 참조하세요.

**참고**  
콘솔을 사용하는 경우 AWS Secrets Manager 로 이동하여 보안 암호를 추가하거나 데이터 소스 구성 단계의 일부로 기존 보안 암호를 사용할 수 있습니다. 지식 기반을 생성하기 위한 콘솔 단계의 일부로 필요한 모든 권한이 있는 IAM 역할을 생성할 수 있습니다. 데이터 소스 및 기타 구성을 구성한 후에는 필요한 모든 권한이 있는 IAM 역할이 특정 지식 기반에 적용됩니다.  
보안 인증 정보와 보안 암호를 정기적으로 새로 고치거나 교체하는 것이 좋습니다. 보안을 위해 필요한 액세스 수준만 제공하세요. 데이터 소스 전체에서 자격 증명 및 보안 암호를 재사용하는 것은 권장하지 않습니다.

## 연결 구성
<a name="configuration-sharepoint-connector"></a>

SharePoint 인스턴스에 연결하려면 필요한 구성 정보를 제공해야만 Amazon Bedrock이 데이터에 액세스하고 크롤링할 수 있습니다. 또한 [사전 조건](#prerequisites-sharepoint-connector)를 따라야 합니다.

이 데이터 소스에 대한 구성의 예제가 이 섹션에 포함되어 있습니다.

문서 필드의 자동 감지, 포함/제외 필터, 증분 동기화, 보안 인증 자격 증명 및 이러한 작업의 작동 방식에 대해 알아보려면 아래에서 관련 항목을 선택하세요.

### 기본 문서 필드 자동 감지
<a name="ds-sharepoint-document-fields"></a>

데이터 소스 커넥터는 문서 또는 콘텐츠의 모든 기본 메타데이터 필드를 자동으로 감지하고 크롤링합니다. 예를 들어, 데이터 소스 커넥터는 문서, 문서 제목, 문서 생성 또는 수정 날짜, 또는 문서에 적용될 수 있는 기타 핵심 필드에 해당하는 문서 본문을 크롤링할 수 있습니다.

**중요**  
콘텐츠에 민감한 정보가 포함된 경우는 민감한 정보를 사용하여 응답 Amazon Bedrock 할 수 있습니다.

메타데이터 필드에 필터링 연산자를 적용하여 응답 관련성을 더욱 개선할 수 있습니다. 예를 들어, 문서의 'epoch\$1modification\$1time' 또는 문서가 마지막으로 업데이트된 1970년 1월 1일 이후의 초 수가 있습니다. 'epoch\$1modification\$1time'이 특정 수*보다 큰* 최신 데이터를 기준으로 필터링할 수 있습니다. 메타데이터 필드에 적용할 수 있는 필터링 연산자에 대한 자세한 내용은 [Metadata and filtering](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)을 참조하세요.

### 포함/제외 필터
<a name="ds-sharepoint-inclusion-exclusion"></a>

특정 콘텐츠 크롤링을 포함하거나 제외할 수 있습니다. 예를 들어, 제외 접두사/정규 표현식 패턴을 지정하여 파일 이름에 ‘private’이 포함된 파일의 크롤링을 건너뛸 수 있습니다. 특정 콘텐츠 엔터티 또는 콘텐츠 유형을 포함하도록 포함 접두사/정규 표현식 패턴을 지정할 수도 있습니다. 포함 및 제외 필터를 지정하고 둘 모두가 문서와 일치하는 경우, 제외 필터가 우선하며 문서가 크롤링되지 않습니다.

파일 이름에 ‘private’이 포함된 PDF 파일을 제외하거나 필터링하는 정규식 패턴의 예시는 *".\$1private.\$1\$1\$1.pdf"*입니다.

다음 콘텐츠 유형에 포함/제외 필터를 적용할 수 있습니다.
+ `Page`: 기본 페이지 제목
+ `Event`: 이벤트 이름
+ `File`: 첨부 파일 및 모든 문서 파일의 파일 이름(확장자 포함)

OneNote 문서 크롤링은 현재 지원되지 않습니다.

### 증분 동기화
<a name="ds-sharepoint-incremental-sync"></a>

데이터 소스 커넥터는 데이터 소스가 지식 기반과 동기화될 때마다 새 콘텐츠, 수정된 콘텐츠 및 삭제된 콘텐츠를 크롤링합니다. Amazon Bedrock 는 데이터 소스의 메커니즘을 사용하여 콘텐츠 변경을 추적하고 마지막 동기화 이후 변경된 콘텐츠를 크롤링할 수 있습니다. 데이터 소스를 처음으로 지식 기반과 동기화하는 경우 기본적으로 모든 콘텐츠가 동기화됩니다.

데이터 소스를 지식 기반과 동기화하려면 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API를 사용하거나 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택합니다.

**중요**  
데이터 소스에서 동기화하는 모든 데이터는 데이터를 검색할 수 있는 `bedrock:Retrieve` 권한이 있는 모든 사용자에게 제공됩니다. 여기에는 제어된 데이터 소스 권한이 있는 모든 데이터가 포함될 수 있습니다. 자세한 내용은 [Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)를 참조하세요.

### 보안 인증 자격 증명
<a name="ds-sharepoint-secret-auth-credentials"></a>

SharePoint 앱 전용 인증을 사용하는 경우의 보안 인증 자격 증명에는 다음과 같은 키-값 페어가 포함되어야 AWS Secrets Manager 합니다.
+ `clientId`: *Microsoft Entra SharePoint 애플리케이션과 연결된 클라이언트 ID*
+ `clientSecret`: *Microsoft Entra SharePoint 애플리케이션과 연결된 클라이언트 보안 암호*
+ `sharePointClientId`: *앱 전용 인증을 위해 SharePoint 앱을 등록할 때 생성된 클라이언트 ID*
+ `sharePointClientSecret`: *앱 전용 인증을 위해 SharePoint 앱을 등록할 때 생성된 클라이언트 보안 암호*

**참고**  
의 보안 암호는 지식 기반과 동일한 리전을 사용해야 AWS Secrets Manager 합니다.

------
#### [ Console ]

**지식 기반에 SharePoint 인스턴스 연결**<a name="connect-sharepoint-console"></a>

1. [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md)의 단계에 따라 **SharePoint**를 데이터 소스로 선택합니다.

1. 데이터 소스 이름을 입력하고, 선택적으로 설명을 제공합니다.

1. SharePoint 사이트 URL/URL을 제공합니다. 예를 들어 SharePoint Online의 경우 *https://yourdomain.sharepoint.com/sites/mysite*와 같은 형식입니다. URL은 *https*로 시작하고 *sharepoint.com*을 포함해야 합니다. 사이트 URL은 *sharepoint.com/* 또는 *site/mysite/home.aspx*가 아닌 실제 SharePoint 사이트여야 합니다.

1. SharePoint 인스턴스의 도메인 이름을 제공합니다.

1. **고급 설정** 섹션에서 선택적으로 다음을 구성할 수 있습니다.
   + **임시 데이터 스토리지용 KMS 키입니다.** - 데이터를 기본 AWS 관리형 키 또는 자체 KMS 키를 사용하여 임베딩으로 변환하는 동안 임시 데이터를 암호화할 수 있습니다. 자세한 내용은 [데이터 모으기 중 임시 데이터 스토리지의 암호화](encryption-kb.md#encryption-kb-ingestion) 단원을 참조하십시오.
   + **데이터 삭제 정책** - 기본적으로 벡터 저장소에 저장된 데이터 소스의 벡터 임베딩을 삭제하거나 벡터 저장소 데이터를 보존하도록 선택할 수 있습니다.

1. SharePoint 인스턴스에 연결할 인증 정보를 제공합니다. SharePoint 앱 전용 인증의 경우:

   1. 테넌트 ID를 입력합니다. 테넌트 ID는 Azure Active Directory 포털의 속성에서 찾을 수 있습니다.

   1.  AWS Secrets Manager 로 이동하여 보안 암호 자격 증명을 추가하거나 생성한 보안 암호에 기존 Amazon 리소스 이름(ARN)을 사용합니다. 보안 암호에는 테넌트 수준 또는 사이트 수준에서 앱 전용을 등록할 때 생성된 SharePoint 클라이언트 ID 및 SharePoint 클라이언트 보안 암호와 앱을 Entra에 등록할 때 생성된 Entra 클라이언트 ID 및 Entra 클라이언트 보안 암호가 포함되어야 합니다.

1. (선택 사항) **콘텐츠 구문 분석 및 청킹** 섹션에서 데이터를 구문 분석하고 청킹하는 방법을 사용자 지정할 수 있습니다. 이러한 사용자 지정에 대한 자세한 내용은 다음 리소스를 참조하세요.
   + 구문 분석 옵션에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.
   + 청킹 전략에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.
**주의**  
데이터 소스로 연결한 후에는 청킹 전략을 변경할 수 없습니다.
   + Lambda 함수를 사용하여 데이터 청킹 및 메타데이터 처리를 사용자 지정하는 방법에 대한 자세한 내용은 [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md) 섹션을 참조하세요.

1. 필터/정규 표현식 패턴을 사용하여 특정 콘텐츠를 포함하거나 제외하도록 선택합니다. 선택하지 않으면 모든 표준 콘텐츠가 크롤링됩니다.

1. 임베딩 모델 및 벡터 저장소를 계속 선택합니다. 나머지 단계를 보려면 [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md) 섹션으로 돌아가서 데이터 소스를 연결한 후 단계를 계속합니다.

------
#### [ API ]

다음은 Amazon Bedrock 지식 기반을 SharePoint Online에 연결하기 위한 구성의 예제입니다. Python과 같은 AWS CLI 또는 지원되는 SDK와 함께 API를 사용하여 데이터 소스를 구성합니다. [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)를 직접 호출한 후 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)를 직접 호출하여 `dataSourceConfiguration`의 연결 정보로 데이터 소스를 만듭니다.

선택적 `vectorIngestionConfiguration` 필드를 포함하여 수집에 적용할 수 있는 사용자 지정에 대해 알아보려면 [데이터 소스에 대한 수집 사용자 지정](kb-data-source-customize-ingestion.md) 섹션을 참조하세요.

**AWS Command Line Interface**

```
aws bedrock-agent create-data-source \
 --name "SharePoint Online connector" \
 --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE"
```

**`sharepoint-bedrock-connector-configuration.json`의 콘텐츠**

```
{
    "sharePointConfiguration": {
        "sourceConfiguration": {
            "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
            "hostType": "ONLINE",
            "domain": "yourdomain",
            "siteUrls": [
                "https://yourdomain.sharepoint.com/sites/mysite"
            ],
            "authType": "OAUTH2_SHAREPOINT_APP_ONLY_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "File",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SHAREPOINT"
}
```

------

**중요**  
OAuth2.0 인증은 권장되지 않습니다. SharePoint 앱 전용 인증을 사용하는 것이 좋습니다.

## OAuth2.0 사용
<a name="sharepoint-connector-oauth"></a>

OAuth 2.0을 사용하면 지식 기반과 통합된 SharePoint 커넥터의 SharePoint 리소스에 대한 액세스를 인증하고 권한을 부여할 수 있습니다.

### 필수 조건
<a name="sharepoint-connector-oauth-prereq"></a>

**SharePoint에서 OAuth 2.0 인증의 경우 다음을 수행했는지 확인합니다**.
+ SharePoint Online 사이트 URL/URL을 적어 둡니다. (예: *https://yourdomain.sharepoint.com/sites/mysite*) URL은 *https*로 시작하고 *sharepoint.com*을 포함해야 합니다. 사이트 URL은 *sharepoint.com/* 또는 *site/mysite/home.aspx*가 아닌 실제 SharePoint 사이트여야 합니다.
+ SharePoint Online 인스턴스 URL/URL의 도메인 이름을 적어 둡니다.
+ Microsoft 365 테넌트 ID를 복사합니다. 테넌트 ID는 Microsoft Entra 포털의 속성 또는 OAuth 애플리케이션에서 찾을 수 있습니다.

  관리자 SharePoint 계정의 사용자 이름과 암호를 기록해 두고 애플리케이션을 등록할 때 클라이언트 ID와 클라이언트 보안 암호 값을 복사합니다.
**참고**  
예제 애플리케이션은 Microsoft Learn 웹 사이트의 [Register a client application in Microsoft Entra ID](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)(이전 명칭: Azure Active Directory)을 참조하세요.
+ 애플리케이션을 등록할 때 SharePoint에 연결하려면 특정 읽기 권한이 필요합니다.
  + SharePoint: AllSites.read (위임) - 모든 사이트 모음의 항목 읽기
+ 관리자 사용자를 통해 Azure 포털에서 **보안 기본값**을 해제해야 할 수 있습니다. Azure Portal에서 보안 기본 설정을 관리하는 방법에 대한 자세한 내용은 [보안 기본값을 활성화/비활성화하는 방법에 대한 Microsoft 설명서](https://learn.microsoft.com/en-us/microsoft-365/business-premium/m365bp-conditional-access?view=o365-worldwide&tabs=secdefaults#security-defaults-1)를 참조하세요.
+ Amazon Bedrock이 SharePoint 콘텐츠를 크롤링하지 못하도록 SharePoint 계정에서 다중 인증(MFA)을 꺼야 할 수 있습니다.

사전 조건을 완료하려면 [AWS 계정](#prerequisites-sharepoint-connector-account)의 단계를 완료했는지 확인합니다.

### 보안 인증 자격 증명
<a name="sharepoint-secret-auth-credentials-oauth"></a>

OAuth2.0에 대한 연결 구성의 경우 [연결 구성](#configuration-sharepoint-connector)에 설명된 대로 기본 문서 필드, 포함/제외 필터 및 증분 동기화의 자동 감지에 대해 동일한 단계를 수행할 수 있습니다.

**OAuth 2.0 인증의 경우의 보안 인증 자격 증명에 이러한 키-값 페어가 포함되어야 AWS Secrets Manager 합니다**.
+ `username`: *SharePoint 관리자 사용자 이름*
+ `password`: *SharePoint 관리자 암호*
+ `clientId`: *OAuth 앱 클라이언트 ID*
+ `clientSecret`: *OAuth 앱 클라이언트 보안 암호*

### 지식 기반에 SharePoint 인스턴스 연결
<a name="sharepoint-connector-oauth-using"></a>

OAuth2.0을 사용할 때 SharePoint 인스턴스를 지식 베이스에 연결하려면 다음 단계를 따르세요.
+ (콘솔) 콘솔에서 [지식 기반에 SharePoint 인스턴스 연결](https://docs.aws.amazon.com/bedrock/latest/userguide/sharepoint-data-source-connector.html#connect-sharepoint-console)에 설명된 것과 동일한 단계를 따릅니다. SharePoint 인스턴스에 연결할 인증 정보를 제공하려는 경우는 다음과 같습니다.
  + 테넌트 ID를 입력합니다. 테넌트 ID는 Azure Active Directory 포털의 속성에서 찾을 수 있습니다.
  +  AWS Secrets Manager 로 이동하여 보안 인증 자격 증명을 추가하거나 생성한 보안 암호에 기존 Amazon 리소스 이름(ARN)을 사용합니다. 보안 암호에는 SharePoint 관리자 사용자 이름과 암호, 등록된 앱 클라이언트 ID 및 클라이언트 보안 암호가 포함되어야 합니다. 예제 애플리케이션은 Microsoft Learn 웹 사이트의 [Register a client application in Microsoft Entra ID](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)(이전 명칭: Azure Active Directory)을 참조하세요.
+ (API) 다음은 OAuth2.0의 연결 정보를 사용하여 데이터 소스를 생성하는 `CreateDataSource` API의 예제입니다.

  ```
  aws bedrock-agent create-data-source \
   --name "SharePoint Online connector" \
   --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
   --knowledge-base-id "your-knowledge-base-id" \
   --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
   --data-deletion-policy "DELETE"
  ```

  **`sharepoint-bedrock-connector-configuration.json`의 콘텐츠**

  ```
  {
      "sharePointConfiguration": {
          "sourceConfiguration": {
              "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
              "hostType": "ONLINE",
              "domain": "yourdomain",
              "siteUrls": [
                  "https://yourdomain.sharepoint.com/sites/mysite"
              ],
              "authType": "OAUTH2_CLIENT_CREDENTIALS",
              "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
          },
          "crawlerConfiguration": {
              "filterConfiguration": {
                  "type": "PATTERN",
                  "patternObjectFilter": {
                      "filters": [
                          {
                              "objectType": "File",
                              "inclusionFilters": [
                                  ".*\\.pdf"
                              ],
                              "exclusionFilters": [
                                  ".*private.*\\.pdf"
                              ]
                          }
                      ]
                  }
              }
          }
      },
      "type": "SHAREPOINT"
  }
  ```

# 지식 기반을 위해 Salesforce에 연결
<a name="salesforce-data-source-connector"></a>

Salesforce는 지원, 영업 및 마케팅 팀을 관리하기 위한 CRM(고객 관계 관리) 도구입니다. [Amazon Bedrock용 AWS 관리 콘솔](https://console.aws.amazon.com/bedrock/home) 또는 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API를 사용하여 Amazon Bedrock 지식 기반에 대한 Salesforce 인스턴스에 연결할 수 있습니다(Amazon Bedrock [지원 SDK 및 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) 참조).

**참고**  
Salesforce 데이터 소스 커넥터는 평가판 릴리스로 제공 중이며 변경될 수 있습니다.  
Salesforce 데이터 소스는 테이블, 차트, 다이어그램 또는 기타 이미지와 같은 멀티모달 데이터를 지원하지 않습니다.

현재는 Amazon OpenSearch Serverless 벡터 저장소만 이 데이터 소스와 함께 사용할 수 있습니다.

크롤링할 수 있는 파일 수와 파일당 MB 크기에는 제한이 있습니다. [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)를 참조하세요.

**Topics**
+ [지원 기능](#supported-features-salesforce-connector)
+ [사전 조건](#prerequisites-salesforce-connector)
+ [연결 구성](#configuration-salesforce-connector)

## 지원 기능
<a name="supported-features-salesforce-connector"></a>
+ 기본 문서 필드 자동 감지
+ 포함/제외 콘텐츠 필터
+ 추가, 업데이트, 삭제된 콘텐츠에 대한 증분 콘텐츠 동기화
+ OAuth 2.0 인증

## 사전 조건
<a name="prerequisites-salesforce-connector"></a>

**Salesforce에서 다음을 확인하세요.**
+ Salesforce 인스턴스 URL을 기록해 둡니다. (예: *https://company.salesforce.com/*) 인스턴스에서 Salesforce Connected App을 실행하고 있어야 합니다.
+ Salesforce Connected App을 만들고 클라이언트 자격 증명을 구성합니다. 그런 다음 선택한 앱의 OAuth 설정에서 소비자 키(클라이언트 ID)와 소비자 보안 암호(클라이언트 보안 암호)를 복사합니다. 자세한 내용은 [Create a Connected App](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5) 및 [ Configure a Connected App for the OAuth 2.0 Client Credentials](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)에서 Salesforce 설명서를 참조하세요.
**참고**  
Salesforce Connected App의 경우, Client Credentials Flow의 ‘Run As’ 필드에서 클라이언트 자격 증명에 대한 사용자 이름 또는 별칭을 검색하고 선택해야 합니다.

**AWS 계정에서 다음과 같이 하세요.**
+ 인증 자격 증명 정보를 [AWS Secrets Manager 보안 암호](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)에 저장하고 보안 암호의 Amazon 리소스 이름(ARN)을 메모해 둡니다. 이 페이지의 **연결 구성** 지침에 따라 보안 암호에 포함되어야 하는 키-값 페어를 포함합니다.
+ 지식 기반에 대한 AWS Identity and Access Management(IAM) 역할/권한 정책에 데이터 소스에 연결하는 데 필요한 권한을 포함합니다. 이 데이터 소스를 지식 기반 IAM 역할에 추가하는 데 필요한 권한에 대한 자세한 내용은 [Permissions to access data sources](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)를 참조하세요.

**참고**  
콘솔을 사용하는 경우, 데이터 소스 구성 단계의 일부로 AWS Secrets Manager로 이동하여 보안 암호를 추가하거나 기존 보안 암호를 사용할 수 있습니다. 지식 기반을 만들기 위한 콘솔 단계의 일부로, 필요한 모든 권한이 있는 IAM 역할을 만들 수 있습니다. 데이터 소스 및 기타 구성을 구성한 후에는 필요한 모든 권한이 있는 IAM 역할이 특정 지식 기반에 적용됩니다.  
보안 인증 정보와 보안 암호를 정기적으로 새로 고치거나 교체하는 것이 좋습니다. 보안을 위해 필요한 액세스 수준만 제공하세요. 데이터 소스 전체에서 자격 증명 및 보안 암호를 재사용하는 것은 권장하지 않습니다.

## 연결 구성
<a name="configuration-salesforce-connector"></a>

Salesforce 인스턴스에 연결하려면 필요한 구성 정보를 제공해야만 Amazon Bedrock이 데이터에 액세스하고 크롤링할 수 있습니다. 또한 [사전 조건](#prerequisites-salesforce-connector)를 따라야 합니다.

이 데이터 소스에 대한 구성의 예제가 이 섹션에 포함되어 있습니다.

문서 필드의 자동 감지, 포함/제외 필터, 증분 동기화, 보안 인증 자격 증명 및 이러한 작업의 작동 방식에 대해 알아보려면 아래에서 관련 항목을 선택하세요.

### 기본 문서 필드 자동 감지
<a name="ds-salesforce-document-fields"></a>

데이터 소스 커넥터는 문서 또는 콘텐츠의 모든 기본 메타데이터 필드를 자동으로 감지하고 크롤링합니다. 예를 들어, 데이터 소스 커넥터는 문서, 문서 제목, 문서 생성 또는 수정 날짜, 또는 문서에 적용될 수 있는 기타 핵심 필드에 해당하는 문서 본문을 크롤링할 수 있습니다.

**중요**  
콘텐츠에 민감한 정보가 포함된 경우 Amazon Bedrock은 민감한 정보를 사용하여 응답할 수 있습니다.

메타데이터 필드에 필터링 연산자를 적용하여 응답 관련성을 더욱 개선할 수 있습니다. 예를 들어, 문서의 'epoch\$1modification\$1time' 또는 문서가 마지막으로 업데이트된 1970년 1월 1일 이후의 초 수가 있습니다. 'epoch\$1modification\$1time'이 특정 수*보다 큰* 최신 데이터를 기준으로 필터링할 수 있습니다. 메타데이터 필드에 적용할 수 있는 필터링 연산자에 대한 자세한 내용은 [Metadata and filtering](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)을 참조하세요.

### 포함/제외 필터
<a name="ds-salesforce-inclusion-exclusion"></a>

특정 콘텐츠 크롤링을 포함하거나 제외할 수 있습니다. 예를 들어, 제외 접두사/정규 표현식 패턴을 지정하여 파일 이름에 ‘private’이 포함된 파일의 크롤링을 건너뛸 수 있습니다. 특정 콘텐츠 엔터티 또는 콘텐츠 유형을 포함하도록 포함 접두사/정규 표현식 패턴을 지정할 수도 있습니다. 포함 및 제외 필터를 지정하고 둘 모두가 문서와 일치하는 경우, 제외 필터가 우선하며 문서가 크롤링되지 않습니다.

캠페인 이름에 “private”이 포함된 캠페인을 제외하거나 필터링하는 정규식 패턴의 예시는 *“.\$1private.\$1”*입니다.

다음 콘텐츠 유형에 포함/제외 필터를 적용할 수 있습니다.
+ `Account`: 계정 번호/식별자
+ `Attachment`: 확장자가 있는 첨부 파일 이름
+ `Campaign`: 캠페인 이름 및 관련 식별자
+ `ContentVersion`: 문서 버전 및 관련 식별자
+ `Partner`: 관련 식별자를 포함한 파트너 정보 필드
+ `Pricebook2`: 제품/가격 목록 이름
+ `Case`: 고객 문의/문제 번호 및 관련 식별자를 포함한 기타 정보 필드(참고: 제외하거나 필터링하도록 선택할 수 있는 개인 정보를 포함할 수 있음)
+ `Contact`: 고객 정보 필드(참고: 제외하거나 필터링하도록 선택할 수 있는 개인 정보를 포함할 수 있음)
+ `Contract`: 계약 이름 및 관련 식별자
+ `Document`: 확장자가 있는 파일 이름
+ `Idea`: 아이디어 정보 필드 및 관련 식별자
+ `Lead`: 신규 잠재 고객 정보 필드(참고: 제외하거나 필터링하도록 선택할 수 있는 개인 정보를 포함할 수 있음)
+ `Opportunity`: 보류 중인 판매/거래 정보 필드 및 관련 식별자
+ `Product2`: 제품 정보 필드 및 관련 식별자
+ `Solution`: 고객 문의/문제의 솔루션 이름 및 관련 식별자
+ `Task`: 작업 정보 필드 및 관련 식별자
+ `FeedItem`: 채터 피드 게시물의 식별자
+ `FeedComment`: 주석이 속한 채터 피드 게시물의 식별자
+ `Knowledge__kav`: 지식 문서 제목
+ `User`: 조직 내 사용자 별칭
+ `CollaborationGroup`: 채터 그룹 이름(고유)

### 증분 동기화
<a name="ds-salesforce-incremental-sync"></a>

데이터 소스 커넥터는 데이터 소스가 지식 기반과 동기화될 때마다 새 콘텐츠, 수정된 콘텐츠, 삭제된 콘텐츠를 크롤링합니다. Amazon Bedrock은 데이터 소스의 메커니즘을 사용하여 콘텐츠 변경 사항을 추적하고 마지막 동기화 이후 변경된 콘텐츠를 크롤링할 수 있습니다. 데이터 소스를 처음으로 지식 기반과 동기화하는 경우 기본적으로 모든 콘텐츠가 동기화됩니다.

데이터 소스를 지식 기반과 동기화하려면 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API를 사용하거나 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택합니다.

**중요**  
데이터 소스에서 동기화하는 모든 데이터는 데이터를 검색할 수 있는 `bedrock:Retrieve` 권한이 있는 모든 사용자에게 제공됩니다. 여기에는 제어된 데이터 소스 권한이 있는 모든 데이터가 포함될 수 있습니다. 자세한 내용은 [Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)를 참조하세요.

### 보안 인증 자격 증명
<a name="ds-salesforce-secret-auth-credentials"></a>

(OAuth 2.0 인증을 사용하는 경우) AWS Secrets Manager의 보안 인증 자격 증명에는 다음과 같은 키-값 페어가 포함되어야 합니다.
+ `consumerKey`: *앱 클라이언트 ID*
+ `consumerSecret`: *앱 클라이언트 보안 암호*
+ `authenticationUrl`: *Salesforce 인스턴스 URL 또는 인증 토큰을 요청할 URL*

**참고**  
AWS Secrets Manager의 보안 암호는 지식 기반과 동일한 리전을 사용해야 합니다.

------
#### [ Console ]

**Salesforce 인스턴스를 지식 기반에 연결**

1. [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md)의 단계에 따라 **Salesforce**를 데이터 소스로 선택합니다.

1. 데이터 소스 이름을 입력하고, 선택적으로 설명을 제공합니다.

1. Salesforce 인스턴스 URL을 제공합니다. (예: *https://company.salesforce.com/*) 인스턴스에서 Salesforce Connected App을 실행하고 있어야 합니다.

1. **고급 설정** 섹션에서 선택적으로 다음을 구성할 수 있습니다.
   + **임시 데이터 스토리지용 KMS 키입니다.** - 데이터를 기본 AWS 관리형 키 또는 자체 KMS 키를 사용하여 임베딩으로 변환하는 동안 임시 데이터를 암호화할 수 있습니다. 자세한 내용은 [데이터 모으기 중 임시 데이터 스토리지의 암호화](encryption-kb.md#encryption-kb-ingestion) 섹션을 참조하세요.
   + **데이터 삭제 정책** - 기본적으로 벡터 저장소에 저장된 데이터 소스의 벡터 임베딩을 삭제하거나 벡터 저장소 데이터를 보존하도록 선택할 수 있습니다.

1. Salesforce 인스턴스에 연결할 인증 정보를 제공합니다.

   1. OAuth 2.0 인증의 경우 AWS Secrets Manager로 이동하여 보안 인증 자격 증명을 추가하거나 생성한 보안 암호에 기존 Amazon 리소스 이름(ARN)을 사용합니다. 보안 암호에는 Salesforce Connected App 소비자 키(클라이언트 ID), 소비자 보안 암호(클라이언트 보안 암호), Salesforce 인스턴스 URL 또는 인증 토큰을 요청할 URL이 포함되어야 합니다. 자세한 내용은 [Create a Connected App](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5) 및 [ Configure a Connected App for the OAuth 2.0 Client Credentials](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)에서 Salesforce 설명서를 참조하세요.

1. (선택 사항) **콘텐츠 구문 분석 및 청킹** 섹션에서 데이터를 구문 분석하고 청킹하는 방법을 사용자 지정할 수 있습니다. 이러한 사용자 지정에 대한 자세한 내용은 다음 리소스를 참조하세요.
   + 구문 분석 옵션에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.
   + 청킹 전략에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.
**주의**  
데이터 소스로 연결한 후에는 청킹 전략을 변경할 수 없습니다.
   + Lambda 함수를 사용하여 데이터 청킹 및 메타데이터 처리를 사용자 지정하는 방법에 대한 자세한 내용은 [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md) 섹션을 참조하세요.

1. 필터/정규 표현식 패턴을 사용하여 특정 콘텐츠를 포함하거나 제외하도록 선택합니다. 선택하지 않으면 모든 표준 콘텐츠가 크롤링됩니다.

1. 임베딩 모델 및 벡터 저장소를 계속 선택합니다. 나머지 단계를 보려면 [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md) 섹션으로 돌아가서 데이터 소스를 연결한 후 단계를 계속합니다.

------
#### [ API ]

다음은 Amazon Bedrock 지식 기반을 Salesforce에 연결하기 위한 구성의 예제입니다. Python과 같은 AWS CLI 또는 지원되는 SDK와 함께 API를 사용하여 데이터 소스를 구성할 수 있습니다. [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)를 직접 호출한 후 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)를 직접 호출하여 `dataSourceConfiguration`의 연결 정보로 데이터 소스를 만듭니다.

선택적 `vectorIngestionConfiguration` 필드를 포함하여 수집에 적용할 수 있는 사용자 지정에 대해 알아보려면 [데이터 소스에 대한 수집 사용자 지정](kb-data-source-customize-ingestion.md) 섹션을 참조하세요.

**AWS Command Line Interface**

```
aws bedrock create-data-source \
 --name "Salesforce connector" \
 --description "Salesforce data source connector for Amazon Bedrock to use content in Salesforce" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://salesforce-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

salesforce-bedrock-connector-configuration.json
{
    "salesforceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://company.salesforce.com/",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Salesforce"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Campaign",
                            "inclusionFilters": [
                                ".*public.*"
                            ],
                            "exclusionFilters": [
                                ".*private.*"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SALESFORCE"
}
```

------

# 지식 기반을 위한 웹 페이지 크롤링
<a name="webcrawl-data-source-connector"></a>

Amazon Bedrock에서 제공하는 웹 크롤러는 Amazon Bedrock 지식 기반에서 사용하기 위해 선택한 URL을 연결하여 크롤링합니다. 선택한 URL에 대해 설정된 범위나 제한에 따라 웹사이트 페이지를 크롤링할 수 있습니다. [Amazon Bedrock용 AWS Management Console](https://console.aws.amazon.com/bedrock/home) 또는 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API를 사용하여 웹사이트 페이지를 크롤링할 수 있습니다(Amazon Bedrock [supported SDKs and AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) 참조). 현재는 Amazon OpenSearch Serverless 벡터 저장소만 이 데이터 소스와 함께 사용할 수 있습니다.

**참고**  
웹 크롤러 데이터 소스 커넥터는 평가판 릴리스로 제공 중이며 변경될 수 있습니다.

크롤링할 웹 사이트를 선택할 때 [Amazon 이용 목적 제한 방침](https://aws.amazon.com/aup/)과 기타 모든 Amazon 약관을 준수해야 합니다. 웹 크롤러는 자체 웹 페이지나 크롤링 권한이 있고 robots.txt 구성을 준수하는 웹 페이지를 인덱싱하는 데만 사용해야 한다는 점을 기억하세요.

웹 크롤러는 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html)에 따라 robots.txt를 준수합니다.

크롤링할 수 있는 웹 페이지 콘텐츠 항목 수와 콘텐츠 항목당 MB 크기에는 제한이 있습니다. [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)를 참조하세요.

**Topics**
+ [지원 기능](#supported-features-webcrawl-connector)
+ [사전 조건](#prerequisites-webcrawl-connector)
+ [연결 구성](#configuration-webcrawl-connector)

## 지원 기능
<a name="supported-features-webcrawl-connector"></a>

웹 크롤러는 시드 URL에서 시작해 HTML 페이지를 연결하여 크롤링하고, 동일한 상위 기본 도메인 및 경로 아래에 있는 모든 하위 링크를 탐색합니다. HTML 페이지 중 지원되는 문서를 참조하는 경우 웹 크롤러는 이러한 문서가 동일한 상위 기본 도메인에 있는지 여부와 관계없이 해당 문서를 가져옵니다. 크롤링 구성을 변경하여 크롤링 동작을 수정할 수 있습니다. [연결 구성](#configuration-webcrawl-connector) 섹션을 참조하세요.

다음과 같은 작업을 수행할 수 있습니다.
+ 여러 소스 URL을 선택하여 크롤링하고 URL 범위를 설정하여 호스트만 크롤링하거나 하위 도메인도 포함합니다.
+ 소스 URL에 포함된 정적 웹 페이지를 크롤링합니다.
+ 사용자 지정 사용자 에이전트 접미사를 지정하여 자체 크롤러에 대한 규칙을 설정합니다.
+ 필터 패턴과 일치하는 특정 URL을 포함하거나 제외합니다.
+ '허용' 및 '허용 안 함'과 같은 표준 robots.txt 지침을 준수합니다.
+ URLs의 범위를 크롤링하도록 제한하고 선택적으로 필터 패턴과 일치하는 URL의 범위를 제외합니다.
+ URL 크롤링 속도와 크롤링할 최대 페이지 수를 제한합니다.
+ Amazon CloudWatch에서 크롤링된 URL의 상태 확인

## 사전 조건
<a name="prerequisites-webcrawl-connector"></a>

**웹 크롤러를 사용하려면 다음을 수행해야 합니다**.
+ 소스 URL을 크롤링할 권한이 있는지 확인합니다.
+ 소스 URL에 해당하는 robots.txt 경로가 URL 크롤링을 차단하지 않는지 확인하세요. 웹 크롤러는 robots.txt의 표준을 준수합니다. 웹사이트에서 robots.txt가 발견되지 않으면 기본적으로 `disallow`가 적용됩니다. 웹 크롤러는 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html)에 따라 robots.txt를 준수합니다. 사용자 지정 사용자 에이전트 헤더 접미사를 지정하여 자체 크롤러에 대한 규칙을 설정할 수도 있습니다. 자세한 내용은 이 페이지의 [연결 구성](#configuration-webcrawl-connector) 지침에서 웹 크롤러 URL 액세스를 참조하세요.
+ [CloudWatch Logs 전송을 활성화](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)하고 웹 크롤러 로그 예제를 참고하여 웹 콘텐츠 수집의 데이터 수집 작업 진행 상태를 확인하고, 특정 URL을 가져오지 못하는 경우 원인을 파악할 수 있습니다.

**참고**  
크롤링할 웹 사이트를 선택할 때 [Amazon 이용 목적 제한 방침](https://aws.amazon.com/aup/)과 기타 모든 Amazon 약관을 준수해야 합니다. 웹 크롤러를 사용하여 웹 페이지를 인덱싱하거나 인덱싱 권한이 있는 웹 페이지만 사용해야 한다는 점을 기억하세요.

## 연결 구성
<a name="configuration-webcrawl-connector"></a>

아래에서 URL 크롤링 동기화 범위, 포함/제외 필터, URL 액세스, 증분 동기화 및 작동 방식에 대한 자세한 내용을 자세히 알아보세요.

### URL 크롤링에 대한 동기화 범위
<a name="ds-sync-scope"></a>

각 페이지 URL과 시드 URL의 구체적인 관계를 기준으로 크롤링할 URL의 범위를 제한할 수 있습니다. 크롤링 속도를 높이려면 시드 URL과 동일한 호스트 및 초기 URL 경로를 갖는 URL로 제한할 수 있습니다. 더 광범위한 크롤링의 경우 동일한 호스트 내의 URL 또는 시드 URL의 하위 도메인 내의 URL을 크롤링하도록 선택할 수 있습니다.

다음 옵션 중에서 선택할 수 있습니다.
+ 기본값: 기본값: 동일한 호스트에 속하고 동일한 초기 URL 경로를 사용하는 웹 페이지로 크롤링을 제한합니다. 예를 들어, ‘https://aws.amazon.com/bedrock/’이라는 시드 URL이 있으면 이 경로와 이 경로에서 확장되는 웹 페이지만 크롤링됩니다(예: https://aws.amazon.com/bedrock/agents/). ‘https://aws.amazon.com/ec2/’ 같은 형제 URL은 크롤링되지 않습니다.
+ 호스트만 해당: 크롤링을 동일한 호스트에 속한 웹 페이지로 제한합니다. 예를 들어, 시드 URL이 ‘https://aws.amazon.com/bedrock/’인 경우, ‘https://aws.amazon.com’이 포함된 웹 페이지도 ‘https://aws.amazon.com/ec2’처럼 크롤링됩니다.
+ 하위 도메인: 시드 URL과 동일한 기본 도메인을 갖는 모든 웹 페이지를 크롤링합니다. 예를 들어, 시드 URL이 ‘https://aws.amazon.com/bedrock/’인 경우 ‘amazon.com’(하위 도메인)이 포함된 모든 웹 페이지가 ‘https://www.amazon.com’처럼 크롤링됩니다.

**참고**  
과도한 웹 페이지 크롤링이 발생하지 않도록 하세요. 필터나 범위 제한 없이 wikipedia.org 같은 대규모 웹 사이트를 크롤링하는 것은 권장되지 않습니다. 대규모 웹 사이트를 크롤링하는 데는 시간이 매우 오래 걸립니다.  
[지원되는 파일 유형](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)은 범위에 관계없이 크롤링되며 파일 유형에 대한 제외 패턴이 없는 경우에도 크롤링됩니다.

웹 크롤러는 정적 웹 사이트를 지원합니다.

URL 크롤링 속도를 제한하여 크롤링 속도의 스로틀링을 제어할 수도 있습니다. 호스트별로 분당 크롤링할 최대 URL 수를 설정합니다. 또한, 크롤링할 총 웹 페이지의 최대 수(최대 25,000개)를 설정할 수도 있습니다. 소스 URL의 총 웹 페이지 수가 설정된 최대값을 초과하면 데이터 소스 동기화/수집 작업이 실패합니다.

### 포함/제외 필터
<a name="ds-inclusion-exclusion"></a>

범위에 따라 특정 URL을 포함하거나 제외할 수 있습니다. [지원되는 파일 유형](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)은 범위에 관계없이 크롤링되며 파일 유형에 대한 제외 패턴이 없는 경우에도 크롤링됩니다. 포함 및 제외 필터를 지정하고 두 필터가 모두 URL과 일치하는 경우 제외 필터가 우선하며 해당 웹 콘텐츠는 크롤링되지 않습니다.

**중요**  
[치명적인 역추적](https://docs.aws.amazon.com/codeguru/detector-library/python/catastrophic-backtracking-regex/) 및 예측으로 이어지는 문제가 있는 정규식 패턴 필터는 거부됩니다.

‘.pdf’로 끝나는 URL이나 PDF 웹 페이지 첨부 파일을 제외하기 위한 정규식 필터 패턴의 예: *".\$1\$1.pdf\$1"*

### 웹 크롤러 URL 액세스
<a name="ds-webcrawl-identity-crawling"></a>

웹 크롤러를 사용하여 크롤링할 권한이 있는 웹 사이트의 페이지를 크롤링할 수 있습니다.

크롤링할 웹 사이트를 선택할 때 [Amazon 이용 목적 제한 방침](https://aws.amazon.com/aup/)과 기타 모든 Amazon 약관을 준수해야 합니다. 웹 크롤러를 사용하여 웹 페이지를 인덱싱하거나 인덱싱 권한이 있는 웹 페이지만 사용해야 한다는 점을 기억하세요.

웹 크롤러는 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html)에 따라 robots.txt를 준수합니다.

특정 사용자 에이전트 봇을 지정하여 사용자 에이전트가 소스 URL을 크롤링하도록 '허용' 또는 '금지'할 수 있습니다. 웹 사이트의 robots.txt 파일을 수정하여 웹 크롤러가 소스 URL을 어떻게 크롤링하는지 제어할 수 있습니다. 크롤러는 먼저 `bedrockbot-UUID ` 규칙을 찾은 다음 robots.txt 파일에서 일반 `bedrockbot` 규칙을 찾습니다.

봇 보호 시스템에서 크롤러를 허용 목록에 추가하는 데 사용할 수 있는 사용자 에이전트 접미사를 추가할 수도 있습니다. 이 접미사는 아무도 사용자 에이전트 문자열을 가장할 수 없도록 `robots.txt` 파일에 추가할 필요가 없습니다. 예를 들어, 웹 크롤러가 모든 웹 사이트 콘텐츠를 크롤링할 수 있도록 허용하고 다른 로봇의 크롤링을 금지하려면 다음 지시문을 사용하세요.

```
User-agent: bedrockbot-UUID # Amazon Bedrock Web Crawler
Allow: / # allow access to all pages
User-agent: * # any (other) robot
Disallow: / # disallow access to any pages
```

### 증분 동기화
<a name="ds-incremental-sync"></a>

웹 크롤러가 실행될 때마다 범위 및 필터에 일치하는 소스 URL에서 연결할 수 있는 모든 URL의 콘텐츠를 검색합니다. 모든 콘텐츠의 첫 번째 동기화 후에 이루어지는 증분 동기화의 경우 Amazon Bedrock은 지식 기반을 새 콘텐츠 및 수정된 콘텐츠로 업데이트하고 더 이상 존재하지 않는 이전 콘텐츠를 제거합니다. 가끔 크롤러가 웹사이트에서 콘텐츠가 삭제되었는지 확인하지 못할 수도 있습니다. 이런 경우 크롤러는 지식 기반에 있는 오래된 콘텐츠를 보존하는 쪽으로 조치를 취합니다.

데이터 소스를 지식 기반과 동기화하려면 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API를 사용하거나 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택합니다.

**중요**  
데이터 소스에서 동기화하는 모든 데이터는 데이터를 검색할 수 있는 `bedrock:Retrieve` 권한이 있는 모든 사용자에게 제공됩니다. 여기에는 제어된 데이터 소스 권한이 있는 모든 데이터가 포함될 수 있습니다. 자세한 내용은 [Knowledge base permissions](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)를 참조하세요.

------
#### [ Console ]

**웹 크롤러 데이터 소스를 지식 기반에 연결**

1. [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md)의 단계에 따라 **웹 크롤러**를 데이터 소스로 선택합니다.

1. 데이터 소스 이름을 입력하고, 선택적으로 설명을 제공합니다.

1. 크롤링하려는 URL의 **소스 URL**을 제공합니다. **소스 URL 추가**를 선택하여 최대 9개의 URL을 추가할 수 있습니다. 소스 URL을 제공하면 해당 도메인을 크롤링할 권한이 있음을 확인하는 것입니다.

1. **고급 설정** 섹션에서 선택적으로 다음을 구성할 수 있습니다.
   + **임시 데이터 스토리지용 KMS 키입니다.** - 데이터를 기본 AWS 관리형 키 또는 자체 KMS 키를 사용하여 임베딩으로 변환하는 동안 임시 데이터를 암호화할 수 있습니다. 자세한 내용은 [데이터 모으기 중 임시 데이터 스토리지의 암호화](encryption-kb.md#encryption-kb-ingestion) 섹션을 참조하세요.
   + **데이터 삭제 정책** - 기본적으로 벡터 저장소에 저장된 데이터 소스의 벡터 임베딩을 삭제하거나 벡터 저장소 데이터를 보존하도록 선택할 수 있습니다.

1. (선택 사항) 웹 서버에 액세스할 때 크롤러 또는 봇을 식별하는 **bedrock-UUID-**용 사용자 에이전트 접미사를 제공합니다.

1. **동기화 범위** 섹션에서 다음을 구성합니다.

   1. 소스 URL을 크롤링할 **웹 사이트 도메인 범위**를 선택합니다.
      + 기본값: 기본값: 동일한 호스트에 속하고 동일한 초기 URL 경로를 사용하는 웹 페이지로 크롤링을 제한합니다. 예를 들어, ‘https://aws.amazon.com/bedrock/’이라는 시드 URL이 있으면 이 경로와 이 경로에서 확장되는 웹 페이지만 크롤링됩니다(예: https://aws.amazon.com/bedrock/agents/). ‘https://aws.amazon.com/ec2/’ 같은 형제 URL은 크롤링되지 않습니다.
      + 호스트만 해당: 크롤링을 동일한 호스트에 속한 웹 페이지로 제한합니다. 예를 들어, 시드 URL이 ‘https://aws.amazon.com/bedrock/’인 경우, ‘https://aws.amazon.com’이 포함된 웹 페이지도 ‘https://aws.amazon.com/ec2’처럼 크롤링됩니다.
      + 하위 도메인: 시드 URL과 동일한 기본 도메인을 갖는 모든 웹 페이지를 크롤링합니다. 예를 들어, 시드 URL이 ‘https://aws.amazon.com/bedrock/’인 경우 ‘amazon.com’(하위 도메인)이 포함된 모든 웹 페이지가 ‘https://www.amazon.com’처럼 크롤링됩니다.
**참고**  
과도한 웹 페이지 크롤링이 발생하지 않도록 하세요. 필터나 범위 제한 없이 wikipedia.org 같은 대규모 웹 사이트를 크롤링하는 것은 권장되지 않습니다. 대규모 웹 사이트를 크롤링하는 데는 시간이 매우 오래 걸립니다.  
[지원되는 파일 유형](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)은 범위에 관계없이 크롤링되며 파일 유형에 대한 제외 패턴이 없는 경우에도 크롤링됩니다.

   1. **크롤링 속도의 최대 스로틀링**을 입력합니다. 호스트당 1분에 1\$1300개의 URL을 수집합니다. 크롤링 속도가 높을수록 부하가 증가하지만 시간이 덜 소요됩니다.

   1. 1\$125,000 사이로 **데이터 소스 동기화를 위한 최대 페이지**를 입력합니다. 소스 URL에서 크롤링하는 웹 페이지의 최대 개수를 제한합니다. 웹 페이지가 이 수를 초과하면 데이터 소스 동기화가 실패하고 웹 페이지가 수집되지 않습니다.

   1. **URL Regex** 패턴(선택 사항)의 경우 상자에 정규식 패턴을 입력하여 **포함 패턴** 또는 **제외 패턴**을 추가할 수 있습니다. **새 패턴 추가**를 선택하여 최대 25개의 포함 필터 및 25개의 제외 필터 패턴을 추가할 수 있습니다. 포함 및 제외 패턴은 범위에 따라 크롤링됩니다. 충돌이 있는 경우 제외 패턴이 우선합니다.

1. (선택 사항) **콘텐츠 구문 분석 및 청킹** 섹션에서 데이터를 구문 분석하고 청킹하는 방법을 사용자 지정할 수 있습니다. 이러한 사용자 지정에 대한 자세한 내용은 다음 리소스를 참조하세요.
   + 구문 분석 옵션에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.
   + 청킹 전략에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.
**주의**  
데이터 소스로 연결한 후에는 청킹 전략을 변경할 수 없습니다.
   + Lambda 함수를 사용하여 데이터 청킹 및 메타데이터 처리를 사용자 지정하는 방법에 대한 자세한 내용은 [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md) 섹션을 참조하세요.

1. 임베딩 모델 및 벡터 저장소를 계속 선택합니다. 나머지 단계를 보려면 [Amazon Bedrock Knowledge Bases에서 데이터 소스에 연결하여 지식 기반 생성](knowledge-base-create.md) 섹션으로 돌아가서 데이터 소스를 연결한 후 단계를 계속합니다.

------
#### [ API ]

WebCrawler를 사용하여 지식 기반을 데이터 소스에 연결하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)로 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청을 보내고 [DataSourceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DataSourceConfiguration.html)의 `type` 필드에 `WEB`을 지정하고 `webConfiguration` 필드를 포함합니다. 다음은 Amazon Bedrock 지식 기반에 대한 웹 크롤러 구성의 예제입니다.

```
{
    "webConfiguration": {
        "sourceConfiguration": {
            "urlConfiguration": {
                "seedUrls": [{
                    "url": "https://www.examplesite.com"
                }]
            }
        },
        "crawlerConfiguration": {
            "crawlerLimits": {
                "rateLimit": 50,
                "maxPages": 100
            },
            "scope": "HOST_ONLY",
            "inclusionFilters": [
                "https://www\.examplesite\.com/.*\.html"
            ],
            "exclusionFilters": [
                "https://www\.examplesite\.com/contact-us\.html"
            ],
            "userAgent": "CustomUserAgent"
        }
    },
    "type": "WEB"
}
```

선택적 `vectorIngestionConfiguration` 필드를 포함하여 수집에 적용할 수 있는 사용자 지정에 대해 알아보려면 [데이터 소스에 대한 수집 사용자 지정](kb-data-source-customize-ingestion.md) 섹션을 참조하세요.

------

# 지식 기반을 사용자 지정 데이터 소스에 연결
<a name="custom-data-source-connector"></a>

지원되는 데이터 소스 서비스를 선택하는 대신 다음과 같은 이점을 위해 사용자 지정 데이터 소스에 연결할 수 있습니다.
+ 지식 기반이 액세스할 수 있도록 하려는 데이터 유형에 대한 유연성 및 제어.
+ `KnowledgeBaseDocuments` API 작업을 사용하여 변경 사항을 동기화할 필요 없이 문서를 직접 수집하거나 삭제할 수 있습니다.
+ Amazon Bedrock 콘솔 또는 API를 통해 직접 데이터 소스의 문서를 볼 수 있는 기능입니다.
+ 에서 직접 데이터 소스에 문서를 업로드AWS Management Console하거나 인라인으로 추가할 수 있습니다.
+ 데이터 소스에서 문서를 추가하거나 업데이트할 때 메타데이터를 각 문서에 직접 추가할 수 있는 기능입니다. 데이터 소스에서 정보를 검색할 때 필터링에 메타데이터를 사용하는 방법에 대한 자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)의 **메타데이터 및 필터링** 탭을 참조하세요.

**멀티모달 콘텐츠 지원**  
사용자 지정 데이터 소스는 최대 10MB base64 인코딩 이미지, 오디오 및 비디오 파일을 포함한 멀티모달 콘텐츠를 지원합니다. 멀티모달 콘텐츠 작업에 대한 포괄적인 지침은 섹션을 참조하세요[멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md).

지식 기반을 사용자 지정 데이터 소스에 연결하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청을 보냅니다. 연결할 지식 기반의 `knowledgeBaseId`를 지정하고, 데이터 소스에 `name`을 제공하고, `dataSourceConfiguration`의 `type` 필드를 `CUSTOM`으로 지정합니다. 다음은 이 데이터 소스를 생성하는 최소 예제입니다.

```
PUT /knowledgebases/KB12345678/datasources/ HTTP/1.1
Content-type: application/json

{
    "name": "MyCustomDataSource",
    "dataSourceConfiguration": {
        "type": "CUSTOM"
    }
}
```

다음 선택적 필드 중 하나를 포함하여 데이터 소스를 구성할 수 있습니다.


****  

| Field | 사용 사례: | 
| --- | --- | 
| description | 데이터 소스에 대한 설명을 제공합니다. | 
| clientToken | API 요청이 한 번만 완료되도록 합니다. 자세한 내용은 [멱등성 보장](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)을 참조하세요. | 
| serverSideEncryptionConfiguration | 데이터를 임베딩으로 변환하는 동안 임시 데이터 스토리지에 대한 사용자 지정 KMS 키를 지정합니다. 자세한 내용은 [데이터 모으기 중 임시 데이터 스토리지의 암호화](encryption-kb.md#encryption-kb-ingestion) 섹션을 참조하세요. | 
| dataDeletionPolicy | 데이터 소스를 삭제한 경우 벡터 스토어의 데이터 소스에 대한 벡터 임베딩으로 수행할 작업을 구성합니다. 벡터 저장소에 데이터를 보존하려면 RETAIN을 지정하고 삭제하려면 DELETE의 기본 옵션을 지정합니다. | 
| vectorIngestionConfiguration | 데이터 소스 수집 옵션을 구성합니다. 자세한 내용은 아래를 참조하세요. | 

`vectorIngestionConfiguration` 필드는 다음 필드가 포함된 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) 객체에 매핑됩니다.
+ chunkingConfiguration - 데이터 소스의 문서를 청킹하는 데 사용할 전략을 구성합니다. 청킹 전략에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.
+ parsingConfiguration - 데이터 소스를 구문 분석하는 데 사용할 전략을 구성합니다. 구문 분석 옵션에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.
+ customTransformationConfiguration - 데이터 변환 방법을 사용자 지정하고 더 큰 사용자 지정을 위해 Lambda 함수를 적용합니다. Lambda 함수를 사용하여 데이터 청킹 및 메타데이터 처리를 사용자 지정하는 방법에 대한 자세한 내용은 [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md) 섹션을 참조하세요.

사용자 지정 데이터 소스를 설정한 후 여기에 문서를 추가하고 지식 기반에 직접 수집할 수 있습니다. 다른 데이터 소스와 달리 사용자 지정 데이터 소스를 동기화할 필요가 없습니다. 문서를 직접 수집하는 방법을 알아보려면 [변경 사항을 지식 기반에 직접 수집](kb-direct-ingestion.md) 섹션을 참조하세요.

# 데이터 소스에 대한 수집 사용자 지정
<a name="kb-data-source-customize-ingestion"></a>

에서 데이터 소스를 연결할 때 벡터 수집을 사용자 지정 AWS Management Console 하거나 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청을 보낼 때 `vectorIngestionConfiguration` 필드 값을 수정하여 벡터 수집을 사용자 지정할 수 있습니다.

주제를 선택하여 데이터 소스에 연결할 때 수집을 사용자 지정하기 위한 구성을 포함하는 방법을 알아봅니다.

**Topics**
+ [구문 분석에 사용할 도구 선택](#kb-data-source-customize-parsing)
+ [청킹 전략 선택](#kb-data-source-customize-chunking)
+ [수집 중에 Lambda 함수 사용](#kb-data-source-customize-lambda)

## 구문 분석에 사용할 도구 선택
<a name="kb-data-source-customize-parsing"></a>

데이터의 문서를 구문 분석하는 방법을 사용자 지정할 수 있습니다. Amazon Bedrock Knowledge Bases에서 데이터를 구문 분석하는 옵션에 대한 자세한 내용은 [데이터 소스에 대한 구문 분석 옵션](kb-advanced-parsing.md) 섹션을 참조하세요.

**주의**  
데이터 소스에 연결한 후에는 구문 분석 전략을 변경할 수 없습니다. 다른 구문 분석 전략을 사용하려면 새 데이터 소스를 추가할 수 있습니다.  
지식 기반을 생성한 후에는 멀티모달 데이터(이미지, 그림, 차트 및 테이블 포함)를 저장할 S3 위치를 추가할 수 없습니다. 멀티모달 데이터를 포함하고 이를 지원하는 구문 분석기를 사용하려면 새 지식 기반을 생성해야 합니다.

구문 분석 전략 선택과 관련된 단계는 AWS Management Console 또는 Amazon Bedrock API를 사용하는지 여부와 선택한 구문 분석 방법에 따라 달라집니다. 멀티모달 데이터를 지원하는 구문 분석 방법을 선택하는 경우 문서에서 추출한 멀티모달 데이터를 저장할 S3 URI를 지정해야 합니다. 이 데이터는 지식 기반 쿼리에서 반환할 수 있습니다.
+ 에서 다음을 AWS Management Console수행합니다.

  1. 지식 기반을 설정하는 동안 데이터 소스에 연결하거나 기존 지식 기반에 새 데이터 소스를 추가할 때 구문 분석 전략을 선택합니다.

  1. (구문 분석 전략으로 Amazon Bedrock Data Automation 또는 파운데이션 모델을 선택하는 경우) 임베딩 모델을 선택하고 벡터 저장소를 구성할 때 문서에서 추출한 멀티모달 데이터를 **멀티모달 스토리지 대상** 섹션에 저장할 S3 URI를 지정합니다. 이 단계에서 S3 데이터를 암호화하도록 선택적으로 고객 관리형 키를 사용할 수 있습니다.
+ Amazon Bedrock API에서 다음을 수행합니다.

  1. (Amazon Bedrock Data Automation 또는 파운데이션 모델을 구문 분석 전략으로 사용하려는 경우) [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 요청의 [VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html)에 [SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html)을 포함합니다.

  1. [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청 내 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html)의 `parsingConfiguration` 필드에 [ParsingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ParsingConfiguration.html)을 포함합니다.
**참고**  
이 구성을 생략하면 Amazon Bedrock Knowledge Bases에서 Amazon Bedrock 기본 구문 분석기를 사용합니다.

API에서 구문 분석 전략을 지정하는 방법에 대한 자세한 내용은 사용하려는 구문 분석 전략에 해당하는 섹션을 확장합니다.

### Amazon Bedrock 기본 구문 분석기
<a name="w2aac28c10c23c15c17c11c13b1"></a>

기본 구문 분석기를 사용하려면 `VectorIngestionConfiguration` 내에 `parsingConfiguration` 필드를 포함하지 마세요.

### Amazon Bedrock Data Automation 구문 분석기(미리 보기)
<a name="w2aac28c10c23c15c17c11c13b3"></a>

Amazon Bedrock Data Automation 구문 분석기를 사용하려면 `ParsingConfiguration`의 `parsingStrategy` 필드에 `BEDROCK_DATA_AUTOMATION`를 지정하고 다음 형식과 같이 `bedrockDataAutomationConfiguration` 필드에 [BedrockDataAutomationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockDataAutomationConfiguration.html)을 포함합니다.

```
{
    "parsingStrategy": "BEDROCK_DATA_AUTOMATION",
    "bedrockDataAutomationConfiguration": {
        "parsingModality": "string"
    }
}
```

### 파운데이션 모델
<a name="w2aac28c10c23c15c17c11c13b5"></a>

파운데이션 모델을 구문 분석기로 사용하려면 `ParsingConfiguration`의 `parsingStrategy` 필드에 `BEDROCK_FOUNDATION_MODEL`를 지정하고 다음 형식과 같이 `bedrockFoundationModelConfiguration` 필드에 [BedrockFoundationModelConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockFoundationModelConfiguration.html)을 포함합니다.

```
{
    "parsingStrategy": "BEDROCK_FOUNDATION_MODEL",
    "bedrockFoundationModelConfiguration": {
        "modelArn": "string",
        "parsingModality": "string",
        "parsingPrompt": {
            "parsingPromptText": "string"
        }
    }
}
```

## 청킹 전략 선택
<a name="kb-data-source-customize-chunking"></a>

데이터의 문서가 저장 및 검색을 위해 청크되는 방식을 사용자 지정할 수 있습니다. Amazon Bedrock Knowledge Bases에서 데이터를 청킹하는 옵션에 대한 자세한 내용은 [지식 기반에서 콘텐츠 청킹 작동 방식](kb-chunking.md) 섹션을 참조하세요.

**주의**  
데이터 소스로 연결한 후에는 청킹 전략을 변경할 수 없습니다.

에서 데이터 소스에 연결할 때 청킹 전략을 AWS Management Console 선택합니다. Amazon Bedrock API를 사용하면 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html)의 `chunkingConfiguration` 필드에 [ChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ChunkingConfiguration.html)을 포함합니다.

**참고**  
이 구성을 생략하면 Amazon Bedrock은 문장 경계를 유지하면서 콘텐츠를 약 300개의 토큰 청크로 분할합니다.

사용하려는 구문 분석 전략에 해당하는 섹션을 확장합니다.

### 청킹 없음
<a name="w2aac28c10c23c15c17c13c13b1"></a>

데이터 소스의 각 문서를 단일 소스 청크로 처리하려면 다음 형식으로 `ChunkingConfiguration`의 `chunkingStrategy` 필드에 `NONE`를 지정합니다.

```
{
    "chunkingStrategy": "NONE"
}
```

### 고정 크기 청킹
<a name="w2aac28c10c23c15c17c13c13b3"></a>

데이터 소스의 각 문서를 거의 동일한 크기의 청크로 나누려면 `ChunkingConfiguration`의 `chunkingStrategy` 필드에 `FIXED_SIZE`를 지정하고 다음 형식과 같이 `fixedSizeChunkingConfiguration` 필드에 [FixedSizeChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FixedSizeChunkingConfiguration.html)을 포함합니다.

```
{
    "chunkingStrategy": "FIXED_SIZE",
    "fixedSizeChunkingConfiguration": {
        "maxTokens": number,
        "overlapPercentage": number
    }
}
```

### 계층적 청킹
<a name="w2aac28c10c23c15c17c13c13b5"></a>

데이터 소스의 각 문서를 두 가지 수준으로 나누려면 두 번째 계층에 첫 번째 계층에서 파생된 더 작은 청크가 포함된 경우 다음 형식과 같이 `ChunkingConfiguration`의 `chunkingStrategy` 필드에 `HIERARCHICAL`를 지정하고 `hierarchicalChunkingConfiguration` 필드를 포함합니다.

```
{
    "chunkingStrategy": "HIERARCHICAL",
    "hierarchicalChunkingConfiguration": {
        "levelConfigurations": [{
            "maxTokens": number
        }],
        "overlapTokens": number
    }
}
```

### 시맨틱 청킹
<a name="w2aac28c10c23c15c17c13c13b7"></a>

데이터 소스의 각 문서를 구문 구조보다 의미론적 의미를 우선시하는 청크로 나누려면 `ChunkingConfiguration`의 `chunkingStrategy` 필드에 `SEMANTIC`를 지정하고 다음 형식과 같이 `semanticChunkingConfiguration` 필드를 포함합니다.

```
{
    "chunkingStrategy": "SEMANTIC",
    "semanticChunkingConfiguration": {
        "breakpointPercentileThreshold": number,
        "bufferSize": number,
        "maxTokens": number
    }
}
```

## 수집 중에 Lambda 함수 사용
<a name="kb-data-source-customize-lambda"></a>

다음과 같은 방법으로 Lambda 함수를 사용하여 데이터의 소스 청크를 벡터 저장소에 쓰는 방법을 사후 처리할 수 있습니다.
+ 청킹 로직을 포함하여 사용자 지정 청킹 전략을 제공합니다.
+ 청크 수준 메타데이터를 지정하는 로직을 포함합니다.

수집을 위한 사용자 지정 Lambda 함수 작성에 대한 자세한 내용은 [사용자 지정 변환 Lambda 함수를 사용하여 데이터 수집 방법 정의](kb-custom-transformation.md) 섹션을 참조하세요. 에서 데이터 소스에 연결할 때 Lambda 함수를 AWS Management Console 선택합니다. Amazon Bedrock API를 사용하면 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html)의 `CustomTransformationConfiguration` 필드에 [CustomTransformationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CustomTransformationConfiguration.html)을 포함하고 다음 형식과 같이 Lambda의 ARN을 지정합니다.

```
{
    "transformations": [{
        "transformationFunction": {
            "transformationLambdaConfiguration": {
                "lambdaArn": "string"
            }
        },
        "stepToApply": "POST_CHUNKING"
    }],
    "intermediateStorage": {
        "s3Location": {
            "uri": "string"
        }
    }
}
```

Lambda 함수를 적용한 후 출력을 저장할 S3 위치도 지정합니다.

Amazon Bedrock에서 제공하는 청킹 옵션 중 하나를 적용한 후 Lambda 함수를 적용하는 `chunkingConfiguration` 필드를 포함할 수 있습니다.

# 지식 기반의 보안 구성 설정
<a name="kb-create-security"></a>

지식 기반을 만든 후에는 다음과 같은 보안 구성을 설정해야 할 수 있습니다.

**Topics**
+ [지식 기반에 대한 데이터 액세스 정책 설정](#kb-create-security-data)
+ [Amazon OpenSearch Serverless 지식 기반에 대한 네트워크 액세스 정책 설정](#kb-create-security-network)

## 지식 기반에 대한 데이터 액세스 정책 설정
<a name="kb-create-security-data"></a>

[사용자 지정](kb-permissions.md) 역할을 사용하는 경우, 새로 만든 지식 기반의 보안 구성을 설정해야 합니다. Amazon Bedrock이 사용자를 대신하여 서비스 역할을 만들도록 하는 경우 이 단계를 건너뛸 수 있습니다. 설정한 데이터베이스에 해당하는 탭의 단계를 따릅니다.

------
#### [ Amazon OpenSearch Serverless ]

Amazon OpenSearch Serverless 컬렉션에 대한 액세스를 지식 기반 서비스 역할로 제한하려면 데이터 액세스 정책을 만듭니다. 다음과 같은 방법을 사용할 수 있습니다.
+ Amazon OpenSearch Service 개발자 안내서에 나와 있는 [데이터 액세스 정책 생성(콘솔)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-console)의 단계에 따라 Amazon OpenSearch Service 콘솔을 사용합니다.
+ [OpenSearch Serverless 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)와 함께 [CreateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateAccessPolicy.html) 요청을 전송하여 AWSAPI를 사용합니다. AWS CLI예제는 [데이터 액세스 정책 생성(AWS CLI)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)을 참조하세요.

다음 데이터 액세스 정책을 사용하여 Amazon OpenSearch Serverless 컬렉션과 서비스 역할을 지정합니다.

```
[
    {
        "Description": "${data access policy description}",
        "Rules": [
          {
            "Resource": [
              "index/${collection_name}/*"
            ],
            "Permission": [
                "aoss:DescribeIndex",
                "aoss:ReadDocument",
                "aoss:WriteDocument"
            ],
            "ResourceType": "index"
          }
        ],
        "Principal": [
            "arn:aws:iam::${account-id}:role/${kb-service-role}"
        ]
    }
]
```

------
#### [ Pinecone, Redis 엔터프라이즈 클라우드 or MongoDB Atlas ]

Pinecone, Redis Enterprise Cloud, MongoDB Atlas 벡터 인덱스를 통합하려면 지식 기반 서비스 역할에 다음 자격 증명 기반 정책을 연결하여 벡터 인덱스의 AWS Secrets Manager보안 암호에 액세스할 수 있도록 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "bedrock:AssociateThirdPartyKnowledgeBase"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "bedrock:ThirdPartyKnowledgeBaseCredentialsSecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:${secret-id}"
            }
        }
    }]
}
```

------

------

## Amazon OpenSearch Serverless 지식 기반에 대한 네트워크 액세스 정책 설정
<a name="kb-create-security-network"></a>

지식 기반에 프라이빗 Amazon OpenSearch Serverless 컬렉션을 사용하는 경우 AWS PrivateLinkVPC 엔드포인트를 통해서만 액세스할 수 있습니다. [Amazon OpenSearch Serverless 벡터 컬렉션을 설정](knowledge-base-setup.md)할 때 프라이빗 Amazon OpenSearch Serverless 컬렉션을 만들거나, 네트워크 액세스 정책을 구성할 때 기존 Amazon OpenSearch Serverless 컬렉션(Amazon Bedrock 콘솔이 사용자를 대신해 만든 컬렉션 포함)을 프라이빗으로 만들 수 있습니다.

Amazon OpenSearch Service 개발자 안내서의 다음 리소스는 프라이빗 Amazon OpenSearch Serverless 컬렉션에 필요한 설정을 이해하는 데 도움이 됩니다.
+ 프라이빗 Amazon OpenSearch Serverless 컬렉션의 VPC 엔드포인트 설정에 대한 자세한 내용은 [인터페이스 엔드포인트(AWS PrivateLink)를 사용하여 Amazon OpenSearch Serverless에 액세스](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)를 참조하세요.
+ Amazon OpenSearch Serverless의 네트워크 액세스 정책에 대한 자세한 내용은 [Network access for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)를 참조하세요.

Amazon Bedrock Knowledge Bases가 프라이빗 Amazon OpenSearch Serverless 컬렉션에 액세스하도록 허용하려면 Amazon OpenSearch Serverless 컬렉션에 대한 네트워크 액세스 정책을 편집하여 Amazon Bedrock을 소스 서비스로 허용해야 합니다. 원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

1. [https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) Amazon OpenSearch Service 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **컬렉션**을 선택합니다. 그런 다음 컬렉션을 선택합니다.

1. **네트워크** 섹션에서 **연결된 정책**을 선택합니다.

1. **편집**을 선택합니다.

1. **정책 정의 방법 선택**의 경우, 다음 중 하나를 수행합니다.
   + **정책 정의 방법 선택**을 **시각적 편집기**로 두고 **규칙 1** 섹션에서 다음 설정을 구성합니다.

     1. (선택 사항) **규칙 이름** 필드에 네트워크 액세스 규칙의 이름을 입력합니다.

     1. **다음에서 컬렉션에 액세스**에서 **프라이빗(권장)**을 선택합니다.

     1. **AWS 서비스 프라이빗 액세스**를 선택합니다. 텍스트 상자에 **bedrock.amazonaws.com**을 입력합니다.

     1. **OpenSearch 대시보드에 대한 액세스 활성화**를 선택 해제합니다.
   + **JSON**을 선택하고 다음 정책을 **JSON 편집기**에 붙여 넣습니다.

     ```
     [
         {                                        
             "AllowFromPublic": false,
             "Description":"${network access policy description}",
             "Rules":[
                 {
                     "ResourceType": "collection",
                     "Resource":[
                         "collection/${collection-id}"
                     ]
                 }
             ],
             "SourceServices":[
                 "bedrock.amazonaws.com"
             ]
         }
     ]
     ```

1. **업데이트**를 선택합니다.

------
#### [ API ]

Amazon OpenSearch Serverless 컬렉션의 네트워크 액세스 정책을 편집하려면 다음을 수행합니다.

1. [OpenSearch Serverless 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)를 사용하여 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 요청을 전송합니다. 정책의 `name`을 지정하고 `type`을 `network`로 지정합니다. 응답의 `policyVersion`에 주의하세요.

1. [OpenSearch Serverless 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)를 사용하여 [UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) 요청을 전송합니다. 최소 다음 필드를 지정합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/kb-create-security.html)

   ```
   [
       {                                        
           "AllowFromPublic": false,
           "Description":"${network access policy description}",
           "Rules":[
               {
                   "ResourceType": "collection",
                   "Resource":[
                       "collection/${collection-id}"
                   ]
               }
           ],
           "SourceServices":[
               "bedrock.amazonaws.com"
           ]
       }
   ]
   ```

AWS CLI예제는 [데이터 액세스 정책 생성(AWS CLI)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)을 참조하세요.

------
+ [네트워크 정책 생성(콘솔)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html#serverless-network-console)의 단계에 따라 Amazon OpenSearch Service 콘솔을 사용합니다. 네트워크 정책을 만드는 대신 컬렉션 세부 정보의 **네트워크** 하위 섹션에서 **연결된 정책**을 기록해 둡니다.

# Amazon Bedrock Knowledge Bases으로 데이터 동기화
<a name="kb-data-source-sync-ingest"></a>

지식 기반을 만든 후에는 데이터를 수집하거나 동기화하여 데이터를 쿼리할 수 있습니다. 수집을 통해 지정한 벡터 임베딩 모델 및 구성을 기반으로 데이터 소스의 원시 데이터를 벡터 임베딩으로 변환할 수 있습니다.

수집을 시작하기 전에 데이터 소스가 다음 조건을 충족하는지 확인합니다.
+ 데이터 소스에 대한 연결 정보를 구성했습니다. 데이터 소스 커넥터가 데이터 소스 리포지토리에서 데이터를 크롤링하도록 구성하려면 [지원되는 데이터 소스 커넥터](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html) 섹션을 참조하세요. 지식 기반을 만드는 과정에서 데이터 소스를 구성하게 됩니다.
+ 선택한 벡터 임베딩 모델 및 벡터 저장소를 구성했습니다. [지원되는 벡터 임베딩 모델](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html) 및 [지식 기반에 대한 벡터 저장소](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)를 참조하세요. 지식 기반을 만드는 과정에서 벡터 임베딩을 구성하게 됩니다.
+ 파일이 지원되는 형식입니다. 자세한 내용은 [지원되는 문서 형식](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)을 참조하세요.
+ 파일이 AWS 일반 참조의 [Amazon Bedrock 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/bedrock.html)에 지정된 **Ingestion job file size**를 초과하지 않습니다.
+ 데이터 소스에 메타데이터 파일이 포함된 경우, 다음 조건을 확인하여 메타데이터 파일이 무시되지 않도록 하세요.
  + 각 `.metadata.json` 파일은 연결된 소스 파일과 동일한 파일 이름과 확장자를 공유합니다.
  + 지식 기반에 대한 벡터 인덱스가 Amazon OpenSearch Serverless 벡터 저장소에 있는 경우, 벡터 인덱스가 `faiss` 엔진으로 구성되어 있는지 확인합니다. 벡터 인덱스가 `nmslib` 엔진으로 구성되어 있다면 다음 중 하나를 수행해야 합니다.
    + 콘솔에서 [새 지식 기반을 만들고](knowledge-base-create.md) Amazon Bedrock이 Amazon OpenSearch Serverless에서 벡터 인덱스를 자동으로 만들도록 합니다.
    + 벡터 저장소에서 [또 다른 벡터 인덱스를 만들고](knowledge-base-setup.md) **엔진**으로 `faiss`를 선택합니다. 그런 다음 [새 지식 기반을 만들고](knowledge-base-create.md) 새 벡터 인덱스를 지정합니다.
  + 지식 기반의 벡터 인덱스가 Amazon Aurora 데이터베이스 클러스터에 있는 경우 사용자 지정 메타데이터 필드를 사용하여 모든 메타데이터를 단일 열에 저장하고 이 열에 인덱스를 생성하는 것이 좋습니다. 사용자 지정 메타데이터 필드를 제공하지 않는 경우 수집을 시작하기 전에 인덱스의 테이블에 메타데이터 파일의 각 메타데이터 속성에 대한 열이 포함되어 있는지 확인해야 합니다. 자세한 내용은 [지식 기반에 대해 생성된 벡터 저장소 사용의 사전 조건](knowledge-base-setup.md) 섹션을 참조하세요.

데이터 소스에서 파일을 추가, 수정 또는 제거할 때마다 데이터 소스를 동기화하여 지식 기반에 다시 인덱싱해야 합니다. 동기화는 증분적으로 이루어지므로 Amazon Bedrock은 마지막 동기화 이후에 추가, 수정 또는 삭제된 문서만 처리합니다.

데이터를 지식 기반에 수집하고 최신 데이터와 동기화하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

**데이터를 지식 기반에 수집하고 최신 데이터와 동기화하는 방법**

1. 그 다음 [https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **데이터 소스** 섹션에서 **동기화**를 선택하여 데이터 수집 또는 최신 데이터 동기화를 시작합니다. 현재 진행 중인 데이터 소스 동기화를 중지하려면 **중지**를 선택합니다. 데이터 소스 동기화를 중지하려면 데이터 소스가 현재 동기화 중이어야 합니다. **동기화**를 다시 선택하여 나머지 데이터를 수집할 수 있습니다.

1. 데이터 수집이 완료되면 녹색 성공 배너가 나타납니다.
**참고**  
Amazon Aurora(RDS) 이외의 벡터 저장소를 사용하는 경우, 데이터 동기화가 완료된 후 새로 동기화된 데이터의 벡터 임베딩이 지식 기반에 반영되고 이를 쿼리에 사용할 수 있게 되기까지 몇 분 정도 기다려야 할 수 있습니다.

1. 데이터 소스를 선택하여 **동기화 기록**을 볼 수 있습니다. **경고 보기**를 선택하여 데이터 수집 작업이 실패한 이유를 확인합니다.

------
#### [ API ]

데이터를 지식 기반에 수집하고 최신 데이터와 동기화하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 요청을 전송합니다. `knowledgeBaseId` 및 `dataSourceId`를 지정합니다. [StopIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) 요청을 전송하여 현재 실행 중인 데이터 수집 작업을 중지할 수도 있습니다. `dataSourceId`, `ingestionJobId`, 및 `knowledgeBaseId`을 지정합니다. 데이터 수집을 중지하려면 데이터 수집 작업이 현재 실행 중이어야 합니다. 준비가 되면 `StartIngestionJob` 요청을 다시 보내 나머지 데이터를 수집할 수 있습니다.

[Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 요청의 응답에서 반환된 `ingestionJobId`를 사용해 수집 작업의 상태를 추적합니다. 또한 `knowledgeBaseId` 및 `dataSourceId`를 지정합니다.
+ 수집 작업이 완료되면 응답의 `status`는 `COMPLETE`가 됩니다.
**참고**  
Amazon Aurora(RDS) 이외의 벡터 저장소를 사용하는 경우, 데이터 수집이 완료된 후 벡터 저장소에서 새로 수집된 데이터의 벡터 임베딩을 쿼리에 사용할 수 있게 되기까지 몇 분 정도 기다려야 할 수 있습니다.
+ 응답의 `statistics` 객체는 데이터 소스의 문서 관련 수집 성공 여부에 대한 정보를 반환합니다.

또한 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 요청을 전송해 데이터 소스의 모든 수집 작업에 대한 정보를 볼 수 있습니다. 데이터가 수집되는 지식 기반의 `dataSourceId` 및 `knowledgeBaseId`를 지정합니다.
+ `filters` 객체에서 검색할 상태를 지정하여 결과를 필터링합니다.
+ 작업이 시작된 시각 또는 `sortBy` 객체를 지정하여 작업 상태를 기준으로 정렬합니다. 오름차순 또는 내림차순을 지정할 수 있습니다.
+ 응답으로 반환할 최대 결과 수를 `maxResults` 필드에 설정할 수 있습니다. 설정한 수보다 많은 결과가 있는 경우 응답에서 `nextToken`이 반환되며, 이를 또 다른 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 요청으로 전송하여 다음 작업 배치를 확인할 수 있습니다.

------

# 변경 사항을 지식 기반에 직접 수집
<a name="kb-direct-ingestion"></a>

Amazon Bedrock Knowledge Bases를 사용하면 한 번에 데이터 소스를 수정하고 변경 사항을 동기화할 수 있습니다. 지식 기반이 다음 유형의 데이터 소스 중 하나에 연결된 경우 이 기능을 활용할 수 있습니다.
+ Amazon S3
+ 사용자 지정

직접 수집을 사용하면 단일 작업으로 지식 기반에서 파일을 직접 추가, 업데이트 또는 삭제할 수 있으며 지식 기반은 동기화할 필요 없이 문서에 액세스할 수 있습니다. 직접 수집은 `KnowledgeBaseDocuments` API 작업을 사용하여 지식 기반에 대해 설정된 벡터 저장소에 직접 제출하는 문서를 인덱싱합니다. 이러한 작업을 통해 연결된 데이터 소스로 이동하여 문서를 볼 필요 없이 지식 기반의 문서를 직접 볼 수도 있습니다.

## 데이터 소스 동기화의 차이점
<a name="kb-direct-ingestion-sync-diff"></a>

Amazon Bedrock Knowledge Bases는 [데이터 소스 동기화](kb-data-source-sync-ingest.md)와 관련된 `IngestionJob` API 작업 세트도 제공합니다. 데이터 소스를 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 요청과 동기화하면 Amazon Bedrock Knowledge Bases는 연결된 데이터 소스의 각 문서를 스캔하고 지식 기반에 대해 설정된 벡터 저장소에 이미 인덱싱되었는지 확인합니다. 그렇지 않으면 벡터 저장소로 인덱싱됩니다.

[IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) 요청을 사용하면 벡터 저장소에 직접 인덱싱할 문서 배열을 제출합니다. 따라서 데이터 소스에 문서를 추가하는 단계를 건너뜁니다. 이 두 API 작업 세트의 사용 사례를 이해하려면 다음 단락을 참조하세요.

**사용자 지정 데이터 소스를 사용하는 경우**  
`IngestionJob` 작업을 동기화하거나 사용할 필요가 없습니다. `KnowledgeBaseDocuments` 작업을 통해 또는 AWS Management Console에서 추가, 수정 또는 삭제하는 문서는 사용자 지정 데이터 소스와 지식 기반의 일부가 됩니다.

**Amazon S3 데이터 소스를 사용하는 경우**  
서로 다른 사용 사례에서 두 가지 작업 세트를 사용합니다.
+ 지식 기반을 S3 데이터 소스에 처음 연결한 후에는 Amazon Bedrock API를 통해 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 요청을 제출하여 AWS Management Console에서 데이터 소스를 동기화해야 합니다.
+ 지식 기반용으로 설정된 벡터 저장소로 문서를 인덱싱하거나 다음과 같은 방법으로 인덱싱된 문서를 제거합니다.

  1. S3 위치에 문서를 추가하거나 해당 위치에서 문서를 삭제합니다. 그런 다음에서 AWS Management Console에서 데이터 소스를 동기화하거나 API에서 `StartIngestionJob` 요청을 제출합니다. 동기화 및 `StartIngestionJob` 작업에 대한 자세한 내용은 [Amazon Bedrock Knowledge Bases으로 데이터 동기화](kb-data-source-sync-ingest.md) 섹션을 참조하세요.

  1. `IngestKnowledgeBaseDocuments` 요청과 함께 S3 문서를 지식 기반에 직접 수집합니다. 문서 직접 수집에 대한 자세한 내용은 [문서를 지식 기반에 직접 수집](kb-direct-ingestion-add.md) 섹션을 참조하세요.
**주의**  
S3 데이터 소스의 경우에서 직접 AWS Management Console 또는 `KnowledgeBaseDocuments` API 작업을 사용하여 지식 기반으로 인덱싱한 변경 사항은 S3 위치에 반영되지 않습니다. 이러한 API 작업을 사용하여 지식 기반을 한 번에 즉시 변경할 수 있습니다. 그러나 다음에 AWS Management Console에서 또는 `StartIngestionJob`로 데이터 소스를 동기화할 때 덮어쓰지 않도록 S3 위치를 동일하게 변경하여 후속 조치를 취해야 합니다.  
`IngestKnowledgeBaseDocuments`와 `StartIngestionJob` 요청을 동시에 제출하지 마세요.

주제를 선택하여 데이터 소스에서 문서를 직접 수집하는 방법을 알아봅니다.

**Topics**
+ [데이터 소스 동기화의 차이점](#kb-direct-ingestion-sync-diff)
+ [직접 수집을 위한 사전 조건](kb-direct-ingestion-prereq.md)
+ [문서를 지식 기반에 직접 수집](kb-direct-ingestion-add.md)
+ [데이터 소스의 문서에 대한 정보 보기](kb-direct-ingestion-view.md)
+ [지식 기반에서 직접 문서 삭제](kb-direct-ingestion-delete.md)

# 직접 수집을 위한 사전 조건
<a name="kb-direct-ingestion-prereq"></a>

직접 수집을 사용하려면 IAM 역할에 `KnowledgeBaseDocs` API 작업을 사용할 권한이 있어야 합니다. IAM 역할에 [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess)AWS 관리형 정책이 연결되어 있는 경우이 섹션을 건너뛸 수 있습니다.

다음 정책을 IAM 역할에 연결하여 `Resource` 필드에서 지정한 지식 기반에서 직접 수집할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DirectIngestion",
            "Effect": "Allow",
            "Action": [
                "bedrock:StartIngestionJob",
                "bedrock:IngestKnowledgeBaseDocuments",
                "bedrock:GetKnowledgeBaseDocuments",
                "bedrock:ListKnowledgeBaseDocuments",
                "bedrock:DeleteKnowledgeBaseDocuments"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        }
    ]
}
```

------

권한을 더욱 제한하려면 작업을 생략하거나 리소스 및 조건 키를 지정하여 권한을 필터링할 수 있습니다. 작업, 리소스 및 조건 키에 대한 자세한 내용은 *서비스 권한 부여 참조*에서 다음 주제를 참조하세요.
+ [Amazon Bedrock에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) - 작업, `Resource` 필드에서 작업의 범위를 지정할 수 있는 리소스 유형, `Condition` 필드에서 권한을 필터링할 수 있는 조건 키에 대해 알아봅니다.
+ [Amazon Bedrock에서 정의한 리소스 유형](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) - Amazon Bedrock의 리소스 유형에 대해 알아봅니다.
+ [Amazon Bedrock의 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) - Amazon Bedrock의 조건 키에 대해 알아봅니다.

# 문서를 지식 기반에 직접 수집
<a name="kb-direct-ingestion-add"></a>

이 주제에서는 문서를 지식 기반에 직접 수집하는 방법을 설명합니다. 데이터 소스에 따라 직접 수집할 수 있는 문서 유형에는 제한이 적용됩니다. 수집할 문서를 지정하는 데 사용할 수 있는 방법에 대한 제한 사항은 다음 표를 참조하세요.


****  

| 데이터 소스 유형 | 인라인으로 정의된 문서 | Amazon S3 위치의 문서 | 
| --- | --- | --- | 
| Amazon S3 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-no.png)아니요 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | 
| 사용자 지정 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | 

해당하는 사용 사례의 섹션을 확장해 내용을 살펴보세요.

**참고**  
콘솔을 사용할 때 지식 기반에 최대 10개의 문서를 직접 수집할 수 있습니다. 대신 `IngestKnowledgeBaseDocuments` API를 사용하는 경우 지식 기반에 최대 25개의 문서를 수집할 수 있습니다. 이 할당량에 대한 자세한 내용은 *AWS 일반 참조 안내서*의 [Amazon Bedrock Service Quotas](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#limits_bedrock)를 참조하세요.

## 콘솔을 사용합니다.
<a name="kb-direct-ingestion-add-console"></a>

에서 직접 문서를 추가하거나 수정하려면 다음을 AWS Management Console수행합니다.

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 문서를 수집할 지식 기반을 선택합니다.

1. **데이터 소스** 섹션에서 문서를 추가, 수정 또는 삭제하려는 데이터 소스를 선택합니다.

1. **문서** 섹션에서 **문서 추가**를 선택합니다. 그런 다음, 다음 중 하나를 수행합니다.
   + 문서를 직접 추가하거나 수정하려면 **문서 직접 추가**를 선택합니다. 뒤이어 다음과 같이 하세요.

     1. **문서 식별자** 필드에서 문서의 고유한 이름을 지정합니다. 데이터 소스에 이미 있는 이름을 지정하면 문서가 대체됩니다.

     1. 문서를 업로드하려면 **업로드**를 선택합니다. 문서 인라인을 정의하려면 **문서 인라인 추가**를 선택하고 형식을 선택한 다음 상자에 문서 텍스트를 입력합니다.

     1. (선택 사항) 메타데이터를 문서와 연결하려면 **메타데이터 추가**를 선택하고 키, 유형 및 값을 입력합니다.
   + S3 위치를 지정하여 문서를 추가하거나 수정하려면 **S3 문서 추가**를 선택합니다. 뒤이어 다음과 같이 하세요.

     1. **문서 식별자** 필드에서 문서의 고유한 이름을 지정합니다. 데이터 소스에 이미 있는 이름을 지정하면 문서가 대체됩니다.

     1. 문서의 **S3 위치가** 현재 AWS 계정에 있는지 아니면 다른 계정에 있는지 지정합니다. 그런 다음 문서의 S3 URI를 지정합니다.

     1. (선택 사항) 메타데이터를 문서와 연결하려면 **메타데이터 소스**를 선택합니다. 메타데이터의 S3 URI를 지정하거나 **메타데이터 추가**를 선택하고 키, 유형 및 값을 입력합니다.

1. 문서 및 관련 메타데이터를 수집하려면 **추가**를 선택합니다.

## API 사용
<a name="kb-direct-ingestion-add-api"></a>

Amazon Bedrock API를 사용하여 문서를 지식 기반에 직접 수집하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) 요청을 보내고 지식 기반 및 연결된 데이터 소스의 ID를 지정합니다.

**참고**  
지식 기반에 이미 있는 문서 식별자 또는 S3 위치를 지정하면 문서가 새 콘텐츠로 덮어씁니다.

요청 본문에는 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 객체 배열에 매핑되는 `documents` 필드 1개가 포함되며, 각 필드는 데이터 소스에 추가하고 지식 기반에 수집할 문서의 콘텐츠 및 선택적 메타데이터를 나타냅니다. [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 객체에는 다음 필드가 포함됩니다.
+ 콘텐츠 - 추가할 문서의 콘텐츠에 대한 정보가 포함된 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 객체에 매핑됩니다.
+ 메타데이터 - (선택 사항) 추가할 문서의 메타데이터에 대한 정보가 포함된 [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) 객체에 매핑됩니다. 검색 중에 메타데이터를 사용하는 방법에 대한 자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)의 **메타데이터 및 필터링** 섹션을 참조하세요.

주제를 선택하여 다양한 데이터 소스 유형에 대한 문서를 수집하는 방법을 알아보거나 예제를 확인합니다.

**Topics**
+ [사용자 지정 데이터 소스에 연결된 지식 기반에 문서 수집](#kb-direct-ingestion-add-custom)
+ [Amazon S3 데이터 소스에 연결된 지식 기반에 문서 수집](#kb-direct-ingestion-add-s3)
+ [요청 본문의 예](#w2aac28c10c23c19c17c11b3c19)

### 사용자 지정 데이터 소스에 연결된 지식 기반에 문서 수집
<a name="kb-direct-ingestion-add-custom"></a>

지정한 `dataSourceId`가 사용자 지정 데이터 소스에 속하는 경우 `documents` 배열의 각 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 객체에 대한 콘텐츠와 메타데이터를 추가할 수 있습니다.

사용자 지정 데이터 소스에 추가된 문서의 내용은 다음과 같은 방법으로 정의할 수 있습니다.

#### 문서를 인라인으로 정의
<a name="kb-direct-ingestion-add-custom-inline"></a>

다음과 같은 유형의 문서를 인라인으로 정의할 수 있습니다.

------
#### [ Text ]

문서가 텍스트인 경우 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 객체는 다음 형식이어야 합니다.

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "inlineContent": { 
            "textContent": { 
                "data": "string"
            },
            "type": "TEXT"
        },
        "sourceType": "IN_LINE"
    },
    "dataSourceType": "CUSTOM"
}
```

`id` 필드에 문서의 ID를 포함하고 `data` 필드에 문서의 텍스트를 포함합니다.

------
#### [ Bytes ]

문서에 텍스트 이외의 요소가 포함되어 있다면, 이를 Base64 문자열로 변환합니다. 그러면 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 객체는 다음 형식이어야 합니다.

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "inlineContent": { 
            "byteContent": { 
                "data": blob,
                "mimeType": "string"
            },
            "type": "BYTE"
        },
        "sourceType": "IN_LINE"
    },
    "dataSourceType": "CUSTOM"
}
```

`id` 필드에 문서의 ID, `data` 필드에 Base64로 인코딩된 문서, `mimeType` 필드에 MIME 유형을 포함합니다.

------

#### S3에서 문서 수집
<a name="w2aac28c10c23c19c17c11b3c15b7b3"></a>

S3 위치에서 문서를 수집하는 경우 `content` 필드의 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 객체는 다음 형식이어야 합니다.

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "s3Location": { 
            "bucketOwnerAccountId": "string",
            "uri": "string"
        },
        "sourceType": "S3"
    },
    "dataSourceType": "CUSTOM"
}
```

`id` 필드에 문서의 ID, `bucketOwnerAccountId` 필드에 문서가 포함된 S3 버킷의 소유자, `uri` 필드에 문서의 S3 URI를 포함합니다.

문서의 메타데이터는 다음과 같은 방법으로 정의할 수 있습니다.

#### 메타데이터를 인라인으로 정의
<a name="w2aac28c10c23c19c17c11b3c15c11b1"></a>

메타데이터를 인라인으로 정의하는 경우 `metadata` 필드의 [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) 객체는 다음 형식이어야 합니다.

```
{ 
    "inlineAttributes": [ 
        { 
            "key": "string",
            "value": { 
                "stringValue": "string",
                "booleanValue": boolean,
                "numberValue": number,
                "stringListValue": [ "string" ],
                "type": "STRING" | "BOOLEAN" | "NUMBER" | "STRING_LIST"
            }
        }
    ],
    "type": "IN_LINE_ATTRIBUTE"
}
```

추가하는 각 속성에 대해 `key` 필드에 키를 정의합니다. `type` 필드에 값의 데이터 형식을 지정하고 데이터 유형에 해당하는 필드를 포함합니다. 예를 들어 문자열을 포함하는 경우 속성은 다음 형식입니다.

```
{ 
    "key": "string",
    "value": { 
        "stringValue": "string",
        "type": "STRING"
    }
}
```

#### S3에서 메타데이터 수집
<a name="w2aac28c10c23c19c17c11b3c15c11b3"></a>

S3 위치에 `.metadata.json` 확장명이 있는 파일에서 메타데이터를 수집할 수도 있습니다. 메타데이터 파일의 형식에 대한 자세한 내용은 [지식 기반을 위해 Amazon S3에 연결](s3-data-source-connector.md)의 **문서 메타데이터 필드** 섹션을 참조하세요.

메타데이터가 S3 파일에서 가져온 경우 `metadata` 필드의 [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) 객체는 다음 형식이어야 합니다.

```
{
    "s3Location": { 
        "bucketOwnerAccountId": "string",
        "uri": "string"
    },
        "type": "S3_LOCATION"
    }
 }
```

`bucketOwnerAccountId` 필드에 메타데이터 파일이 포함된 S3 버킷의 소유자와 `uri` 필드에 메타데이터 파일의 S3 URI를 포함합니다.

**주의**  
콘텐츠를 인라인으로 정의한 경우 메타데이터를 인라인으로 정의해야 합니다.

### Amazon S3 데이터 소스에 연결된 지식 기반에 문서 수집
<a name="kb-direct-ingestion-add-s3"></a>

지정한 `dataSourceId`가 S3 데이터 소스에 속하는 경우 `documents` 배열의 각 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 객체에 대한 콘텐츠와 메타데이터를 추가할 수 있습니다.

**참고**  
S3 데이터 소스의 경우 S3 위치에서만 콘텐츠 및 메타데이터를 추가할 수 있습니다.

S3에 추가할 S3 문서의 콘텐츠를 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 객체에 다음 형식으로 추가해야 합니다.

```
{ 
    "dataSourceType": "string",
    "s3": { 
        "s3Location": { 
            "uri": "string"
        }
    }
}
```

`bucketOwnerAccountId` 필드에 문서가 포함된 S3 버킷의 소유자와 `uri` 필드에 문서의 S3 URI를 포함합니다.

사용자 지정 데이터 소스에 추가된 문서의 메타데이터는 다음 형식으로 정의할 수 있습니다.

```
{
    "s3Location": { 
        "bucketOwnerAccountId": "string",
        "uri": "string"
    },
        "type": "S3_LOCATION"
    }
 }
```

**주의**  
S3 데이터 소스에 연결된 지식 기반에 직접 수집하는 문서는 S3 버킷 자체에 추가되지 않습니다. 데이터 소스를 동기화할 경우 제거되거나 덮어쓰지 않도록 이러한 문서를 S3 데이터 소스에도 추가하는 것이 좋습니다.

### 요청 본문의 예
<a name="w2aac28c10c23c19c17c11b3c19"></a>

다음 섹션을 지수화하여 `IngestKnowledgeBaseDocuments`의 다양한 사용 사례에 대한 요청 본문을 확인합니다.

#### 사용자 지정 데이터 소스에 사용자 지정 텍스트 문서를 추가하고 수집합니다
<a name="w2aac28c10c23c19c17c11b3c19b5b1"></a>

다음 예제에서는 사용자 지정 데이터 소스에 하나의 텍스트 문서를 추가하는 방법을 보여줍니다.

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "textContent": { 
                     "data": "Hello world!"
                  },
                  "type": "TEXT"
               },
               "sourceType": "IN_LINE"
            }
         }
     }
   ]
}
```

#### 사용자 지정 데이터 소스에 Base64로 인코딩된 문서 추가 및 수집
<a name="w2aac28c10c23c19c17c11b3c19b5b3"></a>

다음 예제에서는 사용자 지정 데이터 소스에 PDF 문서를 추가하는 방법을 보여줍니다.

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "byteContent": { 
                     "data": "<Base64-encoded string>",
                     "mimeType": "application/pdf"
                  },
                  "type": "BYTE"
               },
               "sourceType": "IN_LINE"
            }
         }
     }
   ]
}
```

#### S3 위치의 문서를 사용자 지정 데이터 소스에 연결된 지식 기반에 추가하고 수집합니다
<a name="w2aac28c10c23c19c17c11b3c19b5b5"></a>

다음 예제에서는 S3 위치에서 사용자 지정 데이터 소스에 텍스트 문서 하나를 추가하는 방법을 보여줍니다.

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "s3": {
                "s3Location": {
                    "uri": "amzn-s3-demo-bucket"
                }
               },
               "sourceType": "S3"
            }
         }
     }
   ]
}
```

#### 사용자 지정 데이터 소스에 연결된 지식 기반에 인라인 문서 추가 및 인라인 메타데이터 포함
<a name="w2aac28c10c23c19c17c11b3c19b5b7"></a>

다음 예제는 두 개의 속성을 포함하는 메타데이터와 함께 문서의 사용자 지정 데이터 소스에 대한 인라인 추가를 보여줍니다.

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "textContent": { 
                     "data": "Hello world!"
                  },
                  "type": "TEXT"
               },
               "sourceType": "IN_LINE"
            }
         },
         "metadata": {
            "inlineAttributes": [ 
               { 
                  "key": "genre",
                  "value": {
                     "stringValue": "pop",
                     "type": "STRING"
                  }
               },
               { 
                  "key": "year",
                  "value": { 
                     "numberValue": 1988,
                     "type": "NUMBER"
                  }
               }
            ],
            "type": "IN_LINE_ATTRIBUTE"
         }
     }
   ]
}
```

#### S3 데이터 소스에 연결된 지식 기반에 문서를 추가하고 이에 대한 메타데이터 포함
<a name="w2aac28c10c23c19c17c11b3c19b5b9"></a>

다음 예제에서는 S3 데이터 소스에 메타데이터와 함께 문서를 추가하는 방법을 보여줍니다. S3를 통해서만 메타데이터를 포함할 수 있습니다.

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
    "documents": [ 
        { 
            "content": { 
                "dataSourceType": "S3",
                "s3": { 
                "s3Location": {
                    "uri": "amzn-s3-demo-bucket"
                }
            }
        },
        "metadata": {
            "s3Location": {
                "bucketOwnerId": "111122223333",
                "uri": "amzn-s3-demo-bucket"
            },
                "type": "S3_LOCATION"
            }
        }
    ]
}
```

# 데이터 소스의 문서에 대한 정보 보기
<a name="kb-direct-ingestion-view"></a>

다음 주제에서는 데이터 소스의 문서를 보는 방법을 설명합니다. 지식 기반이 Amazon S3 데이터 소스에 연결된 경우 연결된 S3 버킷의 문서를 볼 수 있습니다.

**참고**  
S3 데이터 소스에 연결하여 새 지식 기반을 생성한 경우 먼저 데이터 소스를 동기화해야 데이터 소스에서 이러한 API 작업을 사용할 수 있습니다.

본인의 사용 사례에 해당하는 방법을 확장하세요.

## 콘솔 사용
<a name="kb-direct-ingestion-view-console"></a>

AWS Management Console에서 수집된 데이터 소스의 문서를 보려면 다음을 수행합니다.

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 문서를 보려는 지식 기반을 선택합니다.

1. **데이터 소스** 섹션에서 문서를 보려는 데이터 소스를 선택합니다.

1. **문서** 섹션에는 데이터 소스의 문서가 나열됩니다. 이러한 문서는 지식 기반에도 수집되었습니다.

## API 사용
<a name="kb-direct-ingestion-view-api"></a>

Amazon Bedrock API를 사용하면 지식 기반에 수집된 데이터 소스의 하위 집합 또는 모든 문서를 볼 수 있습니다. 사용 사례와 관련된 주제를 선택합니다.

**Topics**
+ [지식 기반의 문서 하위 집합에 대한 정보 보기](#kb-direct-ingestion-get)
+ [지식 기반의 모든 문서에 대한 정보 보기](#kb-direct-ingestion-list)

### 지식 기반의 문서 하위 집합에 대한 정보 보기
<a name="kb-direct-ingestion-get"></a>

데이터 소스에서 특정 문서에 대한 정보를 가져오려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [GetKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBaseDocuments.html) 요청을 전송하고 해당 데이터 소스의 ID와 연결된 지식을 지정합니다.

정보를 가져오려는 각 문서에 대해 다음 형식 중 하나로 `documentIdentifiers` 배열에 [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 항목을 추가합니다.
+ 데이터 소스가 사용자 지정 소스인 경우 `id` 필드에 문서의 ID를 지정합니다.

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ 데이터 소스가 Amazon S3인 경우 `uri` 필드에 문서의 S3 URI를 지정합니다.

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

응답은 항목 배열을 반환하며, 각 항목에는 요청한 문서에 대한 정보가 포함됩니다.

### 지식 기반의 모든 문서에 대한 정보 보기
<a name="kb-direct-ingestion-list"></a>

데이터 소스의 모든 문서에 대한 정보를 보려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [ListKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBaseDocuments.html) 요청을 전송하고 데이터 소스의 ID와 연결된 지식 기반를 지정합니다. 다음과 같은 옵션도 있습니다.
+ 반환할 결과 수를 제한하려면 `maxResults`를 지정합니다.
+ 결과가 응답에 맞지 않으면 응답의 `nextToken` 필드에 값이 반환됩니다. 후속 요청의 `nextToken`에서 이 값을 사용하여 다음 결과 배치를 볼 수 있습니다.

# 지식 기반에서 직접 문서 삭제
<a name="kb-direct-ingestion-delete"></a>

지식 기반에 문서가 더 이상 필요하지 않은 경우 직접 삭제할 수 있습니다. 데이터 소스 및 지식 기반에서 문서를 삭제하는 방법을 알아보려면 사용 사례에 해당하는 섹션을 확장합니다.

## 콘솔 사용
<a name="kb-direct-ingestion-delete-console"></a>

AWS Management Console를 사용하여 데이터 소스 및 지식 기반에서 문서를 직접 삭제하려면 다음을 수행합니다.

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 문서를 삭제할 지식 기반을 선택합니다.

1. **데이터 소스** 섹션에서 문서를 삭제하려는 데이터 소스를 선택합니다.

1. **문서** 섹션에서 삭제할 문서를 선택합니다. 그리고 **문서 삭제**를 선택합니다. 메시지를 검토하고 확인합니다.

## API 사용
<a name="kb-direct-ingestion-delete-api"></a>

Amazon Bedrock API를 통해 데이터 소스에서 특정 문서를 삭제하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [DeleteKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBaseDocuments.html) 요청을 보내고 데이터 소스의 IDs와 연결된 지식 기반을 지정합니다.

삭제하려는 각 문서에 대해 다음 형식 중 하나로 `documentIdentifiers` 배열에 [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 항목을 추가합니다.
+ 데이터 소스가 사용자 지정 소스인 경우 `id` 필드에 문서의 ID를 지정합니다.

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ 데이터 소스가 Amazon S3인 경우 `uri` 필드에 문서의 S3 URI를 지정합니다.

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

**주의**  
S3 데이터 소스에 연결된 지식 기반에서 직접 삭제하는 문서는 S3 버킷 자체에서 삭제되지 않습니다. 데이터 소스를 동기화할 경우 다시 도입되지 않도록 S3 버킷에서 이러한 문서를 삭제하는 것이 좋습니다.

# Amazon Bedrock Knowledge Bases에 대한 데이터 소스 정보 확인
<a name="kb-ds-info"></a>

설정 및 동기화 기록과 같은 지식 기반의 데이터 소스에 대한 정보를 확인할 수 있습니다.

지식 기반의 데이터 소스를 비롯하여 지식 기반에 대한 정보를 모니터링하려면 [Amazon CloudWatch를 사용하여 지식 기반 로깅](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)을 참조하세요.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

**데이터 소스에 대한 정보를 확인하는 방법**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **데이터 소스** 섹션에서 세부 정보를 보려는 데이터 소스를 선택합니다.

1. **데이터 소스 개요**에는 데이터 소스에 대한 세부 정보가 포함되어 있습니다.

1. **동기화 기록**에는 데이터 소스가 동기화된 시기에 대한 세부 정보가 포함되어 있습니다. 동기화 이벤트가 실패한 이유를 보려면 동기화 이벤트를 선택하고 **경고 보기**를 선택합니다.

------
#### [ API ]

데이터 소스에 대한 정보를 가져오려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [GetDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetDataSource.html) 요청을 전송하고 해당 데이터 소스가 속한 지식 기반의 `dataSourceId` 및 `knowledgeBaseId`를 지정합니다.

지식 기반 데이터 소스에 관한 정보를 나열하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [ListDataSources](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListDataSources.html) 요청을 전송하고 지식 기반 ID를 지정합니다.
+ 응답으로 반환할 최대 결과 수를 `maxResults` 필드에 설정할 수 있습니다.
+ 설정한 수보다 결과가 큰 경우 응답은 `nextToken`을 반환합니다. 또 다른 `ListDataSources` 요청에서 이 값을 사용하여 다음 결과 배치를 볼 수 있습니다.

데이터 소스에 대한 동기화 이벤트 정보를 가져오려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 요청을 전송합니다. `dataSourceId`, `knowledgeBaseId`, 및 `ingestionJobId`을 지정합니다.

지식 기반에서 데이터 소스의 동기화 기록을 나열하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 요청을 전송합니다. 지식 기반과 데이터 소스의 ID를 지정합니다. 다음 사양을 설정할 수 있습니다.
+ `filters` 객체에서 검색할 상태를 지정하여 결과를 필터링합니다.
+ 작업이 시작된 시각 또는 `sortBy` 객체를 지정하여 작업 상태를 기준으로 정렬합니다. 오름차순 또는 내림차순을 지정할 수 있습니다.
+ 응답으로 반환할 최대 결과 수를 `maxResults` 필드에 설정할 수 있습니다. 설정한 수보다 많은 결과가 있는 경우 응답에서 `nextToken`이 반환되며, 이를 또 다른 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 요청으로 전송하여 다음 작업 배치를 확인할 수 있습니다.

------

# Amazon Bedrock Knowledge Bases의 데이터 소스 수정
<a name="kb-ds-update"></a>

데이터 소스 구성을 변경하는 등 지식 기반의 데이터 소스를 업데이트할 수 있습니다.

다음과 같은 방법으로 데이터 소스를 업데이트할 수 있습니다.
+ 데이터 소스에서 파일 또는 콘텐츠를 추가, 변경 또는 제거합니다.
+ 데이터 수집 중에 임시 데이터를 암호화하는 데 사용할 데이터 소스 구성 또는 KMS 키를 변경합니다. 소스 또는 엔드포인트 구성 세부 정보를 변경하는 경우, 필요한 액세스 권한과 Secrets Manager 보안 암호(해당하는 경우)를 사용하여 새 IAM 역할을 업데이트하거나 생성해야 합니다.
+ 데이터 소스 삭제 정책을 "삭제" 또는 “보관”으로 설정합니다. 지식 기반 또는 데이터 소스 리소스를 삭제하면 벡터 임베딩으로 변환되는 데이터 소스의 모든 데이터를 삭제할 수 있습니다. 지식 기반 또는 데이터 소스 리소스를 삭제하면 벡터 임베딩으로 변환되는 데이터 소스의 모든 데이터를 유지할 수 있습니다. 지식 기반 또는 데이터 소스 리소스를 삭제한다고 해서 **벡터 스토어 자체가 삭제되지는 않습니다**.

데이터 소스에서 파일을 추가, 수정 또는 제거할 때마다 데이터 소스를 동기화하여 지식 기반에 다시 인덱싱해야 합니다. 동기화는 증분적으로 이루어지므로 Amazon Bedrock은 마지막 동기화 이후에 추가, 수정 또는 삭제된 문서만 처리합니다. 수집을 시작하기 전에 데이터 소스가 다음 조건을 충족하는지 확인합니다.
+ 파일이 지원되는 형식입니다. 자세한 내용은 [지원되는 문서 형식](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)을 참조하세요.
+ 파일이 AWS 일반 참조의 [Amazon Bedrock 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/bedrock.html)에 지정된 **수집 작업 파일 사이즈**를 초과하지 않습니다.
+ 데이터 소스에 메타데이터 파일이 포함된 경우, 다음 조건을 확인하여 메타데이터 파일이 무시되지 않도록 하세요.
  + 각 `.metadata.json` 파일은 연결된 소스 파일과 동일한 파일 이름과 확장자를 공유합니다.
  + 지식 기반에 대한 벡터 인덱스가 Amazon OpenSearch Serverless 벡터 스토어에 있는 경우, 벡터 인덱스가 `faiss` 엔진으로 구성되어 있는지 확인합니다. 벡터 인덱스가 `nmslib` 엔진으로 구성되어 있다면 다음 중 하나를 수행해야 합니다.
    + 콘솔에서 [새 지식 기반을 만들고](knowledge-base-create.md) Amazon Bedrock이 Amazon OpenSearch Serverless에서 벡터 인덱스를 자동으로 만들도록 합니다.
    + 벡터 스토어에서 [또 다른 벡터 인덱스를 만들고](knowledge-base-setup.md) **엔진**으로 `faiss`를 선택합니다. 그런 다음 [새 지식 기반을 만들고](knowledge-base-create.md) 새 벡터 인덱스를 지정합니다.
  + 지식 기반의 벡터 인덱스가 Amazon Aurora 데이터베이스 클러스터에 있는 경우 사용자 지정 메타데이터 필드를 사용하여 모든 메타데이터를 단일 열에 저장하고 이 열에 인덱스를 생성하는 것이 좋습니다. 사용자 지정 메타데이터 필드를 제공하지 않는 경우 수집을 시작하기 전에 인덱스의 테이블에 메타데이터 파일의 각 메타데이터 속성에 대한 열이 포함되어 있는지 확인해야 합니다. 자세한 내용은 [지식 기반에 대해 생성된 벡터 저장소 사용의 사전 조건](knowledge-base-setup.md) 섹션을 참조하세요.

데이터 소스를 업데이트하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

**데이터 소스를 업데이트하는 방법**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. 지식 기반 이름을 선택합니다.

1. **데이터 소스** 섹션에서 편집 및 동기화하려는 데이터 소스 옆의 라디오 버튼을 선택합니다.

1. (선택 사항) **편집**을 선택하고 구성을 변경한 다음 **제출**을 선택합니다. 소스 또는 엔드포인트 구성 세부 정보를 변경하는 경우, 필요한 액세스 권한과 Secrets Manager 보안 암호(해당하는 경우)를 사용하여 새 IAM 역할을 업데이트하거나 생성해야 합니다. 수집된 원본 데이터를 기반으로 하는 청킹 구성을 변경할 수 없다는 점에도 유의하세요. 데이터 소스를 다시 만들어야 합니다.
**참고**  
청킹 구성은 변경할 수 없습니다. 데이터 소스를 다시 만들어야 합니다.

1. (선택 사항) 고급 설정 과정에서 데이터 소스 데이터 삭제 정책을 편집할 수 있습니다.

   데이터 삭제 정책 설정에서 다음 중 하나를 선택할 수 있습니다.
   + 삭제: 지식 기반 또는 데이터 소스 리소스 삭제 시 벡터 임베딩으로 변환된 모든 데이터를 데이터 소스에서 삭제합니다. **벡터 스토어 자체는 삭제되지 않고** 데이터만 삭제된다는 점에 유의하세요. AWS 계정이 삭제되면 이 플래그는 무시됩니다.
   + 유지: 지식 기반 또는 데이터 소스 리소스 삭제 시 벡터 임베딩으로 변환되는 데이터 소스의 모든 데이터를 유지합니다. 지식 기반 또는 데이터 소스 리소스를 삭제한다고 해서 **벡터 스토어 자체가 삭제되지는 않습니다**.

1. **동기화**를 선택합니다.

1. 동기화가 완료되고 **상태**가 **준비**로 바뀌면 녹색 배너가 나타납니다.

------
#### [ API ]

**데이터 소스를 업데이트하는 방법**

1. (선택 사항) [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [UpdateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateDataSource.html) 요청을 전송하고, 모든 구성을 변경하고, 변경하지 않으려는 동일한 구성을 지정합니다. 소스 또는 엔드포인트 구성 세부 정보를 변경하는 경우, 필요한 액세스 권한과 Secrets Manager 보안 암호(해당하는 경우)를 사용하여 새 IAM 역할을 업데이트하거나 생성해야 합니다.
**참고**  
`chunkingConfiguration`은 변경할 수 없습니다. 기존 `chunkingConfiguration`으로 요청을 보내거나 데이터 소스를 다시 만드세요.

1. (선택 사항) 데이터 소스의 `dataDeletionPolicy`를 변경합니다. 지식 기반 또는 데이터 소스 리소스를 삭제하면 벡터 임베딩으로 변환되는 데이터 소스의 모든 데이터를 `DELETE`할 수 있습니다. AWS 계정이 삭제되면 이 플래그는 무시됩니다. 지식 기반 또는 데이터 소스 리소스를 삭제하면 벡터 임베딩으로 변환되는 데이터 소스의 모든 데이터를 `RETAIN`할 수 있습니다. 지식 기반 또는 데이터 소스 리소스를 삭제한다고 해서 **벡터 스토어 자체가 삭제되지는 않습니다**.

1. `dataSourceId` 및 `knowledgeBaseId`를 지정하여 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용해 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 요청을 전송합니다.

------

# Amazon Bedrock Knowledge Bases에서 데이터 소스 삭제
<a name="kb-ds-delete"></a>

지식 기반에 더 이상 필요하지 않거나 사용하지 않는 데이터 소스를 삭제하거나 제거할 수 있습니다.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

**데이터 소스를 삭제하기**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **데이터 소스** 섹션에서 삭제할 데이터 소스 옆에 있는 라디오 버튼을 선택합니다.

1. **삭제**를 선택합니다.

1. 데이터 소스가 성공적으로 삭제되면 녹색 배너가 나타납니다.
**참고**  
데이터 소스에 대한 데이터 삭제 정책은 “삭제”(데이터 소스를 삭제할 때 모든 데이터를 삭제하지만 **벡터 스토어 자체는 삭제하지 않음**) 또는 “보관”(데이터 소스를 삭제할 때 모든 데이터를 유지함)으로 설정됩니다. 데이터 소스 또는 지식 기반을 삭제한다고 해서 **벡터 스토어 자체가 삭제되지는 않습니다**. 데이터 소스 데이터 삭제 정책이 “삭제”로 설정된 경우 벡터 스토어에 대한 구성 또는 액세스 문제로 인해 데이터 소스가 삭제 프로세스를 성공적으로 완료하지 못할 수 있습니다. “DELETE\$1UNSUCCESSFUL” 상태를 확인하여 데이터 소스가 성공적으로 삭제되지 못한 이유를 알아볼 수 있습니다.

------
#### [ API ]

지식 기반에서 데이터 소스를 삭제하려면 `dataSourceId` 및 `knowledgeBaseId`를 지정하여 [DeleteDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeletDataSource.html) 요청을 전송합니다.

**참고**  
데이터 소스에 대한 데이터 삭제 정책은 `DELETE`(데이터 소스를 삭제할 때 모든 데이터를 삭제하지만 **벡터 스토어 자체는 삭제하지 않음**) 또는 `RETAIN`(데이터 소스를 삭제할 때 모든 데이터를 유지함)으로 설정됩니다. 데이터 소스 또는 지식 기반을 삭제한다고 해서 **벡터 스토어 자체가 삭제되지는 않습니다**. 데이터 소스 데이터 삭제 정책이 `DELETE`로 설정된 경우 벡터 스토어에 대한 구성 또는 액세스 문제로 인해 데이터 소스가 삭제 프로세스를 성공적으로 완료하지 못할 수 있습니다. 데이터 소스 상태가 `DELETE_UNSUCCESSFUL`인 경우 `failureReasons`을 확인하여 데이터 소스가 성공적으로 삭제되지 못한 이유를 알아볼 수 있습니다.

------

# 멀티모달 콘텐츠를 위한 지식 기반 구축
<a name="kb-multimodal"></a>

Amazon Bedrock 지식 기반은 이미지, 오디오 및 비디오 파일을 포함한 멀티모달 콘텐츠를 지원합니다. 이미지를 쿼리로 사용하여 검색하고, 시각적으로 유사한 콘텐츠를 검색하고, 기존 텍스트 문서와 함께 멀티미디어 파일을 처리할 수 있습니다. 이 기능을 사용하면 조직 전체에 저장된 독립 실행형 이미지, 오디오 레코딩, 비디오 파일 등 다양한 데이터 유형에서 인사이트를 추출할 수 있습니다.

Amazon Bedrock 지식 기반을 사용하면 텍스트, 시각적 객체 및 오디오 콘텐츠에서 정보를 인덱싱하고 검색할 수 있습니다. 이제 조직은 이미지를 사용하여 제품 카탈로그를 검색하고, 교육 비디오에서 특정 순간을 찾고, 고객 지원 통화 녹음에서 관련 세그먼트를 검색할 수 있습니다.

**리전별 가용성**  
멀티모달 처리 접근 방식은 리전별로 가용성이 다릅니다. 자세한 내용은 [리전별 가용성](kb-multimodal-choose-approach.md#kb-multimodal-processing-regions)섹션을 참조하세요.

## 특징 및 기능
<a name="kb-multimodal-features"></a>

멀티모달 지식 기반은 다음과 같은 주요 기능을 제공합니다.

**이미지 기반 쿼리**  
Nova 멀티모달 임베딩을 사용할 때 이미지를 검색 쿼리로 제출하여 시각적으로 유사한 콘텐츠를 찾습니다. 제품 매칭, 시각적 유사성 검색 및 이미지 검색을 지원합니다.

**오디오 콘텐츠 검색**  
텍스트 쿼리를 사용하여 오디오 파일을 검색합니다. 타임스탬프 참조가 있는 레코딩에서 특정 세그먼트를 검색합니다. 오디오 트랜스크립션을 사용하면 회의, 통화, 팟캐스트 등 음성 콘텐츠에서 텍스트 기반 검색을 사용할 수 있습니다.

**비디오 세그먼트 추출**  
텍스트 쿼리를 사용하여 비디오 파일 내에서 특정 순간을 찾습니다. 정확한 타임스탬프가 있는 비디오 세그먼트를 검색합니다.

**교차 모달 검색**  
텍스트 문서, 이미지, 오디오 및 비디오를 비롯한 다양한 데이터 유형을 검색합니다. 원본 형식에 관계없이 관련 콘텐츠를 검색합니다.

**타임스탬프가 있는 소스 참조**  
검색 결과에는 오디오 및 비디오에 대한 임시 메타데이터가 있는 원본 파일에 대한 참조가 포함됩니다. 멀티미디어 콘텐츠 내의 관련 세그먼트에 대한 정확한 탐색을 활성화합니다.

**유연한 처리 옵션**  
시각적 유사성을 위한 네이티브 멀티모달 임베딩 또는 음성 기반 콘텐츠에 대한 텍스트 변환 중에서 선택합니다. 콘텐츠 특성 및 애플리케이션 요구 사항에 따라 처리 접근 방식을 구성합니다.

## 작동 방식
<a name="kb-multimodal-how-it-works"></a>

멀티모달 지식 기반은 다양한 데이터 유형을 적절하게 처리하는 다단계 파이프라인을 통해 콘텐츠를 처리하고 검색합니다.

****수집 및 처리****

1. **데이터 소스 연결:** 지식 기반을 텍스트 문서, 이미지, 오디오 파일 및 비디오 파일이 포함된 Amazon S3 버킷 또는 사용자 지정 데이터 소스에 연결합니다.

1. **파일 유형 감지:** 시스템은 각 파일 유형을 확장명으로 식별하여 적절한 처리 파이프라인으로 라우팅합니다.

1. **콘텐츠 처리:** 구성에 따라 파일은 다음 두 가지 방법 중 하나를 사용하여 처리됩니다.
   + **Nova 멀티모달 임베딩:** 시각적 및 오디오 유사성 일치를 위한 기본 형식을 보존합니다. 이미지, 오디오 및 비디오는 텍스트로 변환하지 않고 직접 임베디드됩니다.
   + **Bedrock Data Automation(BDA):** 멀티미디어를 텍스트 표현으로 변환합니다. 오디오는 자동 음성 인식(ASR)을 사용하여 트랜스크립션되고, 비디오는 장면 요약 및 트랜스크립트를 추출하기 위해 처리되며, 이미지는 OCR 및 시각적 콘텐츠 추출을 거칩니다.

1. **임베딩 생성:** 처리된 콘텐츠는 선택한 임베딩 모델을 사용하여 벡터 임베딩으로 변환됩니다. 이러한 임베딩은 의미론적 의미를 포착하고 유사성 기반 검색을 가능하게 합니다.

1. **벡터 스토리지:** 임베딩은 파일 참조, 타임스탬프(오디오 및 비디오용) 및 콘텐츠 유형 정보를 포함한 메타데이터와 함께 구성된 벡터 데이터베이스에 저장됩니다.

1. **멀티모달 스토리지(선택 사항):** 구성된 경우 원본 멀티미디어 파일이 안정적인 검색을 위해 전용 멀티모달 스토리지 대상으로 복사되므로 소스 파일이 수정되거나 삭제되더라도 가용성이 보장됩니다.

****쿼리 및 검색****

1. **쿼리 처리:** 사용자 쿼리(텍스트 또는 이미지)는 수집 중에 사용된 것과 동일한 임베딩 모델을 사용하여 임베딩으로 변환됩니다.

1. **유사성 검색:** 쿼리 임베딩을 벡터 데이터베이스에 저장된 임베딩과 비교하여 가장 관련성이 높은 콘텐츠를 식별합니다.

1. **결과 검색:** 시스템은 다음을 포함한 메타데이터와 일치하는 콘텐츠를 반환합니다.
   + 소스 URI(원본 파일 위치)
   + 타임스탬프 메타데이터(오디오 및 비디오 세그먼트용)
   + 콘텐츠 유형 및 양식 정보

1. **응답 생성(선택 사항):** `RetrieveAndGenerate` 요청의 경우 검색된 콘텐츠가 파운데이션 모델로 전달되어 상황에 맞는 텍스트 응답을 생성합니다. 이는 BDA 처리를 사용하거나 지식 기반에 텍스트 콘텐츠가 포함된 경우 지원됩니다.

**중요**  
시스템은 오디오 및 비디오 콘텐츠에 대한 타임스탬프 메타데이터가 있는 전체 파일에 대한 참조를 반환합니다. 애플리케이션은 제공된 시작 및 종료 타임스탬프를 기반으로 특정 세그먼트를 추출하고 재생해야 합니다. 는 이를 자동으로 AWS Management Console 처리합니다.

**Topics**
+ [특징 및 기능](#kb-multimodal-features)
+ [작동 방식](#kb-multimodal-how-it-works)
+ [멀티모달 처리 접근 방식 선택](kb-multimodal-choose-approach.md)
+ [멀티모달 지식 기반의 사전 조건](kb-multimodal-prerequisites.md)
+ [멀티모달 콘텐츠에 대한 지식 기반 생성](kb-multimodal-create.md)
+ [데이터 소스 추가 및 수집 시작](kb-multimodal-add-data-source-and-ingest.md)
+ [멀티모달 지식 기반 테스트 및 쿼리](kb-multimodal-test-and-query.md)
+ [멀티모달 지식 기반 문제 해결](kb-multimodal-troubleshooting.md)

# 멀티모달 처리 접근 방식 선택
<a name="kb-multimodal-choose-approach"></a>

Amazon Bedrock 지식 기반은 멀티모달 콘텐츠를 처리하기 위한 두 가지 접근 방식, 즉 시각적 유사성 검색을 위한 Nova Multimodal Embeddings와 멀티미디어 콘텐츠의 텍스트 기반 처리를 위한 Bedrock Data Automation(BDA)을 제공합니다. 입력 양식이 오디오 또는 비디오용이 아닌 이미지인 경우 파운데이션 모델을 파서로 사용할 수도 있습니다.

이 섹션에서는 멀티모달 콘텐츠에 대한 처리 접근 방식으로 Nova 멀티모달 임베딩 및 BDA를 사용하는 방법을 설명합니다. 각 접근 방식은 다양한 사용 사례 및 쿼리 패턴에 최적화되어 있습니다.

**Topics**
+ [멀티모달 처리 접근 방식](#kb-multimodal-processing-approach)
+ [리전별 가용성](#kb-multimodal-processing-regions)
+ [콘텐츠 유형별 선택 기준](#kb-multimodal-selection-guidance)
+ [지원되는 파일 유형 및 데이터 소스](#kb-multimodal-supported-files)
+ [기능 및 제한 사항](#kb-multimodal-approach-details)

## 멀티모달 처리 접근 방식
<a name="kb-multimodal-processing-approach"></a>

다음 표는 멀티모달 콘텐츠를 처리하기 위한 Nova 멀티모달 임베딩과 BDA 간의 비교를 보여줍니다.


**처리 접근 방식 비교**  

| 기능 | Nova 멀티모달 임베딩 | Bedrock 데이터 자동화(BDA) | 
| --- | --- | --- | 
| 처리 방법 | 중간 텍스트 변환 없이 임베딩 생성 | 멀티미디어를 텍스트로 변환한 다음 임베딩을 생성합니다. | 
| 지원되는 쿼리 유형 | 텍스트 쿼리 또는 이미지 쿼리 | 텍스트 쿼리만 | 
| 기본 사용 사례 | 시각적 유사성 검색, 제품 매칭, 이미지 검색 | 음성 트랜스크립션, 텍스트 기반 검색, 콘텐츠 분석 | 
| RAG 기능 | 텍스트 콘텐츠로만 제한됨 | 전체 RetrieveAndGenerate 지원 | 
| 스토리지 요구 사항 | 멀티모달 스토리지 대상 필요 | 멀티모달 스토리지 대상은 선택 사항이지만 지정하지 않으면 BDA에서 텍스트 데이터만 처리됩니다. 텍스트가 아닌 입력의 경우 멀티모달 스토리지 대상을 지정해야 합니다. | 

## 리전별 가용성
<a name="kb-multimodal-processing-regions"></a>


**리전별 가용성**  

| Nova 멀티모달 임베딩 | Bedrock 데이터 자동화(BDA) | 
| --- | --- | 
| 미국 동부(버지니아 북부)에만 해당 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/kb-multimodal-choose-approach.html)  | 

## 콘텐츠 유형별 선택 기준
<a name="kb-multimodal-selection-guidance"></a>

이 결정 매트릭스를 사용하여 콘텐츠 및 사용 사례 요구 사항에 따라 적절한 처리 접근 방식을 선택합니다.

**참고**  
Amazon Nova Multimodal Embeddings 모델과 함께 BDA 구문 분석기를 사용하는 경우 임베딩 모델은 텍스트 임베딩 모델처럼 작동합니다. 멀티모달 콘텐츠로 작업할 때는 사용 사례에 따라 최상의 결과를 얻으려면 처리 방법 중 하나를 사용합니다.


**콘텐츠 유형별 처리 접근 방식 권장 사항**  

| 콘텐츠 유형 | Nova 멀티모달 임베딩 | Bedrock 데이터 자동화(BDA) | 
| --- | --- | --- | 
| 제품 카탈로그 및 이미지 | 권장 - 시각적 유사성 일치 및 이미지 기반 쿼리를 활성화합니다. | 제한적 - OCR을 통해서만 텍스트 추출 | 
| 회의 녹음 및 통화 | 스피치 콘텐츠를 의미 있게 처리할 수 없음 | 권장 - 전체 음성 트랜스크립션 및 검색 가능한 텍스트 제공 | 
| 훈련 및 교육 비디오 | 부분 - 시각적 콘텐츠를 처리하지만 음성을 놓침 | 권장 - 스피치 트랜스크립트와 시각적 설명을 모두 캡처합니다. | 
| 고객 지원 레코딩 | 권장되지 않음 - 음성 콘텐츠를 효과적으로 처리할 수 없음 | 권장 - 검색 가능한 전체 대화 기록을 생성합니다. | 
| 기술 다이어그램 및 차트 | 권장 - 시각적 유사성 및 패턴 일치에 적합 | 제한적 - 텍스트 레이블을 추출하지만 시각적 관계를 놓침 | 

## 지원되는 파일 유형 및 데이터 소스
<a name="kb-multimodal-supported-files"></a>

지원되는 파일 유형은 선택한 처리 접근 방식에 따라 다릅니다.


**처리 접근 방식을 통해 지원되는 파일 유형**  

| 파일 형식 | Nova 멀티모달 임베딩 | Bedrock 데이터 자동화(BDA) | 
| --- | --- | --- | 
| 이미지 | .png, .jpg, .jpeg, .gif, .webp | .png, .jpg, .jpeg | 
| 오디오 | .mp3, .ogg, .wav | .amr, .flac, .m4a, .mp3, .ogg, .wav | 
| 비디오 | .mp4, .mov, .mkv, .webm, .flv, .mpeg, .mpg, .wmv, .3gp | .mp4, .mov | 
| 문서 | 텍스트로 처리됨 | .pdf(이미지에서 텍스트 추출 포함) | 

****지원되는 데이터 소스****  
멀티모달 콘텐츠는 다음 데이터 소스에서 지원됩니다.
+ **Amazon S3:** 모든 멀티모달 파일 유형에 대한 전체 지원
+ **사용자 지정 데이터 소스:** 최대 10MB base64 인코딩 인라인 콘텐츠 지원

**중요**  
다중 모달 검색은 현재 Amazon S3 데이터 소스에서만 사용할 수 있습니다. 다른 데이터 소스(Confluence, SharePoint, Salesforce, Web Crawler)는 수집 중에 멀티모달 파일을 처리하지 않습니다. 이러한 파일은 건너뛰고 멀티모달 쿼리에 사용할 수 없습니다.

## 기능 및 제한 사항
<a name="kb-multimodal-approach-details"></a>

**Nova 멀티모달 임베딩**  
**주요 기능:**  
+ 네이티브 멀티모달 처리는 최적의 시각적 유사성 일치를 위해 원래 콘텐츠 형식을 보존합니다.
+ 이미지 기반 쿼리를 통해 사용자는 이미지를 업로드하고 시각적으로 유사한 콘텐츠를 찾을 수 있습니다.
+ 제품 카탈로그, 시각적 검색 및 콘텐츠 검색 애플리케이션을 위한 우수한 성능
**제한 사항:**  
+ 음성 또는 오디오 콘텐츠를 효과적으로 처리할 수 없음 - 음성 정보를 검색할 수 없음
+ `RetrieveAndGenerate` 및 리랭크 기능은 텍스트 콘텐츠로만 제한됩니다.
+ 전용 멀티모달 스토리지 대상 구성 필요

**Bedrock 데이터 자동화(BDA)**  
**주요 기능:**  
+ 자동 음성 인식(ASR) 기술을 사용한 포괄적인 음성 트랜스크립션
+ 시각적 콘텐츠 분석은 이미지 및 비디오 장면에 대한 설명 텍스트를 생성합니다.
+ 전체 `RetrieveAndGenerate` 지원을 통해 모든 콘텐츠에서 완전한 RAG 기능 지원
+ 텍스트 기반 검색은 모든 멀티미디어 콘텐츠 유형에서 일관되게 작동합니다.
**제한 사항:**  
+ Nova 멀티모달 임베딩 없이 사용할 경우 이미지 기반 쿼리를 지원하지 않습니다. 모든 검색은 텍스트 입력을 사용해야 합니다.
+ 시각적 유사성 일치 또는 image-to-image 검색을 수행할 수 없음
+ 콘텐츠 변환 요구 사항으로 인한 수집 처리 시간 연장
+ Nova 멀티모달 임베딩에 비해 더 적은 멀티미디어 파일 형식 지원

**음성 콘텐츠 처리**  
Nova 멀티모달 임베딩은 오디오 또는 비디오 파일의 음성 콘텐츠를 효과적으로 처리할 수 없습니다. 멀티미디어 콘텐츠에 사용자가 검색해야 하는 중요한 음성 정보가 포함된 경우 BDA 접근 방식을 선택하여 전체 트랜스크립션 및 검색 가능성을 보장합니다.

# 멀티모달 지식 기반의 사전 조건
<a name="kb-multimodal-prerequisites"></a>

Amazon Bedrock 멀티모달 지식 기반은 이미지, 오디오 및 비디오 콘텐츠를 처리하기 위해 표준 지식 기반 외에 추가 설정이 필요합니다. 특정 사전 조건은 선택한 처리 접근 방식 및 스토리지 구성에 따라 달라집니다.

멀티모달 지식 기반을 생성하려면 먼저 다음 사전 조건을 충족해야 합니다.

**Topics**
+ [사전 조건](#kb-multimodal-prerequisites)
+ [멀티모달 콘텐츠에 대한 권한](#kb-multimodal-prerequisites-permissions)

## 사전 조건
<a name="kb-multimodal-prerequisites"></a>

1. 데이터가 [지원되는 데이터 소스 커넥터](data-source-connectors.md)에 있는지 확인합니다. 멀티모달 콘텐츠는 Amazon S3 및 사용자 지정 데이터 소스에서만 지원됩니다.

1. (선택 사항) [지원되는 자체 벡터 스토어를 설정합니다](knowledge-base-setup.md). AWS Management Console 을 사용하여 벡터 스토어를 자동으로 만들려는 경우 이 사전 조건을 건너뛸 수 있습니다.

1. 멀티모달 처리에 대한 적절한 권한을 가진 사용자 지정 AWS Identity and Access Management (IAM) [서비스 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role) 생성합니다. 세부 정보는 [멀티모달 콘텐츠에 대한 권한](#kb-multimodal-prerequisites-permissions) 섹션을 참조하세요.
**참고**  
콘솔을 사용하는 경우 Amazon Bedrock 지식 기반에서 자동으로 권한을 구성합니다.

1. (선택 사항) [지식 기반 리소스 암호화](encryption-kb.md)의 단계에 따라 추가 보안 구성을 설정합니다.

1. BDA 처리 콘텐츠와 함께 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 작업을 사용하려는 경우의 단계에 따라 사용할 리전에서 사용할 모델에 대한 액세스를 요청합니다[Amazon Bedrock 파운데이션 모델 액세스](model-access.md).

## 멀티모달 콘텐츠에 대한 권한
<a name="kb-multimodal-prerequisites-permissions"></a>

멀티모달 지식 기반에는 표준 지식 기반 권한 이외의 추가 권한이 필요합니다. 특정 권한은 선택한 처리 접근 방식 및 스토리지 구성에 따라 달라집니다.

멀티모달 처리 접근 방식에 따라 다음 권한을 구성해야 합니다.
+ **Nova 멀티모달 임베딩 권한:** 직접 시각적 및 오디오 유사성 검색에 Nova 멀티모달 임베딩을 사용할 때 필요합니다. 비동기 모델 호출 및 멀티모달 스토리지 액세스에 대한 권한을 포함합니다.
+ **Bedrock Data Automation(BDA) 권한:** BDA를 사용하여 멀티모달 콘텐츠를 텍스트 표현으로 변환할 때 필요합니다. 데이터 자동화 호출 및 상태 모니터링에 대한 권한을 포함합니다.
+ **고객 관리형 KMS 키 권한:** BDA 처리와 함께 고객 관리형 암호화 키를 사용할 때 필요합니다. 키 작업 및 권한 부여 생성에 대한 권한을 포함합니다.
+ **멀티모달 스토리지 권한:** 멀티모달 스토리지 대상을 구성할 때 필요합니다. 스토리지 버킷에 대한 표준 S3 권한을 포함합니다.

자세한 IAM 정책 및 step-by-step 권한 구성은 섹션을 참조하세요[멀티모달 콘텐츠에 대한 권한](kb-permissions.md#kb-permissions-multimodal).

### 스토리지 요구 사항
<a name="kb-multimodal-storage-requirements"></a>

**Nova 멀티모달 임베딩**  
**필수:** 멀티모달 스토리지 대상을 구성해야 합니다. 이 대상은 검색을 위해 멀티미디어 파일의 사본을 저장하고 소스 파일이 수정되거나 삭제되더라도 가용성을 보장합니다.

**Bedrock 데이터 자동화(BDA)**  
**선택 사항:** 안정성을 높이고 런타임에 파일을 검색하도록 멀티모달 스토리지 버킷을 구성할 수 있습니다. 그러나 BDA는 콘텐츠를 텍스트로 변환하므로 필요하지 않습니다.  
멀티모달 스토리지 버킷을 구성하지 않고 BDA 구문 분석기를 선택하면 텍스트 구문 분석만 사용할 수 있습니다. BDA(이미지, 오디오 및 비디오 처리)를 통해 멀티모달 구문 분석 기능을 활용하려면 멀티모달 스토리지 대상을 구성해야 합니다.

**멀티모달 스토리지 대상 구성**  
멀티모달 스토리지 대상을 구성할 때 다음 사항을 고려하세요.
+ **별도의 버킷 사용(권장):** 데이터 소스 및 멀티모달 스토리지 대상에 대해 서로 다른 Amazon S3 버킷을 구성합니다. 이렇게 하면 가장 간단한 설정이 가능하고 잠재적 충돌이 방지됩니다.
+ **동일한 버킷을 사용하는 경우:** 수집되는 콘텐츠를 제한하는 데이터 소스의 포함 접두사를 지정해야 합니다. 이렇게 하면 추출된 미디어 파일이 다시 수집되지 않습니다.
+ **"aws/" 접두사 방지:** 데이터 소스와 멀티모달 스토리지 대상 모두에 동일한 버킷을 사용하는 경우이 경로는 추출된 미디어 스토리지용으로 예약되어 있으므로 "aws/"로 시작하는 포함 접두사를 사용하지 마십시오.

# 멀티모달 콘텐츠에 대한 지식 기반 생성
<a name="kb-multimodal-create"></a>

콘솔 또는 API를 사용하여 멀티모달 지식 기반을 생성할 수 있습니다. 멀티모달 처리 요구 사항에 따라 접근 방식을 선택합니다.

**중요**  
다중 모달 지원은 비정형 데이터 소스로 지식 기반을 생성할 때만 사용할 수 있습니다. 구조화된 데이터 소스는 멀티모달 콘텐츠 처리를 지원하지 않습니다.

------
#### [ Console ]

**콘솔에서 멀티모달 지식 기반을 생성하려면**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 **생성**을 선택한 다음 **벡터 저장소가 있는 지식 기반**을 선택합니다.

1. (선택 사항) **지식 기반 세부 정보** 섹션에서 지식 기반의 기본 이름을 변경하고 설명을 제공합니다.

1. **IAM 권한** 섹션에서 다른 필수 AWS 서비스에 액세스할 수 있는 권한을 Amazon Bedrock에 제공하는 IAM 역할을 선택합니다. Amazon Bedrock에서 서비스 역할을 생성하도록 하거나 자체 사용자 지정 역할을 사용하도록 선택할 수 있습니다. 멀티모달 권한은 섹션을 참조하세요[멀티모달 콘텐츠에 대한 권한](kb-permissions.md#kb-permissions-multimodal).

1. **Amazon S3**를 데이터 소스로 선택하고 **다음을** 선택하여 데이터 소스를 구성합니다.
**참고**  
지식 기반 생성 중에 최대 5개의 Amazon S3 데이터 소스를 추가할 수 있습니다. 지식 기반이 생성된 후 추가 데이터 소스를 추가할 수 있습니다.

1. 멀티모달 콘텐츠가 포함된 버킷의 **S3 URI**를 제공하고 필요한 경우 포함 접두사를 구성합니다. 포함 접두사는 수집되는 콘텐츠를 제한하는 데 사용할 수 있는 폴더 경로입니다.

1. **청킹 및 구문 분석 구성**에서 구문 분석 전략을 선택합니다.
   + **Bedrock 기본 구문 분석기:** 텍스트 전용 콘텐츠 처리에 권장됩니다. 이 구문 분석기는 다중 모달 파일을 무시하면서 일반적인 텍스트 형식을 처리합니다. Word, Excel, HTML, Markdown, TXT 및 CSV 파일을 포함한 텍스트 문서를 지원합니다.
   + **Bedrock Data Automation(BDA):** 멀티모달 콘텐츠를 검색 가능한 텍스트 표현으로 변환합니다. PDFs, 이미지, 오디오 및 비디오 파일을 처리하여 텍스트를 추출하고, 시각적 콘텐츠에 대한 설명을 생성하고, 오디오 및 비디오 콘텐츠에 대한 트랜스크립션을 생성합니다.
   + **파운데이션 모델 구문 분석기:** 복잡한 문서 구조를 위한 고급 구문 분석 기능을 제공합니다. PDFs, 이미지, 구조화된 문서, 테이블 및 시각적으로 풍부한 콘텐츠를 처리하여 텍스트를 추출하고 시각적 요소에 대한 설명을 생성합니다.

1. **다음을** 선택하고 임베딩 모델 및 멀티모달 처리 접근 방식을 선택합니다.
   + **Amazon Nova Multimodal Embeddings V1.0:** 직접 시각적 객체 및 오디오 유사성 검색을 위해 **Amazon Nova 임베딩 V1.0**을 선택합니다. 콘텐츠가 세그먼트화되는 방식을 제어하도록 오디오 및 비디오 청크 지속 시간(1\$130초, 기본값 5초)을 구성합니다.
**참고**  
오디오 및 비디오 청킹 파라미터는 데이터 소스 수준이 아닌 임베딩 모델 수준에서 구성됩니다. 비 멀티모달 임베딩 모델에 대해 이 구성을 제공하면 검증 예외가 발생합니다. 콘텐츠가 세그먼트화되는 방식을 제어하도록 오디오 및 비디오 청크 지속 시간(기본값: 5초, 범위: 1\$130초)을 구성합니다. 청크가 짧을수록 정확한 콘텐츠 검색이 가능하지만 청크가 길수록 의미론적 컨텍스트가 더 많이 보존됩니다.
**중요**  
Amazon Nova 임베딩 v1.0은 오디오/비디오 데이터에서 음성 콘텐츠를 검색할 수 있는 지원이 제한적입니다. 음성을 지원해야 하는 경우 Bedrock Data Automation을 구문 분석기로 사용합니다.
   + **BDA를 사용한 텍스트 임베딩:** BDA 처리를 사용할 때 텍스트 임베딩 모델(예: Titan Text Embeddings v2)을 선택합니다. 텍스트 임베딩 모델은 텍스트 전용 콘텐츠로 검색을 제한하지만 Amazon Bedrock 데이터 자동화 또는 파운데이션 모델을 파서로 선택하여 멀티모달 검색을 활성화할 수 있습니다.
**참고**  
Nova 멀티모달 임베딩과 함께 BDA 구문 분석기를 사용하는 경우 Amazon Bedrock 지식 기반은 먼저 BDA 구문 분석을 사용합니다. 이 경우 BDA가 이를 텍스트 표현으로 변환하므로 임베딩 모델은 이미지, 오디오 및 비디오에 대한 기본 멀티모달 임베딩을 생성하지 않습니다.

1. Nova 멀티모달 임베딩을 사용하는 경우, 처리된 파일이 검색을 위해 저장될 Amazon S3 버킷을 지정하여 **멀티모달 스토리지 대상**을 구성합니다. 지식 기반은 쉽게 액세스할 수 있도록 .bda 폴더가 생성된 단일 Amazon S3 버킷에 구문 분석된 이미지를 저장합니다.
**수명 주기 정책 권장 사항**  
Nova 멀티모달 임베딩을 사용하는 경우 Amazon Bedrock은 임시 데이터를 멀티모달 스토리지 대상에 저장하고 처리가 완료된 후 삭제를 시도합니다. 적절한 정리를 위해 임시 데이터 경로에 수명 주기 정책을 적용하는 것이 좋습니다. 자세한 지침은 [Amazon S3 수명 주기 정책을 사용하여 임시 데이터 관리](kb-multimodal-troubleshooting.md#kb-multimodal-lifecycle-policy) 섹션을 참조하세요.

1. **벡터 데이터베이스** 섹션에서 벡터 저장소 방법을 선택하고 선택한 임베딩 모델에 따라 적절한 차원을 구성합니다.

1. **다음을** 선택하고 지식 기반 구성의 세부 정보를 검토한 다음 **지식 기반 생성을** 선택합니다.

------
#### [ CLI ]

**를 사용하여 멀티모달 지식 기반을 생성하려면 AWS CLI**
+ Nova 멀티모달 임베딩을 사용하여 지식 기반을 생성합니다. [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 요청 전송:

  ```
  aws bedrock-agent create-knowledge-base \
  --cli-input-json file://kb-nova-mme.json
  ```

  의 내용`kb-nova-mme.json`(자리 표시자 값을 특정 구성으로 대체):

  ```
  {
      "knowledgeBaseConfiguration": {
          "vectorKnowledgeBaseConfiguration": {
              "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-multimodal-embeddings-v1:0",
              "supplementalDataStorageConfiguration": {
                  "storageLocations": [
                      {
                          "type": "S3",
                          "s3Location": {
                              "uri": "s3://<multimodal-storage-bucket>/"
                          }
                      }
                  ]
              }
          },
          "type": "VECTOR"
      },
      "storageConfiguration": {
          "opensearchServerlessConfiguration": {
              "collectionArn": "arn:aws:aoss:us-east-1:<account-id>:collection/<collection-id>",
              "vectorIndexName": "<index-name>",
              "fieldMapping": {
                  "vectorField": "<vector-field>",
                  "textField": "<text-field>",
                  "metadataField": "<metadata-field>"
              }
          },
          "type": "OPENSEARCH_SERVERLESS"
      },
      "name": "<knowledge-base-name>",
      "description": "Multimodal knowledge base with Nova Multimodal Embeddings"
  }
  ```

  다음과 같이 자리 표시자를 바꿉니다.
  + `<multimodal-storage-bucket>` - 멀티모달 파일을 저장하기 위한 S3 버킷
  + `<account-id>` - AWS 계정 ID
  + `<collection-id>` - OpenSearch Serverless 컬렉션 ID
  + `<index-name>` - OpenSearch 컬렉션의 벡터 인덱스 이름(선택한 임베딩 모델에 적합한 차원으로 구성됨)
  + `<vector-field>` - 임베딩 저장을 위한 필드 이름
  + `<text-field>` - 텍스트 콘텐츠 저장을 위한 필드 이름
  + `<metadata-field>` - 메타데이터 저장을 위한 필드 이름

------

# 데이터 소스 추가 및 수집 시작
<a name="kb-multimodal-add-data-source-and-ingest"></a>

지식 기반을 생성한 후 멀티모달 콘텐츠가 포함된 데이터 소스를 추가하고 수집 작업을 시작하여 콘텐츠를 처리하고 인덱싱합니다.

**데이터 소스 삭제 동작**  
삭제 정책이 RETAIN으로 설정된 데이터 소스를 삭제하면 수집된 콘텐츠가 벡터 데이터베이스에 남아 검색에 계속 사용됩니다. 콘텐츠는 데이터 소스를 삭제한 후 지식 기반을 명시적으로 동기화하는 경우에만 제거됩니다. 기본 DELETE 정책이 있는 데이터 소스는 삭제 중에 벡터 데이터베이스 및 보충 스토리지에서 콘텐츠를 자동으로 제거합니다. 이렇게 하면 소스 파일이 수정되거나 삭제되더라도 지식 기반이 계속 작동하지만 RETAIN 정책을 사용하여 삭제된 데이터 소스가 여전히 검색 결과에 기여할 수 있다는 점에 유의해야 합니다.

## 데이터 소스 추가
<a name="kb-multimodal-add-data-source"></a>

지식 기반에 멀티모달 콘텐츠가 포함된 데이터 소스를 추가합니다.

**중요**  
BDA 데이터 소스의 경우: 오디오/비디오 지원 시작 후 생성된 데이터 소스만 오디오 및 비디오 파일을 처리합니다. 이 기능 시작 전에 생성된 기존 BDA 데이터 소스는 오디오 및 비디오 파일을 계속 건너뜁니다. 기존 지식 기반에 대한 오디오/비디오 처리를 활성화하려면 새 데이터 소스를 생성합니다.

------
#### [ Console ]

**콘솔에서 데이터 소스를 추가하려면**

1. 지식 기반 세부 정보 페이지에서 **데이터 소스 추가**를 선택합니다.

1. **Amazon S3**를 데이터 소스 유형으로 선택합니다.

1. 데이터 소스의 이름과 설명을 입력합니다.

1. 버킷 URI와 포함 접두사를 제공하여 멀티모달 파일이 포함된 Amazon S3 위치를 구성합니다.

1. **콘텐츠 구문 분석 및 청킹**에서 구문 분석 및 청킹 방법을 구성합니다.
**참고**  
텍스트 임베딩 모델은 텍스트 전용 콘텐츠로 검색을 제한하지만 Amazon Bedrock 데이터 자동화(오디오, 비디오 및 이미지용) 또는 파운데이션 모델을 파서(이미지용)로 선택하여 텍스트를 통한 멀티모달 검색을 활성화할 수 있습니다.

   다음 세 가지 구문 분석 전략 중에서 선택합니다.
   + **Bedrock 기본 구문 분석기:** 텍스트 전용 구문 분석에 권장됩니다. 이 구문 분석기는 멀티모달 콘텐츠를 무시하며 일반적으로 멀티모달 임베딩 모델에 사용됩니다.
   + **Bedrock Data Automation as parser:** 멀티모달 콘텐츠를 구문 분석하고 텍스트로 저장하여 PDFs, 이미지, 오디오 및 비디오 파일을 지원합니다.
   + **파서로서의 파운데이션 모델:** 이미지 및 구조화된 문서에 대한 고급 구문 분석을 제공하여 PDFs, 이미지, 테이블 및 시각적으로 풍부한 문서를 지원합니다.

1. **데이터 소스 추가**를 선택하여 데이터 소스를 생성합니다.

------
#### [ CLI ]

**를 사용하여 데이터 소스를 추가하려면 AWS CLI**
+ 멀티모달 콘텐츠에 대한 데이터 소스를 생성합니다. [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청 전송:

  ```
  aws bedrock-agent create-data-source \
  --knowledge-base-id <knowledge-base-id> \
  --cli-input-json file://ds-multimodal.json
  ```

  Nova 멀티모달 임베딩(특수 구문 분석 구성 필요 없음)의 경우 다음 `ds-multimodal.json` 콘텐츠를 사용합니다.

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source",
      "description": "Data source with multimodal content",
      "dataDeletionPolicy": "RETAIN"
  }
  ```

  BDA 구문 분석 접근 방식의 경우 다음 구성을 사용합니다.

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source_bda",
      "description": "Data source with BDA multimodal parsing",
      "dataDeletionPolicy": "RETAIN",
      "vectorIngestionConfiguration": {
          "parsingConfiguration": {
              "bedrockDataAutomationConfiguration": {
                  "parsingModality": "MULTIMODAL"
              }
          }
      }
  }
  ```

------

## 수집 작업 시작
<a name="kb-multimodal-start-ingestion"></a>

데이터 소스를 추가한 후 수집 작업을 시작하여 멀티모달 콘텐츠를 처리하고 인덱싱합니다.

------
#### [ Console ]

**콘솔에서 수집을 시작하려면**

1. 데이터 소스 세부 정보 페이지에서 **동기화**를 선택합니다.

1. 데이터 소스 페이지에서 동기화 상태를 모니터링합니다. 멀티모달 파일의 크기와 수에 따라 수집에 몇 분 정도 걸릴 수 있습니다.

1. 동기화가 성공적으로 완료되면 멀티모달 콘텐츠를 쿼리할 준비가 된 것입니다.

------
#### [ CLI ]

**를 사용하여 수집을 시작하려면 AWS CLI**

1. 수집 작업을 시작합니다. [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 요청 전송:

   ```
   aws bedrock-agent start-ingestion-job \
   --knowledge-base-id <knowledge-base-id> \
   --data-source-id <data-source-id>
   ```

   자리 표시자를 다음으로 바꿉니다.
   + `<knowledge-base-id>` - 지식 기반 생성의 ID
   + `<data-source-id>` - 데이터 소스 생성의 ID

1. 를 사용하여 수집 작업 상태를 모니터링합니다[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html).

------

## 데이터 소스 삭제 후 재동기화
<a name="kb-multimodal-resync-after-deletion"></a>

데이터 소스를 삭제하고 지식 기반에서 해당 콘텐츠를 제거하려면 지식 기반을 명시적으로 다시 동기화해야 합니다.

**삭제된 데이터 소스 콘텐츠를 제거하려면**

1. 콘솔 또는 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html) API를 사용하여 데이터 소스를 삭제합니다.

1. 나머지 데이터 소스에서 새 수집 작업을 시작하여 벡터 데이터베이스를 업데이트하고 삭제된 데이터 소스에서 콘텐츠를 제거합니다.

1. 쿼리가 삭제된 데이터 소스의 결과를 더 이상 반환하지 않는지 확인합니다.

**참고**  
다시 동기화하지 않으면 데이터 소스가 더 이상 존재하지 않더라도 삭제된 데이터 소스의 콘텐츠가 검색 결과에 계속 표시됩니다.

# 멀티모달 지식 기반 테스트 및 쿼리
<a name="kb-multimodal-test-and-query"></a>

멀티모달 콘텐츠를 수집한 후 콘솔 또는 API를 사용하여 지식 기반을 테스트하고 쿼리할 수 있습니다. 사용 가능한 쿼리 유형은 선택한 처리 접근 방식에 따라 다릅니다.

------
#### [ Console ]

**콘솔에서 지식 기반을 테스트하려면**

1. 지식 기반 세부 정보 페이지에서 **지식 기반 테스트** 섹션으로 스크롤합니다.

1. 쿼리 유형을 선택합니다.
   + **표준 검색만 해당:** 단일 지식 기반에서 데이터 소스의 정보를 쿼리하고 검색합니다.
   + **검색 및 응답 생성:** 파운데이션 모델을 사용하여 단일 지식 기반을 쿼리하고 검색된 결과를 기반으로 응답을 생성합니다.
**참고**  
멀티모달 콘텐츠가 있는 경우 검색 및 응답 생성에 BDA 구문 분석기를 사용해야 합니다.

1. 필요에 따라 추가 옵션을 구성합니다.
   + **소스 청크:** 반환할 최대 소스 청크 수 지정
   + **검색 유형:** 쿼리 전략을 사용자 지정하려면 검색 유형을 선택합니다.
   + **메타데이터 필터:** 필터를 적용하여 검색 결과 좁히기
   + **가드레일:** 기존 가드레일을 선택하거나 새 가드레일을 생성합니다.

1. 텍스트 쿼리를 입력하거나 이미지를 업로드하여(Nova 멀티모달 임베딩만 해당) 멀티모달 콘텐츠를 검색합니다. 첨부 파일 버튼을 사용하여 시각적 유사성 검색을 위한 이미지를 업로드합니다.

1. 다음을 포함한 결과를 검토합니다.
   + 관련성 점수가 있는 검색된 콘텐츠 청크
   + 소스 파일 참조 및 타임스탬프(오디오/비디오용)
   + 파일 유형 및 처리 정보를 포함한 메타데이터
   + 멀티미디어 콘텐츠의 경우 검색된 타임스탬프를 기반으로 자동 세그먼트 위치가 있는 재생 제어

------
#### [ API ]

다음 예제에서는 Amazon Bedrock Agent 런타임 API를 사용하여 프로그래밍 방식으로 멀티모달 지식 기반을 쿼리하는 방법을 보여줍니다.

**텍스트 쿼리 예제**  
텍스트 입력을 사용하여 검색합니다.

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <knowledge-base-id> \
--retrieval-query text="robot automation in manufacturing"
```

**이미지 쿼리 예제(Nova 멀티모달 임베딩만 해당)**  
업로드된 이미지를 사용하여 검색합니다.

```
{
    "knowledgeBaseId": "<knowledge-base-id>",
    "retrievalQuery": {
        "imageQuery": {
            "inlineContent": {
                "mimeType": "image/jpeg",
                "data": "<base64-encoded-image>"
            }
        }
    }
}
```

------

## 지원되는 쿼리 유형
<a name="kb-multimodal-query-types"></a>

**텍스트 쿼리**  
Nova 멀티모달 임베딩과 BDA 접근 방식 모두에서 지원됩니다. 자연어 텍스트를 사용하여 검색하여 모든 미디어 유형에서 관련 콘텐츠를 찾습니다.

**이미지 쿼리**  
Nova 멀티모달 임베딩에서만 지원됩니다. 이미지를 업로드하여 지식 기반에서 시각적으로 유사한 콘텐츠를 찾습니다.

## 응답 메타데이터 이해
<a name="kb-multimodal-response-metadata"></a>

멀티모달 쿼리 응답에는 멀티미디어 콘텐츠에 대한 추가 메타데이터가 포함됩니다.

**소스 어트리뷰션**  
안정적인 액세스를 위한 원본 파일 위치(sourceUri) 및 멀티모달 스토리지 위치(supplementalUri)

**임시 메타데이터**  
오디오 및 비디오 세그먼트의 시작 및 종료 타임스탬프를 통해 관련 콘텐츠에 대한 정확한 탐색 가능

**콘텐츠 유형 정보**  
애플리케이션이 다양한 콘텐츠 유형을 적절하게 처리하는 데 도움이 되는 파일 형식, 처리 방법 및 양식 표시기

**벡터 데이터베이스 메타데이터 구조**  
멀티모달 콘텐츠가 처리되고 저장되면 벡터 데이터베이스에 다음 메타데이터 구조가 사용됩니다.
+ **텍스트 필드:** Nova Multimodal Embeddings로 처리된 멀티미디어 파일의 경우 콘텐츠가 텍스트가 아닌 네이티브 멀티미디어로 포함되므로이 필드에는 빈 문자열이 포함됩니다.
+ **메타데이터 필드:** 소스 세부 정보 및 관련 콘텐츠 참조를 포함한 구조화된 정보를 포함합니다.

  ```
  {
    "source": {
      "sourceType": "S3",
      "s3Location": {
        "uri": "s3://source-bucket/path/to/file.mp4"
      }
    },
    "relatedContent": [{
      "type": "S3",
      "s3Location": {
        "uri": "s3://multimodal-storage-bucket/processed/file.mp4"
      }
    }]
  }
  ```
+ **자동 생성된 필드:** 필터링 및 식별을 위한 추가 필드:
  + `x-amz-bedrock-kb-source-uri`: 필터링 작업을 위한 원본 소스 URI
  + `x-amz-bedrock-kb-data-source-id`: 콘텐츠 오리진을 추적하기 위한 데이터 소스 식별자
  + `x-amz-bedrock-kb-chunk-start-time-in-millis`: 오디오 및 비디오 세그먼트의 타임스탬프를 밀리초 단위로 시작
  + `x-amz-bedrock-kb-chunk-end-time-in-millis`: 오디오 및 비디오 세그먼트의 타임스탬프를 밀리초 단위로 종료
  + `x-amz-bedrock-kb-source-file-mime-type`: 소스 파일의 MIME 유형
  + `x-amz-bedrock-kb-source-file-modality`: 소스 파일의 형식(TEXT, IMAGE, AUDIO, VIDEO)

**중요**  
애플리케이션은 제공된 타임스탬프를 사용하여 오디오 및 비디오 파일에서 특정 세그먼트를 추출하고 재생해야 합니다. 지식 기반은 사전 분할된 클립이 아닌 전체 파일에 대한 참조를 반환합니다.

# 멀티모달 지식 기반 문제 해결
<a name="kb-multimodal-troubleshooting"></a>

이 섹션에서는 멀티모달 지식 기반을 사용할 때 발생하는 일반적인 문제를 해결하기 위한 지침을 제공합니다. 문제 해결 정보는 일반적인 제한 사항, 원인 및 해결 방법이 포함된 일반적인 오류 시나리오, 성능 최적화 권장 사항으로 구성됩니다. 이 정보를 사용하여 멀티모달 콘텐츠의 설정, 수집 또는 쿼리 중에 문제를 진단하고 해결할 수 있습니다.

## 일반 제한 사항
<a name="kb-multimodal-general-limitations"></a>

멀티모달 지식 기반을 사용할 때는 다음과 같은 현재 제한 사항에 유의하세요.
+ **파일 크기 제한:** 비디오 파일당 최대 1.5GB, 오디오 파일당 1GB(Nova 멀티모달 임베딩) 또는 파일당 1.5GB(BDA)
+ **수집 작업당 파일:** 작업당 최대 15,000개의 파일(Nova Multimodal Embeddings) 또는 작업당 1,000개의 파일(BDA)
+ **쿼리 제한:** 쿼리당 최대 하나의 이미지
+ **데이터 소스 제한:** Amazon S3 및 사용자 지정 데이터 소스만 멀티모달 콘텐츠를 지원합니다.
+ **BDA 청킹 제한 사항:** 고정 크기 청킹과 함께 Bedrock Data Automation을 사용하는 경우 오디오 및 비디오 콘텐츠에 중복 백분율 설정이 적용되지 않습니다.
+ **BDA 동시 작업 제한:** 동시 BDA 작업 20개의 기본 제한입니다. 대규모 처리의 경우 서비스 할당량 증가 요청을 고려하세요.
+ **리랭커 모델 제한 사항:** 멀티모달 콘텐츠에는 리랭커 모델이 지원되지 않습니다.
+ **요약 제한:** 텍스트가 아닌 콘텐츠가 포함된 검색 응답의 요약은 지원되지 않습니다.
+ **쿼리 입력 제한:** 텍스트와 이미지를 모두 포함하는 입력은 현재 지원되지 않습니다. 텍스트 또는 이미지 쿼리를 사용할 수 있지만 둘 다 동시에 사용할 수는 없습니다.
+ **가드레일 이미지 콘텐츠 필터:** 이미지 콘텐츠 필터가 구성된 가드레일과 함께 이미지 쿼리를 사용하는 경우 입력 이미지는 가드레일에 대해 평가되며 구성된 필터 임계값을 위반하면 차단될 수 있습니다.
+ **입력 및 유형 불일치:** 기본적으로 입력은 유형이 지정되지 않은 경우 텍스트로 간주됩니다. 텍스트 이외의 양식을 사용하는 경우 올바른 유형을 지정해야 합니다.

## 일반적인 오류 및 해결 방법
<a name="kb-multimodal-common-errors"></a>

멀티모달 지식 기반에 문제가 발생하면 다음과 같은 일반적인 시나리오를 검토하세요.

**이미지 쿼리 사용 시 4xx 오류**  
**원인:** 텍스트 전용 임베딩 모델 또는 BDA 처리 지식 기반에서 이미지 쿼리를 사용하려고 시도합니다.  
**솔루션:** 이미지 쿼리 지원을 위한 지식 기반을 생성할 때 Amazon Nova 멀티모달 임베딩을 선택합니다.

**RAG는 멀티모달 콘텐츠와 함께 4xx 오류를 반환합니다.**  
**원인:** 멀티모달 콘텐츠 및 Amazon Nova 멀티모달 임베딩 모델만 포함하는 지식 기반과 `RetrieveAndGenerate` 함께 사용.  
**해결 방법:** RAG 기능에 BDA 구문 분석기를 사용하거나 지식 기반에 텍스트 콘텐츠가 포함되어 있는지 확인합니다.

**멀티모달 스토리지 대상 필수 오류**  
**원인:** 멀티모달 스토리지 대상을 구성하지 않고 Nova 멀티모달 임베딩 사용.  
**해결 방법:** Nova 멀티모달 임베딩을 사용할 때 멀티모달 스토리지 대상을 지정합니다.

**데이터 소스 및 멀티모달 스토리지는 동일한 S3 버킷을 사용합니다.**  
**원인:** 적절한 포함 접두사 없이 동일한 Amazon S3 버킷을 사용하도록 데이터 소스 및 멀티모달 스토리지 대상을 구성합니다.  
**솔루션:** 데이터 소스 및 멀티모달 스토리지에 별도의 버킷을 사용하거나 추출된 미디어 파일을 다시 수집하지 않도록 포함 접두사를 구성합니다.

**포함 접두사는 "aws/"로 시작할 수 없습니다.**  
**원인:** 데이터 소스와 멀티모달 스토리지 대상이 동일한 Amazon S3 버킷을 공유할 때 "aws/"로 시작하는 포함 접두사를 사용합니다.  
**해결 방법:** 다른 포함 접두사를 지정합니다. "aws/" 경로는 추출된 미디어 스토리지용으로 예약되어 있으며 처리된 콘텐츠를 다시 수집하지 않도록 하기 위한 포함 접두사로 사용할 수 없습니다.

**BDA 수집은 멀티모달 콘텐츠를 건너뜁니다.**  
**원인:** 지식 기반이 멀티모달 스토리지 대상 없이 생성된 후 멀티모달 콘텐츠와 함께 BDA 데이터 소스가 추가되었습니다.  
**솔루션:** 오디오, 비디오 및 이미지 파일의 BDA 처리를 활성화하도록 구성된 멀티모달 스토리지 대상으로 지식 기반을 다시 생성합니다.

**멀티모달 임베딩 모델 없이 생성된 지식 기반**  
**원인:** 지식 기반이 텍스트 전용 임베딩 모델로 생성되어 멀티모달 기능이 제한됩니다.  
**솔루션:** Nova 멀티모달 임베딩을 사용하여 새 지식 기반을 생성하여 네이티브 멀티모달 처리 및 이미지 기반 쿼리를 활성화합니다.

## Amazon S3 수명 주기 정책을 사용하여 임시 데이터 관리
<a name="kb-multimodal-lifecycle-policy"></a>

Nova 멀티모달 임베딩을 사용하는 경우 Amazon Bedrock은 임시 데이터를 멀티모달 스토리지 대상에 저장하고 처리가 완료된 후 삭제를 시도합니다. 임시 데이터 경로에 수명 주기 정책을 적용하여 제대로 만료되었는지 확인하는 것이 좋습니다.

------
#### [ Console ]

**콘솔을 사용하여 수명 주기 규칙을 생성하려면**

1. [Amazon S3 콘솔](https://console.aws.amazon.com/s3)을 엽니다.

1. 지식 기반에 대해 구성한 멀티모달 스토리지 대상으로 이동합니다.

1. **관리** 탭을 선택하고 **수명 주기 규칙 생성을** 선택합니다.

1. **수명 주기 규칙 이름**에를 입력합니다**Transient Data Deletion**.

1. **필터 유형**에서 **하나 이상의 필터를 사용하여이 규칙의 범위 제한을** 선택합니다.

1. **접두사**에 지식 기반 및 데이터 소스의 임시 데이터 경로를 입력합니다.

   다음 접두사의 자리 표시자 값을 실제 식별자로 바꿉니다.

   ```
   aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data
   ```
**중요**  
수명 주기 정책을 전체 버킷 또는 "aws/" 접두사에 적용하지 마십시오. 그러면 멀티모달 콘텐츠가 삭제되고 검색 실패가 발생합니다. 위에 표시된 특정 임시 데이터 경로만 사용합니다.

1. **수명 주기 규칙 작업**에서 **객체의 현재 버전 만료를** 선택합니다.

1. **객체 생성 후 일수**에를 입력합니다**1**.

1. **규칙 생성**을 선택합니다.

------
#### [ AWS CLI ]

**를 사용하여 수명 주기 규칙을 생성하려면 AWS CLI**

1. 다음 콘텐츠`lifecycle-policy.json`로 이름이 인 JSON 파일을 생성합니다.

   자리 표시자 값을 실제 식별자로 바꿉니다.
   + *knowledge-base-id* - 지식 기반 식별자
   + *data-source-id* - 데이터 소스 식별자

   ```
   {
       "Rules": [
           {
               "ID": "TransientDataDeletion",
               "Status": "Enabled",
               "Filter": {
                   "Prefix": "aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data"
               },
               "Expiration": {
                   "Days": 1
               }
           }
       ]
   }
   ```

1. 버킷에 수명 주기 정책을 적용합니다. *your-multimodal-storage-bucket*을 실제 버킷 이름으로 바꿉니다.

   ```
   aws s3api put-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket \
       --lifecycle-configuration file://lifecycle-policy.json
   ```

1. 수명 주기 정책이 적용되었는지 확인합니다.

   ```
   aws s3api get-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket
   ```

------

Amazon S3 수명 주기 정책에 대한 자세한 내용은 *Amazon S3 사용 설명서*[의 객체 수명 주기 관리를](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) 참조하세요.

## 성능 고려 사항
<a name="kb-multimodal-performance-considerations"></a>

멀티모달 지식 기반에서 최적의 성능을 얻으려면 다음 요소를 고려하세요.
+ **처리 시간:** 콘텐츠 변환으로 인해 BDA 처리 시간이 더 오래 걸립니다.
+ **쿼리 지연 시간:** 이미지 쿼리는 텍스트 쿼리보다 지연 시간이 길 수 있습니다.
+ **청킹 기간:** 오디오/비디오 청크 기간이 길수록 처리 시간이 늘어나지만 정확도가 향상될 수 있습니다.

# 구조화된 데이터 스토어에 연결하여 지식 기반 빌드
<a name="knowledge-base-build-structured"></a>

Amazon Bedrock Knowledge Bases를 사용하면 사전 정의된 스키마를 준수하는 데이터가 포함된 구조화된 데이터 스토어에 연결할 수 있습니다. 구조화된 데이터의 예로는 테이블과 데이터베이스가 있습니다. Amazon Bedrock Knowledge Bases는 사용자 쿼리를 지원되는 구조화된 데이터 스토어에서 데이터를 추출하는 데 적합한 언어로 변환할 수 있습니다. 그런 다음 변환된 쿼리를 사용하여 쿼리와 관련된 데이터를 검색하고 적절한 응답을 생성할 수 있습니다. 이렇게 하면 기존 정형 데이터를 다른 형식으로 변환하거나 자체 SQL 쿼리를 생성할 필요 없이 직접 사용할 수 있습니다.

지식 기반을 설정한 후 쿼리를 제출하여 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 작업을 통해 해당 지식 기반에서 데이터를 검색하거나 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 작업을 통해 검색된 데이터에서 응답을 생성할 수 있습니다. 이러한 작업은 기본적으로 사용자 쿼리를 지식 기반에 연결된 구조화된 데이터 스토어에 적합한 쿼리로 변환합니다.

[GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) API 작업을 사용하여 데이터 검색과 독립적으로 쿼리를 변환할 수도 있습니다. 이 작업은 자연어 쿼리를 쿼리 중인 데이터 소스에 적합한 SQL 쿼리로 변환합니다. 이 작업을 독립적으로 사용하고 워크플로에 삽입할 수 있습니다.

주제를 선택하여 지식 기반을 구조화된 데이터 스토어에 연결하기 위한 사전 조건 및 프로세스에 대해 알아봅니다.

**Topics**
+ [구조화된 데이터 저장소로 지식 기반을 생성하기 위한 쿼리 엔진 및 권한 설정](knowledge-base-prereq-structured.md)
+ [구조화된 데이터 저장소에 연결하여 지식 기반 생성](knowledge-base-structured-create.md)
+ [Amazon Bedrock Knowledge Bases으로 구조화 데이터 동기화](kb-data-source-structured-sync-ingest.md)

# 구조화된 데이터 저장소로 지식 기반을 생성하기 위한 쿼리 엔진 및 권한 설정
<a name="knowledge-base-prereq-structured"></a>

이 주제에서는 지식 기반을 구조화된 데이터 스토어에 연결할 때 필요한 권한을 설명합니다. Amazon Bedrock 지식 기반을 구조화된 데이터 스토어에 연결하려는 경우 사전 조건을 충족해야 합니다. 충족해야 할 일반 권한 요구 사항은 [지식 기반을 생성하고 관리할 수 있는 사용자 또는 역할에 대한 권한 설정](knowledge-base-prereq-permissions-general.md) 섹션을 참조하세요.

**중요**  
임의의 SQL 쿼리를 실행하면 모든 Text-to-SQL 애플리케이션의 보안 위험이 발생할 수 있습니다. 제한된 역할, 읽기 전용 데이터베이스, 샌드박스 사용 등 필요에 따라 예방 조치를 취하는 것이 좋습니다.

Amazon Bedrock Knowledge Bases는 데이터 저장소를 쿼리하기 위한 쿼리 엔진으로 Amazon Redshift를 사용합니다. 쿼리 엔진은 구조화된 데이터 스토어에서 메타데이터에 액세스하고 메타데이터를 사용하여 SQL 쿼리를 생성합니다. Amazon Redshift는 SQL을 사용하여 데이터 웨어하우스, 데이터베이스 및 데이터 레이크 전반의 정형 데이터를 분석하는 데이터 웨어하우스 서비스입니다.

## Amazon Redshift 쿼리 엔진 생성
<a name="kb-query-engine-setup-create"></a>

사용 사례에 따라 Amazon Redshift Serverless 또는 Amazon Redshift 프로비저닝을 사용하고 데이터 웨어하우스의 작업 그룹 또는 클러스터에 연결할 수 있습니다. Amazon Redshift 엔진이 쿼리할 수 있는 기본 데이터는 기본적으로 Amazon Redshift 클러스터에 저장된 데이터이거나 기본값 아래에 있는 데이터 AWS Glue Data Catalog (예: Amazon S3)일 수 있습니다.

쿼리 엔진을 이미 생성한 경우 이 사전 조건을 건너뛸 수 있습니다. 그렇지 않으면 다음 단계를 수행하여 Amazon Redshift 프로비저닝 또는 Amazon Redshift Serverless 쿼리 엔진을 설정합니다.

**프로비저닝된 Amazon Redshift에서 쿼리 엔진을 설정하려면**

1. Amazon Redshift 시작 안내서의 [1단계: Amazon Redshift 클러스터 단계에서 샘플 생성](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html#rs-gsg-launch-sample-cluster)의 단계를 따릅니다.

1. 클러스터 ID를 기록해 둡니다.

1. (선택 사항) Amazon Redshift 프로비저닝 클러스터에 대한 자세한 내용은 Amazon Redshift 관리 안내서의 [Amazon Redshift 프로비저닝 클러스터 항목](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)을 참고하세요.

**Amazon Redshift Serverless에서 쿼리 엔진을 설정하려면**

1. Amazon Redshift 시작 안내서의 [Amazon Redshift Serverless를 사용하여 데이터 웨어하우스 생성](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html#serverless-console-resource-creation)의 설정 절차만 따르고 기본 설정으로 구성합니다.

1. 작업 그룹 ARN을 기록해 둡니다.

1. (선택 사항) Amazon Redshift Serverless 작업 그룹에 대한 자세한 내용은 Amazon Redshift 관리 안내서의 [작업 그룹 및 네임스페이스](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-namespace.html)를 참조하세요.

## Amazon Redshift 쿼리 엔진 권한 구성
<a name="kb-query-engine-setup-redshift-permissions"></a>

선택한 Amazon Redshift 쿼리 엔진에 따라 특정 권한을 구성할 수 있습니다. 구성하는 권한은 인증 방법에 따라 다릅니다. 다음 표에는 다양한 쿼리 엔진에 사용할 수 있는 인증 방법이 나와 있습니다.


****  

| 인증 방법 | Amazon Redshift 프로비저닝 | Amazon Redshift Serverless | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | 
| 데이터베이스 사용자 이름 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-no.png)아니요 | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | 

Amazon Bedrock Knowledge Bases는 [서비스 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 사용하여 지식 기반을 구조화된 데이터 스토어에 연결하고, 이러한 데이터 스토어에서 데이터를 검색하고, 사용자 쿼리 및 데이터 스토어 구조를 기반으로 SQL 쿼리를 생성합니다.

**참고**  
 AWS Management Console 를 사용하여 지식 기반을 생성하려는 경우이 사전 조건을 건너뛸 수 있습니다. 콘솔은 적절한 권한을 가진 Amazon Bedrock Knowledge Bases 서비스 역할을 생성합니다.

적절한 권한이 있는 사용자 지정 IAM 서비스 역할을 생성하려면 [역할 생성의 단계에 따라 AWS 서비스에 권한을 위임](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)하고 [신뢰 관계](kb-permissions.md#kb-permissions-trust)에 정의된 신뢰 관계를 연결합니다.

그런 다음 지식 기반에 대한 권한을 추가하여 Amazon Redshift 쿼리 엔진 및 데이터베이스에 액세스합니다. 사용 사례에 적용되는 섹션을 확장하세요.

### 쿼리 엔진이 Amazon Redshift 프로비저닝됨
<a name="w2aac28c10c27c13c11c15b1"></a>

사용자 지정 서비스 역할에 다음 정책을 연결하여 데이터에 액세스하고 이를 사용하여 쿼리를 생성할 수 있도록 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftDataAPIStatementPermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:GetStatementResult",
                "redshift-data:DescribeStatement",
                "redshift-data:CancelStatement"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        },
        {
            "Sid": "RedshiftDataAPIExecutePermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:ExecuteStatement"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:cluster:${Cluster}"
            ]
        },
        {
            "Sid": "SqlWorkbenchAccess",
            "Effect": "Allow",
            "Action": [
                "sqlworkbench:GetSqlRecommendations",
                "sqlworkbench:PutSqlGenerationContext",
                "sqlworkbench:GetSqlGenerationContext",
                "sqlworkbench:DeleteSqlGenerationContext"
            ],
            "Resource": "*"
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery"
            ],
            "Resource": "*"
        }
    ]
}
```

------

또한 서비스 역할이 쿼리 엔진에 인증할 수 있도록 권한을 추가해야 합니다. 섹션을 확장하여 해당 메서드에 대한 권한을 확인합니다.

------
#### [ IAM ]

서비스 역할이 IAM을 사용하여 Amazon Redshift 프로비저닝된 쿼리 엔진에 인증하도록 허용하려면 사용자 지정 서비스 역할에 다음 정책을 연결합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithFederatedIAMCredentials",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentialsWithIAM",
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbname:Cluster/database"
            ]
        }
    ]
}
```

------

------
#### [ Database user ]

Amazon Redshift 데이터베이스 사용자로 인증하려면 서비스 역할에 다음 정책을 연결합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithClusterCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbuser:${cluster}/${dbuser}",
                "arn:aws:redshift:us-east-1:123456789012:dbname:${cluster}/${database}"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

서비스 역할이 AWS Secrets Manager 보안 암호를 사용하여 Amazon Redshift 프로비저닝된 쿼리 엔진에 인증하도록 허용하려면 다음을 수행합니다.
+ 다음 정책을 역할에 연결합니다.

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

### 쿼리 엔진이 Amazon Redshift Serverless인 경우
<a name="w2aac28c10c27c13c11c15b3"></a>

연결 권한은 인증 방법에 따라 다릅니다. 섹션을 확장하여 메서드에 대한 권한을 확인합니다.

------
#### [ IAM ]

서비스 역할이 IAM을 사용하여 Amazon Redshift Serverless 쿼리 엔진에 인증하도록 허용하려면 사용자 지정 서비스 역할에 다음 정책을 연결합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftServerlessGetCredentials",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/WorkgroupId"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

서비스 역할이 AWS Secrets Manager 보안 암호를 사용하여 Amazon Redshift 프로비저닝된 쿼리 엔진에 인증하도록 허용하려면 다음을 수행합니다.
+ 다음 정책을 역할에 연결합니다.

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

## 지식 기반 서비스 역할이 데이터 스토어에 액세스하도록 허용
<a name="knowledge-base-prereq-structured-db-access"></a>

데이터가 [지원되는 다음 구조화 데이터 스토어](knowledge-base-structured-create.md) 중 하나에 저장되어 있는지 확인합니다.
+ Amazon Redshift
+ AWS Glue Data Catalog (AWS Lake Formation)

다음 표에는 데이터 스토어에 따라 쿼리 엔진에 사용할 수 있는 인증 방법이 요약되어 있습니다.


****  

| 인증 방법 | Amazon Redshift | AWS Glue Data Catalog (AWS Lake Formation) | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | 
| 데이터베이스 사용자 이름 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-no.png)아니요 | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-yes.png)예 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/icon-no.png)아니요 | 

Amazon Bedrock Knowledge Bases 서비스 역할에 대한 권한을 설정하여 데이터 스토어에 액세스하고 이를 기반으로 쿼리를 생성하는 방법을 알아보려면 데이터 스토어가 있는 서비스에 해당하는 섹션을 확장합니다.

### Amazon Redshift
<a name="w2aac28c10c27c13c13c13b1"></a>

Amazon Bedrock Knowledge Bases 서비스 역할에 Amazon Redshift 데이터베이스에 대한 액세스 권한을 부여하려면 [Amazon Redshift Query Editor V2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html)를 사용하고 다음 SQL 명령을 실행합니다.

1. (IAM으로 인증하고 데이터베이스에 대해 사용자가 아직 생성되지 않은 경우) 다음 명령을 실행합니다.이 명령은 [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html)를 사용하여 데이터베이스 사용자를 생성하고 IAM을 통해 인증하도록 허용하여 *\$1\$1service-role\$1*을 생성한 사용자 지정 Amazon Bedrock Knowledge Bases 서비스 역할의 이름으로 바꿉니다.

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**중요**  
콘솔에서 생성한 Amazon Bedrock Knowledge Bases 서비스 역할을 사용한 다음 이 단계를 수행하기 전에 [데이터 스토어를 동기화](kb-data-source-structured-sync-ingest.md)하면 사용자가 자동으로 생성되지만 사용자에게 데이터 스토어에 액세스할 수 있는 권한이 부여되지 않았기 때문에 동기화가 실패합니다. 동기화하기 전에 다음 단계를 수행해야 합니다.

1. [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 명령을 실행하여 데이터베이스에서 정보를 검색할 수 있는 자격 증명 권한을 부여합니다.

------
#### [ IAM ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
   ```

------
**중요**  
`CREATE`, `UPDATE` 또는 `DELETE` 액세스 권한을 부여하지 마십시오. 이러한 작업을 허용하면 의도하지 않은 데이터 수정이 발생할 수 있습니다.

   액세스할 수 있는 테이블을 더 세밀하게 제어하기 위해 `ALL TABLES` 특정 테이블 이름을 *\$1\$1schemaName\$1**\$1\$1tableName\$1* 표기법으로 바꿀 수 있습니다. 이 표기법에 대한 자세한 내용은 [데이터베이스 간 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)의 **객체 쿼리** 섹션을 참조하세요.

------
#### [ IAM ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
   ```

------

1. Redshift 데이터베이스에서 새 스키마를 생성한 경우 다음 명령을 실행하여 새 스키마에 대한 자격 증명 권한을 부여합니다.

   ```
   GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

### AWS Glue Data Catalog
<a name="w2aac28c10c27c13c13c13b3"></a>

Amazon Bedrock 지식 기반 서비스 역할에 AWS Glue Data Catalog 데이터 스토어에 대한 액세스 권한을 부여하려면 [Amazon Redshift 쿼리 편집기 v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html)를 사용하고 다음 SQL 명령을 실행합니다.

1. [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html)를 사용하여 데이터베이스 사용자를 생성하고 IAM을 통해 인증하도록 허용하는 다음 명령을 실행하여 *\$1\$1service-role\$1*을 생성한 사용자 지정 Amazon Bedrock Knowledge Bases 서비스 역할의 이름으로 바꿉니다.

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**중요**  
콘솔에서 생성한 Amazon Bedrock Knowledge Bases 서비스 역할을 사용한 다음 이 단계를 수행하기 전에 [데이터 스토어를 동기화](kb-data-source-structured-sync-ingest.md)하면 사용자가 자동으로 생성되지만 사용자에게 데이터 스토어에 액세스할 수 있는 권한이 부여되지 않았기 때문에 동기화가 실패합니다. 동기화하기 전에 다음 단계를 수행해야 합니다.

1. 다음 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 명령을 실행하여 서비스 역할에 데이터베이스에서 정보를 검색할 수 있는 권한을 부여합니다.

   ```
   GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:${serviceRole}";
   ```
**중요**  
`CREATE`, `UPDATE` 또는 `DELETE` 액세스 권한을 부여하지 마십시오. 이러한 작업을 허용하면 의도하지 않은 데이터 수정이 발생할 수 있습니다.

1.  AWS Glue Data Catalog 데이터베이스에 대한 액세스를 허용하려면 서비스 역할에 다음 권한을 연결합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabases",
                   "glue:GetDatabase",
                   "glue:GetTables",
                   "glue:GetTable",
                   "glue:GetPartitions",
                   "glue:GetPartition",
                   "glue:SearchTables"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:123456789012:table/${DatabaseName}/${TableName}",
                   "arn:aws:glue:us-east-1:123456789012:database/${DatabaseName}",
                   "arn:aws:glue:us-east-1:123456789012:catalog"
               ]
           }
       ]
   }
   ```

------

1. 다음을 수행하여를 통해 서비스 역할에 권한을 부여합니다 AWS Lake Formation ( Lake Formation 및 Amazon Redshift와의 관계에 대한 자세한 내용은 [Redshift용 데이터 소스](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source.html) 참조).

   1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) Lake Formation 콘솔을 엽니다.

   1. 왼쪽 탐색 창에서 **데이터 권한을** 선택합니다.

   1. Amazon Bedrock Knowledge Bases에 사용 중인 서비스 역할에 권한을 부여합니다.

   1. 데이터베이스 및 테이블에 대한 **설명** 및 **선택** 권한을 부여합니다.

1. 에서 사용하는 데이터 소스에 따라 해당 데이터 소스에 액세스할 수 있는 권한을 추가해야 할 AWS Glue Data Catalog수 있습니다(자세한 내용은 [AWS Glue 다른에 대한 종속성 AWS 서비스](https://docs.aws.amazon.com/glue/latest/dg/dependency-on-other-services.html) 참조). 예를 들어 데이터 소스가 Amazon S3 위치에 있는 경우 위의 정책에 다음 문을 추가해야 합니다.

   ```
   {
       "Sid": "Statement1",
       "Effect": "Allow",
       "Action": [
           "s3:ListBucket",
           "s3:GetObject"
       ],
       "Resource": [
           "arn:aws:s3:::${BucketName}",
           "arn:aws:s3:::${BucketName}/*"
       ]
   }
   ```

1. (선택 사항) AWS KMS 를 사용하여 Amazon S3 또는의 데이터를 암호화하는 경우 KMS 키의 데이터를 해독할 수 있는 권한을 역할에 추가 AWS Glue Data Catalog해야 합니다.

   ```
   {
       "Action": [
           "kms:Decrypt"
       ],
       "Resource": [
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}",
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}"
       ],
       "Effect": "Allow"
   }
   ```

# 구조화된 데이터 저장소에 연결하여 지식 기반 생성
<a name="knowledge-base-structured-create"></a>

지식 기반을 구조화된 데이터 스토어에 연결하려면 다음 구성 요소를 지정합니다.
+ 

**쿼리 엔진 구성**  
생성된 SQL 쿼리를 실행할 컴퓨팅 서비스의 구성입니다. 쿼리 엔진은 자연어 사용자 쿼리를 데이터 스토어에서 데이터를 추출하는 데 사용할 수 있는 SQL 쿼리로 변환하는 데 사용됩니다. Amazon Redshift를 쿼리 엔진으로 선택할 수 있습니다. 이 구성을 선택할 때 다음을 지정해야 합니다.
  + 선택한 쿼리 엔진에 따라 클러스터 ID 또는 작업 그룹 ARN과 같은 컴퓨팅 연결 메타데이터입니다.
  + 적절한 권한이 있는 IAM 서비스 역할, 쿼리 엔진 데이터베이스 사용자 또는 데이터베이스 자격 증명에 연결된 AWS Secrets Manager 보안 암호를 사용할 수 있는 쿼리 엔진을 사용하기 위한 인증 방법입니다.
+ 

**스토리지 구성**  
데이터가 포함된 데이터 저장소의 구성입니다. Amazon Redshift Provisioned 또는 Amazon Redshift Serverless에 연결하고 Amazon Redshift 또는를 데이터 스토어 AWS Glue Data Catalog 로 사용할 수 있습니다.
+ 

**(선택 사항) 쿼리 구성**  
SQL 생성의 정확도를 높이기 위해 선택적 쿼리 구성을 사용할 수 있습니다.
  + **최대 쿼리 시간** - 쿼리 시간이 초과되는 기간입니다.
  + **설명** - 테이블 또는 열에 대한 메타데이터 또는 보충 정보를 제공합니다. 테이블 또는 열에 대한 설명, 사용 메모 또는 기타 추가 속성을 포함할 수 있습니다. 설명을 추가하면 테이블 또는 열 구조에 대한 추가 컨텍스트와 정보를 제공하여 SQL 쿼리 생성을 개선할 수 있습니다.
  + **포함 사항 및 제외 사항** - SQL 생성에서 포함하거나 제외할 테이블 또는 열 세트를 지정합니다. 이 필드는 SQL 쿼리의 범위를 사용 가능한 테이블 또는 열의 정의된 하위 집합으로 제한하려는 경우에 중요합니다. 이 옵션을 사용하면 불필요한 테이블 또는 열 참조를 줄여 생성 프로세스를 최적화할 수 있습니다.

    포함 사항을 지정하면 다른 모든 테이블과 열은 무시됩니다. 제외 사항을 지정하면 지정한 테이블과 열이 무시됩니다.
**참고**  
포함 사항 및 제외 사항은 가드레일을 대체하지 않으며 모델 정확도를 개선하기 위한 용도로만 사용됩니다.
  + **큐레이트된 쿼리** - 사전 정의된 질문 및 답변 예시 세트입니다. 질문은 자연어 쿼리(NLQ)로 작성되며 답변은 해당 SQL 쿼리입니다. 이러한 예시는 생성되어야 하는 쿼리 유형의 예를 제공하여 SQL 생성 프로세스에 도움이 됩니다. 이는 생성형 SQL 출력의 정확성과 관련성을 개선하기 위한 참조점 역할을 합니다.

해당하는 사용 사례의 섹션을 확장해 내용을 살펴보세요.

## 콘솔을 사용합니다.
<a name="knowledge-base-structured-create-console"></a>

를 사용하여 구조화된 데이터 스토어에 연결하려면 다음을 AWS Management Console수행합니다.

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 **생성**을 선택한 다음 **구조화된 데이터 스토어가 있는 지식 기반**을 선택합니다.

1. 지식 기반에 대해 다음 세부 정보를 설정합니다.

   1. (선택 사항) 지식 기반의 기본 이름을 변경하고 설명을 제공합니다.

   1. 데이터 스토어에서 데이터를 검색하는 데 사용할 쿼리 엔진을 선택합니다.

   1. 이 지식 기반을 생성하고 관리할 수 있는 적절한 권한이 있는 IAM 서비스 역할을 선택합니다. Amazon Bedrock이 서비스 역할을 만들도록 하거나 이전에 만든 사용자 지정 역할을 선택할 수 있습니다. 사용자 지정 역할 만들기에 대한 자세한 내용은 [구조화된 데이터 저장소로 지식 기반을 생성하기 위한 쿼리 엔진 및 권한 설정](knowledge-base-prereq-structured.md) 섹션을 참조하세요.

   1. (선택 사항) 지식 기반과 연결할 태그를 추가합니다. 자세한 내용은 [Amazon Bedrock 리소스 태그 지정](tagging.md) 단원을 참조하십시오.

   1. **다음**을 선택합니다.

1. 쿼리 엔진을 구성합니다.

   1. 클러스터 또는 작업 그룹을 생성한 서비스를 선택합니다. 그런 다음 사용할 클러스터나 작업 그룹을 선택합니다.

   1. 인증 방법을 선택하고 필요한 필드를 제공합니다.

   1. 메타데이터를 저장할 데이터 스토어를 선택합니다. 그런 다음 데이터베이스 이름을 선택하거나 입력합니다.

   1. (선택 사항) 필요에 따라 쿼리 구성을 수정합니다. 다양한 구성에 대한 자세한 내용은이 주제의 시작 부분을 참조하세요.

   1. **다음**을 선택합니다.

1. 지식 기반 구성을 검토하고 필요에 따라 섹션을 편집합니다. 지식 기반을 생성하도록 확인합니다.

## API 사용
<a name="knowledge-base-structured-create-api"></a>

Amazon Bedrock API를 사용하여 구조화된 데이터 스토어에 연결하려면 다음 일반 요청 본문을 사용하여 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)로 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 요청을 보냅니다.

```
{
    "name": "string",
    "roleArn": "string",
    "knowledgeBaseConfiguration": {
        "type": "SQL",
        "sqlKnowledgeBaseConfiguration": [SqlKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SqlKnowledgeBaseConfiguration.html)
    },
    "description": "string",
    "clientToken": "string",
    "tags": {
        "string": "string"
    }
}
```

필수 필드는 다음과 같습니다.


****  

| Field | 기본 설명 | 
| --- | --- | 
| 이름 | 지식 기반 이름 | 
| roleArn | 적절한 권한이 있는 [지식 기반 서비스 역할](kb-permissions.md)입니다. 콘솔을 사용하여 적절한 권한이 있는 서비스 역할을 자동으로 생성할 수 있습니다. | 
| knowledgeBaseConfiguration | 지식 기반에 대한 구성을 포함합니다. 구조화된 데이터베이스의 경우 SQL을 type으로 지정하고 sqlKnowledgeBaseConfiguration 필드를 포함합니다. | 

다음 필드는 선택 사항입니다.


****  

| Field | 사용 | 
| --- | --- | 
| description | 지식 기반에 대한 설명을 포함합니다. | 
| clientToken | API 요청이 한 번만 완료되도록 합니다. 자세한 내용은 [멱등성 보장하기](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)를 참조하세요. | 
| tags | 태그를 흐름에 연결합니다. 자세한 내용은 [Amazon Bedrock 리소스 태그 지정](tagging.md) 단원을 참조하십시오. | 

는 사용하는 쿼리 엔진에 `SQLKnowledgeBaseConfiguration` 따라 달라집니다. Amazon Redshift의 경우 `type` 필드를 `REDSHIFT`로 지정하고 [RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html)에 매핑되는 `redshiftConfiguration` 필드를 포함합니다. [RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html)의 경우 다음 필드를 구성합니다.

### queryEngineConfiguration
<a name="w2aac28c10c27c15b9b3c17b1"></a>

다음과 같은 유형의 쿼리 엔진을 구성할 수 있습니다.

#### Amazon Redshift 프로비저닝
<a name="w2aac28c10c27c15b9b3c17b1b5b1"></a>

Amazon Redshift 데이터베이스가 전용 컴퓨팅 노드에 프로비저닝된 경우 `queryEngineConfiguration` 필드 값은 다음 형식의 [RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html)이어야 합니다.

```
{
    "type": "PROVISIONED",
    "provisionedConfiguration": {
        "clusterIdentifier": "string",
        "authConfiguration": [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)
    },
}
```

`clusterIdentifier` 필드에 클러스터의 ID를 지정합니다. [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)은 사용 중인 권한 부여 유형에 따라 다릅니다. 권한 부여 방법과 일치하는 탭을 선택합니다.

------
#### [ IAM role ]

IAM 역할로 권한을 부여하는 경우 추가 필드 없이 [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)의 유형으로만 `IAM`을 지정해야 합니다.

```
{
    "type": "IAM"
}
```

------
#### [ Temporary credentials user name ]

데이터베이스 사용자 이름으로 권한을 부여하는 경우 `type`을 `USERNAME`으로 지정하고 `RedshiftProvisionedAuthConfig`의 `databaseUser` 필드에 사용자 이름을 지정합니다.

```
{
    "type": "USERNAME",
    "databaseUser": "string"
}
```

------
#### [ AWS Secrets Manager ]

로 권한을 부여하는 경우 AWS Secrets Manager를 `type`로 지정`USERNAME_PASSWORD`하고의 `usernamePasswordSecretArn` 필드에 보안 암호의 ARN을 지정합니다`RedshiftProvisionedAuthConfig`.

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

#### Amazon Redshift Serverless
<a name="w2aac28c10c27c15b9b3c17b1b5b3"></a>

Amazon Redshift Serverless를 사용하는 경우 `queryConfiguration` 필드 값은 다음 형식의 [RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html)이어야 합니다.

```
{
    "type": "SERVERLESS",
    "serverlessConfiguration": {
        "workgroupArn": "string",
        "authConfiguration": 
    }
}
```

`workgroupArn` 필드에 작업 그룹의 ARN을 지정합니다. [RedshiftServerlessAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftServerlessAuthConfiguration.html)은 사용 중인 권한 부여 유형에 따라 달라집니다. 권한 부여 방법과 일치하는 탭을 선택합니다.

------
#### [ IAM role ]

IAM 역할로 권한을 부여하는 경우 추가 필드가 없는 `RedshiftServerlessAuthConfiguration`의 유형으로만 `IAM`을 지정해야 합니다.

```
{
    "type": "IAM"
}
```

------
#### [ AWS Secrets Manager ]

로 권한을 부여하는 경우 AWS Secrets Manager를 `type`로 지정`USERNAME_PASSWORD`하고의 `usernamePasswordSecretArn` 필드에 보안 암호의 ARN을 지정합니다`RedshiftServerlessAuthConfiguration`.

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

### storageConfigurations
<a name="w2aac28c10c27c15b9b3c17b3"></a>

이 필드는 데이터가 저장되는 위치에 따라 형식이 달라지는 단일 [RedshiftQueryEngineStorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineStorageConfiguration.html)이 포함된 배열에 매핑됩니다.

#### AWS Glue Data Catalog
<a name="w2aac28c10c27c15b9b3c17b3b5b1"></a>

데이터가에 저장되어 있는 경우 AWS Glue Data Catalog는 다음 형식이어야 `RedshiftQueryEngineStorageConfiguration` 합니다.

```
{
    "type": "AWS_DATA_CATALOG",
    "awsDataCatalogConfiguration": {
        "tableNames": ["string"]
    }
}
```

지식 기반을 연결하려는 각 테이블의 이름을 `tableNames` 매핑되는 배열에 추가합니다.

**참고**  
[데이터베이스 간 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)(`${databaseName}.${tableName}`)에 설명된 패턴으로 테이블 이름을 입력합니다. `${databaseName.*}`을 지정하여 모든 테이블을 포함할 수 있습니다.

#### Amazon Redshift 데이터베이스
<a name="w2aac28c10c27c15b9b3c17b3b5b3"></a>

데이터가 Amazon Redshift 데이터베이스에 저장되는 경우 `RedshiftQueryEngineStorageConfiguration`은 다음 형식이어야 합니다.

```
{
    "type": "string",
    "redshiftConfiguration": {
        "databaseName": "string"
    }
}
```

`databaseName` 필드에 Amazon Redshift 데이터베이스의 이름을 지정합니다.

**참고**  
[데이터베이스 간 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)(`${databaseName}.${tableName}`)에 설명된 패턴으로 테이블 이름을 입력합니다. `${databaseName.*}`을 지정하여 모든 테이블을 포함할 수 있습니다.

Amazon SageMaker AI Lakehouse를 통해 데이터베이스를 탑재하는 경우 데이터베이스 이름은 *\$1\$1db\$1@\$1\$1schema\$1* 형식입니다.

### queryGenerationConfiguration
<a name="w2aac28c10c27c15b9b3c17b5"></a>

이 필드는 데이터 쿼리 방법을 구성하는 데 사용할 수 있는 다음 [QueryGenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationConfiguration.html)에 매핑됩니다.

```
{
    "executionTimeoutSeconds": number,
    "generationContext": {
        "tables": [
            {
                "name": "string",
                "description": "string",
                "inclusion": "string",
                "columns": [
                    {
                        "name": "string",
                        "description": "string",
                        "inclusion": "string"
                    },
                    ...
                ]
            },
            ...
        ],
        "curatedQueries": [
            {
                "naturalLanguage": "string",
                "sql": "string"
            },
            ...
        ]
    }
}
```

쿼리가 시간 초과되도록 하려면 `executionTimeoutSeconds` 필드에 시간 초과 기간을 초 단위로 지정합니다.

`generationContext` 필드는 필요한 만큼 다음 옵션을 구성할 수 있는 [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html) 객체에 매핑됩니다.

**중요**  
생성 컨텍스트를 포함하는 경우 쿼리 엔진은 SQL을 생성할 때 이를 적용하기 위해 최선을 다합니다. 생성 컨텍스트는 비결정적이며 모델 정확도를 개선하기 위한 용도로만 사용됩니다. 정확성을 보장하려면 생성된 SQL 쿼리를 확인합니다.

포함할 수 있는 생성 컨텍스트에 대한 자세한 내용은 다음 섹션을 확장하세요.

#### 데이터베이스의 테이블 또는 열에 대한 설명 추가
<a name="w2aac28c10c27c15b9b3c17b5c15b1"></a>

데이터베이스 쿼리를 위한 SQL 생성의 정확도를 높이기 위해 짧은 테이블 또는 열 이름보다 더 많은 컨텍스트를 제공하는 테이블 또는 열에 대한 설명을 제공할 수 있습니다. 다음을 수행할 수 있습니다.
+ 테이블에 대한 설명을 추가하려면 `tables` 배열에 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 객체를 포함합니다. 다음 예제와 같이 해당 객체에서 `name` 필드에 테이블의 이름을 지정하고 `description` 필드에 설명을 지정합니다.

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A"
  }
  ```
+ 열에 대한 설명을 추가하려면 `tables` 배열에 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 객체를 포함합니다. 해당 객체에서 `name` 필드에 테이블 이름을 지정하고 [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html)의 배열에 매핑되는 `columns` 필드를 포함합니다. `QueryGenerationColumn` 객체에는 다음 예제와 같이 `name` 필드에 열의 이름과 `description` 필드에 설명을 포함합니다.

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "Column A",
              "description": "Description for Column A"
          }
      ]
  }
  ```
+ 다음 예제와 같이 테이블과 테이블의 열에 대한 설명을 추가할 수 있습니다.

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A",
      "columns": [
          {
              "name": "columnA",
              "description": "Description for Column A"
          }
      ]
  }
  ```
**참고**  
[데이터베이스 간 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)에 설명된 패턴에 테이블 및 열 이름을 입력합니다. 데이터베이스가에 있는 경우 AWS Glue Data Catalog형식은 입니다`awsdatacatalog.gluedatabase.table`.

#### 데이터베이스에 테이블 또는 열 포함 또는 제외
<a name="w2aac28c10c27c15b9b3c17b5c15b3"></a>

[QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 및 [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html) 객체의 `inclusion` 필드를 사용하여 SQL을 생성할 때 포함하거나 제외할 테이블 또는 열을 제안할 수 있습니다. `inclusion` 필드에서 다음 값 중 하나를 지정할 수 있습니다.
+ INCLUDE - SQL을 생성할 때 지정한 테이블 또는 열만 컨텍스트로 포함됩니다.
+ EXCLUDE - 지정한 테이블 또는 열은 SQL을 생성할 때 컨텍스트로 제외됩니다.

다음과 같은 방법으로 테이블 또는 열을 포함할지 또는 제외할지 지정할 수 있습니다.
+ 테이블을 포함하거나 제외하려면 `tables` 배열에 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 객체를 포함합니다. 다음 예제와 `inclusion` 같이 해당 객체에서 `name` 필드에 테이블의 이름과 필드에 테이블을 포함할지 또는 제외할지 지정합니다.

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "EXCLUDE"
  }
  ```

  쿼리 엔진은 SQL 생성을 위한 추가 컨텍스트에 `Table A`를 추가하지 않습니다.
+ 열을 포함하거나 제외하려면 `tables` 배열에 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 객체를 포함합니다. 해당 객체에서 `name` 필드에 테이블 이름을 지정하고 [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html)의 배열에 매핑되는 `columns` 필드를 포함합니다. 다음 예제와 같이 `QueryGenerationColumn` 객체에서 `name` 필드에 열의 이름과 `inclusion` 필드에 열 이름을 포함할지 또는 제외할지 여부를 포함합니다.

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  SQL 생성은 SQL 생성 시 컨텍스트에서 `Table A`의 `Column A`를 무시합니다.
+ 다음 예제와 같이 포함 또는 제외를 지정할 때 테이블과 열을 결합할 수 있습니다.

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "INCLUDE",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  SQL 생성에는 `Table A`가 포함되지만 SQL 생성을 위한 컨텍스트를 추가할 때는 `Column A` 내에서 제외됩니다.

**중요**  
테이블 및 열 제외는 가드레일을 대체하지 않습니다. 이러한 테이블 및 열 포함 및 제외는 SQL을 생성할 때 모델이 고려해야 할 추가 컨텍스트로 사용됩니다.

#### 쿼리 엔진에 SQL 쿼리에 대한 자연어 매핑 예제 제공
<a name="w2aac28c10c27c15b9b3c17b5c15b5"></a>

쿼리 엔진이 사용자 쿼리를 SQL 쿼리로 변환하는 정확도를 높이려면 [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html) 객체의 `curatedQueries` 필드에 예제를 제공할 수 있습니다.이 예제는 [CuratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CuratedQuery.html) 객체 배열에 매핑됩니다. 각 객체는 다음 필드를 포함합니다.
+ naturalLanguage - 자연어 쿼리의 예입니다.
+ sql - 자연어 쿼리에 해당하는 SQL 쿼리입니다.

# Amazon Bedrock Knowledge Bases으로 구조화 데이터 동기화
<a name="kb-data-source-structured-sync-ingest"></a>

지식 기반을 구조화된 데이터 스토어에 연결한 후 동기화를 수행하여 데이터를 검색할 수 있도록 메타데이터 수집 프로세스를 시작합니다. 메타데이터를 통해 Amazon Bedrock Knowledge Bases는 사용자 프롬프트를 연결된 데이터베이스에 대한 쿼리로 변환할 수 있습니다.

데이터베이스 스키마를 수정할 때마다 변경 사항을 동기화해야 합니다.

메타데이터를 지식 기반에 수집하고 최신 데이터와 동기화하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

**데이터를 지식 기반에 수집하고 최신 데이터와 동기화하는 방법**

1. 그 다음 [https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **데이터 소스** 섹션에서 **동기화**를 선택하여 메타데이터 수집 프로세스를 시작합니다. 현재 진행 중인 데이터 소스 동기화를 중지하려면 **중지**를 선택합니다. 데이터 소스 동기화를 중지하려면 데이터 소스가 현재 동기화 중이어야 합니다. **동기화**를 다시 선택하여 나머지 데이터를 수집할 수 있습니다.

1. 데이터 수집이 완료되면 녹색 성공 배너가 나타납니다.

1. 데이터 소스를 선택하여 **동기화 기록**을 볼 수 있습니다. **경고 보기**를 선택하여 데이터 수집 작업이 실패한 이유를 확인합니다.

------
#### [ API ]

데이터를 지식 기반에 수집하고 최신 데이터와 동기화하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 요청을 전송합니다.

[Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 요청의 응답에서 반환된 `ingestionJobId`를 사용해 수집 작업의 상태를 추적합니다.

[Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 요청을 전송해 데이터 소스의 모든 수집 작업에 대한 정보를 볼 수 있습니다.

현재 실행 중인 데이터 수집 작업을 중지하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [StopIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) 요청을 보냅니다. 준비가 되면 `StartIngestionJob` 요청을 다시 보내 나머지 데이터를 수집할 수 있습니다.

------

**중요**  
콘솔에서 생성한 Amazon Bedrock Knowledge Bases 서비스 역할을 사용한 다음 사용하는 인증 역할에 데이터베이스에 대한 액세스 권한을 부여하기 전에 데이터 스토어를 동기화하면 사용자에게 데이터 스토어에 대한 액세스 권한이 부여되지 않았기 때문에 동기화가 실패합니다. 데이터 스토어에 액세스할 수 있는 권한을 역할에 부여하는 방법에 대한 자세한 내용은 [지식 기반 서비스 역할이 데이터 스토어에 액세스하도록 허용](knowledge-base-prereq-structured.md#knowledge-base-prereq-structured-db-access) 섹션을 참조하세요.

# Amazon Kendra GenAI 인덱스를 사용하여 Amazon Bedrock Knowledge Bases 구축
<a name="knowledge-base-build-kendra-genai-index"></a>

Amazon Bedrock Knowledge Bases를 사용하면 Amazon Kendra GenAI 인덱스에서 지식 기반을 구축하여 보다 정교하고 정확한 검색 증강 생성(RAG) 기반 디지털 어시스턴트를 생성할 수 있습니다. Amazon Kendra GenAI 인덱스를 Amazon Bedrock Knowledge Bases와 결합하여 다음을 수행할 수 있습니다.
+ 인덱스를 다시 빌드하거나 데이터를 다시 수집하지 않고 여러 Amazon Bedrock 애플리케이션에서 인덱싱된 콘텐츠를 재사용합니다.
+ Amazon Kendra의 고정밀 정보 검색을 활용하면서 Amazon Bedrock의 고급 GenAI 기능을 활용합니다.
+ Amazon Kendra GenAI 인덱스의 의미 정확도를 유지하면서 Amazon Bedrock의 도구를 사용하여 디지털 어시스턴트의 동작을 사용자 지정합니다.

Amazon Kendra GenAI 인덱스 사용에 대한 자세한 내용은 *Amazon Kendra 개발자 안내서*의 [Amazon Kendra GenAI 인덱스](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index) 섹션을 참조하세요.

**Topics**
+ [Amazon Kendra GenAI 인덱스를 사용하여 Amazon Bedrock Knowledge Base 생성](knowledge-base-kendra-genai-index-create.md)

# Amazon Kendra GenAI 인덱스를 사용하여 Amazon Bedrock Knowledge Base 생성
<a name="knowledge-base-kendra-genai-index-create"></a>

 Amazon Kendra GenAI 인덱스 사용에 대한 자세한 내용은 *Amazon Kendra 개발자 안내서*의 [Amazon Kendra GenAI 인덱스](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index) 섹션을 참조하세요.

Amazon Bedrock 콘솔 또는 Amazon Bedrock API를 사용하여 Amazon Kendra GenAI 인덱스로 Amazon Bedrock 지식 기반을 생성할 수 있습니다. 원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

**참고**  
루트 사용자로는 지식 기반을 생성할 수 없습니다. 시작하기 전에 AWS Identity and Access Management (IAM) 사용자로 로그인합니다.

**중요**  
API를 사용하여 Amazon Kendra GenAI 인덱스로 지식 기반을 생성하려면 기존 인덱스가 있어야 합니다. API를 사용하면 지식 기반을 생성하는 동안 인덱스를 생성할 수 없습니다. 지식 기반을 생성하는 동안 인덱스를 생성하려면 콘솔을 사용해야 합니다.

------
#### [ Console ]

**Amazon Kendra GenAI 인덱스를 사용하여 지식 기반을 생성하려면**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 **만들기**를 선택합니다.

1. **Kendra GenAI 인덱스가 포함된 지식 기반**을 선택합니다.

1. (선택 사항) **지식 기반 세부 정보** 섹션에서 지식 기반의 기본 이름을 변경하고 설명을 제공합니다.

1. **IAM 권한** 섹션에서 다른 필수 AWS 서비스에 액세스할 수 있는 권한을 Amazon Bedrock에 제공하는 IAM 역할을 선택합니다. Amazon Bedrock이 서비스 역할을 만들도록 하거나 [생성한 사용자 지정 역할](kb-permissions.md)을 선택할 수 있습니다.

1. **새 서비스 역할을 생성**하거나 **기존 서비스 역할을 사용**할 수 있습니다.

1. **새 Amazon Kendra GenAI 인덱스를 생성**하거나 **기존 Amazon Kendra GenAI 인덱스**를 사용하도록 선택합니다.

1. (선택 사항) **추가 구성**에서 다음을 수행합니다.
   + 지식 기반을 암호화하도록 AWS Key Management Service (AWS KMS) 고객 관리형 키를 구성합니다.
   + 지식 기반에 태그를 추가합니다. 자세한 내용은 [Amazon Bedrock 리소스 태그 지정](tagging.md) 단원을 참조하십시오.

   

   

1. **지식 기반 생성**을 선택합니다. Amazon Bedrock이 지식 기반을 생성하는 동안 **진행 중** 상태가 표시됩니다. 데이터 소스를 추가하고 동기화하려면 생성이 완료될 때까지 기다려야 합니다.

1. Amazon Bedrock이 지식 기반 생성을 완료한 후 데이터 소스를 구성하려면 [데이터 소스를 지식 기반에 연결](data-source-connectors.md)의 지침을 따릅니다.

------
#### [ API ]

**Amazon Kendra GenAI 인덱스를 사용하여 지식 기반을 생성하려면**

지식 기반을 만들려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 요청(요청 및 응답 형식과 필드 세부 정보는 링크 참조)을 전송합니다.
+ `roleArn` 필드에 Amazon Bedrock 지식 기반을 생성할 권한이 있는 IAM 역할의 Amazon 리소스 이름(ARN)을 입력합니다.
+ 지식 기반에 지원되는 모델을 사용하려면 [모델 액세스를 활성화](model-access.md)해야 합니다. 데이터를 벡터 임베딩으로 변환하는 데 필요한 모델의 ARN을 기록해 둡니다. 지식 기반을 위해 선택한 모델의 모델(리소스) ID를 복사합니다. 그런 다음 *서비스 승인 참조*의 [Amazon Bedrock에서 정의한 리소스 유형](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies)에 제공된 ARN 예제에 따라 모델 ID를 사용하여 모델 ARN을 구성합니다. 모델 리소스 유형의 예를 참조하세요.

  `knowledgeBaseConfiguration` 객체의 `embeddingModelArn` 필드에서 사용할 벡터 임베딩 모델의 ARN을 제공합니다. 자세한 내용은 [Amazon Bedrock 지식 기반에서 지원되는 모델과 리전](knowledge-base-supported.md) 단원을 참조하십시오.
+ Amazon Kendra GenAI 인덱스로 지식 기반을 생성하려면 Amazon Kendra GenAI 인덱스의 ARN을 제공합니다 
+ 지식 기반을 만든 후 지식 기반에 대한 문서 또는 콘텐츠가 포함된 데이터 소스를 만듭니다. Amazon Bedrock API 작업을 사용하여 데이터 소스를 생성할 수 없습니다. Amazon Bedrock 콘솔 또는 Amazon Kendra [ CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API 작업을 사용하여 이를 수행해야 합니다. 데이터 소스 선택에 대한 자세한 내용과 API 연결 구성 예제는 [데이터 소스를 지식 기반에 연결](data-source-connectors.md) 섹션을 참조하세요.

------

# Amazon Neptune Analytics의 그래프를 사용하여 지식 기반 구축
<a name="knowledge-base-build-graphs"></a>

Amazon Bedrock Knowledge Bases는 Amazon Neptune을 통해 완전 관리형 GraphRAG 기능을 제공합니다. GraphRAG는 그래프 모델링과 생성형 AI를 결합하여 검색 증강 생성(RAG)을 개선하는 Amazon Bedrock Knowledge Bases와 함께 제공되는 기능입니다. 이 기능은 벡터 검색과 RAG 애플리케이션에서 Amazon Neptune의 대량 그래프 데이터를 빠르게 분석할 수 있는 기능을 결합합니다.

GraphRAG는 지식 기반에 수집된 문서 내에서 개체와 구조 요소 간의 관계를 자동으로 식별하고 활용합니다. 이렇게 하면 특히 여러 논리적 단계를 통해 정보를 연결해야 하는 경우 파운데이션 모델의 보다 포괄적이고 컨텍스트와 관련된 응답이 가능합니다. 즉, 생성형 AI 애플리케이션은 여러 문서 청크에 걸쳐 데이터와 추론을 연결해야 하는 경우 보다 관련성이 높은 응답을 제공할 수 있습니다. 이를 통해 챗봇과 같은 애플리케이션이 여러 문서 소스에서 파생된 관련 사실, 엔터티 및 관계가 질문에 답변해야 하는 경우 파운데이션 모델(FM)에서 더 관련성이 높은 응답을 제공할 수 있습니다

## GraphRAG 리전 가용성
<a name="knowledge-base-build-graphs-regions"></a>

GraphRAG는 다음 AWS 리전에서 사용 가능합니다.
+ 유럽(프랑크푸르트)
+ 유럽(런던)
+ 유럽(아일랜드)
+ 미국 서부(오리건)
+ 미국 동부(버지니아 북부)
+ 아시아 태평양(도쿄)
+ 아시아 태평양(싱가포르)

## GraphRAG 사용의 이점
<a name="knowledge-base-build-graphs-benefits"></a>

GraphRAG를 사용하는 Amazon Bedrock Knowledge Bases는 다음과 같은 이점을 제공합니다.
+ Amazon Bedrock Knowledge Bases에 수집된 여러 문서 소스에서 엔터티와 구조 요소(예: 섹션 제목) 간의 관계를 자동으로 식별하고 활용하여 보다 관련성이 높고 포괄적인 응답을 제공합니다.
+ 여러 논리적 단계를 통해 다양한 콘텐츠를 연결하는 포괄적인 검색을 수행하여 기존 RAG 기술을 개선하는 기능이 향상되었습니다.
+ 문서 간 추론 기능을 개선하여 다양한 소스의 정보를 연결하여 보다 정확하고 상황에 맞는 답변을 제공할 수 있으므로 정확도를 더욱 높이고 할루시네이션을 최소화할 수 있습니다.

## GraphRAG 작동 방식
<a name="knowledge-base-build-graphs-works"></a>

관련 노드에 대한 초기 벡터 검색을 수행한 후 Amazon Bedrock Knowledge Bases GraphRAG는 다음 단계를 수행하여 더 나은 응답을 생성합니다.

1. 검색된 문서 청크에 연결된 관련 그래프 노드 또는 청크 식별자를 검색합니다.

1. 그래프를 통과하고 그래프 데이터베이스에서 세부 정보를 검색하여 이러한 관련 청크를 확장합니다.

1. 이 강화된 컨텍스트를 사용하여 관련 엔터티를 이해하고 주요 연결에 집중하여 보다 의미 있는 응답을 제공합니다.

## GraphRAG 고려 사항 및 제한 사항
<a name="knowledge-base-build-graphs-considerations"></a>

다음은 GraphRAG와 함께 Amazon Bedrock Knowledge Bases를 사용할 때의 몇 가지 제한 사항입니다
+ 그래프 빌드를 사용자 지정하는 구성 옵션은 지원되지 않습니다.
+ Amazon Neptune Analytics 그래프에는 AutoScaling이 지원되지 않습니다.
+ GraphRAG는 Amazon S3만 데이터 소스로 지원합니다.
+ Claude 3 Haiku는 지식 기반에 대한 그래프를 자동으로 빌드하는 파운데이션 모델로 선택됩니다. 이렇게 하면 컨텍스트 보강이 자동으로 활성화됩니다.
+ 각 데이터 소스에는 최대 1,000개의 파일이 있을 수 있습니다. 이 제한을 데이터 소스당 최대 10,000개의 파일로 늘리도록 요청할 수 있습니다. 또는 Amazon S3 버킷을 폴더로 분할하여 각 폴더에 최대 1,000개의 파일을 포함할 수 있습니다.
+ 계층적 청킹을 청킹 전략으로 사용하는 경우 GraphRAG는 검색 작업 중에 하위 청크만 검색합니다. 하위 청크를 해당 상위 청크로 대체하지 않습니다. 즉, 검색 결과에는 상위 청크의 광범위한 컨텍스트가 아닌 하위 청크의 구체적이고 상세한 콘텐츠가 포함됩니다.

**참고**  
Amazon Neptune Analytics를 사용하는 지식 기반을 삭제할 때는 먼저 지식 기반을 삭제한 다음 Amazon Neptune Analytics 그래프를 삭제합니다. 지식 기반을 삭제해도 기본 그래프는 자동으로 삭제되지 않습니다. 그래프를 명시적으로 삭제할 때까지 추가 요금이 발생할 수 있습니다. 또는 데이터 소스 삭제 정책을 RETAIN 모드로 설정하여 실패를 일으키지 않고 그래프를 먼저 삭제합니다. 자세한 내용은 [Amazon Bedrock Knowledge Bases에서 데이터 소스 삭제](kb-ds-delete.md) 단원을 참조하십시오.

# Amazon Neptune Analytics 그래프를 사용하여 Amazon Bedrock Knowledge Bases 생성
<a name="knowledge-base-build-graphs-build"></a>

GraphRAG는 Amazon Bedrock Knowledge Bases에 완전히 통합되며 그래프 및 벡터 스토리지에 Amazon Neptune Analytics를 사용합니다. AWS Management Console, AWS CLI또는 AWS SDK를 사용하여 지식 기반에서 GraphRAG 사용을 시작할 수 있습니다.

GraphRAG 사용을 시작하는 데 기존 그래프 인프라가 필요하지 않습니다. Amazon Bedrock Knowledge Bases는 Amazon Neptune에서 그래프의 생성 및 유지 관리를 자동으로 관리합니다. 시스템은 Amazon S3 버킷에 업로드한 문서에서 엔터티, 사실 및 관계를 추출하여 그래프를 자동으로 생성하고 업데이트합니다. 따라서 그래프 모델링에 대한 사전 지식 없이 최종 사용자에게 관련 응답을 제공할 수 있습니다. 그래프는 Amazon Neptune Analytics에 저장됩니다.

지식 기반을 생성할 때 다음을 설정하거나 지정합니다.
+ 지식 기반을 정의하고 식별하는 일반 정보입니다.
+ 지식 기반에 대한 권한이 있는 서비스 역할입니다.
+ 데이터 소스에서 데이터를 변환할 때 사용할 임베딩 모델과 임베딩을 저장할 서비스의 스토리지 구성을 포함하여 지식 기반에 대한 구성입니다.

**참고**  
루트 사용자로는 지식 기반을 생성할 수 없습니다. 이 단계를 시작하기 전에 IAM 사용자로 로그인하세요.

다음은 콘솔에서 Neptune GraphRAG를 사용하고 CLI를 사용하기 위한 지식 기반을 생성하는 방법을 보여줍니다.

------
#### [ Console ]

**콘솔에서 Neptune Analytics에 대한 지식 기반을 생성하려면**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 **생성**을 선택한 다음 **벡터 저장소가 있는 지식 기반**을 선택합니다.

1. (선택 사항) **지식 기반 세부 정보** 섹션에서 지식 기반의 기본 이름을 변경하고 설명을 제공합니다.

1. **IAM 권한** 섹션에서 다른 필수 AWS 서비스에 액세스할 수 있는 권한을 Amazon Bedrock에 제공하는 IAM 역할을 선택합니다. Amazon Bedrock에서 서비스 역할을 생성하도록 하거나 Neptune Analytics용으로 생성한 사용자 지정 역할을 사용하도록 선택할 수 있습니다. 예시는 [Amazon Neptune Analytics에서 벡터 데이터베이스에 액세스할 수 있는 권한](kb-permissions.md#kb-permissions-neptune) 섹션을 참조하세요.

1. **Amazon S3**를 데이터 소스로 선택하고 **다음**을 선택하여 데이터 소스를 구성해야 합니다.

1. 지식 기반을 연결하고 Amazon Neptune Analytics와 통합하기 위한 데이터 소스로 사용할 파일의 **S3 URI**를 제공합니다. 제공할 수 있는 추가 단계 및 선택적 정보는 [데이터 소스를 지식 기반에 연결](data-source-connectors.md) 섹션을 참조하세요.

1. **임베딩 모델** 섹션에서 임베딩 모델을 선택하여 데이터를 벡터 임베딩으로 변환합니다. 선택적으로 **추가 구성** 섹션을 사용하여 벡터 차원을 지정할 수 있습니다. 임베딩 유형의 경우 부동 소수점 벡터 임베딩을 사용하는 것이 좋습니다.
**참고**  
임베딩 모델의 벡터 차원은 Neptune Analytics 그래프를 생성할 때 지정한 벡터 차원과 일치해야 합니다.

1. **벡터 데이터베이스** 섹션에서 벡터 저장소를 생성하는 방법을 선택한 다음 **Amazon Neptune Analytics(GraphRAG)**를 벡터 저장소로 선택하여 쿼리에 사용할 임베딩을 저장합니다. 벡터 저장소를 생성하려면 다음 방법 중 하나를 사용할 수 있습니다.
   + **빠른 새 벡터 저장소 생성** 방법을 사용하여 벡터 저장소 생성을 빠르게 시작하는 것이 좋습니다. **Amazon Neptune Analytics(GraphRAG)**를 벡터 저장소로 선택합니다. 이 옵션에는 기존 Neptune Analytics 리소스가 필요하지 않습니다. 지식 기반은 문서 코퍼스에서 파생된 개체 및 관계의 그래프 표현과 함께 Amazon Neptune에서 문서 임베딩을 자동으로 생성하고 저장합니다.
   + 또는 Neptune Analytics 그래프 및 벡터 인덱스를 이미 생성한 경우 **생성한 벡터 저장소 선택** 옵션을 사용할 수 있습니다. **Amazon Neptune Analytics(GraphRAG)**를 벡터 저장소로 선택하고 벡터 인덱스에서 그래프 ARN, 벡터 필드 이름 및 메타데이터 필드 이름을 식별합니다. 자세한 내용은 [지식 기반에 대해 생성된 벡터 저장소 사용의 사전 조건](knowledge-base-setup.md) 단원을 참조하십시오.

1. **다음**을 선택하고 지식 기반의 세부 정보를 검토합니다. 계속해서 지식 기반을 만들기 전에 모든 섹션을 편집할 수 있습니다.
**참고**  
지식 기반을 만드는 데 걸리는 시간은 구체적인 구성에 따라 달라집니다. 지식 기반 생성이 완료되면 지식 기반 상태가 준비 또는 사용 가능 상태로 변경됩니다.  
지식 기반이 준비되고 사용 가능해지면 데이터 소스를 최초로 한 번 동기화하고, 이후에는 콘텐츠를 최신 상태로 유지하고 싶을 때마다 동기화하세요. 콘솔에서 지식 기반을 선택하고 데이터 소스 개요 섹션에서 **동기화**를 선택하면 됩니다.

1. **지식 기반 생성**을 선택합니다. Amazon Bedrock이 지식 기반을 생성하는 동안 **진행 중** 상태가 표시됩니다. 데이터 소스를 동기화하려면 생성이 완료될 때까지 기다려야 합니다.

1. Amazon Bedrock이 지식 기반 생성을 완료한 후 데이터 소스를 구성하려면 [데이터 소스를 지식 기반에 연결](data-source-connectors.md)의 지침을 따릅니다.

------
#### [ API ]

**를 사용하여 Neptune Analytics용 지식 기반을 생성하려면 AWS CLI**

1. 먼저 컨텍스트 보강 구성을 사용하여 데이터 소스를 생성합니다. 이 작업을 수행하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 요청을 보냅니다. 다음은 CLI 명령의 예시입니다.

   ```
   aws bedrock-agent create-data-source \
       --name graph_rag_source \
       --description data_source_for_graph_rag \
       --knowledge-base-id LDBBY2K5AG \
       --cli-input-json "file://input.json"
   ```

   다음 코드는 `input.json` 파일의 내용을 보여줍니다.

   ```
   {
       "dataSourceConfiguration": { 
           "s3Configuration": { 
               "bucketArn": "arn:aws:s3:::<example-graphrag-datasets>",
               "bucketOwnerAccountId": "<ABCDEFGHIJ>",
               "inclusionPrefixes": [ <"example-dataset"> ]
           },
           "type": "S3",
       },
       "VectorIngestionConfiguration": {
           "contextEnrichmentConfiguration":
               "type": "BEDROCK_FOUNDATION_MODEL",
               "bedrockFoundationModelConfiguration": {
                   "modelArn": "arn:aws:bedrock:<region>::foundation-model/anthropic.claude-3-haiku-20240307-v1:0",
                   "enrichmentStrategyConfiguration": {
                       "method": "CHUNK_ENTITY_EXTRACTION"
               }
           }
       }
   }
   ```

   문서에서 그래프를 빌드하는 데 `modelArn` 사용되는의 경우 Claude 3 Haiku(이전 예제 참조), Claude Haiku 4.5 및 Amazon Nova 패밀리(텍스트 입력 양식이 있는 Nova 2 및 Nova 모델 포함)를 사용할 수 있습니다. 리전에서 사용 가능한 파운데이션 모델을 보려면 [Amazon Bedrock에서 지원되는 파운데이션 모델을](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) 참조하세요.
**참고**  
일부 모델은 리전 간 추론 프로파일을 통해서만 지원됩니다. Amazon Bedrock에서 리전 간 추론 프로파일을 호출하면 수집할 요청과 데이터가 소스 리전에서 시작되어 해당 프로파일에 정의된 대상 리전 중 하나로 자동으로 라우팅되어 성능을 최적화합니다. 글로벌 교차 리전 추론 프로파일의 대상 리전에는 모든 상용 리전이 포함됩니다. 예를 들어 형식을 사용하여 us-west-2 리전에서 미국 기반 리전 간 호출에 `modelArn` 대해를 지정할 수 있습니다`arn:aws:bedrock:us-west-2:account-id:inference-profile/us.anthropic.claude-haiku-4-5-20251001-v1:0`.

   추론 프로파일을 사용하기 위한 역할의 정책 요구 사항을 보려면 [교차 리전 추론 프로파일의 사전 요구 사항을 참조하세요](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-prereq.html). 추론 프로파일을 사용하여 소스 및 대상 리전을 선택하는 방법에 [대한 지침은 추론 프로파일에 지원되는 리전 및 모델을 참조하세요](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html). 데이터는 Amazon Bedrock 지식 기반 및 Amazon Neptune Analytics 인스턴스에 해당하는 소스 리전에만 저장됩니다. 대상 리전은 추론에만 사용됩니다.

1. 지식 기반을 생성하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 요청을 전송합니다. 다음은 CLI 명령의 예시입니다.

   ```
   aws bi create-knowledge-base \
   --name <"knowledge-base-graphrag"> \
   --role-arn arn:aws:iam::<accountId>:role/<BedrockExecutionRoleForKnowledgeBase> \
   --cli-input-json "file://input.json"
   ```

   다음은 `input.json` 파일의 콘텐츠를 보여줍니다.

   ```
   {
       "storageConfiguration": {
           "type": "NEPTUNE_ANALYTICS"
           "neptuneAnalyticsConfiguration": {
               "graphArn": "arn:aws:neptune-graph:<region>:<>:graph/<graphID>",
               "fieldMapping": {
                   "metadataField": "metadata",
                   "textField": "text"
               },
           }
       },
       "knowledgeBaseConfiguration": {
           "type": "VECTOR",
           "vectorKnowledgeBaseConfiguration": {
               "embeddingModelArn": "arn:aws:bedrock:<region>::foundation-model/cohere.embed-english-v3"
           }
       }
   }
   ```

1. GraphRAG 기반 애플리케이션을 실행할 때 지식 기반 API 작업을 계속 사용하여 최종 사용자에게 보다 포괄적이고 관련성이 높으며 설명 가능한 응답을 제공할 수 있습니다. 다음 섹션에서는 CLI 명령을 사용하여 수집을 시작하고 검색 쿼리를 수행하는 방법을 보여줍니다.

------

## 데이터 소스 동기화
<a name="knowledge-base-build-graphs-sync"></a>

지식 기반을 만든 후에는 데이터를 수집하거나 동기화하여 데이터를 쿼리할 수 있습니다. 수집은 그래픽 구조를 추출하고 지정한 벡터 임베딩 모델 및 구성을 기반으로 데이터 소스의 원시 데이터를 벡터 임베딩으로 변환할 수 있습니다.

다음 명령에서는 CLI를 사용하여 수집 작업을 시작하는 방법의 예제를 보여줍니다.

```
aws bedrock-agent start-ingestion-job \
--data-source-id <"ABCDEFGHIJ"> \
--knowledge-base-id <"EFGHIJKLMN">
```

콘솔 및 API를 사용하여 데이터 소스를 동기화하는 방법에 대한 자세한 내용은 [Amazon Bedrock Knowledge Bases으로 데이터 동기화](kb-data-source-sync-ingest.md) 섹션을 참조하세요.

## 지식 기반에 변경 사항 수집
<a name="knowledge-base-build-graphs-ingest"></a>

Amazon S3를 데이터 소스로 사용하는 경우 한 번에 데이터 소스를 수정하고 변경 사항을 동기화할 수 있습니다. 직접 수집을 사용하면 단일 작업으로 지식 기반에서 파일을 직접 추가, 업데이트 또는 삭제할 수 있으며 지식 기반은 동기화할 필요 없이 문서에 액세스할 수 있습니다. 직접 수집은 `KnowledgeBaseDocuments` API 작업을 사용하여 지식 기반에 대해 설정된 벡터 저장소에 직접 제출하는 문서를 인덱싱합니다. 이러한 작업을 통해 연결된 데이터 소스로 이동하여 문서를 볼 필요 없이 지식 기반의 문서를 직접 볼 수도 있습니다. 자세한 내용은 [변경 사항을 지식 기반에 직접 수집](kb-direct-ingestion.md) 단원을 참조하십시오.

## 지식 기반 테스트
<a name="knowledge-base-build-graphs-test"></a>

이제 지식 기반을 설정했으므로 쿼리를 보내고 응답을 생성하여 테스트할 수 있습니다.

다음 코드는 CLI 명령의 예시입니다.

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <"ABCDEFGHIJ"> \
--retrieval-query="{\"text\": \"What are the top three video games available now?\"}"
```

자세한 내용은 [Amazon Neptune Analytics 그래프에 연결된 지식 기반 쿼리](kb-test-neptune.md) 단원을 참조하십시오.

# 쿼리 및 응답을 사용하여 지식 기반 테스트
<a name="knowledge-base-test"></a>

지식 기반을 설정한 후 다음과 같은 방법으로 해당 동작을 테스트할 수 있습니다.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 작업을 사용하여 쿼리를 보내고 데이터 소스에서 관련 정보를 검색합니다.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 작업을 사용하여 데이터 소스에서 검색된 정보를 기반으로 쿼리를 보내고 쿼리에 대한 응답을 생성합니다.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 또는 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)를 사용할 때 더 관련성이 높은 소스를 검색하려면 기본 Amazon Bedrock Knowledge Bases 순위 조정 모델보다 순위 조정 모델을 사용합니다.
+ `Retrieve` 또는 `RetrieveAndGenerate` API와 함께 선택적 메타데이터 필터를 사용하여 데이터 소스에서 사용할 수 있는 문서를 지정합니다.

지식 기반이 원하는 대로 작동하면 애플리케이션을 설정하여 지식 기반을 쿼리하거나 [AI 애플리케이션을 위한 지식 기반 배포](knowledge-base-deploy.md)로 진행하여 지식 기반을 에이전트에 연결할 수 있습니다.

자세히 알아보고 싶은 주제를 선택하세요.

**Topics**
+ [지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md)
+ [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md)
+ [구조화된 데이터에 대한 쿼리 생성](knowledge-base-generate-query.md)
+ [Amazon Kendra GenAI 인덱스에 연결된 지식 기반 쿼리](kb-test-kendra.md)
+ [Amazon Neptune Analytics 그래프에 연결된 지식 기반 쿼리](kb-test-neptune.md)
+ [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)
+ [지식 기반을 사용하여 모델 추론을 위한 응답 생성 구성](kb-test-configure-reasoning.md)

# 지식 기반 쿼리 및 데이터 검색
<a name="kb-test-retrieve"></a>

**중요**  
가드레일은 입력 및 LLM에서 생성된 응답에만 적용됩니다. 런타임 시 지식 기반에서 검색된 참조에는 적용되지 않습니다.

지식 기반을 설정한 후 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) API 작업을 사용하여 이를 쿼리하고 쿼리와 관련된 소스 데이터에서 청크를 검색할 수 있습니다. 기본 Amazon Bedrock Knowledge Bases 순위 대신 [순위 변경 모델을 사용하여](rerank.md) 검색 중에 소스 청크의 관련성 순위를 매길 수도 있습니다.

지식 기반을 쿼리하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

**지식 기반을 테스트하려면 다음을 수행하세요.**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 다음 작업 중 하나를 수행합니다.
   + 테스트하려는 지식 기반 옆의 라디오 버튼을 선택하고 **지식 기반 테스트**를 선택합니다. 테스트 창이 오른쪽에 펼쳐집니다.
   + 테스트할 지식 기반을 선택합니다. 테스트 창이 오른쪽에 펼쳐집니다.

1. 테스트 창에서 지식 기반에서 직접 검색한 정보를 반환하려면 **쿼리에 대한 응답 생성** 기능을 해제합니다.

1. (선택 사항) 구성 아이콘(![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/configurations.png))을 선택하여 **구성**을 엽니다. 구성에 대한 자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md) 섹션을 참조하세요.

1. 채팅 창의 텍스트 상자에 쿼리를 입력하고 **실행**을 선택하면 지식 기반에서 응답이 반환됩니다.

1. 소스 청크는 관련성 순서대로 직접 반환됩니다. 데이터 소스에서 추출한 이미지를 소스 청크로 반환할 수도 있습니다.

1. 반환된 청크에 대한 세부 정보를 보려면 **소스 세부 정보 표시**를 선택합니다.
   + 쿼리에 대해 설정한 구성을 보려면 **쿼리 구성**을 펼칩니다.
   + 소스 청크에 대한 세부 정보를 보려면 소스 청크 옆에 있는 오른쪽 화살표(![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/caret-right-filled.png))를 선택하여 소스 청크를 확장합니다. 다음 정보를 확인할 수 있습니다.
     + 소스 청크의 원시 텍스트입니다. 이 텍스트를 복사하려면 복사 아이콘(![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/copy.png))을 선택합니다. Amazon S3를 사용하여 데이터를 저장한 경우, 파일이 포함된 S3 객체로 이동하여 외부 링크 아이콘(![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/external.png))을 선택합니다.
     + Amazon S3를 사용하여 데이터를 저장한 경우 소스 청크와 연결된 메타데이터입니다. 속성/필드 키 및 값은 소스 문서와 연결된 `.metadata.json` 파일에 정의됩니다. 자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)의 **메타데이터 및 필터링** 섹션을 참조하세요.

**채팅 옵션**
+ 응답 생성을 켜서 검색된 소스 청크를 기반으로 **응답 생성**으로 전환합니다. 설정을 변경하면 채팅 창의 텍스트가 완전히 지워집니다.
+ 채팅 창을 지우려면 빗자루 아이콘(![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/broom.png))을 선택합니다.
+ 채팅 창의 모든 출력을 복사하려면 복사 아이콘(![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/copy.png))을 선택합니다.

------
#### [ API ]

지식 기반을 쿼리하고 데이터 소스에서 관련 텍스트만 반환하려면 [Amazon Bedrock Agents 런타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)를 사용하여 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 요청을 전송합니다.

필수 필드는 다음과 같습니다.


****  

| Field | 기본 설명 | 
| --- | --- | 
| knowledgeBaseId | 쿼리할 지식 기반을 지정합니다. | 
| retrievalQuery | 쿼리를 지정하는 text 필드가 포함되어 있습니다. | 
| guardrailsConfiguration | 요청과 함께 가드레일을 사용하려면 guardrailsId 및 guardrailsVersion과 같은 guardrailsConfiguration 필드를 포함합니다 | 

다음 필드는 선택 사항입니다.


****  

| Field | 사용 사례: | 
| --- | --- | 
| nextToken | 다음 응답 배치를 반환하려면(아래 응답 필드 참조). | 
| retrievalConfiguration | 벡터 검색을 사용자 지정하기 위한 [쿼리 구성](kb-test-config.md)을 포함합니다. 자세한 내용은 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)을 참조하세요. | 

[KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)에 `rerankingConfiguration` 필드를 포함하여 기본 Amazon Bedrock Knowledge Bases 순위 지정 모델보다 순위 변경 모델을 사용할 수 있습니다. `rerankingConfiguration` 필드는 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html) 객체에 매핑됩니다. 이 객체에서는 사용할 순위 변경 모델, 포함할 추가 요청 필드, 순위 변경 중에 문서를 필터링하기 위한 메타데이터 속성, 순위 변경 후 반환할 결과 수를 지정할 수 있습니다. 자세한 내용은 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)을 참조하세요.

**참고**  
지정한 `numberOfRerankedResults` 값이 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)의 `numberOfResults` 값보다 큰 경우 반환될 최대 결과 수는 `numberOfResults`의 값입니다. 쿼리 분해를 사용하는 경우는 예외입니다(자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)의 **쿼리 수정** 섹션을 참조하세요). 쿼리 분해를 사용하는 경우 `numberOfRerankedResults`는 `numberOfResults`의 최대 5배가 될 수 있습니다.

응답은 데이터 소스의 소스 청크를 `retrievalResults` 필드의 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) 객체 배열로 반환합니다. 각 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html)에는 다음 필드가 포함됩니다.


****  

| 필드 | 설명 | 
| --- | --- | 
| 콘텐츠 | text에 텍스트 소스 청크를 포함하거나 byteContent 필드에 이미지 소스 청크를 포함합니다. 콘텐츠가 이미지인 경우 base64 인코딩 콘텐츠의 데이터 URI는 data:image/jpeg;base64,\$1\$1base64-encoded string\$1 형식으로 반환됩니다. | 
| metadata | 각 메타데이터 속성을 키로 포함하고 메타데이터 값을 키가 매핑되는 JSON 값으로 포함합니다. | 
| location | 소스 청크가 속한 문서의 URI 또는 URL을 포함합니다. | 
| 점수 | 문서의 관련성 점수입니다. 이 점수를 사용하여 결과의 순위를 분석할 수 있습니다. | 

소스 청크 수가 응답에 적합할 수 있는 수를 초과하면 `nextToken` 필드에 값이 반환됩니다. 다음 결과 배치를 반환하도록 또 다른 요청에서 사용합니다.

검색된 데이터에 이미지가 포함된 경우 응답은 응답에 반환된 소스 청크에 대한 메타데이터가 포함된 다음 응답 헤더도 반환합니다.
+ `x-amz-bedrock-kb-byte-content-source` - 이미지의 Amazon S3 URI를 포함합니다.
+ `x-amz-bedrock-kb-description` - 이미지의 base64 인코딩 문자열을 포함합니다.

**참고**  
[메타데이터 필터를 구성할](kb-test-config.md) 때는 이러한 메타데이터 응답 헤더를 필터링할 수 없습니다.

**다중 모달 쿼리**  
멀티모달 임베딩 모델을 사용하는 지식 기반의 경우 텍스트 또는 이미지로 쿼리할 수 있습니다. `retrievalQuery` 필드는 이미지 쿼리에 대한 `multimodalInputList` 필드를 지원합니다.

**참고**  
Nova 및 BDA 접근 방식 선택 등 멀티모달 지식 기반을 설정하고 사용하는 방법에 대한 포괄적인 지침은 섹션을 참조하세요[멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md).

`multimodalInputList` 필드를 사용하여 이미지로 쿼리할 수 있습니다.

```
{
    "knowledgeBaseId": "EXAMPLE123", 
    "retrievalQuery": {
        "multimodalInputList": [
            {
                "content": {
                    "byteContent": "base64-encoded-image-data"
                },
                "modality": "IMAGE"
            }
        ]
    }
}
```

또는 `text` 필드를 사용하여 텍스트로만 쿼리할 수 있습니다.

```
{
    "knowledgeBaseId": "EXAMPLE123",
    "retrievalQuery": {
        "text": "Find similar shoes"
    }
}
```

**일반적인 멀티모달 쿼리 패턴**  
다음은 몇 가지 일반적인 쿼리 패턴입니다.

Image-to-image 검색  
이미지를 업로드하여 시각적으로 유사한 이미지를 찾습니다. 예: 빨간색 Nike 신발의 사진을 업로드하여 제품 카탈로그에서 유사한 신발을 찾습니다.

텍스트 기반 검색  
텍스트 쿼리를 사용하여 관련 콘텐츠를 찾습니다. 예: "유사 신발 찾기"를 사용하여 텍스트 설명을 사용하여 제품 카탈로그를 검색합니다.

시각적 문서 검색  
문서 내에서 차트, 다이어그램 또는 시각적 요소를 검색합니다. 예: 차트 이미지를 업로드하여 문서 모음에서 유사한 차트를 찾습니다.

**멀티모달 콘텐츠에 대해 Nova와 BDA 중에서 선택**  
멀티모달 콘텐츠로 작업할 때는 콘텐츠 유형 및 쿼리 패턴에 따라 접근 방식을 선택합니다.


**Nova와 BDA 결정 매트릭스 비교**  

| 콘텐츠 유형 | Nova 멀티모달 임베딩 사용 | Bedrock Data Automation(BDA) 파서 사용 | 
| --- | --- | --- | 
| 비디오 콘텐츠 | 시각적 스토리텔링 포커스(스포츠, 광고, 데모), 시각적 요소에 대한 쿼리, 최소 스피치 콘텐츠 | 중요한 스피치/나레이션(프레젠테이션, 회의, 자습서), 스피치 콘텐츠에 대한 쿼리, 트랜스크립트 필요 | 
| 오디오 콘텐츠 | 음악 또는 사운드 효과 식별, 음성이 아닌 오디오 분석 | 팟캐스트, 인터뷰, 회의, 트랜스크립션이 필요한 스피치가 포함된 모든 콘텐츠 | 
| 이미지 콘텐츠 | 시각적 유사성 검색, image-to-image 검색, 시각적 콘텐츠 분석 | 이미지에서 텍스트 추출, 문서 처리, OCR 요구 사항 | 

**참고**  
Nova 멀티모달 임베딩은 스피치 콘텐츠를 직접 처리할 수 없습니다. 오디오 또는 비디오 파일에 중요한 음성 정보가 포함된 경우 BDA 구문 분석기를 사용하여 스피치를 텍스트로 먼저 변환하거나 대신 텍스트 임베딩 모델을 선택합니다.

**다중 모달 쿼리 제한 사항**  
멀티모달 쿼리의 몇 가지 제한 사항은 다음과 같습니다.
+ 현재 릴리스에서 쿼리당 최대 하나의 이미지
+ 이미지 쿼리는 멀티모달 임베딩 모델(Titan G1 또는 Cohere Embed v3)에서만 지원됩니다.
+ 멀티모달 임베딩 모델 및 S3 콘텐츠 버킷이 있는 지식 기반에는 RetrieveAndGenerate API가 지원되지 않습니다.
+ 텍스트 전용 임베딩 모델을 사용하여 지식 기반에 이미지 쿼리를 제공하는 경우 4xx 오류가 반환됩니다.

**멀티모달 API 응답 구조**  
멀티모달 콘텐츠에 대한 검색 응답에는 추가 메타데이터가 포함됩니다.
+ **소스 URI:** 원래 S3 버킷 위치를 가리킵니다.
+ **보충 URI:** 멀티모달 스토리지 버킷의 복사본을 가리킵니다.
+ **타임스탬프 메타데이터:** 정확한 재생 위치를 지정할 수 있도록 비디오 및 오디오 청크에 포함

**참고**  
API 또는 SDK를 사용하는 경우 애플리케이션에서 파일 검색 및 타임스탬프 탐색을 처리해야 합니다. 콘솔은 향상된 비디오 재생 및 자동 타임스탬프 탐색을 통해 이를 자동으로 처리합니다.

------

**참고**  
응답을 생성하는 과정에서 프롬프트가 글자 수 제한을 초과하는 오류가 발생하면 다음과 같은 방법으로 프롬프트를 줄일 수 있습니다.  
검색된 결과의 최대 수를 줄입니다(이렇게 하면 [지식 기반 프롬프트 템플릿: 오케스트레이션 및 생성](kb-test-config.md#kb-test-config-prompt-template)의 \$1search\$1results\$1 자리 표시자에 채워지는 내용이 단축됨).
작은 청크를 사용하는 청킹 전략을 사용하여 데이터 소스를 다시 만듭니다(이렇게 하면 [지식 기반 프롬프트 템플릿: 오케스트레이션 및 생성](kb-test-config.md#kb-test-config-prompt-template)의 \$1search\$1results\$1 자리 표시자에 채워지는 내용이 단축됨).
프롬프트 템플릿을 줄입니다.
사용자 쿼리를 줄입니다(이렇게 하면 [지식 기반 프롬프트 템플릿: 오케스트레이션 및 생성](kb-test-config.md#kb-test-config-prompt-template)의 \$1query\$1 자리 표시자에 채워지는 내용이 단축됨).

# 지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성
<a name="kb-test-retrieve-generate"></a>

**중요**  
가드레일은 입력 및 LLM에서 생성된 응답에만 적용됩니다. 런타임 시 지식 기반에서 검색된 참조에는 적용되지 않습니다.

지식 기반을 설정한 뒤, [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 작업을 사용하여 이를 쿼리하고 소스 데이터에서 청크를 기반으로 응답을 생성할 수 있습니다. 응답은 원본 소스 데이터에 대한 인용과 함께 반환됩니다. 기본 Amazon Bedrock Knowledge Bases 순위 대신 [순위 변경 모델을 사용하여](rerank.md) 검색 중에 소스 청크의 관련성 순위를 매길 수도 있습니다.

**멀티모달 콘텐츠 제한 사항**  
`RetrieveAndGenerate`는 멀티모달 콘텐츠를 제한적으로 지원합니다. Nova 멀티모달 임베딩을 사용하는 경우 RAG 기능은 텍스트 콘텐츠로만 제한됩니다. 오디오 및 비디오 처리를 포함한 전체 멀티모달 지원을 받으려면 텍스트 임베딩 모델과 함께 BDA를 사용합니다. 자세한 내용은 [멀티모달 콘텐츠를 위한 지식 기반 구축](kb-multimodal.md)을 참조하세요.

**참고**  
`RetrieveAndGenerate` 흐름 중에 `Retrieve` 응답에서 반환된 이미지는 응답 생성 프롬프트에 포함됩니다. `RetrieveAndGenerate` 응답에는 이미지가 포함될 수 없지만 이미지가 포함된 소스를 인용할 수 있습니다.

지식 기반을 쿼리하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

**지식 기반을 테스트하려면 다음을 수행하세요.**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명AWS Management Console으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. **지식 기반** 섹션에서 다음 작업 중 하나를 수행합니다.
   + 테스트하려는 지식 기반 옆의 라디오 버튼을 선택하고 **지식 기반 테스트**를 선택합니다. 테스트 창이 오른쪽에 펼쳐집니다.
   + 테스트할 지식 기반을 선택합니다. 테스트 창이 오른쪽에 펼쳐집니다.

1. 지식 기반에서 직접 검색한 정보를 토대로 응답을 생성하려면 **쿼리에 대한 응답 생성** 기능을 켭니다. Amazon Bedrock은 데이터 소스를 기반으로 응답을 생성하고 제공된 정보를 각주와 함께 인용합니다.

1. 응답 생성을 위해 사용할 모델을 선택하려면 **모델 선택**을 선택합니다. 그런 다음 **적용**을 선택합니다.

1. (선택 사항) 구성 아이콘(![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/configurations.png))을 선택하여 **구성**을 엽니다. 구성에 대한 자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md) 섹션을 참조하세요.

1. 채팅 창의 텍스트 상자에 쿼리를 입력하고 **실행**을 선택하면 지식 기반에서 응답이 반환됩니다.

1. 각주를 선택하여 응답의 해당 부분에 대해 인용된 소스에서 발췌한 내용을 확인합니다. 링크를 선택하여 파일이 포함된 S3 객체로 이동합니다.

1. 반환된 청크에 대한 세부 정보를 보려면 **소스 세부 정보 표시**를 선택합니다.
   + 쿼리에 대해 설정한 구성을 보려면 **쿼리 구성**을 펼칩니다.
   + 소스 청크에 대한 세부 정보를 보려면 소스 청크 옆에 있는 오른쪽 화살표(![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/caret-right-filled.png))를 선택하여 소스 청크를 확장합니다. 다음 정보를 확인할 수 있습니다.
     + 소스 청크의 원시 텍스트입니다. 이 텍스트를 복사하려면 복사 아이콘(![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/copy.png))을 선택합니다. Amazon S3를 사용하여 데이터를 저장한 경우, 파일이 포함된 S3 객체로 이동하여 외부 링크 아이콘(![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/external.png))을 선택합니다.
     + Amazon S3를 사용하여 데이터를 저장한 경우 소스 청크와 연결된 메타데이터입니다. 속성/필드 키 및 값은 소스 문서와 연결된 `.metadata.json` 파일에 정의됩니다. 자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)의 **메타데이터 및 필터링** 섹션을 참조하세요.

**채팅 옵션**
+ 응답 생성에 다른 모델을 사용하려면 **모델 변경**을 선택합니다. 모델을 변경하면 채팅 창의 텍스트가 완전히 지워집니다.
+ **응답 생성**을 선택 취소하여 직접 소스 청크 검색으로 전환합니다. 설정을 변경하면 채팅 창의 텍스트가 완전히 지워집니다.
+ 채팅 창을 지우려면 빗자루 아이콘(![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/broom.png))을 선택합니다.
+ 채팅 창의 모든 출력을 복사하려면 복사 아이콘(![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/copy.png))을 선택합니다.

------
#### [ API ]

지식 기반을 쿼리하고 파운데이션 모델을 사용하여 데이터 소스의 결과를 기반으로 응답을 생성하려면 [Amazon Bedrock Agents 런타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)를 사용하여 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청을 전송합니다.

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API는 스트리밍 형식으로 데이터를 반환하고 전체 결과를 기다리지 않고 생성된 응답에 청크 단위로 액세스할 수 있습니다.

필수 필드는 다음과 같습니다.

**참고**  
API 응답에는 인용 이벤트가 포함됩니다. `citation` 멤버는 사용 중단되었습니다. 대신 `generatedResponse` 또는 `retrievedReferences` 필드를 사용하는 것이 좋습니다. 자세한 내용은 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html) 섹션을 참조하세요.


****  

| Field | 기본 설명 | 
| --- | --- | 
| 입력 | 쿼리를 지정하는 text 필드가 포함되어 있습니다. | 
| retrieveAndGenerateConfiguration | 검색 및 생성을 위한 구성을 지정하는 [RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html)이 포함되어 있습니다. 자세한 내용은 다음을 참조하세요. | 

다음 필드는 선택 사항입니다.


****  

| Field | 사용 사례: | 
| --- | --- | 
| sessionId | 이전 세션과 동일한 값을 사용하여 해당 세션을 계속하고 모델의 컨텍스트를 유지합니다. | 
| sessionConfiguration | 세션의 암호화를 위한 사용자 지정 KMS 키를 포함합니다. | 

[RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html)에 `knowledgeBaseConfiguration` 필드를 포함합니다. 이 필드는 다음 필드가 포함된 [KnowledgeBaseRetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrieveAndGenerateConfiguration.html) 객체에 매핑됩니다.
+ 필수 필드는 다음과 같습니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/kb-test-retrieve-generate.html)
+ 다음 필드는 선택 사항입니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/kb-test-retrieve-generate.html)

[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)의 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)에 `rerankingConfiguration` 필드를 포함하여 기본 Amazon Bedrock Knowledge Bases 순위 모델보다 순위 변경 모델을 사용할 수 있습니다. `rerankingConfiguration` 필드는 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html) 객체에 매핑됩니다. 이 객체에서는 사용할 순위 변경 모델, 포함할 추가 요청 필드, 순위 변경 중에 문서를 필터링하기 위한 메타데이터 속성, 순위 변경 후 반환할 결과 수를 지정할 수 있습니다. 자세한 내용은 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)을 참조하세요.

**참고**  
지정한 `numberOfRerankedResults` 값이 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)의 `numberOfResults` 값보다 큰 경우 반환될 최대 결과 수는 `numberOfResults`의 값입니다. 쿼리 분해를 사용하는 경우는 예외입니다(자세한 내용은 [쿼리와 응답 생성 구성 및 사용자 지정](kb-test-config.md)의 **쿼리 수정** 섹션을 참조하세요). 쿼리 분해를 사용하는 경우 `numberOfRerankedResults`는 `numberOfResults`의 최대 5배가 될 수 있습니다.

응답은 `output` 필드에 생성된 응답과 인용된 소스 청크를 `citations` 필드의 배열로 반환합니다. 각 [인용](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Citation.html) 객체는 다음 필드를 포함합니다.


****  

| Field | 기본 설명 | 
| --- | --- | 
| generatedResponsePart | textResponsePart 필드에는 인용과 관련된 text가 포함됩니다. span 필드는 인용이 있는 출력 부분의 시작과 끝에 대한 인덱스를 제공합니다. | 
| retrievedReferences | [RetrievedReference](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievedReference.html) 객체의 배열로, 각 객체에는 소스 청크의 content, 문서와 연결된 metadata, 데이터 소스에 있는 문서의 location URI 또는 URL이 포함됩니다. 콘텐츠가 이미지인 경우 base64 인코딩 콘텐츠의 데이터 URI는 data:image/jpeg;base64,\$1\$1base64-encoded string\$1 형식으로 반환됩니다. | 

또한 응답은 동일한 대화를 유지하기 위해 다른 요청에서 재사용할 수 있는 `sessionId` 값을 반환합니다.

요청에 `guardrailConfiguration`을 포함시킨 경우 `guardrailAction` 필드는 콘텐츠가 차단되었는지 여부를 알려줍니다.

검색된 데이터에 이미지가 포함된 경우 응답은 응답에 반환된 소스 청크에 대한 메타데이터가 포함된 다음 응답 헤더도 반환합니다.
+ `x-amz-bedrock-kb-byte-content-source` - 이미지의 Amazon S3 URI를 포함합니다.
+ `x-amz-bedrock-kb-description` - 이미지의 base64 인코딩 문자열을 포함합니다.

**참고**  
[메타데이터 필터를 구성할](kb-test-config.md) 때는 이러한 메타데이터 응답 헤더를 필터링할 수 없습니다.

------

**참고**  
응답을 생성하는 과정에서 프롬프트가 글자 수 제한을 초과하는 오류가 발생하면 다음과 같은 방법으로 프롬프트를 줄일 수 있습니다.  
검색된 결과의 최대 수를 줄입니다(이렇게 하면 [지식 기반 프롬프트 템플릿: 오케스트레이션 및 생성](kb-test-config.md#kb-test-config-prompt-template)의 \$1search\$1results\$1 자리 표시자에 채워지는 내용이 단축됨).
작은 청크를 사용하는 청킹 전략을 사용하여 데이터 소스를 다시 만듭니다(이렇게 하면 [지식 기반 프롬프트 템플릿: 오케스트레이션 및 생성](kb-test-config.md#kb-test-config-prompt-template)의 \$1search\$1results\$1 자리 표시자에 채워지는 내용이 단축됨).
프롬프트 템플릿을 줄입니다.
사용자 쿼리를 줄입니다(이렇게 하면 [지식 기반 프롬프트 템플릿: 오케스트레이션 및 생성](kb-test-config.md#kb-test-config-prompt-template)의 \$1query\$1 자리 표시자에 채워지는 내용이 단축됨).

# 구조화된 데이터에 대한 쿼리 생성
<a name="knowledge-base-generate-query"></a>

구조화된 데이터 스토어를 지식 기반에 연결할 때 지식 기반은 쿼리되는 데이터 소스의 구조에 따라 사용자가 제공한 자연어 쿼리를 SQL 쿼리로 변환하여 쿼리할 수 있습니다. 다음 사용 시:
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html): 응답은 SQL 쿼리 실행 결과를 반환합니다.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html): 생성된 응답은 SQL 쿼리 실행 결과를 기반으로 합니다.
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html): Amazon Bedrock Knowledge Base는 쿼리 변환을 검색 프로세스에서 분리합니다. 이 API 작업을 사용하여 쿼리를 SQL로 변환할 수 있습니다.

## `GenerateQuery` API 사용
<a name="knowledge-base-generate-query-api"></a>

`GenerateQuery` API 작업의 응답을 후속 `Retrieve` 또는 `RetrieveAndGenerate` 작업과 함께 사용하거나 다른 워크플로에 삽입할 수 있습니다. `GenerateQuery`를 사용하면 지식 기반 데이터 소스의 구조를 고려하여 쿼리를 SQL 쿼리로 효율적으로 변환할 수 있습니다.

자연어 쿼리를 SQL 쿼리로 전환하려면 [Amazon Bedrock Agents 런타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)를 사용하여 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) 요청을 제출합니다. `GenerateQuery` 요청은 다음 필드가 포함됩니다.
+ queryGenerationInput - `TEXT`를 `type`로 지정하고 `text` 필드에 쿼리를 포함합니다.
**참고**  
쿼리는 영어로 작성해야 합니다.
+ transformationConfiguration - `TEXT_TO_SQL`을 `mode`로 지정합니다. `textToSqlConfiguration` 필드에 `KNOWLEDGE_BASE`를 `type`로 지정합니다. 그런 다음 지식 기반의 ARN을 지정합니다.

응답은 `queries` 필드에 [GeneratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GeneratedQuery.html) 객체가 포함된 배열을 반환합니다. 객체에는 `sql` 필드의 쿼리에 대한 SQL 쿼리가 포함되어 있습니다.

## 주요 고려 사항
<a name="knowledge-base-generate-query-considerations"></a>

다음은 구조화된 데이터를 사용하여 쿼리를 생성할 때 고려해야 할 몇 가지 주요 사항입니다.
+ 

**리전 간 추론 및 구조화된 데이터 검색**  
구조화된 데이터 검색은 리전 간 추론을 사용하여 지리 AWS 리전내에서 최적의를 선택하여 추론 요청을 처리합니다. 이로 인해 추가 요금이 발생하지 않으며 사용 가능한 리소스와 모델 가용성을 극대화하여 고객 경험이 향상됩니다.

  교차 추론 요청은 데이터가 원래 상주AWS 리전하는 지리의 일부인 내에 보관됩니다. 데이터는 소스 리전 내에 저장되지만 입력 프롬프트와 출력 결과가 이 리전 외부로 이동할 수 있습니다. 모든 데이터는 Amazon의 보안 네트워크를 통해 암호화되어 전송됩니다.

  자세한 내용은 [교차 리전 추론을 통한 처리량 증대](cross-region-inference.md) 단원을 참조하십시오.
+ 

**생성된 SQL 쿼리의 정확도**  
생성된 SQL 쿼리의 정확도는 컨텍스트, 테이블 스키마 및 사용자 쿼리의 의도에 따라 달라질 수 있습니다. 생성된 쿼리를 평가하여 워크로드에서 사용하기 전에 사용 사례에 적합한지 확인합니다.
+ 

**검색된 결과의 수**  
응답을 생성할 때 다음과 같은 제한 사항이 적용됩니다.
  + `InvokeAgent`, `RetrieveAndGenerate` 및 `RetrieveAndGenerateStream` API 작업을 사용하는 경우 응답을 생성할 때 검색된 결과 10개만 사용됩니다.
  + `InvokeAgent` API를 사용할 때 검색된 결과의 행이 10개를 초과하는 경우 응답을 생성하기 위해 검색된 총 행 수가 에이전트에 전달되지 않습니다. 대신 `RetrieveAndGenerate` API를 사용하는 경우 최종 응답을 생성하기 위한 프롬프트에 총 행 수가 포함됩니다.
+ 

**`GenerateQuery` API 할당량**  
`GenerateQuery` API의 할당량은 초당 요청 2개입니다.

## 생성된 쿼리에 액세스할 수 있는 역할 권한 부여
<a name="knowledge-base-structured-permissions"></a>

구조화된 데이터 소스에 연결된 지식 기반의 경우 생성된 쿼리에 대해 몇 가지 추가 작업을 수행하려면 `GenerateQuery` API 작업을 수행할 수 있는 권한을 부여해야 합니다. IAM 역할이 구조화된 데이터 스토어에 연결된 지식 기반을 쿼리하도록 허용하려면 역할에 다음 정책을 연결합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery",
                "sqlworkbench:GetSqlRecommendations"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

사용 사례에 따라 필요하지 않은 문을 제거할 수 있습니다.
+ `GetKB` 및 `GenerateQuery` 문은 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)를 직접 호출하여 사용자 쿼리와 연결된 데이터 소스를 고려하는 SQL 쿼리를 생성하는 데 필요합니다.
+ `Retrieve` 문은 구조화된 데이터 스토어에서 데이터를 검색하기 위해 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)를 직접 호출하는 데 필요합니다.
+ `RetrieveAndGenerate` 문은 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)를 직접 호출하여 구조화된 데이터 스토어에서 데이터를 검색하고 데이터를 기반으로 응답을 생성하는 데 필요합니다.

# Amazon Kendra GenAI 인덱스에 연결된 지식 기반 쿼리
<a name="kb-test-kendra"></a>

Amazon Kendra GenAI 인덱스를 사용하는 지식 기반을 쿼리하고 데이터 소스에서 관련 텍스트만 반환할 수 있습니다. 이 쿼리의 경우 표준 지식 기반과 같이 [Amazon Bedrock Agents 런타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)로 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 요청을 보냅니다.

Amazon Kendra GenAI 인덱스를 사용하여 지식 기반에서 반환된 응답의 구조는 표준 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html)와 동일합니다. 그러나 응답에는 Amazon Kendra의 몇 가지 추가 필드도 포함됩니다.

다음 표에서는 반환된 응답에서 볼 수 있는 Amazon Kendra의 필드를 설명합니다. Amazon Bedrock은 Amazon Kendra 응답에서 이러한 필드를 가져옵니다. 해당 응답에 이러한 필드가 포함되어 있지 않으면 Amazon Bedrock에서 반환된 쿼리 결과에도 이러한 필드가 없습니다.


| 필드 | 설명 | 
| --- | --- | 
|  x-amz-kendra-document-title  |  반환된 문서의 제목입니다.  | 
|  x-amz-kendra-score-confidence  |  응답이 쿼리와 얼마나 관련이 있는지에 대한 상대적 순위입니다. 가능한 값은 VERY\$1HIGH, HIGH, MEDIUM, LOW, NOT\$1AVAILABLE입니다.  | 
|  x-amz-kendra-passage-id  |  반환된 구절의 ID입니다.  | 
|  x-amz-kendra-document-id  |  반환된 문서의 ID입니다.  | 
|  DocumentAttributes  |  Amazon Kendra의 문서 속성 또는 메타데이터 필드입니다. 지식 기반에서 반환된 쿼리 결과는 이를 메타데이터 키-값 페어로 저장합니다. Amazon Bedrock에서 메타데이터 필터링으로 결과를 필터링할 수 있습니다. 자세한 내용은 [DocumentAttribute](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DocumentAttribute.html)를 참조하세요.  | 

# Amazon Neptune Analytics 그래프에 연결된 지식 기반 쿼리
<a name="kb-test-neptune"></a>

Amazon Neptune Analytics 그래프를 사용하는 지식 기반을 쿼리하고 데이터 소스에서 관련 텍스트만 반환할 수 있습니다. 이 쿼리의 경우 표준 지식 기반과 같이 [Amazon Bedrock Agents 런타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)로 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 요청을 보냅니다. 지식 기반 쿼리 및 데이터 검색 및 응답 생성에 대한 자세한 내용은 다음을 참조하세요.
+  [지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 
+  [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 

Amazon Neptune Analytics 그래프를 사용하여 지식 기반에서 반환된 응답의 구조는 표준 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html)와 동일합니다. 그러나 응답에는 Amazon Neptune의 몇 가지 추가 필드도 포함됩니다.

다음 표에서는 반환된 응답에서 볼 수 있는 Neptune Analytics의 필드를 설명합니다. Amazon Bedrock은 Neptune Analytics 응답에서 이러한 필드를 가져옵니다. 해당 응답에 이러한 필드가 포함되어 있지 않으면 Amazon Bedrock에서 반환된 쿼리 결과에도 이러한 필드가 없습니다.


| 필드 | 설명 | 
| --- | --- | 
|  x-amz-bedrock-kb-source-uri  |  반환된 문서의 Amazon S3 URL입니다.  | 
|  점수  |  응답이 제공된 쿼리와 얼마나 일치하는지 나타내는 거리 측정값으로, 값이 낮을수록 더 나은 일치를 나타냅니다.  | 
|  x-amz-bedrock-kb-data-source-id  |  지식 기반에 사용되는 데이터 소스의 ID입니다.  | 
|  x-amz-bedrock-kb-chunk-id  |  쿼리에 대한 정보를 검색하고 응답을 생성하는 데 사용된 청크의 ID입니다.  | 
|  DocumentAttributes  |  Amazon Kendra의 문서 속성 또는 메타데이터 필드입니다. 지식 기반에서 반환된 쿼리 결과는 이를 메타데이터 키-값 페어로 저장합니다. Amazon Bedrock에서 메타데이터 필터링으로 결과를 필터링할 수 있습니다.  | 

## 메타데이터 및 필터링을 사용합니다
<a name="kb-test-neptune-metadata"></a>

지식 기반을 쿼리하고 응답을 생성할 때 메타데이터를 기준으로 필터링하여 더 관련성이 높은 문서를 찾을 수 있습니다. 예를 들어 문서의 게시 날짜를 기준으로 필터링할 수 있습니다. 이 목적으로 Amazon Bedrock 콘솔 또는 런타임 API를 사용할 수 있습니다.이 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html) API는 몇 가지 일반 필터 조건을 지정할 수 있습니다.

다음은 Neptune Analytics 그래프용 `RetrievalFilter` API 사용에 대한 몇 가지 고려 사항입니다.
+ `startsWith` 및 `listContains` 필터는 지원되지 않습니다.
+ `stringContains` 필터의 목록 변형은 지원되지 않습니다.

다음은 그 한 예입니다.

```
"vectorSearchConfiguration": {
        "numberOfResults": 5,
        "filter": {
            "orAll": [
                {
                    "andAll": [
                        {
                            "equals": {
                                "key": "genre",
                                "value": "entertainment"
                            }
                        },
                        {
                            "greaterThan": {
                                "key": "year",
                                "value": 2018
                            }
                        }
                    ]
                },
                {
                    "andAll": [                        
                        {
                            "startsWith": {
                                "key": "author",
                                "value": "C"
                            }
                        }
                    ]
                }
            ]
        }
    }
}
```

# 쿼리와 응답 생성 구성 및 사용자 지정
<a name="kb-test-config"></a>

검색 및 응답 생성을 구성하고 사용자 지정하여 응답의 관련성을 더욱 개선할 수 있습니다. 예를 들어, 문서 메타데이터 필드/속성에 필터를 적용하여 가장 최근에 업데이트된 문서나 최근 수정 시간이 있는 문서를 사용하도록 할 수 있습니다.

**참고**  
**오케스트레이션 및 생성**을 제외한 다음 모든 구성은 비정형 데이터 소스에만 적용됩니다.

콘솔 또는 API에서 이러한 구성이 어떻게 적용되는지 자세히 알아보려면 다음 주제를 살펴보세요.

## 소스 청크 수
<a name="kb-test-config-number"></a>

지식 기반을 쿼리하면 Amazon Bedrock은 기본적으로 최대 5개의 결과를 반환합니다. 각 결과는 소스 청크에 해당합니다.

**참고**  
이 파라미터는 반환할 최대 결과 수를 설정하므로 응답의 실제 결과 수는 지정된 `numberOfResults` 값보다 작을 수 있습니다. 청킹 전략에 대한 계층적 청킹을 구성한 경우 `numberOfResults` 파라미터는 지식 기반에서 검색할 하위 청크 수에 매핑됩니다. 동일한 상위 청크를 공유하는 하위 청크는 최종 응답에서 상위 청크로 대체되므로 반환되는 결과 수는 요청된 양보다 적을 수 있습니다.

반환할 최대 결과 수를 수정하려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

[지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 또는 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따릅니다. **구성** 창에서 **소스 청크** 섹션을 확장하고 반환할 최대 소스 청크 수를 입력합니다.

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 또는 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청을 수행할 때 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 객체에 매핑된 `retrievalConfiguration` 필드를 포함합니다. 이 필드의 위치를 확인하려면 API 참조의 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 및 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청 본문을 참조하세요.

다음 JSON 객체는 반환할 최대 결과 수를 설정하는 데 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 객체에 필요한 최소 필드를 보여줍니다.

```
"retrievalConfiguration": {
    "vectorSearchConfiguration": {
        "numberOfResults": number
    }
}
```

`numberOfResults` 필드에 반환할 검색된 결과의 최대 수를 지정합니다(허용된 값 범위는 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)의 `numberOfResults` 필드 참조).

------

## 검색 유형
<a name="kb-test-config-search"></a>

검색 유형은 지식 기반에서 데이터 소스를 쿼리하는 방법을 정의합니다. 다음과 같은 검색 유형을 사용할 수 있습니다.

**참고**  
하이브리드 검색은 필터링 가능한 텍스트 필드가 포함된 Amazon RDS, Amazon OpenSearch Serverless 및 MongoDB 벡터 스토어에 대해서만 지원됩니다. 다른 벡터 스토어를 사용하거나 벡터 스토어에 필터링 가능한 텍스트 필드가 없는 경우 쿼리는 시맨틱 검색을 사용합니다.
+ **기본** - Amazon Bedrock이 검색 전략을 결정합니다.
+ **하이브리드** - 검색 벡터 임베딩(시맨틱 검색)과 원시 텍스트를 통한 검색을 결합합니다.
+ **시맨틱** - 벡터 임베딩만 검색합니다.

검색 유형을 정의하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

[지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 또는 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따릅니다. **구성** 창을 열 때 **검색 유형** 섹션을 확장하고 **기본 검색 재정의**를 켠 다음 옵션을 선택합니다.

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 또는 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청을 수행할 때 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 객체에 매핑된 `retrievalConfiguration` 필드를 포함합니다. 이 필드의 위치를 확인하려면 API 참조의 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 및 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청 본문을 참조하세요.

다음 JSON 객체는 검색 유형 구성을 설정하는 데 필요한 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 객체의 최소 필드를 보여줍니다.

```
"retrievalConfiguration": {
    "vectorSearchConfiguration": {
        "overrideSearchType": "HYBRID | SEMANTIC"
    }
}
```

`overrideSearchType` 필드에 검색 유형을 지정합니다. 다음과 같은 옵션이 있습니다.
+ 값을 지정하지 않으면 Amazon Bedrock이 벡터 스토어 구성에 가장 적합한 검색 전략을 결정합니다.
+ **HYBRID** – Amazon Bedrock이 벡터 임베딩과 원시 텍스트를 모두 사용하여 지식 기반을 쿼리합니다.
+ **SEMANTIC** – Amazon Bedrock이 벡터 임베딩을 사용하여 지식 기반을 쿼리합니다.

------

## 스트리밍
<a name="kb-test-config-stream"></a>

------
#### [ Console ]

[지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따릅니다. **구성** 창을 열 때 **스트리밍 기본 설정** 섹션을 확장하고 **스트림 응답**을 켭니다.

------
#### [ API ]

응답을 스트리밍하려면 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API를 사용합니다. 필드 작성에 대한 자세한 내용은 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md)의 **API** 탭을 참조하세요.

------

## 수동 메타데이터 필터링
<a name="kb-test-config-filters"></a>

필터를 문서 필드/속성에 적용하여 응답의 관련성을 더욱 개선할 수 있습니다. 데이터 소스에는 필터링할 문서 메타데이터 속성/필드가 포함될 수 있으며 임베딩에 포함할 필드를 지정할 수 있습니다.

예를 들어 'epoch\$1modification\$1time'은 문서가 마지막으로 업데이트된 1970년 1월 1일(UTC) 이후 초 단위의 시간을 나타냅니다. 'epoch\$1modification\$1time'이 특정 수*보다 큰* 최신 데이터를 기준으로 필터링할 수 있습니다. 이러한 최신 문서를 쿼리에 사용할 수 있습니다.

지식 기반을 쿼리할 때 필터를 사용하려면 지식 기반이 다음 요구 사항을 충족하는지 확인합니다.
+ 데이터 소스 커넥터를 구성할 때 대부분의 커넥터는 문서의 기본 메타데이터 필드를 크롤링합니다. Amazon S3 버킷을 데이터 소스로 사용하는 경우, 버킷에는 연결된 파일 또는 문서에 대해 하나 이상의 `fileName.extension.metadata.json`이 포함되어야 합니다. 메타데이터 파일 구성에 대한 자세한 내용은 [연결 구성](s3-data-source-connector.md#configuration-s3-connector)의 **문서 메타데이터 필드**를 참조하세요.
+ 지식 베이스의 벡터 인덱스가 Amazon OpenSearch Serverless 벡터 스토어에 있는 경우, 벡터 인덱스가 `faiss` 엔진으로 구성되어 있는지 확인합니다. 벡터 인덱스가 `nmslib` 엔진으로 구성되어 있다면 다음 중 하나를 수행해야 합니다.
  + 콘솔에서 [새 지식 기반을 만들고](knowledge-base-create.md) Amazon Bedrock이 Amazon OpenSearch Serverless에서 벡터 인덱스를 자동으로 만들도록 합니다.
  + 벡터 스토어에서 [또 다른 벡터 인덱스를 만들고](knowledge-base-setup.md) **엔진**으로 `faiss`를 선택합니다. 그런 다음 [새 지식 기반을 만들고](knowledge-base-create.md) 새 벡터 인덱스를 지정합니다.
+ 지식 기반이 S3 벡터 버킷에서 벡터 인덱스를 사용하는 경우 `startsWith` 및 `stringContains` 필터를 사용할 수 없습니다.
+ Amazon Aurora 데이터베이스 클러스터의 기존 벡터 인덱스에 메타데이터를 추가하는 경우 사용자 지정 메타데이터 열의 필드 이름을 제공하여 모든 메타데이터를 단일 열에 저장하는 것이 좋습니다. [데이터 수집](kb-data-source-sync-ingest.md) 중에 이 열은 데이터 소스의 메타데이터 파일에 있는 모든 정보를 채우는 데 사용됩니다. 이 필드를 제공하기로 선택한 경우 이 열에 인덱스를 생성해야 합니다.
  + 콘솔에서 [새 지식 기반을 생성하고](knowledge-base-create.md) Amazon Bedrock이 Amazon Aurora 데이터베이스를 구성하도록 하면 자동으로 단일 열을 생성하고 메타데이터 파일의 정보로 채웁니다.
  + 벡터 스토어에서 [다른 벡터 인덱스를 생성](knowledge-base-setup.md)하도록 선택한 경우 메타데이터 파일의 정보를 저장할 사용자 지정 메타데이터 필드 이름을 제공해야 합니다. 이 필드 이름을 제공하지 않는 경우 파일의 각 메타데이터 속성에 대한 열을 생성하고 데이터 유형(텍스트, 숫자 또는 부울)을 지정해야 합니다. 예를 들어, `genre` 속성이 데이터 소스에 있는 경우 `genre`라는 열을 추가하고 `text`를 데이터 유형으로 지정합니다. 수집 과정에서 이러한 별도의 열은 해당 속성 값으로 채워집니다.

데이터 소스에 PDF 문서가 있고 벡터 스토어에 Amazon OpenSearch Serverless를 사용하는 경우: Amazon Bedrock Knowledge Bases는 문서 페이지 번호를 생성하고 *x-amz-bedrock-kb-document-page-number*라는 메타데이터 필드/속성에 저장합니다. 문서에 청킹을 선택하지 않으면 메타데이터 필드에 저장된 페이지 번호가 지원되지 않습니다.

다음 필터링 연산자를 사용하여 쿼리에서 결과를 필터링할 수 있습니다.


**필터링 연산자**  

| 연산자 | 콘솔 | API 필터 이름 | 지원되는 속성 데이터 유형 | 필터링 결과 | 
| --- | --- | --- | --- | --- | 
| 같음 | = | [같음](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-equals) | 문자열, 숫자, 부울 | 속성이 사용자가 제공한 값과 일치합니다. | 
| 같지 않음 | \$1= | [notEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notEquals) | 문자열, 숫자, 부울 | 속성이 사용자가 제공한 값과 일치하지 않습니다. | 
| 보다 큼 | > | [greaterThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThan) | number | 속성이 사용자가 제공한 값보다 큽니다. | 
| 크거나 같음 | >= | [greaterThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThanOrEquals) | number | 속성이 사용자가 제공한 값보다 크거나 같습니다. | 
| 보다 작음 | < | [lessThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThan) | number | 속성이 사용자가 제공한 값보다 작습니다. | 
| 작거나 같음 | <= | [lessThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThanOrEquals) | number | 속성이 사용자가 제공한 값보다 작거나 같습니다. | 
| 있음 | : | [in](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-in) | 문자열 목록 | 속성이 사용자가 제공한 목록에 있습니다(현재 Amazon OpenSearch Serverless 및 Neptune Analytics GraphRAG 벡터 스토어에서 가장 잘 지원됨) | 
| 없음 | \$1: | [notIn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notIn) | 문자열 목록 | 속성이 사용자가 제공한 목록에 없습니다(현재 Amazon OpenSearch Serverless 및 Neptune Analytics GraphRAG 벡터 스토어에서 가장 잘 지원됨) | 
| 문자열 나열 | 사용할 수 없음 | [stringContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-stringContains) | 문자열 | 속성은 문자열이어야 합니다. 속성 이름은 키와 일치하며 값이 하위 문자열로 제공한 값을 포함하는 문자열이거나 하위 문자열로 제공한 값을 포함하는 멤버가 있는 목록입니다(현재 Amazon OpenSearch Serverless 벡터 스토어에서 가장 잘 지원됨. Neptune Analytics GraphRAG 벡터 스토어는 문자열 변형을 지원하지만 이 필터의 목록 변형은 지원하지 않습니다). | 
| 목록 나열 | 사용할 수 없음 | [listContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-listContains) | 문자열 | 속성은 반드시 문자열 목록이어야 합니다. 속성 이름은 키와 일치하며 값이 멤버 중 하나로 제공한 값이 포함된 목록입니다(현재 Amazon OpenSearch Serverless 벡터 스토어에서 가장 잘 지원됨). | 

필터링 연산자를 결합하려면 다음 논리 연산자를 사용할 수 있습니다.


**논리 연산자**  

| 연산자 | 콘솔 | API 필터 필드 이름 | 필터링 결과 | 
| --- | --- | --- | --- | 
| 및 | 및 | [andAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-andAll) | 결과가 그룹의 모든 필터링 표현식을 충족합니다. | 
| 또는 | 또는 | [orAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-orAll) | 결과가 그룹의 필터링 표현식 중 하나 이상을 충족합니다. | 

메타데이터를 사용하여 결과를 필터링하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

[지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 또는 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따릅니다. **구성** 창을 열면 **필터 섹션**이 표시됩니다. 다음 절차에서는 다양한 사용 사례를 설명합니다.
+ 필터를 추가하려면 상자에 메타데이터 속성, 필터링 연산자, 값을 입력하여 필터링 표현식을 만듭니다. 표현식의 각 부분은 공백으로 구분합니다. **Enter** 키를 눌러 필터를 추가합니다.

  허용되는 필터링 연산자 목록은 위의 **필터링 연산자** 테이블을 참조하세요. 메타데이터 속성 뒤에 공백을 추가할 때 필터링 연산자 목록을 확인할 수도 있습니다.
**참고**  
문자열은 따옴표로 묶어야 합니다.

  예를 들어, 값이 `"entertainment"`인 `genre` 메타데이터 속성이 포함된 소스 문서의 결과를 필터링하려면 **genre = "entertainment"** 필터를 추가합니다.  
![\[하나의 필터를 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-one.png)
+ 또 다른 필터를 추가하려면 상자에 다른 필터링 표현식을 입력하고 **Enter** 키를 누릅니다. 그룹에는 최대 5개의 필터를 추가할 수 있습니다.  
![\[또 다른 필터를 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-more.png)
+ 기본적으로 쿼리는 사용자가 제공하는 모든 필터링 표현식을 충족하는 결과를 반환합니다. 필터링 표현식 중 하나 이상을 충족하는 결과를 반환하려면 두 필터링 연산 사이에 있는 **and** 드롭다운 메뉴를 선택하고 **or**를 선택합니다.  
![\[필터 사이의 논리 연산을 변경합니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-logical.png)
+ 여러 논리 연산자를 결합하려면 **\$1 그룹 추가**를 선택하여 필터 그룹을 추가합니다. 새 그룹에 필터링 표현식을 입력합니다. 최대 5개의 필터 그룹을 추가할 수 있습니다.  
![\[필터 그룹을 추가하여 여러 논리 연산자를 결합합니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-group.png)
+ 모든 필터링 그룹 사이에 사용되는 논리 연산자를 변경하려면 두 필터 그룹 사이의 **AND** 드롭다운 메뉴를 선택하고 **OR**를 선택합니다.  
![\[필터 그룹 사이의 논리 연산을 변경합니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-group-logical.png)
+ 필터를 편집하려면 필터를 선택하고 필터링 연산을 수정한 다음 **적용**을 선택합니다.  
![\[필터를 편집합니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-edit.png)
+ 필터 그룹을 제거하려면 그룹 옆의 휴지통 아이콘(![\[Trapezoid-shaped diagram showing data flow from source to destination through AWS Transfer Family.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/trash.png))을 선택합니다. 필터를 제거하려면 필터 옆의 삭제 아이콘(![\[Close or cancel icon represented by an "X" symbol.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/icons/close.png))을 선택합니다.  
![\[필터 또는 필터 그룹을 삭제합니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-delete.png)

다음 이미지는 장르가 **"entertainment"**이고 **2018**년 이후에 작성된 모든 문서와 장르가 **"cooking"** 또는 **"sports"**이고 작성자가 **"C"**로 시작하는 문서를 반환하는 필터 구성의 예제를 보여줍니다.

![\[필터 구성의 예제입니다.\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/images/kb/filter-example.png)


------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 또는 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청을 수행할 때 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 객체에 매핑된 `retrievalConfiguration` 필드를 포함합니다. 이 필드의 위치를 확인하려면 API 참조의 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 및 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청 본문을 참조하세요.

다음 JSON 객체는 다양한 사용 사례에 대한 필터를 설정하는 데 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 객체에 필요한 최소 필드를 보여줍니다.

1. 하나의 필터링 연산자를 사용합니다(위의 **필터링 연산자** 테이블 참조).

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "<filter-type>": {
                   "key": "string",
                   "value": "string" | number | boolean | ["string", "string", ...]
               }
           }
       }
   }
   ```

1. 논리 연산자(위의 **논리 연산자** 테이블 참조)를 사용하여 최대 5개까지 결합합니다.

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   },
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   },
                   ...
               ]
           }
       }
   }
   ```

1. 논리 연산자를 사용하여 최대 5개의 필터링 연산자를 필터 그룹으로 결합하고, 두 번째 논리 연산자를 사용하여 해당 필터 그룹을 다른 필터링 연산자와 결합합니다.

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ],
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   }
               ]
           }
       }
   }
   ```

1. 최대 5개의 필터 그룹을 다른 논리 연산자 내에 임베딩하여 결합합니다. 한 단계의 임베딩을 생성할 수 있습니다.

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ],
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ]
               ]
           }
       }
   }
   ```

다음 테이블은 사용할 수 있는 필터 유형을 설명합니다.


****  

| Field | 지원되는 값 데이터 유형 | 필터링 결과 | 
| --- | --- | --- | 
| equals | 문자열, 숫자, 부울 | 속성이 사용자가 제공한 값과 일치합니다. | 
| notEquals | 문자열, 숫자, 부울 | 속성이 사용자가 제공한 값과 일치하지 않습니다. | 
| greaterThan | number | 속성이 사용자가 제공한 값보다 큽니다. | 
| greaterThanOrEquals | number | 속성이 사용자가 제공한 값보다 크거나 같습니다. | 
| lessThan | number | 속성이 사용자가 제공한 값보다 작습니다. | 
| lessThanOrEquals | number | 속성이 사용자가 제공한 값보다 작거나 같습니다. | 
| in | 문자열 목록 | 속성이 사용자가 제공한 목록에 있습니다. | 
| notIn | 문자열 목록 | 속성이 사용자가 제공한 목록에 없습니다. | 
| startsWith | 문자열 | 속성이 사용자가 제공한 문자열로 시작됩니다(Amazon OpenSearch Serverless 벡터 스토어에 대해서만 지원) | 

필터 유형을 결합하려면 다음 논리 연산자 중 하나를 사용할 수 있습니다.


****  

| Field | 매핑 | 필터링 결과 | 
| --- | --- | --- | 
| andAll | 최대 5개의 필터 유형 목록 | 결과가 그룹의 모든 필터링 표현식을 충족합니다. | 
| orAll | 최대 5개의 필터 유형 목록 | 결과가 그룹의 필터링 표현식 중 하나 이상을 충족합니다. | 

예제는 [쿼리 보내기 및 필터(Retrieve) 포함](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html#API_agent-runtime_Retrieve_Example_2) 및 [쿼리 보내기 및 필터(RetrieveAndGenerate) 포함](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html#API_agent-runtime_RetrieveAndGenerate_Example_2)을 참조하세요.

------

## 암시적 메타데이터 필터링
<a name="kb-test-config-implicit"></a>

Amazon Bedrock Knowledge Bases는 사용자 쿼리 및 메타데이터 스키마를 기반으로 검색 필터를 생성하고 적용합니다.

**참고**  
이 기능은 현재 Anthropic Claude 3.5 Sonnet에서만 작동합니다.

`implicitFilterConfiguration`은 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 요청 본문의 `vectorSearchConfiguration`에 지정됩니다. 여기에는 다음 필드가 포함될 수 있습니다.
+ `metadataAttributes` -이 배열에서 모델이 필터를 생성할 메타데이터 속성을 설명하는 스키마를 제공합니다.
+ `modelArn` - 사용할 모델의 ARN입니다.

다음은 `metadataAttributes`의 배열에 추가할 수 있는 메타데이터 스키마의 예입니다.

```
[
    {
        "key": "company",
        "type": "STRING",
        "description": "The full name of the company. E.g. `Amazon.com, Inc.`, `Alphabet Inc.`, etc"
    },
    {
        "key": "ticker",
        "type": "STRING",
        "description": "The ticker name of a company in the stock market, e.g. AMZN, AAPL"
    },
    {
        "key": "pe_ratio",
        "type": "NUMBER",
        "description": "The price to earning ratio of the company. This is a measure of valuation of a company. The lower the pe ratio, the company stock is considered chearper."
    },
    {
        "key": "is_us_company",
        "type": "BOOLEAN",
        "description": "Indicates whether the company is a US company."
    },
    {
        "key": "tags",
        "type": "STRING_LIST",
        "description": "Tags of the company, indicating its main business. E.g. `E-commerce`, `Search engine`, `Artificial intelligence`, `Cloud computing`, etc"
    }
]
```

## 가드레일
<a name="kb-test-config-guardrails"></a>

사용 사례 및 책임 있는 AI 정책을 위한 지식 기반 보호 장치를 구현할 수 있습니다. 다양한 사용 사례에 맞게 조정된 여러 가드레일을 만들고 이를 여러 요청 및 응답 조건에 적용하여 일관된 사용자 환경을 제공하고 지식 기반 전반에 안전 제어를 표준화할 수 있습니다. 거부된 주제와 콘텐츠 필터를 구성하여 모델 입력 및 응답에서 바람직하지 않은 주제와 유해한 콘텐츠를 차단할 수 있습니다. 자세한 내용은 [Amazon Bedrock Guardrails를 사용하여 유해한 콘텐츠 감지 및 필터링](guardrails.md) 섹션을 참조하세요.

**참고**  
현재 Claude 3 Sonnet 및 Haiku에서는 가드레일을 지식 기반에 대한 컨텍스트 근거와 함께 사용할 수 없습니다.

일반적인 프롬프트 엔지니어링 지침은 [프롬프트 엔지니어링 개념](prompt-engineering-guidelines.md) 섹션을 참조하세요.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

[지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 또는 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따릅니다. 테스트 창에서 **응답 생성**을 켭니다. 그런 다음 **구성** 창에서 **가드레일** 섹션을 확장합니다.

1. **가드레일** 섹션에서 가드레일의 **이름**과 **버전**을 선택합니다. 선택한 가드레일 및 버전의 세부 정보를 보려면 **보기**를 선택합니다.

   또는 **가드레일** 링크를 선택하여 새 가드레일을 만들 수 있습니다.

1. 편집을 마쳤으면 **변경 사항 저장**을 선택합니다. 저장하지 않고 종료하려면 **변경 사항 취소**를 선택합니다.

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청을 수행할 때 `generationConfiguration`에 `guardrailConfiguration` 필드를 포함시켜 요청에 가드레일을 사용할 수 있습니다. 이 필드의 위치를 보려면 API 참조의 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청 본문을 참조하세요.

다음 JSON 객체는 [GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)에서 `guardrailConfiguration`을 설정하는 데 필요한 최소 필드를 보여줍니다.

```
"generationConfiguration": {
    "guardrailConfiguration": {
        "guardrailId": "string",
        "guardrailVersion": "string"
    }
}
```

선택한 가드레일의 `guardrailId` 및 `guardrailVersion`을 지정합니다.

------

## 순위 바꾸기
<a name="kb-test-config-rerank"></a>

리랭커 모델을 사용하여 지식 기반 쿼리의 결과 순위를 다시 매길 수 있습니다. [지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 또는 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따릅니다. **구성** 창을 열 때 **순위 조정** 섹션을 확장합니다. 리랭커 모델을 선택하고, 필요한 경우 권한을 업데이트하고, 추가 옵션을 수정합니다. 프롬프트를 입력하고 **실행**을 선택하여 순위를 다시 매긴 후 결과를 테스트합니다.

## 쿼리 분해
<a name="kb-test-query-modifications"></a>

쿼리 분해는 복잡한 쿼리를 더 작고 관리 가능한 하위 쿼리로 세분화하는 데 사용되는 기법입니다. 이 접근 방식은 특히 초기 쿼리가 다면적이거나 너무 광범위한 경우 더 정확하고 관련성 있는 정보를 검색하는 데 도움이 될 수 있습니다. 이 옵션을 활성화하면 지식 기반에 대해 여러 쿼리가 실행되어 최종 응답이 더 정확해질 수 있습니다.

예를 들어, *“2022 FIFA 월드컵에서 아르헨티나와 프랑스 중 어디가 더 점수가 높았나요?”*와 같은 질문에 대해 Amazon Bedrock Knowledge Bases는 최종 답변을 생성하기 전에 먼저 다음과 같은 하위 쿼리를 생성할 수 있습니다.

1. *2022년 FIFA 월드컵 결승전에서 아르헨티나는 몇 골을 득점했나요?*

1. *2022 FIFA 월드컵 결승전에서 프랑스는 몇 골을 득점했나요?*

------
#### [ Console ]

1. 데이터 소스를 생성 및 동기화하거나 기존 지식 기반을 사용합니다.

1. 테스트 창으로 이동하여 구성 패널을 엽니다.

1. 쿼리 분해를 활성화합니다.

------
#### [ API ]

```
POST /retrieveAndGenerate HTTP/1.1
Content-type: application/json
{
   "input": {
      "text": "string"
   },
   "retrieveAndGenerateConfiguration": {
      "knowledgeBaseConfiguration": {
         "orchestrationConfiguration": { // Query decomposition
           "queryTransformationConfiguration": {
                "type": "string" // enum of QUERY_DECOMPOSITION
           }
         },
...}
}
```

------

## 추론 파라미터
<a name="kb-test-model-params"></a>

정보 검색을 기반으로 응답을 생성할 때 [추론 파라미터](inference-parameters.md)를 사용하여 추론 과정에서 모델의 동작을 더 잘 제어하고 모델의 출력에 영향을 미칠 수 있습니다.

추론 파라미터를 수정하는 방법을 알아보려면 원하는 방법에 해당하는 탭을 선택하고 다음 단계를 따릅니다.

------
#### [ Console ]

**지식 기반을 쿼리할 때 추론 파라미터를 수정하는 방법** - [지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 또는 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따르세요. **구성** 창을 열면 **추론 파라미터** 섹션이 표시됩니다. 필요에 따라 파라미터를 수정합니다.

**문서와의 채팅에서 추론 파라미터를 수정하는 방법** - [지식 기반이 구성되지 않은 문서와의 채팅](knowledge-base-chatdoc.md) 섹션의 단계를 따르세요. **구성** 창에서 **추론 파라미터** 섹션을 확장하고 필요에 따라 파라미터를 수정합니다.

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API에 대한 직접 호출에서 모델 파라미터를 제공합니다. 지식 기반을 쿼리하는 경우 `knowledgeBaseConfiguration`의 `inferenceConfig` 필드에, [문서와의 채팅](knowledge-base-chatdoc.md)의 경우 `externalSourcesConfiguration`의 필드에 추론 파라미터를 제공하여 모델을 사용자 지정합니다.

`inferenceConfig` 필드 내에는 다음과 같은 파라미터가 포함된 `textInferenceConfig` 필드가 있습니다.
+ temperature
+ topP
+ maxTokenCount
+ stopSequences

`externalSourcesConfiguration` 및 `knowledgeBaseConfiguration`의 `inferenceConfig` 필드에서 다음 파라미터를 사용하여 모델을 사용자 지정할 수 있습니다.
+ temperature
+ topP
+ maxTokenCount
+ stopSequences

이러한 각 파라미터의 함수에 대한 자세한 설명은 [추론 파라미터를 사용하여 응답 생성에 영향을 주는 방법](inference-parameters.md) 섹션을 참조하세요.

또한 `additionalModelRequestFields` 맵을 통해 `textInferenceConfig`에서 지원하지 않는 사용자 지정 파라미터를 제공할 수도 있습니다. 이 인수를 사용하여 특정 모델에 고유한 파라미터를 제공할 수 있습니다. 고유한 파라미터에 대한 내용은 [파운데이션 모델의 추론 요청 파라미터 및 응답 필드](model-parameters.md) 섹션을 참조하세요.

파라미터가 `textInferenceConfig`에서 생략된 경우 기본값이 사용됩니다. `textInferneceConfig`에서 인식되지 않는 파라미터는 무시되지만, `AdditionalModelRequestFields`에서 인식되지 않는 파라미터는 예외로 이어질 수 있습니다.

`additionalModelRequestFields` 및 `TextInferenceConfig` 모두에 동일한 파라미터가 있는 경우 검증 예외가 발생합니다.

**RetrieveAndGenerate에서 모델 파라미터 사용**

 다음은 `RetrieveAndGenerate` 요청 본문의 `generationConfiguration`에 해당하는 `inferenceConfig` 및 `additionalModelRequestFields` 구조의 예제입니다.

```
"inferenceConfig": {
    "textInferenceConfig": {
        "temperature": 0.5,  
        "topP": 0.5,
        "maxTokens": 2048,
        "stopSequences": ["\nObservation"]
    }
},
"additionalModelRequestFields": {
    "top_k": 50
}
```

 다음 예제에서는 `temperature`를 0.5로, `top_p`를 0.5로, `maxTokens`를 2048로 설정하고, 생성된 응답에서 문자열 ‘\$1nObservation’을 발견하면 생성을 중지하고 사용자 지정 `top_k` 값인 50을 전달합니다.

------

## 지식 기반 프롬프트 템플릿: 오케스트레이션 및 생성
<a name="kb-test-config-prompt-template"></a>

지식 기반을 쿼리하고 응답 생성을 요청할 때, Amazon Bedrock는 지침과 컨텍스트를 사용자 쿼리와 결합하는 프롬프트 템플릿을 사용하여 응답 생성을 위해 모델로 전송되는 생성 프롬프트를 구성합니다. 사용자의 프롬프트를 검색 쿼리로 변환하는 오케스트레이션 프롬프트를 사용자 지정할 수 있습니다. 다음과 같은 도구를 사용하여 프롬프트 템플릿을 엔지니어링할 수 있습니다.
+ **프롬프트 자리 표시자** - Amazon Bedrock Knowledge Bases에 사전 정의된 변수로, 지식 기반 쿼리 과정에서 런타임에 동적으로 채워집니다. 이러한 자리 표시자는 시스템 프롬프트에서 `$` 기호로 둘러싸여 있습니다. 다음 목록은 사용할 수 있는 자리 표시자를 설명합니다.
**참고**  
`$output_format_instructions$` 자리 표시자는 인용이 응답에 표시되기 위한 필수 필드입니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/kb-test-config.html)
+ **XML 태그** - Anthropic 모델은 XML 태그를 사용하여 프롬프트를 구성하고 설명할 수 있도록 지원합니다. 최적의 결과를 얻으려면 설명형 태그 이름을 사용합니다. 예를 들어, 기본 시스템 프롬프트에는 이전에 질문한 데이터베이스 설명에 사용된 `<database>` 태그가 표시됩니다. 자세한 내용을 알아보려면 [Anthropic 사용 설명서](https://docs.anthropic.com/en/docs/welcome)의 [XML 태그 사용](https://docs.anthropic.com/claude/docs/use-xml-tags)을 참조하세요.

일반적인 프롬프트 엔지니어링 지침은 [프롬프트 엔지니어링 개념](prompt-engineering-guidelines.md) 섹션을 참조하세요.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

[지식 기반 쿼리 및 데이터 검색](kb-test-retrieve.md) 또는 [지식 기반 쿼리 및 검색된 데이터를 기반으로 응답 생성](kb-test-retrieve-generate.md) 섹션의 콘솔 단계를 따릅니다. 테스트 창에서 **응답 생성**을 켭니다. 그런 다음 **구성** 창에서 **지식 기반 프롬프트 템플릿** 섹션을 확장합니다.

1. **편집**을 선택합니다.

1. 필요에 따라 텍스트 편집기에서 프롬프트 자리 표시자 및 XML 태그를 비롯한 시스템 프롬프트를 편집합니다. 기본 프롬프트 템플릿으로 되돌리려면 **기본값으로 재설정**을 선택합니다.

1. 편집을 마쳤으면 **변경 사항 저장**을 선택합니다. 시스템 프롬프트를 저장하지 않고 종료하려면 **변경 사항 취소**를 선택합니다.

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청을 수행할 때 [GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) 객체에 매핑된 `generationConfiguration` 필드를 포함합니다. 이 필드의 위치를 보려면 API 참조의 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청 본문을 참조하세요.

다음 JSON 객체는 반환할 검색된 결과의 최대 수를 설정하는 데 [GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) 객체에 필요한 최소 필드를 보여줍니다.

```
"generationConfiguration": {
    "promptTemplate": {
        "textPromptTemplate": "string"
    }
}
```

필요에 따라 `textPromptTemplate` 필드에 프롬프트 자리 표시자 및 XML 태그를 포함하여 사용자 지정 프롬프트 템플릿을 입력합니다. 시스템 프롬프트에서 허용되는 최대 문자 수는 [GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)의 `textPromptTemplate` 필드를 참조하세요.

------

# 지식 기반을 사용하여 모델 추론을 위한 응답 생성 구성
<a name="kb-test-configure-reasoning"></a>

특정 파운데이션 모델은 더 크고 복잡한 태스크를 수행하고 더 작고 간단한 단계로 분류하는 모델 추론을 수행할 수 있습니다. 사고 체인(CoT) 추론이라고도 하는 이 프로세스는 모델이 응답하기 전에 생각할 수 있는 기회를 제공하여 모델 정확도를 개선할 수 있습니다. 모델 추론은 다단계 분석, 수학 문제, 복잡한 추론 태스크와 같은 태스크에 가장 유용합니다. 자세한 내용은 [모델 추론을 사용하여 모델 응답 향상](inference-reasoning.md) 섹션을 참조하세요.

**참고**  
이 페이지에서는 Amazon Bedrock Knowledge Bases 전용 추론 구성을 사용하는 방법을 설명합니다. `InvokeModel` API를 사용하여 직접 모델 간접 호출에 대한 추론을 구성하는 방법에 대한 자세한 내용은 [모델 추론을 사용하여 모델 응답 향상](inference-reasoning.md) 섹션을 참조하세요.

모델 추론을 활성화하면 정확도가 향상되고 인용 결과가 향상될 수 있지만 지연 시간이 증가할 수 있습니다. 다음은 Amazon Bedrock Knowledge Bases에서 추론 모델을 사용하여 데이터 소스를 쿼리하고 응답을 생성할 때 고려해야 할 몇 가지 사항입니다.

**Topics**
+ [추론 모델](#kb-test-reasoning-models)
+ [Claude 3.7 Sonnet에 모델 추론 사용](#kb-test-reasoning-using)
+ [일반적인 고려 사항](#kb-test-reasoning-general-considerations)
+ [API 고려 사항 검색 및 생성](#kb-test-reasoning-api-considerations)

## 추론 모델
<a name="kb-test-reasoning-models"></a>

모델 추론은 다음 모델에 사용할 수 있습니다.


| 파운데이션 모델 | 모델 ID | 토큰 수 | 추론 구성 | 
| --- | --- | --- | --- | 
| Anthropic Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 | 이 모델에는 출력 토큰과 추론 토큰을 모두 포함하는 32,768개의 토큰이 있습니다. | 구성 가능한 토큰 예산을 사용하여 이 모델에 대한 추론을 활성화하거나 비활성화할 수 있습니다. 기본적으로 추론은 비활성화되어 있습니다. | 
| Anthropic Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 | 이 모델에는 출력 토큰과 추론 토큰을 모두 포함하는 65,536개의 토큰이 있습니다. | 구성 가능한 토큰 예산을 사용하여 이 모델에 대한 추론을 활성화하거나 비활성화할 수 있습니다. 기본적으로 추론은 비활성화되어 있습니다. | 
| Anthropic Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 | 이 모델에는 출력 토큰과 추론 토큰을 모두 포함하는 65,536개의 토큰이 있습니다. | 구성 가능한 토큰 예산을 사용하여 이 모델에 대한 추론을 활성화하거나 비활성화할 수 있습니다. 기본적으로 추론은 비활성화되어 있습니다. | 
| DeepSeek DeepSeek-R1 | deepseek.r1-v1:0 | 이 모델에는 출력 토큰과 추론 토큰을 모두 포함하는 8,192개의 토큰이 있습니다. 사고 토큰 수는 구성할 수 없으며 최대 출력 토큰 수는 8,192개보다 크지 않아야 합니다. | 추론은 이 모델에 대해 항상 활성화됩니다. 모델은 추론 기능 켜기 및 끄기를 지원하지 않습니다. | 

## Claude 3.7 Sonnet에 모델 추론 사용
<a name="kb-test-reasoning-using"></a>

**참고**  
DeepSeek-R1 모델에서는 모델 추론이 항상 활성화됩니다. 모델은 추론 기능 켜기 및 끄기를 지원하지 않습니다.

Claude 3.7 Sonnet 모델을 사용하는 경우 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API의 `additionalModelRequestFields` 파라미터를 사용하여 모델 추론을 활성화하거나 비활성화할 수 있습니다. 이 파라미터는 모든 키-값 페어를 허용합니다. 예를 들어 아래와 같이 `reasoningConfig` 필드를 추가하고 `type` 키를 사용하여 추론을 활성화하거나 비활성화할 수 있습니다.

```
{
   "input": { 
      "text": "string",
      "retrieveAndGenerateConfiguration": { 
      "knowledgeBaseConfiguration": { 
         "generationConfiguration": { 
            "additionalModelRequestFields": {
                "reasoningConfig" : {
                    "type": "enabled",
                    "budget_tokens": INT_VAL, #required when enabled
                }
            }
         },
         "knowledgeBaseId": "string",
      },
      "type": "string"
   },
   "sessionId": "string"
}
```

## 일반적인 고려 사항
<a name="kb-test-reasoning-general-considerations"></a>

다음은 지식 기반에 추론 모델을 사용하기 위한 몇 가지 일반적인 고려 사항입니다.
+ 추론 모델은 쿼리에 응답하는 데 최대 5분이 소요됩니다. 모델이 쿼리에 응답하는 데 5분 이상 걸리면 시간 초과가 발생합니다.
+ 5분 제한 시간을 초과하지 않도록 쿼리 및 응답 생성을 구성할 때 생성 단계에서만 모델 추론이 활성화됩니다. 오케스트레이션 단계는 모델 추론을 가질 수 없습니다.
+ 추론 모델은 최대 8,192개의 토큰을 사용하여 쿼리에 응답할 수 있으며, 여기에는 출력 토큰과 사고 토큰이 모두 포함됩니다. 이 제한을 초과하는 최대 출력 토큰 수에 대한 요청이 있는 모든 요청에는 오류가 발생합니다.

## API 고려 사항 검색 및 생성
<a name="kb-test-reasoning-api-considerations"></a>

다음은 추론 모델에 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API를 사용할 때 고려해야 할 몇 가지 사항입니다.
+ 기본적으로 Claude 3.7 Sonnet을 포함한 모든 모델에 대해 추론이 비활성화되면 온도가 0으로 설정됩니다. 추론이 활성화된 경우 온도를 1로 설정해야 합니다.

  ```
  "inferenceConfig": {
      "textInferenceConfig": {
          "maxTokens": 8192,
          "temperature": 1
      }
  }
  ```
+ Claude 3.7 Sonnet 모델에 추론이 활성화된 경우 파라미터 Top P를 비활성화해야 합니다. 상위 P는 생성 중에 선택할 수 있는 토큰의 백분위수를 결정하는 추가 모델 요청 필드입니다. 기본적으로 다른 Anthropic Claude 모델의 Top P 값은 1입니다. Claude 3.7 Sonnet 모델의 경우 이 값은 기본적으로 비활성화됩니다.
+ 모델 추론을 사용하는 경우 지연 시간이 증가할 수 있습니다. 이 API 작업과 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API 작업을 사용할 때 API로부터 응답을 받는 데 지연이 발생할 수 있습니다.

# AI 애플리케이션을 위한 지식 기반 배포
<a name="knowledge-base-deploy"></a>

애플리케이션에 지식 기반을 배포하려면 지식 기반에 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 또는 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 요청을 수행하도록 설정합니다. 이러한 API 작업을 사용하여 응답을 쿼리하고 생성하는 방법은 [쿼리 및 응답을 사용하여 지식 기반 테스트](knowledge-base-test.md) 섹션을 참조하세요.

또한 지식 기반을 에이전트에 연결할 수 있으며, 에이전트는 오케스트레이션 과정에서 필요할 때 지식 기반을 간접적으로 호출합니다. 자세한 내용은 [AI 에이전트를 사용하여 애플리케이션에서 태스크 자동화](agents.md) 섹션을 참조하세요.

지식 기반을 배포하려면 먼저 데이터 소스를 구성하고 지식 기반과 동기화해야 합니다. [지원되는 데이터 소스](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)를 참조하세요.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

**지식 기반을 에이전트에 연결하는 방법**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **에이전트**를 선택합니다.

1. 지식 기반을 추가하려는 에이전트의 이름을 선택합니다.

1. **규격 초안** 섹션에서 **규격 초안**을 선택합니다.

1. **지식 기반** 섹션에서 **추가**를 선택합니다.

1. **지식 기반 선택** 아래의 드롭다운 목록에서 지식 기반을 선택하고 에이전트가 지식 기반과 어떻게 상호 작용하고 결과를 반환할 것인지에 대한 지침을 지정합니다.

**에이전트에서 지식 기반 연결을 해제하는 방법**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **에이전트**를 선택합니다.

1. 지식 기반을 추가하려는 에이전트의 이름을 선택합니다.

1. **규격 초안** 섹션에서 **규격 초안**을 선택합니다.

1. **지식 기반** 섹션에서 지식 기반을 선택합니다.

1. **삭제**를 선택합니다.

------
#### [ API ]

지식 기반을 에이전트와 연결하려면 [AssociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_AssociateAgentKnowledgeBase.html) 요청을 전송합니다.
+ 에이전트가 지식 기반 및 반환 결과와 상호 작용하는 방법에 대한 지침을 제공하는 자세한 `description`을 포함합니다.
+ 에이전트가 지식 기반을 쿼리할 수 있도록 `knowledgeBaseState`를 `ENABLED`로 설정합니다.

[UpdateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgentKnowledgeBase.html) 요청을 전송하여 에이전트에 연결된 지식 기반을 업데이트할 수 있습니다. 예를 들어, 문제를 해결할 수 있도록 `knowledgeBaseState`를 `ENABLED`로 설정할 수 있습니다. 모든 필드를 덮어쓰게 되므로 업데이트하려는 필드 및 동일하게 유지하려는 필드를 모두 포함합니다.

에이전트에서 지식 기반의 연결을 해제하려면 [DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) 요청을 전송합니다.

------

# Amazon Bedrock Knowledge Bases에 대한 정보 확인
<a name="kb-info"></a>

지식 기반의 설정 및 상태와 같은 정보를 확인할 수 있습니다.

Amazon CloudWatch Logs를 사용하여 지식 기반을 모니터링하려면 [지식 기반 로깅](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)을 참조하세요.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

**지식 기반과 관련된 정보를 확인하는 방법**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. 지식 기반의 세부 정보를 보려면 소스의 **이름**을 선택하거나, 소스 옆의 라디오 버튼을 선택한 후 **편집**을 선택합니다.

1. 세부 정보 페이지에서 다음 작업을 수행할 수 있습니다.
   + 지식 기반의 세부 정보를 변경하려면 **지식 기반 개요** 섹션에서 **편집**을 선택합니다.
   + 지식 기반에 연결된 태그를 업데이트하려면 **태그** 섹션에서 **태그 관리**를 선택합니다.
   + 지식 기반을 생성했던 데이터 소스를 업데이트하고 변경 사항을 동기화해야 할 경우, **데이터 소스**에서 **동기화**를 선택합니다.
   + 데이터 소스의 세부 정보를 보려면 **데이터 소스 이름**을 선택합니다. 세부 정보 내에서 **동기화 기록** 섹션의 동기화 이벤트 옆에 있는 라디오 버튼을 선택한 후 **경고 보기**를 선택하면 데이터 수집 작업의 파일이 동기화되지 않은 이유를 볼 수 있습니다.
   + 지식 기반에 사용되는 벡터 임베딩 모델을 관리하려면 **프로비저닝된 처리량 편집**을 선택합니다.
   + 편집을 마쳤으면 **변경 사항 저장**을 선택합니다.

------
#### [ API ]

지식 기반에 대한 정보를 가져오려면 `knowledgeBaseId`를 지정하여 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용해 [GetKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBase.html) 요청을 전송합니다.

지식 기반에 대한 정보를 나열하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) 요청을 전송합니다. 응답으로 반환할 최대 결과 수를 설정할 수 있습니다. 설정한 수보다 결과가 큰 경우 응답은 `nextToken`을 반환합니다. 또 다른 [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) 요청의 `nextToken` 필드에서 이 값을 사용하여 다음 결과 배치를 볼 수 있습니다.

------

# Amazon Bedrock Knowledge Bases 수정
<a name="kb-update"></a>

지식 기반 구성을 변경하는 등, 지식 기반을 업데이트할 수 있습니다.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

**지식 기반을 업데이트하는 방법**

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. 지식 기반을 선택하여 세부 정보를 보거나, 지식 기반 옆의 라디오 버튼을 선택하고 **편집**을 선택합니다.

1. 다음과 같은 방법으로 지식 기반을 수정할 수 있습니다.
   + **지식 기반 개요** 섹션에서 **편집**을 선택하여 지식 기반에 대한 구성을 변경합니다.
   + **태그** 섹션에서 **태그 관리**를 선택하여 지식 기반에 연결된 태그를 변경하고 관리합니다.
   + **데이터 소스** 섹션에서 지식 기반의 데이터 소스를 변경하고 관리합니다.

1. 편집을 마쳤으면 **변경 사항 저장**을 선택합니다.

------
#### [ API ]

지식 기반을 업데이트하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [UpdateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateKnowledgeBase.html) 요청을 전송합니다. 모든 필드를 덮어쓰게 되므로 업데이트하려는 필드 및 동일하게 유지하려는 필드를 모두 포함합니다.

------

# Amazon Bedrock Knowledge Bases 삭제
<a name="kb-delete"></a>

더 이상 사용하지 않거나 필요하지 않은 지식 기반을 삭제하거나 제거할 수 있습니다. 지식 기반을 삭제할 때 지식 기반과 연결된 모든 리소스를 완전히 삭제하려면 다음 작업도 함께 수행해야 합니다.
+ 지식 기반이 연결된 모든 에이전트에서 연결을 해제합니다.
+ 지식 기반에 대한 벡터 저장소 자체를 삭제합니다.

**참고**  
새로 만들어진 데이터 소스의 기본 `dataDeletionPolicy`는 데이터 소스를 만드는 과정에서 달리 지정되지 않은 한 ”삭제”입니다. 이 정책은 지식 기반 또는 데이터 소스 리소스를 삭제할 때 적용됩니다. 정책을 업데이트하여 벡터 임베딩으로 변환된 데이터 소스의 데이터를 “유지”할 수 있습니다. 지식 기반 또는 데이터 소스 리소스를 삭제한다고 해서 **벡터 저장소 자체가 삭제되지는 않습니다**.

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

------
#### [ Console ]

**지식 기반을 삭제하려면 다음을 수행하세요**

1. 다음 단계를 진행하기 전에 연결된 에이전트에서 지식 기반을 삭제합니다. 이렇게 하려면 다음 단계를 수행합니다.

   1. 왼쪽 탐색 창에서 **에이전트**를 선택합니다.

   1. 지식 기반을 삭제하려는 에이전트의 **이름**을 선택합니다.

   1. 더 이상 존재하지 않는 지식 기반에 대한 참조를 에이전트에서 삭제해야 한다고 경고하는 빨간색 배너가 나타납니다.

   1. 제거할 지식 기반 옆의 라디오 버튼을 선택합니다. **추가**를 선택한 후 **삭제**를 선택합니다.

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명으로 AWS Management Console에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **지식 기반**을 선택합니다.

1. 지식 기반을 선택하거나 해당 지식 기반 옆에 있는 라디오 버튼을 선택합니다. 그런 다음 **삭제**를 선택합니다.

1. 지식 기반 삭제에 대한 경고 메시지를 검토합니다. 이러한 조건을 수락할 경우 입력 상자에 **delete**을 입력하고 **삭제**를 선택하여 확인합니다.
**참고**  
**벡터 저장소 자체는 삭제되지 않고** 데이터만 삭제됩니다. 벡터 저장소의 콘솔 또는 SDK를 사용하여 벡터 저장소를 삭제할 수 있습니다. 지식 기반과 함께 사용하고 있는 Amazon Bedrock 에이전트도 확인해야 합니다.

------
#### [ API ]

지식 기반을 삭제하려면 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [DeleteKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBase.html) 요청을 전송합니다.

또한 [Amazon Bedrock Agents 빌드 타임 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)를 사용하여 [DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) 요청을 전송해 지식 기반이 연결된 모든 에이전트에서 지식 기반의 연결을 해제해야 합니다.

또한 벡터 저장소의 콘솔 또는 SDK를 사용하여 벡터 저장소 자체를 삭제해야 합니다.

------