Home Машинное обучение Создавайте приложения для финансового поиска с помощью многоязычной модели внедрения Amazon Bedrock Cohere. | DeepTech

Создавайте приложения для финансового поиска с помощью многоязычной модели внедрения Amazon Bedrock Cohere. | DeepTech

0
Создавайте приложения для финансового поиска с помощью многоязычной модели внедрения Amazon Bedrock Cohere.
 | DeepTech

Предприятия имеют доступ к огромным объемам данных, большую часть которых трудно обнаружить, поскольку данные неструктурированы. Традиционные подходы к анализу неструктурированных данных используют сопоставление ключевых слов или синонимов. Они не отражают весь контекст документа, что делает их менее эффективными при работе с неструктурированными данными.

Напротив, встраивание текста использует возможности машинного обучения (ML) для понимания смысла неструктурированных данных. Вложения генерируются моделями репрезентативного языка, которые переводят текст в числовые векторы и кодируют контекстную информацию в документе. Это позволяет использовать такие приложения, как семантический поиск, расширенная генерация поиска (RAG), тематическое моделирование и классификация текста.

Например, в сфере финансовых услуг приложения включают извлечение информации из отчетов о прибылях, поиск информации в финансовых отчетах и ​​анализ настроений по поводу акций и рынков, обнаруженных в финансовых новостях. Встраивание текста позволяет профессионалам отрасли извлекать ценную информацию из документов, минимизировать ошибки и повышать производительность.

В этом посте мы демонстрируем приложение, которое может искать и запрашивать финансовые новости на разных языках, используя модели Cohere Embed и Rerank с Amazon Bedrock.

Многоязычная модель внедрения Cohere

Cohere — это ведущая корпоративная платформа искусственного интеллекта, которая создает большие языковые модели (LLM) мирового класса и решения на базе LLM, которые позволяют компьютерам искать, улавливать смысл и общаться в тексте. Они обеспечивают простоту использования и строгий контроль безопасности и конфиденциальности.

Многоязычная модель внедрения Cohere генерирует векторные представления документов для более чем 100 языков и доступен на Amazon Bedrock. Это позволяет клиентам AWS получать к нему доступ через API, что устраняет необходимость управления базовой инфраструктурой и гарантирует, что конфиденциальная информация остается надежно управляемой и защищенной.

Многоязычная модель группирует тексты со схожим значением, присваивая им позиции, близкие друг к другу в семантическом векторном пространстве. Благодаря многоязычной модели внедрения разработчики могут обрабатывать текст на нескольких языках без необходимости переключения между разными моделями, как показано на следующем рисунке. Это делает обработку более эффективной и повышает производительность многоязычных приложений.

Ниже приведены некоторые основные моменты модели внедрения Cohere:

  • Сосредоточьтесь на качестве документа – Типичные модели внедрения обучены измерять сходство между документами, но модель Cohere также измеряет качество документов.
  • Улучшенный поиск для приложений RAG. – Приложения RAG требуют хорошей системы поиска, с которой превосходно справляется модель внедрения Cohere.
  • Экономичное сжатие данных – Cohere использует специальный метод обучения с учетом сжатия, что приводит к существенной экономии затрат на вашу векторную базу данных.

Варианты использования для встраивания текста

Встраивание текста превращает неструктурированные данные в структурированную форму. Это позволяет вам объективно сравнивать, анализировать и получать информацию из всех этих документов. Ниже приведены примеры вариантов использования, которые обеспечивает модель внедрения Cohere:

  • Семантический поиск – В сочетании с векторной базой данных обеспечивает мощные поисковые приложения с превосходной релевантностью на основе значения поисковой фразы.
  • Поисковая система для более крупной системы – Находит и извлекает наиболее актуальную информацию из подключенных источников корпоративных данных для систем RAG.
  • Классификация текста – Поддерживает распознавание намерений, анализ настроений и расширенный анализ документов.
  • Тематическое моделирование – Превращает коллекцию документов в отдельные кластеры для раскрытия новых тем и тем.

Расширенные поисковые системы с Rerank

Как внедрить современные возможности семантического поиска на предприятиях, где уже присутствуют традиционные системы поиска по ключевым словам? Для таких систем, которые долгое время были частью информационной архитектуры компании, полный переход на подход, основанный на встраивании, во многих случаях просто невозможен.

Конечная точка переоценки Cohere призван восполнить этот пробел. Он действует как второй этап потока поиска, обеспечивая ранжирование релевантных документов по запросу пользователя. Предприятия могут сохранить существующую систему ключевых слов (или даже семантическую) для поиска на первом этапе и повысить качество результатов поиска с помощью конечной точки повторного ранжирования на втором этапе реранжирования.

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

