제퍼넷 로고

Amazon Bedrock Cohere 다국어 임베딩 모델을 사용하여 금융 검색 애플리케이션 구축 | 아마존 웹 서비스

시간

기업은 방대한 양의 데이터에 액세스할 수 있지만, 그 중 대부분은 데이터가 구조화되지 않았기 때문에 검색하기 어렵습니다. 분석에 대한 기존 접근 방식 비정형 데이터 키워드 또는 동의어 일치를 사용합니다. 문서의 전체 맥락을 포착하지 못하기 때문에 구조화되지 않은 데이터를 처리하는 데 효율성이 떨어집니다.

대조적으로, 텍스트 임베딩은 다음을 사용합니다. 기계 학습 (ML) 구조화되지 않은 데이터의 의미를 포착하는 기능입니다. 임베딩은 텍스트를 숫자 벡터로 변환하고 문서의 문맥 정보를 인코딩하는 표현 언어 모델에 의해 생성됩니다. 이는 의미 검색과 같은 응용 프로그램을 가능하게 합니다. 검색 증강 생성 (RAG), 주제 모델링 및 텍스트 분류.

예를 들어, 금융 서비스 업계의 애플리케이션에는 수익 보고서에서 통찰력을 추출하고, 재무제표에서 정보를 검색하고, 금융 뉴스에서 찾은 주식 및 시장에 대한 정서를 분석하는 작업이 포함됩니다. 텍스트 임베딩을 통해 업계 전문가는 문서에서 통찰력을 추출하고 오류를 최소화하며 성과를 높일 수 있습니다.

이 게시물에서는 Cohere's를 사용하여 다양한 언어로 금융 뉴스를 검색하고 쿼리할 수 있는 애플리케이션을 소개합니다. 어젯 서비스순위 재지정 모델 아마존 기반암.

Cohere의 다국어 임베딩 모델

Cohere는 컴퓨터가 텍스트를 검색하고, 의미를 포착하고, 대화할 수 있게 해주는 세계적 수준의 대형 언어 모델(LLM) 및 LLM 기반 솔루션을 구축하는 선도적인 엔터프라이즈 AI 플랫폼입니다. 사용 편의성과 강력한 보안 및 개인 정보 보호 제어 기능을 제공합니다.

Cohere의 다국어 임베딩 모델 100개 이상의 언어로 문서의 벡터 표현을 생성하며 Amazon Bedrock에서 사용할 수 있습니다. 이를 통해 AWS 고객은 API로 액세스할 수 있으므로 기본 인프라를 관리할 필요가 없으며 민감한 정보가 안전하게 관리 및 보호됩니다.

다국어 모델은 의미론적 벡터 공간에서 서로 가까운 위치를 할당하여 유사한 의미를 가진 텍스트를 그룹화합니다. 다국어 임베딩 모델을 사용하면 개발자는 다음 그림에 설명된 것처럼 여러 모델 간에 전환할 필요 없이 여러 언어로 된 텍스트를 처리할 수 있습니다. 이를 통해 처리 효율성이 향상되고 다국어 응용 프로그램의 성능이 향상됩니다.

Cohere 임베딩 모델의 주요 특징은 다음과 같습니다.

  • 문서 품질에 집중 – 일반적인 임베딩 모델은 문서 간의 유사성을 측정하도록 학습되지만 Cohere의 모델은 문서 품질도 측정합니다.
  • RAG 애플리케이션 검색 향상 – RAG 애플리케이션에는 Cohere의 임베딩 모델이 뛰어난 우수한 검색 시스템이 필요합니다.
  • 비용 효율적인 데이터 압축 – Cohere는 특수한 압축 인식 교육 방법을 사용하여 벡터 데이터베이스에 대한 상당한 비용 절감 효과를 제공합니다.

텍스트 임베딩 사용 사례

