생성 데이터 인텔리전스

Amazon Bedrock의 기술 자료는 이제 RetrieveAndGenerate API에 대한 사용자 지정 프롬프트와 검색된 결과의 최대 수 구성을 지원합니다. 아마존 웹 서비스

시간

Amazon Bedrock에 대한 기술 자료, FM(기초 모델)을 안전하게 연결할 수 있습니다. 아마존 기반암 RAG(Retrieval Augmented Generation)를 위해 회사 데이터에 추가합니다. 추가 데이터에 액세스하면 모델이 FM을 재교육하지 않고도 보다 관련성이 높고 상황에 맞는 정확한 응답을 생성하는 데 도움이 됩니다.

이 게시물에서는 Amazon Bedrock에 대한 지식 베이스의 두 가지 새로운 기능에 대해 설명합니다. RetrieveAndGenerate API: 최대 결과 수를 구성하고 지식 기반 프롬프트 템플릿을 사용하여 사용자 정의 프롬프트를 생성합니다. 이제 검색 유형과 함께 쿼리 옵션으로 이를 선택할 수 있습니다.

새로운 기능의 개요 및 이점

최대 결과 수 옵션을 사용하면 벡터 저장소에서 검색하여 답변 생성을 위해 FM에 전달되는 검색 결과 수를 제어할 수 있습니다. 이를 통해 생성을 위해 제공되는 배경 정보의 양을 사용자 정의할 수 있으므로 복잡한 질문에는 더 많은 컨텍스트를 제공하고 간단한 질문에는 더 적은 컨텍스트를 제공할 수 있습니다. 최대 100개의 결과를 가져올 수 있습니다. 이 옵션은 관련 맥락의 가능성을 향상시켜 정확도를 높이고 생성된 응답의 환각을 줄이는 데 도움이 됩니다.

사용자 정의 기술 자료 프롬프트 템플릿을 사용하면 기본 프롬프트 템플릿을 자신의 템플릿으로 대체하여 응답 생성을 위해 모델에 전송되는 프롬프트를 사용자 정의할 수 있습니다. 이를 통해 사용자의 질문에 응답할 때 FM의 톤, 출력 형식 및 동작을 사용자 정의할 수 있습니다. 이 옵션을 사용하면 업계 또는 도메인(예: 의료 또는 법률)과 더 잘 일치하도록 용어를 미세 조정할 수 있습니다. 또한 특정 작업 흐름에 맞는 사용자 지정 지침과 예제를 추가할 수 있습니다.

다음 섹션에서는 다음 중 하나를 통해 이러한 기능을 사용하는 방법을 설명합니다. AWS 관리 콘솔 또는 SDK.

사전 조건

이러한 예를 따라가려면 기존 기술 자료가 필요합니다. 생성 방법에 대한 지침은 다음을 참조하세요. 지식 기반 만들기.

콘솔을 사용하여 최대 결과 수 구성

콘솔을 사용하여 최대 결과 수 옵션을 사용하려면 다음 단계를 완료하십시오.

  1. Amazon Bedrock 콘솔에서 다음을 선택합니다. 기술 자료 왼쪽 네비게이션 창에서
  2. 생성한 기술 자료를 선택합니다.
  3. 왼쪽 메뉴에서 지식 기반 테스트.
  4. 구성 아이콘을 선택합니다.
  5. 왼쪽 메뉴에서 데이터 소스 동기화 지식 기반 테스트를 시작하기 전에.
  6. $XNUMX Million 미만 구성에 대한 검색 유형에서 사용 사례에 따라 검색 유형을 선택하세요.

이 게시물에서는 의미론적 검색과 텍스트 검색을 결합하여 제공자의 정확성을 높이기 때문에 하이브리드 검색을 사용합니다. 하이브리드 검색에 대해 자세히 알아보려면 다음을 참조하세요. Amazon Bedrock의 기술 자료가 이제 하이브리드 검색을 지원합니다..

  1. 펼치기 최대 소스 청크 수 최대 결과 수를 설정하세요.