Импортировать документы

Мы используем набор данных (MultiFIN), содержащий список заголовков реальных статей, охватывающих 15 языков (английский, турецкий, датский, испанский, польский, греческий, финский, иврит, японский, венгерский, норвежский, русский, итальянский, исландский и шведский). ). Это набор данных с открытым исходным кодом, созданный для финансовой обработки естественного языка (NLP), и он доступен на Репозиторий GitHub.

В нашем случае мы создали CSV-файл с данными MultiFIN, а также столбец с переводами. Мы не используем этот столбец для загрузки модели; мы используем его, чтобы следить за процессом печати результатов для тех, кто не говорит по-датски или по-испански. Мы указываем на этот 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 имеет более 6000 записей на 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'((\b\w+\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"

Встраивание и индексирование документов

Теперь мы хотим внедрить наши документы и сохранить их. Вложения — это очень большие векторы, которые инкапсулируют семантическое значение нашего документа. В частности, мы используем модель embed-multilingual-v3.0 от Cohere, которая создает вложения с 1024 измерениями.

Когда запрос передается, мы также встраиваем его и используем библиотеку 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))))

Создайте систему поиска

Далее мы создаем функцию, которая принимает запрос в качестве входных данных, встраивает его и находит четыре более тесно связанных с ним заголовка:

# 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 \n\n")
    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 

Обратите внимание на следующее:

  • Мы задаем связанные, но немного разные вопросы, и модель достаточно детализирована, чтобы отображать наиболее релевантные результаты вверху.
  • Наша модель выполняет не поиск по ключевым словам, а семантический поиск. Даже если мы используем такой термин, как «наука о данных» вместо «ИИ», наша модель способна понять, о чем спрашивают, и вернуть наиболее релевантный результат вверху.

Как насчет запроса на датском языке? Давайте посмотрим на следующий запрос:

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» означает «основные средства», и наша модель смогла связать ее с нашим запросом.

В этом случае все возвращаемые результаты будут на датском языке, но модель может вернуть документ на языке, отличном от запроса, если его семантическое значение ближе. У нас есть полная гибкость, и с помощью нескольких строк кода мы можем указать, должна ли модель просматривать только документы на языке запроса или она должна просматривать все документы.

Улучшите результаты с помощью Cohere Rerank

Вложения очень мощные. Однако теперь мы рассмотрим, как еще больше уточнить наши результаты с помощью конечной точки Cohere Rerank, которая обучена оценивать релевантность документов по запросу.

Еще одним преимуществом Rerank является то, что он может работать поверх устаревшей поисковой системы по ключевым словам. Вам не нужно переходить на векторную базу данных или вносить радикальные изменения в свою инфраструктуру, для этого потребуется всего несколько строк кода. Изменение рейтинга доступно в Amazon SageMaker.

Давайте попробуем новый запрос. На этот раз мы используем 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

Заключение

В этом посте представлено пошаговое руководство по использованию многоязычной модели внедрения Cohere в Amazon Bedrock в сфере финансовых услуг. В частности, мы продемонстрировали пример многоязычного приложения для поиска финансовых статей. Мы увидели, как модель внедрения обеспечивает эффективное и точное обнаружение информации, тем самым повышая производительность и качество результатов аналитика.

Многоязычная модель внедрения Cohere поддерживает более 100 языков. Это устраняет сложность создания приложений, требующих работы с корпусом документов на разных языках. Cohere Встроить модель обучен добиваться результатов в реальных приложениях. Он обрабатывает зашумленные данные в качестве входных данных, адаптируется к сложным системам RAG и обеспечивает экономическую эффективность благодаря методу обучения с учетом сжатия.

Начните работу с многоязычной моделью внедрения Cohere в Amazon Bedrock уже сегодня.


Об авторах

Джеймс Йи — старший архитектор партнерских решений AI/ML в команде технологических партнеров COE Tech в Amazon Web Services. Он с энтузиазмом работает с корпоративными клиентами и партнерами над проектированием, развертыванием и масштабированием приложений AI/ML для получения прибыли для бизнеса. Вне работы он любит играть в футбол, путешествовать и проводить время с семьей.

Гонсало Бетегон — архитектор решений в компании Cohere, поставщике передовых технологий обработки естественного языка. Он помогает организациям решать свои бизнес-потребности посредством развертывания больших языковых моделей.

Меор Амер является адвокатом разработчиков в компании Cohere, поставщике передовых технологий обработки естественного языка (NLP). Он помогает разработчикам создавать передовые приложения с помощью моделей больших языков Cohere (LLM).

LEAVE A REPLY

Please enter your comment!
Please enter your name here