Amazon Web Services 한국 블로그

Amazon Bedrock, Cohere Command Light 및 Cohere Embed 영어 및 다국어 모델에 대한 액세스 정식 제공

Cohere는 비즈니스 애플리케이션이 텍스트 생성, 요약, 검색, 클러스터링, 분류하고 검색 증강 생성(RAG)을 활용할 수 있도록 지원하는 텍스트 생성 및 표현 모델을 제공합니다. 오늘 Amazon은 Amazon Bedrock에서 Cohere Command LightCohere Embed 영어 및 다국어 모델을 사용할 수 있다고 발표했습니다. 이미 Cohere Command 모델에서 제공되고 있습니다.

Amazon Bedrock은 AI21 Labs, Anthropic, Cohere, Meta, Stability AIAmazon과 같은 선도적인 AI 회사의 고성능 파운데이션 모델(FM)과 생성형 AI 애플리케이션 구축을 위한 광범위한 기능을 제공하여 개발을 간소화하는 동시에 개인 정보 보호와 보안을 유지하는 완전관리형 서비스입니다. 이번 출시를 통해 Amazon Bedrock은 엔터프라이즈급 생성형 AI를 구축하고 확장할 수 있도록 모델 선택의 폭을 더욱 넓혔습니다. Amazon Bedrock에 대한 자세한 내용은 여기 Antje의 게시물에서 확인할 수 있습니다.

Command는 Cohere의 대표적인 텍스트 생성 모델입니다. 사용자 명령을 따르고 비즈니스 애플리케이션에서 유용하게 사용할 수 있도록 훈련되었습니다. Embed는 텍스트 문서에서 고품질 임베딩을 생성하도록 훈련된 모델 세트입니다.

임베딩은 기계 학습(ML)에서 가장 매력적인 개념 중 하나입니다. 이들은 자연어, 권장 사항 및 검색 알고리즘을 처리하는 많은 애플리케이션의 핵심입니다. 모든 유형의 문서, 텍스트, 이미지, 비디오 또는 사운드가 주어지면 이를 벡터라고 하는 일련의 숫자로 변환할 수 있습니다. 임베딩은 특히 의미 있는 정보, 의미론적 관계 또는 상황적 특성을 캡처하는 방식으로 데이터를 벡터로 표현하는 기술을 말합니다. 간단히 말해 임베딩은 유사한 문서를 나타내는 벡터가 서로 “가까이” 있기 때문에 유용합니다. 좀 더 형식적인 용어로 말하자면 임베딩은 인간이 인식하는 의미론적 유사성벡터 공간에서의 근접성으로 변환합니다. 임베딩은 일반적으로 학습 알고리즘 또는 모델을 통해 생성됩니다.

Cohere Embed는 텍스트 문서에서 임베딩을 생성하도록 훈련된 모델 제품군입니다. Cohere Embed는 영어 모델과 다국어 모델의 두 가지 형태로 제공되며, 둘 다 현재 Amazon Bedrock에서 사용할 수 있습니다.

텍스트 임베딩의 주요 사용 사례는 세 가지입니다.

시맨틱 검색 – 임베딩을 사용하면 의미별로 문서 모음을 검색할 수 있으므로 기존 키워드 매칭 시스템에 비해 컨텍스트와 사용자 의도를 더 잘 통합하는 검색 시스템이 탄생합니다.

텍스트 분류 – 텍스트를 자동으로 분류하고 유형에 따라 조치를 취하는 시스템을 구축합니다. 예를 들어 이메일 필터링 시스템은 하나의 메시지를 영업팀에 전달하고 다른 메시지는 계층 2 지원팀에 에스컬레이션하기로 결정할 수 있습니다.

검색 증강 생성(RAG) – 컨텍스트에서 제공되는 데이터로 프롬프트를 보강하여 대규모 언어 모델(LLM) 텍스트 생성의 품질을 개선합니다. 프롬프트를 보강하는 데 사용되는 외부 데이터는 문서 리포지토리, 데이터베이스 또는 API와 같은 여러 데이터 소스에서 가져올 수 있습니다.

회사 정책을 설명하는 수백 개의 문서가 있다고 상상해 보십시오. LLM에서 허용하는 프롬프트 크기가 제한되어 있기 때문에 이러한 문서의 관련 부분을 프롬프트에 컨텍스트로 포함하도록 선택해야 합니다. 해결책은 모든 문서를 임베딩으로 변환하고 OpenSearch와 같은 벡터 데이터베이스에 저장하는 것입니다.

사용자가 이 문서 집합을 쿼리하려는 경우 사용자의 자연어 쿼리를 벡터로 변환하고 벡터 데이터베이스에서 유사성 검색을 수행하여 이 쿼리와 가장 관련성이 높은 문서를 찾습니다. 그런 다음 사용자의 원본 쿼리와 벡터 데이터베이스에 표시된 관련 문서를 LLM 프롬프트에 함께 포함시킵니다(의도한 대로). 프롬프트 컨텍스트에 관련 문서를 포함하면 LLM이 더 정확하고 관련성 높은 답변을 생성하는 데 도움이 됩니다.

이제 Bedrock API를 호출하거나 AWS SDK 또는 AWS Command Line Interface(AWS CLI)를 사용하여 모든 프로그래밍 언어로 작성된 애플리케이션에 Cohere Command Light 및 Embed 모델을 통합할 수 있습니다.