텍스트 임베딩은 구조화되지 않은 데이터를 구조화된 형식으로 변환합니다. 이를 통해 이러한 모든 문서에서 객관적인 비교, 분석 및 통찰력을 얻을 수 있습니다. 다음은 Cohere의 임베딩 모델이 지원하는 사용 사례의 예입니다.

  • 시맨틱 검색 – 벡터 데이터베이스와 결합하면 검색어 의미를 기반으로 한 뛰어난 관련성을 갖춘 강력한 검색 애플리케이션을 사용할 수 있습니다.
  • 더 큰 시스템을 위한 검색 엔진 – RAG 시스템에 연결된 엔터프라이즈 데이터 소스에서 가장 관련성이 높은 정보를 찾고 검색합니다.
  • 텍스트 분류 – 의도 인식, 감정 분석, 고급 문서 분석 지원
  • 주제 모델링 – 문서 모음을 별개의 클러스터로 전환하여 새로운 주제와 테마를 찾아냅니다.

Rerank를 통한 향상된 검색 시스템

기존 키워드 검색 시스템이 이미 존재하는 기업에서 현대적인 의미 검색 기능을 어떻게 도입합니까? 오랫동안 회사 정보 아키텍처의 일부였던 시스템의 경우 임베딩 기반 접근 방식으로 완전히 마이그레이션하는 것은 많은 경우 불가능합니다.

Cohere의 Rerank 엔드포인트 이 격차를 해소하기 위해 설계되었습니다. 이는 사용자의 쿼리에 따라 관련 문서의 순위를 제공하는 검색 흐름의 두 번째 단계 역할을 합니다. 기업은 1단계 검색을 위해 기존 키워드(또는 의미 체계) 시스템을 유지하고 2단계 순위 재지정에서 Rerank 엔드포인트를 사용하여 검색 결과의 품질을 높일 수 있습니다.

Rerank는 단 한 줄의 코드로 사용자 스택에 의미론적 검색 기술을 도입하여 검색 결과를 개선할 수 있는 빠르고 간단한 옵션을 제공합니다. 엔드포인트에는 다국어 지원도 함께 제공됩니다. 다음 그림은 검색 및 순위 재지정 워크플로를 보여줍니다.

솔루션 개요

재무 분석가는 최신 정보를 얻기 위해 금융 간행물, 뉴스 미디어 등 많은 콘텐츠를 소화해야 합니다. 에 따르면 금융전문가협회(AFP), 재무 분석가는 부가 가치 분석 대신 데이터를 수집하거나 프로세스를 관리하는 데 시간의 75%를 소비합니다. 다양한 소스와 문서에서 질문에 대한 답을 찾는 것은 시간이 많이 걸리고 지루한 작업입니다. Cohere 임베딩 모델은 분석가가 여러 언어로 된 수많은 기사 제목을 빠르게 검색하여 특정 쿼리와 가장 관련성이 높은 기사를 찾고 순위를 매기는 데 도움이 되므로 엄청난 시간과 노력을 절약할 수 있습니다.

다음 사용 사례 예에서는 Cohere의 Embed 모델이 하나의 고유한 파이프라인에서 다양한 언어로 된 금융 뉴스 전반에 걸쳐 검색 및 쿼리하는 방법을 보여줍니다. 그런 다음 임베딩 검색에 Rerank를 추가(또는 레거시 어휘 검색에 추가)하여 결과를 더욱 향상시킬 수 있는 방법을 보여줍니다.

지원 노트북은 다음에서 사용할 수 있습니다. GitHub의.

다음 다이어그램은 애플리케이션의 워크플로를 보여줍니다.

Amazon Bedrock을 통해 모델 액세스 활성화

Amazon Bedrock 사용자는 모델을 사용할 수 있도록 하려면 모델에 대한 액세스를 요청해야 합니다. 추가 모델에 대한 액세스를 요청하려면 다음을 선택하세요. 모델 액세스 Amazon Bedrock의 탐색 창 콘솔. 자세한 내용은 다음을 참조하십시오. 모델 액세스. 이 연습에서는 Cohere Embed 다국어 모델에 대한 액세스를 요청해야 합니다.

패키지 설치 및 모듈 가져오기

먼저 필요한 패키지를 설치하고 이 예제에서 사용할 모듈을 가져옵니다.

!pip install --upgrade cohere-aws hnswlib translate

import pandas as pd
import cohere_aws
import hnswlib
import os
import re
import boto3

문서 가져오기