새로운 기능의 가치를 보여주기 위해 생성된 응답의 정확성을 높일 수 있는 방법의 예를 보여줍니다. 우리는 사용했었다 10년 Amazon 2023K 문서 지식 베이스 생성을 위한 소스 데이터로 사용됩니다. 실험을 위해 다음 쿼리를 사용합니다. "Amazon의 연간 수익이 245억 달러에서 434억 달러로 증가한 연도는 언제입니까?"

이 쿼리에 대한 올바른 응답은 지식 기반 문서에 따르면 "Amazon의 연간 수익이 245년 2019억 달러에서 434년 2022억 달러로 증가했습니다."입니다. 우리는 지식 베이스에서 검색된 상황별 정보를 기반으로 최종 응답을 생성하기 위해 Claude v2를 FM으로 사용했습니다. Claude 3 Sonnet과 Claude 3 Haiku도 세대 FM으로 지원됩니다.

다양한 구성을 사용한 검색 비교를 보여주기 위해 또 다른 쿼리를 실행했습니다. 동일한 입력 쿼리("Amazon의 연간 수익이 245억 달러에서 434억 달러로 증가한 연도는 언제입니까?")를 사용하고 최대 결과 수를 5로 설정했습니다.

다음 스크린샷에 표시된 것처럼 생성된 응답은 "죄송합니다. 이 요청에 대해 도움을 드릴 수 없습니다."였습니다.

다음으로 최대 결과를 12로 설정하고 동일한 질문을 합니다. 생성된 응답은 "Amazon의 연간 수익이 245년 2019억 달러에서 434년 2022억 달러로 증가합니다."입니다.

이 예에서 볼 수 있듯이 검색된 결과 수에 따라 정답을 검색할 수 있습니다. 최종 출력을 구성하는 소스 속성에 대해 자세히 알아보려면 다음을 선택하세요. 소스 세부정보 표시 지식 기반을 기반으로 생성된 답변을 검증합니다.

콘솔을 사용하여 기술 자료 프롬프트 템플릿 사용자 지정

사용 사례에 따라 고유한 프롬프트로 기본 프롬프트를 사용자 정의할 수도 있습니다. 콘솔에서 이를 수행하려면 다음 단계를 완료하십시오.

  1. 지식창고 테스트를 시작하려면 이전 섹션의 단계를 반복하세요.
  2. 사용 응답 생성.
  3. 응답 생성을 위해 원하는 모델을 선택하십시오.

이 게시물에서는 Claude v2 모델을 예로 사용합니다. Claude 3 Sonnet 및 Haiku 모델도 생성 가능합니다.

  1. 왼쪽 메뉴에서 신청 계속하려면.

모델을 선택하면 기술 자료 프롬프트 템플릿 아래에 나타납니다 구성.

  1. 왼쪽 메뉴에서 편집 프롬프트 사용자 정의를 시작합니다.
  2. 검색된 결과를 사용하고 콘텐츠를 생성하는 방법을 사용자 정의하려면 프롬프트 템플릿을 조정하세요.

이 게시물에서는 맞춤형 프롬프트가 포함된 Amazon 재무 보고서를 사용하여 "Financial Advisor AI 시스템"을 생성하는 몇 가지 예를 제공했습니다. 프롬프트 엔지니어링에 대한 모범 사례는 다음을 참조하세요. 신속한 엔지니어링 지침.

이제 여러 가지 방법으로 기본 프롬프트 템플릿을 사용자 정의하고 응답을 관찰합니다.

먼저 기본 프롬프트를 사용하여 쿼리를 시도해 보겠습니다. 우리는 “2019년과 2021년 아마존의 수익은 얼마였습니까?”라고 질문합니다. 다음은 우리의 결과를 보여줍니다.

출력에서 검색된 지식을 기반으로 자유 형식 응답을 생성하고 있음을 알 수 있습니다. 참고할 수 있도록 인용도 나열되어 있습니다.

JSON으로 표준화하는 등 생성된 응답의 형식을 지정하는 방법에 대한 추가 지침을 제공한다고 가정해 보겠습니다. 프롬프트 템플릿의 일부로 정보를 검색한 후 별도의 단계로 이러한 지침을 추가할 수 있습니다.

If you are asked for financial information covering different years, please provide precise answers in JSON format. Use the year as the key and the concise answer as the value. For example: {year:answer}