Cohere Embed 실행
AWS News Blog를 정기적으로 읽으시는 분들은 우리가 AWS에서 다루는 기술을 소개하는 것을 좋아한다는 것을 알고 계실 것입니다.

오늘은 Cohere Command Light, Cohere Embed 영어 및 Cohere Embed 다국어 등 세 가지 모델을 출시합니다. Cohere Command Light를 호출하는 코드를 작성하는 것은 이미 Amazon Bedrock에 속한 Cohere Command의 경우와 다르지 않습니다. 그래서 이 예제에서는 Cohere Embed와 상호 작용하는 코드를 작성하는 방법과 Cohere Embed에서 생성되는 임베딩을 사용하는 방법을 살펴보겠습니다.

Bedrock에서 새 모델을 사용하려면 먼저 AWS Management Console로 이동하여 Bedrock 페이지를 엽니다. 그런 다음 왼쪽 하단 창에서 모델 액세스를 선택합니다. 그런 다음 오른쪽 상단의 편집 버튼을 선택하고 Cohere 모델에 액세스합니다.

Bedrock - Cohere 모델을 사용한 모델 활성화

이제 모델에 액세스할 수 있으므로 노트북에서 코드 편집기를 엽니다. AWS SDK에서 AWS 자격 증명을 찾을 수 있도록 AWS Command Line Interface(AWS CLI)가 구성되어 있다고 가정합니다. 이 데모에서는 Python을 사용하지만 Bedrock을 모든 언어에서 호출할 수 있음을 알려드립니다. 또한 Swift 프로그래밍 언어로 작성된 동일한 코드 샘플에 대한 공개 gist도 공유합니다.

Python으로 돌아가서 먼저 ListFoundationModels API 호출을 실행하여 Cohere Embed용 modelId를 찾아보겠습니다.

import boto3
import json
import numpy

bedrock = boto3.client(service_name='bedrock', region_name='us-east-1')

listModels = bedrock.list_foundation_models(byProvider='cohere')
print("\n".join(list(map(lambda x: f"{x['modelName']} : { x['modelId'] }", listModels['modelSummaries']))))

다음 코드를 실행하면 목록이 생성됩니다.

Command : cohere.command-text-v14
Command Light : cohere.command-light-text-v14
Embed English : cohere.embed-english-v3
Embed Multilingual : cohere.embed-multilingual-v3

cohere.embed-english-v3 모델 ID를 선택하고 텍스트 문서를 임베딩으로 변환하는 코드를 작성합니다.

cohereModelId = 'cohere.embed-english-v3'

# 파라미터 목록과 가능한 값은, 
# https://docs.cohere.com/reference/embed에서 Cohere의 API 설명서를 확인하세요

coherePayload = json.dumps({
     'texts': ["이것은 테스트 문서입니다”, “이것은 다른 문서입니다”],
     'input_type': 'search_document',
     'truncate': 'NONE'
})

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime', 
    region_name='us-east-1'
)
print("\nInvoking Cohere Embed...")
response = bedrock_runtime.invoke_model(
    body=coherePayload, 
    modelId=cohereModelId, 
    accept='application/json', 
    contentType='application/json'
)

body = response.get('body').read().decode('utf-8')
response_body = json.loads(body)
print(np.array(response_body['embeddings']))

응답이 인쇄됩니다

[ 1.234375 -0.63671875 -0.28515625 ... 0.38085938 -1.2265625 0.22363281]

이제 임베딩이 완료되었으므로 다음 단계는 애플리케이션에 따라 다릅니다. 이 임베딩을 벡터 저장소에 저장하거나 기존 저장소에서 유사한 문서를 검색하는 데 사용할 수 있습니다.

자세히 알아보려면 Amazon Bedrock 워크숍의 이 섹션에서 제공하는 실습 지침을 따르는 것이 좋습니다. 이것은 RAG의 엔드-투-엔드 예제입니다. LLM으로 전송된 프롬프트에서 문서를 로드하고, 임베딩을 생성하고, 벡터 저장소에 임베딩을 저장하고, 유사성 검색을 수행하고, 관련 문서를 사용하는 방법을 보여 줍니다.

가용성
Cohere Embed 모델은 현재 Amazon Bedrock을 사용할 수 있는 두 AWS 리전, 즉 미국 동부(버지니아 북부) 및 미국 서부(오레곤)의 모든 AWS 고객이 사용할 수 있습니다.

AWS는 모델 추론에 대해 요금을 청구합니다. Command Light의 경우 AWS는 처리된 입력 또는 출력 토큰당 요금을 청구합니다. Embed 모델의 경우 AWS는 입력 토큰당 요금을 청구합니다. 선결제 또는 반복 수수료 없이 사용한 만큼 지불하는 방식을 선택할 수 있습니다. 또한 시간 기반 약정을 체결하여 애플리케이션의 성능 요구 사항을 충족하기에 충분한 처리량을 프로비저닝할 수 있습니다. Amazon Bedrock 요금 페이지에 세부 정보가 있습니다.

이러한 정보를 바탕으로 애플리케이션에서 Amazon Bedrock 및 Cohere Embed 모델에 텍스트 임베딩을 사용할 준비가 되었습니다.

직접 구축해보세요!

— seb