우리는 15개 언어(영어, 터키어, 덴마크어, 스페인어, 폴란드어, 그리스어, 핀란드어, 히브리어, 일본어, 헝가리어, 노르웨이어, 러시아어, 이탈리아어, 아이슬란드어, 스웨덴어)를 포괄하는 실제 기사 헤드라인 목록이 포함된 데이터세트(MultiFIN)를 사용합니다. ). 이는 금융 자연어 처리(NLP)를 위해 선별된 오픈 소스 데이터 세트이며 다음에서 사용할 수 있습니다. GitHub 저장소.

우리의 경우 MultiFIN의 데이터와 번역이 포함된 열이 포함된 CSV 파일을 만들었습니다. 모델에 피드를 제공하기 위해 이 열을 사용하지 않습니다. 덴마크어나 스페인어를 구사하지 못하는 사람들을 위해 결과를 인쇄할 때 이를 따라가는 데 도움이 됩니다. 데이터 프레임을 생성하기 위해 해당 CSV를 가리킵니다.

url = "https://raw.githubusercontent.com/cohere-ai/cohere-aws/main/notebooks/bedrock/multiFIN_train.csv"
df = pd.read_csv(url)

# Inspect dataset
df.head(5)

쿼리할 문서 목록을 선택하세요.

MultiFIN에는 6,000개 언어로 된 15개 이상의 레코드가 있습니다. 예제 사용 사례에서는 영어, 스페인어, 덴마크어의 세 가지 언어에 중점을 둡니다. 또한 헤더를 길이별로 정렬하고 가장 긴 헤더를 선택합니다.

우리는 가장 긴 기사를 선택하기 때문에 길이가 반복된 순서로 인한 것이 아닌지 확인합니다. 다음 코드는 그러한 경우의 예를 보여줍니다. 우리는 그것을 정리할 것입니다.

df['text'].iloc[2215]

'El 86% de las empresas españolas comprometidas con los Objetivos de Desarrollo 
Sostenible comprometidas con los Objetivos de Desarrollo Sostenible comprometidas 
con los Objetivos de Desarrollo Sostenible comprometidas con los Objetivos de 
Desarrollo Sostenible'

# Ensure there is no duplicated text in the headers
def remove_duplicates(text):
    return re.sub(r'((bw+b.{1,2}w+b)+).+1', r'1', text, flags=re.I)

df ['text'] = df['text'].apply(remove_duplicates)

# Keep only selected languages
languages = ['English', 'Spanish', 'Danish']
df = df.loc[df['lang'].isin(languages)]

# Pick the top 80 longest articles
df['text_length'] = df['text'].str.len()
df.sort_values(by=['text_length'], ascending=False, inplace=True)
top_80_df = df[:80]

# Language distribution
top_80_df['lang'].value_counts()

우리 문서 목록은 세 가지 언어로 잘 배포되어 있습니다.

lang
Spanish    33
English    29
Danish     18
Name: count, dtype: int64

다음은 데이터 세트에서 가장 긴 기사 헤더입니다.

top_80_df['text'].iloc[0]

"CFOdirect: Resultater fra PwC's Employee Engagement Landscape Survey, herunder hvordan 
man skaber mere engagement blandt medarbejdere. Læs desuden om de regnskabsmæssige 
konsekvenser for indkomstskat ifbm. Brexit"

문서 삽입 및 색인 생성

이제 문서를 포함하고 포함 내용을 저장하려고 합니다. 임베딩은 문서의 의미론적 의미를 캡슐화하는 매우 큰 벡터입니다. 특히 우리는 3.0차원의 임베딩을 생성하는 Cohere의 embed-multilingual-v1,024 모델을 사용합니다.

쿼리가 전달되면 쿼리를 포함하고 hnswlib 라이브러리를 사용하여 가장 가까운 이웃을 찾습니다.

Cohere 클라이언트를 설정하고, 문서를 삽입하고, 검색 색인을 생성하는 데 몇 줄의 코드만 필요합니다. 또한 결과 표시를 풍부하게 하기 위해 문서의 언어와 번역을 추적합니다.

# Establish Cohere client
co = cohere_aws.Client(mode=cohere_aws.Mode.BEDROCK)
model_id = "cohere.embed-multilingual-v3"

# Embed documents
docs = top_80_df['text'].to_list()
docs_lang = top_80_df['lang'].to_list()
translated_docs = top_80_df['translated_text'].to_list() #for reference when returning non-English results
doc_embs = co.embed(texts=docs, model_id=model_id, input_type='search_document').embeddings