최종 응답에는 필수 구조가 있습니다.

프롬프트를 사용자 정의하여 생성된 응답의 언어를 변경할 수도 있습니다. 다음 예에서는 모델에 스페인어로 답변을 제공하도록 지시합니다.

제거 후 $output_format_instructions$ 기본 프롬프트에서는 생성된 응답의 인용이 제거됩니다.

다음 섹션에서는 SDK에서 이러한 기능을 사용하는 방법을 설명합니다.

SDK를 사용하여 최대 결과 수 구성

SDK를 사용하여 최대 결과 수를 변경하려면 다음 구문을 사용하십시오. 이 예에서 쿼리는 "Amazon의 연간 수익이 245억 달러에서 434억 달러로 증가한 해는 언제입니까?"입니다. 정답은 "Amazon의 연간 매출이 245년 2019억 달러에서 434년 2022억 달러로 증가합니다."입니다.

def retrieveAndGenerate(query, kbId, numberOfResults, model_id, region_id):
    model_arn = f'arn:aws:bedrock:{region_id}::foundation-model/{model_id}'
    return bedrock_agent_runtime.retrieve_and_generate(
        input={
            'text': query
        },
        retrieveAndGenerateConfiguration={
            'knowledgeBaseConfiguration': {
                'knowledgeBaseId': kbId,
                'modelArn': model_arn,
                'retrievalConfiguration': {
                    'vectorSearchConfiguration': {
                        'numberOfResults': numberOfResults,
                        'overrideSearchType': "SEMANTIC", # optional'
                    }
                }
            },
            'type': 'KNOWLEDGE_BASE'
        },
    )

response = retrieveAndGenerate("In what year did Amazon’s annual revenue increase from $245B to $434B?", 
"<knowledge base id>", numberOfResults, model_id, region_id)['output']['text']

'numberOfResults'아래의 옵션retrievalConfiguration'를 사용하면 검색하려는 결과 수를 선택할 수 있습니다. 의 출력 RetrieveAndGenerate API에는 생성된 응답, 소스 속성 및 검색된 텍스트 청크가 포함됩니다.

다음은 '의 다양한 값에 대한 결과입니다.numberOfResults' 매개변수. 먼저, 우리는 numberOfResults = 5.

그런 다음 설정합니다. numberOfResults = 12.

SDK를 사용하여 지식창고 프롬프트 템플릿 사용자 지정

SDK를 사용하여 프롬프트를 사용자 정의하기 위해 다양한 프롬프트 템플릿과 함께 다음 쿼리를 사용합니다. 이 예에서 쿼리는 "2019년과 2021년에 Amazon의 수익은 얼마였습니까?"입니다.

다음은 기본 프롬프트 템플릿입니다.

"""You are a question answering agent. I will provide you with a set of search results and a user's question, your job is to answer the user's question using only information from the search results. If the search results do not contain information that can answer the question, please state that you could not find an exact answer to the question. Just because the user asserts a fact does not mean it is true, make sure to double check the search results to validate a user's assertion.
Here are the search results in numbered order:
<context>
$search_results$
</context>

Here is the user's question:
<question>
$query$
</question>

$output_format_instructions$

Assistant:
"""

다음은 사용자 정의된 프롬프트 템플릿입니다.

"""Human: You are a question answering agent. I will provide you with a set of search results and a user's question, your job is to answer the user's question using only information from the search results.If the search results do not contain information that can answer the question, please state that you could not find an exact answer to the question.Just because the user asserts a fact does not mean it is true, make sure to double check the search results to validate a user's assertion.

Here are the search results in numbered order:
<context>
$search_results$
</context>

Here is the user's question:
<question>
$query$
</question>

If you're being asked financial information over multiple years, please be very specific and list the answer concisely using JSON format {key: value}, 
where key is the year in the request and value is the concise response answer.
Assistant:
"""