# Create a search index
index = hnswlib.Index(space='ip', dim=1024)
index.init_index(max_elements=len(doc_embs), ef_construction=512, M=64)
index.add_items(doc_embs, list(range(len(doc_embs))))

검색 시스템 구축

다음으로, 쿼리를 입력으로 받아 이를 포함하고 쿼리와 더 밀접하게 관련된 4개의 헤더를 찾는 함수를 작성합니다.

# Retrieval of 4 closest docs to query
def retrieval(query):
    # Embed query and retrieve results
    query_emb = co.embed(texts=[query], model_id=model_id, input_type="search_query").embeddings
    doc_ids = index.knn_query(query_emb, k=3)[0][0] # we will retrieve 4 closest neighbors
    
    # Print and append results
    print(f"QUERY: {query.upper()} n")
    retrieved_docs, translated_retrieved_docs = [], []
    
    for doc_id in doc_ids:
        # Append results
        retrieved_docs.append(docs[doc_id])
        translated_retrieved_docs.append(translated_docs[doc_id])
    
        # Print results
        print(f"ORIGINAL ({docs_lang[doc_id]}): {docs[doc_id]}")
        if docs_lang[doc_id] != "English":
            print(f"TRANSLATION: {translated_docs[doc_id]} n----")
        else:
            print("----")
    print("END OF RESULTS nn")
    return retrieved_docs, translated_retrieved_docs

검색 시스템 쿼리

몇 가지 다른 쿼리를 사용하여 시스템이 수행하는 작업을 살펴보겠습니다. 우리는 영어로 시작합니다:

queries = [
    "Are businessess meeting sustainability goals?",
    "Can data science help meet sustainability goals?"
]

for query in queries:
    retrieval(query)

결과는 다음과 같습니다.

QUERY: ARE BUSINESSES MEETING SUSTAINABILITY GOALS? 

ORIGINAL (English): Quality of business reporting on the Sustainable Development Goals 
improves, but has a long way to go to meet and drive targets.
----
ORIGINAL (English): Only 10 years to achieve Sustainable Development Goals but 
businesses remain on starting blocks for integration and progress
----
ORIGINAL (Spanish): Integrar los criterios ESG y el propósito en la estrategia 
principal reto de los Consejos de las empresas españolas en el mundo post-COVID 

TRANSLATION: Integrate ESG criteria and purpose into the main challenge strategy 
of the Boards of Spanish companies in the post-COVID world 
----
END OF RESULTS 

QUERY: CAN DATA SCIENCE HELP MEET SUSTAINABILITY GOALS? 

ORIGINAL (English): Using AI to better manage the environment could reduce greenhouse 
gas emissions, boost global GDP by up to 38m jobs by 2030
----
ORIGINAL (English): Quality of business reporting on the Sustainable Development Goals 
improves, but has a long way to go to meet and drive targets.
----
ORIGINAL (English): Only 10 years to achieve Sustainable Development Goals but 
businesses remain on starting blocks for integration and progress
----
END OF RESULTS 

다음 사항에 유의하십시오.

  • 우리는 관련이 있지만 약간 다른 질문을 하고 있으며, 모델은 가장 관련성이 높은 결과를 상단에 제시할 만큼 충분히 미묘합니다.
  • 우리 모델은 키워드 기반 검색이 아닌 의미 검색을 수행합니다. "AI" 대신 "데이터 과학"과 같은 용어를 사용하더라도 우리 모델은 질문 내용을 이해하고 가장 관련성이 높은 결과를 맨 위에 반환할 수 있습니다.

덴마크어로 질문해 보는 건 어때요? 다음 쿼리를 살펴보겠습니다.

query = "Hvor kan jeg finde den seneste danske boligplan?" # "Where can I find the latest Danish property plan?"
retrieved_docs, translated_retrieved_docs = retrieval(query)

QUERY: HVOR KAN JEG FINDE DEN SENESTE DANSKE BOLIGPLAN? 

ORIGINAL (Danish): Nyt fra CFOdirect: Ny PP&E-guide, FAQs om den nye leasingstandard, 
podcast om udfordringerne ved implementering af leasingstandarden og meget mere

TRANSLATION: New from CFOdirect: New PP&E guide, FAQs on the new leasing standard, 
podcast on the challenges of implementing the leasing standard and much more 
----
ORIGINAL (Danish): Lovforslag fremlagt om rentefri lån, udskudt frist for 
lønsumsafgift, førtidig udbetaling af skattekredit og loft på indestående på 
skattekontoen

TRANSLATION: Legislative proposal presented on interest-free loans, deferred payroll 
tax deadline, early payment of tax credit and ceiling on deposits in the tax account 
----
ORIGINAL (Danish): Nyt fra CFOdirect: Shareholder-spørgsmål til ledelsen, SEC 
cybersikkerhedsguide, den amerikanske skattereform og meget mere

TRANSLATION: New from CFOdirect: Shareholder questions for management, the SEC 
cybersecurity guide, US tax reform and more 
----
END OF RESULTS

앞의 예에서 영어 약어 “PP&E”는 “property, plant, and Equipment”를 의미하며 우리 모델은 이를 쿼리에 연결할 수 있었습니다.

이 경우 반환된 결과는 모두 덴마크어로 되어 있지만 의미론적 의미가 더 가까운 경우 모델은 쿼리가 아닌 다른 언어로 문서를 반환할 수 있습니다. 우리는 완전한 유연성을 가지고 있으며 몇 줄의 코드로 모델이 쿼리 언어로 문서만 보아야 하는지 아니면 모든 문서를 보아야 하는지 지정할 수 있습니다.

Cohere Rerank로 결과 개선

임베딩은 매우 강력합니다. 하지만 이제 쿼리에 대한 문서의 관련성을 평가하도록 훈련된 Cohere의 Rerank 엔드포인트를 사용하여 결과를 더욱 세분화하는 방법을 살펴보겠습니다.

Rerank의 또 다른 장점은 레거시 키워드 검색 엔진 위에서 작동할 수 있다는 것입니다. 벡터 데이터베이스로 변경하거나 인프라를 대폭 변경할 필요가 없으며 코드 몇 줄만 있으면 됩니다. 재순위는 다음에서 사용할 수 있습니다. 아마존 세이지 메이커.

새로운 쿼리를 시도해 보겠습니다. 이번에는 SageMaker를 사용합니다.

query = "Are companies ready for the next down market?"
retrieved_docs, translated_retrieved_docs = retrieval(query)

QUERY: ARE COMPANIES READY FOR THE NEXT DOWN MARKET? 

ORIGINAL (Spanish): El valor en bolsa de las 100 mayores empresas cotizadas cae un 15% 
entre enero y marzo pero aguanta el embate del COVID-19 

TRANSLATION: The stock market value of the 100 largest listed companies falls 15% 
between January and March but withstands the onslaught of COVID-19 
----
ORIGINAL (English): 69% of business leaders have experienced a corporate crisis in the 
last five years yet 29% of companies have no staff dedicated to crisis preparedness
----
ORIGINAL (English): As work sites slowly start to reopen, CFOs are concerned about the 
global economy and a potential new COVID-19 wave - PwC survey
----
END OF RESULTS

이 경우 의미론적 검색을 통해 답변을 검색하여 결과에 표시할 수 있었지만 맨 위에는 표시되지 않았습니다. 그러나 검색된 문서 목록을 사용하여 Rerank 끝점에 쿼리를 다시 전달하면 Rerank는 가장 관련성이 높은 문서를 맨 위에 표시할 수 있습니다.

먼저 클라이언트와 Rerank 엔드포인트를 생성합니다.

# map model package arn
import boto3
cohere_package = "cohere-rerank-multilingual-v2--8b26a507962f3adb98ea9ac44cb70be1" # replace this with your info