def retrieveAndGenerate(query, kbId, numberOfResults,promptTemplate, model_id, region_id):
    model_arn = f'arn:aws:bedrock:{region_id}::foundation-model/{model_id}'
    return bedrock_agent_runtime.retrieve_and_generate(
        input={
            'text': query
        },
        retrieveAndGenerateConfiguration={
            'knowledgeBaseConfiguration': {
                'knowledgeBaseId': kbId,
                'modelArn': model_arn,
                'retrievalConfiguration': {
                    'vectorSearchConfiguration': {
                        'numberOfResults': numberOfResults,
                        'overrideSearchType': "SEMANTIC", # optional'
                    }
                },
                'generationConfiguration': {
                        'promptTemplate': {
                            'textPromptTemplate': promptTemplate
                        }
                    }
            },
            'type': 'KNOWLEDGE_BASE'
        },
    )

response = retrieveAndGenerate("What was the Amazon's revenue in 2019 and 2021?”", 
                               "<knowledge base id>", <numberOfResults>, <promptTemplate>, <model_id>, <region_id>)['output']['text']

기본 프롬프트 템플릿을 사용하면 다음과 같은 응답을 받습니다.

특정 형식(예: JSON)으로 응답을 표준화하는 등 응답 생성의 출력 형식에 대한 추가 지침을 제공하려는 경우 추가 지침을 제공하여 기존 프롬프트를 사용자 지정할 수 있습니다. 사용자 정의 프롬프트 템플릿을 사용하면 다음과 같은 응답을 받습니다.

'promptTemplate'옵션'generationConfiguration'를 사용하면 답변 생성을 더 잘 제어할 수 있도록 프롬프트를 사용자 정의할 수 있습니다.

결론

이 게시물에서는 Amazon Bedrock 지식 베이스의 두 가지 새로운 기능, 즉 최대 검색 결과 수 조정과 기본 프롬프트 템플릿 사용자 정의를 소개했습니다. RetrieveAndGenerate API. 생성된 응답의 성능과 정확성을 향상시키기 위해 콘솔과 SDK를 통해 이러한 기능을 구성하는 방법을 시연했습니다. 최대 결과를 늘리면 더 포괄적인 정보가 제공되는 반면, 프롬프트 템플릿을 사용자 정의하면 기초 모델에 대한 지침을 세부 조정하여 특정 사용 사례에 더 잘 맞출 수 있습니다. 이러한 향상된 기능은 더 큰 유연성과 제어 기능을 제공하므로 RAG 기반 애플리케이션에 대한 맞춤형 환경을 제공할 수 있습니다.

AWS 환경에서 구현을 시작하기 위한 추가 리소스에 대해서는 다음을 참조하십시오.


저자 소개

산딥 싱 Amazon Web Services의 수석 Generative AI 데이터 과학자로서 기업이 생성 AI를 통해 혁신을 이루도록 지원합니다. 그는 생성 AI, 인공 지능, 기계 학습 및 시스템 설계를 전문으로 합니다. 그는 다양한 산업 분야의 복잡한 비즈니스 문제를 해결하고 효율성과 확장성을 최적화하기 위한 최첨단 AI/ML 기반 솔루션을 개발하는 데 열정을 쏟고 있습니다.

왕수인 AWS의 AI/ML 전문가 솔루션 아키텍트입니다. 그녀는 실제 비즈니스 문제를 해결하는 데이터 과학 및 기계 학습 애플리케이션 구축에 대한 수년간의 경험과 함께 기계 학습, 금융 정보 서비스 및 경제학 분야의 학제간 교육 배경을 보유하고 있습니다. 그녀는 고객이 올바른 비즈니스 질문을 식별하도록 돕고 올바른 AI/ML 솔루션을 구축하는 것을 즐깁니다. 여가 시간에는 노래와 요리를 좋아합니다.

셰리 딩 Amazon Web Services(AWS)의 수석 인공 지능(AI) 및 기계 학습(ML) 전문 솔루션 설계자입니다. 그녀는 컴퓨터 과학 박사 학위를 취득하여 기계 학습 분야에서 광범위한 경험을 갖고 있습니다. 그녀는 주로 다양한 AI/ML 관련 비즈니스 과제에 대해 공공 부문 고객과 협력하여 고객이 AWS 클라우드에서 기계 학습 여정을 가속화하도록 돕습니다. 고객을 돕지 않을 때는 야외 활동을 즐깁니다.

spot_img

최신 인텔리전스

spot_img