model_package_map = {
    "us-east-1": f"arn:aws:sagemaker:us-east-1:865070037744:model-package/{cohere_package}",
    "us-east-2": f"arn:aws:sagemaker:us-east-2:057799348421:model-package/{cohere_package}",
    "us-west-1": f"arn:aws:sagemaker:us-west-1:382657785993:model-package/{cohere_package}",
    "us-west-2": f"arn:aws:sagemaker:us-west-2:594846645681:model-package/{cohere_package}",
    "ca-central-1": f"arn:aws:sagemaker:ca-central-1:470592106596:model-package/{cohere_package}",
    "eu-central-1": f"arn:aws:sagemaker:eu-central-1:446921602837:model-package/{cohere_package}",
    "eu-west-1": f"arn:aws:sagemaker:eu-west-1:985815980388:model-package/{cohere_package}",
    "eu-west-2": f"arn:aws:sagemaker:eu-west-2:856760150666:model-package/{cohere_package}",
    "eu-west-3": f"arn:aws:sagemaker:eu-west-3:843114510376:model-package/{cohere_package}",
    "eu-north-1": f"arn:aws:sagemaker:eu-north-1:136758871317:model-package/{cohere_package}",
    "ap-southeast-1": f"arn:aws:sagemaker:ap-southeast-1:192199979996:model-package/{cohere_package}",
    "ap-southeast-2": f"arn:aws:sagemaker:ap-southeast-2:666831318237:model-package/{cohere_package}",
    "ap-northeast-2": f"arn:aws:sagemaker:ap-northeast-2:745090734665:model-package/{cohere_package}",
    "ap-northeast-1": f"arn:aws:sagemaker:ap-northeast-1:977537786026:model-package/{cohere_package}",
    "ap-south-1": f"arn:aws:sagemaker:ap-south-1:077584701553:model-package/{cohere_package}",
    "sa-east-1": f"arn:aws:sagemaker:sa-east-1:270155090741:model-package/{cohere_package}",
}

region = boto3.Session().region_name
if region not in model_package_map.keys():
    raise Exception(f"Current boto3 session region {region} is not supported.")

model_package_arn = model_package_map[region]

co = cohere_aws.Client(region_name=region)
co.create_endpoint(arn=model_package_arn, endpoint_name="cohere-rerank-multilingual", instance_type="ml.g4dn.xlarge", n_instances=1)

문서를 Rerank에 전달하면 모델은 가장 관련성이 높은 문서를 정확하게 선택할 수 있습니다.

results = co.rerank(query=query, documents=retrieved_docs, top_n=1)

for hit in results:
    print(hit.document['text'])

69% of business leaders have experienced a corporate crisis in the last five years yet 
29% of companies have no staff dedicated to crisis preparedness

결론

이 게시물에서는 금융 서비스 도메인의 Amazon Bedrock에서 Cohere의 다국어 임베딩 모델을 사용하는 방법을 소개했습니다. 특히 다국어 금융기사 검색 애플리케이션의 예를 시연했습니다. 우리는 임베딩 모델을 통해 정보를 효율적이고 정확하게 검색하여 분석가의 생산성과 결과 품질을 향상시키는 방법을 살펴보았습니다.

Cohere의 다국어 임베딩 모델은 100개 이상의 언어를 지원합니다. 이는 다양한 언어로 된 문서 모음으로 작업해야 하는 애플리케이션 구축의 복잡성을 제거합니다. 그만큼 Cohere Embed 모델 실제 응용 프로그램에서 결과를 제공하도록 훈련되었습니다. 시끄러운 데이터를 입력으로 처리하고 복잡한 RAG 시스템에 적응하며 압축 인식 훈련 방법을 통해 비용 효율성을 제공합니다.

지금 Amazon Bedrock에서 Cohere의 다국어 임베딩 모델을 사용해 구축을 시작해 보세요.


저자에 관하여

제임스 이 Amazon Web Services의 기술 파트너 COE 기술 팀의 수석 AI/ML 파트너 솔루션 설계자입니다. 그는 기업 고객 및 파트너와 협력하여 AI/ML 애플리케이션을 설계, 배포, 확장하여 비즈니스 가치를 창출하는 데 열정을 갖고 있습니다. 업무 외에는 축구, 여행, 가족과 함께 시간을 보내는 것을 즐깁니다.

곤잘로 베테곤 최첨단 자연어 처리 기술 제공업체인 Cohere의 솔루션 설계자입니다. 그는 대규모 언어 모델 배포를 통해 조직이 비즈니스 요구 사항을 해결하도록 돕습니다.

메오르 아메르 최첨단 자연어 처리(NLP) 기술 제공업체인 Cohere의 Developer Advocate입니다. 그는 개발자가 Cohere의 LLM(대형 언어 모델)을 사용하여 최첨단 애플리케이션을 구축하도록 돕습니다.

spot_img

최신 인텔리전스

spot_img