Logotipo de Zephyrnet

Cree aplicaciones de búsqueda financiera utilizando el modelo de integración multilingüe Amazon Bedrock Cohere | Servicios web de Amazon

Fecha:

Las empresas tienen acceso a cantidades masivas de datos, muchos de los cuales son difíciles de descubrir porque no están estructurados. Enfoques convencionales para analizar datos no estructurados utilice palabras clave o coincidencias de sinónimos. No capturan el contexto completo de un documento, lo que los hace menos efectivos al tratar con datos no estructurados.

Por el contrario, las incrustaciones de texto utilizan máquina de aprendizaje (ML) capacidades para capturar el significado de datos no estructurados. Las incrustaciones se generan mediante modelos de lenguaje representacional que traducen texto en vectores numéricos y codifican información contextual en un documento. Esto permite aplicaciones como la búsqueda semántica, Recuperación Generación Aumentada (RAG), modelado de temas y clasificación de textos.

Por ejemplo, en la industria de servicios financieros, las aplicaciones incluyen la extracción de información de informes de ganancias, la búsqueda de información de estados financieros y el análisis de sentimientos sobre acciones y mercados que se encuentran en noticias financieras. Las incrustaciones de texto permiten a los profesionales de la industria extraer información de los documentos, minimizar errores y aumentar su rendimiento.

En esta publicación, mostramos una aplicación que puede buscar y consultar noticias financieras en diferentes idiomas utilizando Cohere. Incrustar y Reclasificar modelos con lecho rocoso del amazonas.

El modelo de integración multilingüe de Cohere

Cohere es una plataforma de inteligencia artificial empresarial líder que crea modelos de lenguaje grande (LLM) de clase mundial y soluciones impulsadas por LLM que permiten a las computadoras buscar, capturar significado y conversar en texto. Proporcionan facilidad de uso y sólidos controles de seguridad y privacidad.

El modelo de integración multilingüe de Cohere genera representaciones vectoriales de documentos para más de 100 idiomas y está disponible en Amazon Bedrock. Esto permite a los clientes de AWS acceder a ella como una API, lo que elimina la necesidad de administrar la infraestructura subyacente y garantiza que la información confidencial permanezca administrada y protegida de forma segura.

El modelo multilingüe agrupa texto con significados similares asignándoles posiciones cercanas entre sí en un espacio vectorial semántico. Con un modelo de incrustación multilingüe, los desarrolladores pueden procesar texto en varios idiomas sin la necesidad de cambiar entre diferentes modelos, como se ilustra en la siguiente figura. Esto hace que el procesamiento sea más eficiente y mejora el rendimiento de las aplicaciones multilingües.

Los siguientes son algunos de los aspectos más destacados del modelo de integración de Cohere:

  • Centrarse en la calidad del documento – Los modelos de incrustación típicos están entrenados para medir la similitud entre documentos, pero el modelo de Cohere también mide la calidad de los documentos.
  • Mejor recuperación para aplicaciones RAG – Las aplicaciones RAG requieren un buen sistema de recuperación, en el que sobresale el modelo de integración de Cohere
  • Compresión de datos rentable – Cohere utiliza un método de entrenamiento especial que tiene en cuenta la compresión, lo que resulta en ahorros sustanciales de costos para su base de datos vectorial.

Casos de uso para incrustar texto

Las incrustaciones de texto convierten los datos no estructurados en una forma estructurada. Esto le permite comparar, analizar y obtener información objetivamente de todos estos documentos. Los siguientes son casos de uso de ejemplo que permite el modelo de integración de Cohere:

  • Búsqueda semántica – Permite potentes aplicaciones de búsqueda cuando se combina con una base de datos vectorial, con excelente relevancia basada en el significado de la frase de búsqueda.
  • Motor de búsqueda para un sistema más grande. – Encuentra y recupera la información más relevante de fuentes de datos empresariales conectadas para sistemas RAG
  • Clasificación de texto – Admite reconocimiento de intenciones, análisis de sentimientos y análisis avanzado de documentos
  • Modelado de temas – Convierte una colección de documentos en grupos distintos para descubrir temas y temas emergentes.

Sistemas de búsqueda mejorados con Rerank

En las empresas donde ya existen sistemas convencionales de búsqueda de palabras clave, ¿cómo se introducen capacidades modernas de búsqueda semántica? Para estos sistemas que han sido parte de la arquitectura de la información de una empresa durante mucho tiempo, en muchos casos simplemente no es factible una migración completa a un enfoque basado en incorporaciones.

Punto final de reclasificación de Cohere está diseñado para cerrar esta brecha. Actúa como la segunda etapa de un flujo de búsqueda para proporcionar una clasificación de documentos relevantes según la consulta de un usuario. Las empresas pueden conservar un sistema de palabras clave (o incluso semántico) existente para la recuperación de la primera etapa y mejorar la calidad de los resultados de búsqueda con el punto final Rerank en la reclasificación de la segunda etapa.

Rerank proporciona una opción rápida y sencilla para mejorar los resultados de búsqueda al introducir tecnología de búsqueda semántica en la pila de un usuario con una sola línea de código. El punto final también viene con soporte multilingüe. La siguiente figura ilustra el flujo de trabajo de recuperación y reclasificación.

Resumen de la solución

Los analistas financieros necesitan digerir una gran cantidad de contenido, como publicaciones financieras y medios de comunicación, para mantenerse informados. De acuerdo con la Asociación de Profesionales Financieros (AFP), los analistas financieros dedican el 75% de su tiempo a recopilar datos o administrar el proceso en lugar de realizar análisis de valor agregado. Encontrar la respuesta a una pregunta a través de una variedad de fuentes y documentos es un trabajo tedioso y que requiere mucho tiempo. El modelo de integración de Cohere ayuda a los analistas a buscar rápidamente en numerosos títulos de artículos en varios idiomas para encontrar y clasificar los artículos que son más relevantes para una consulta particular, ahorrando una enorme cantidad de tiempo y esfuerzo.

En el siguiente ejemplo de caso de uso, mostramos cómo el modelo Insertar de Cohere busca y consulta noticias financieras en diferentes idiomas en un canal único. Luego demostramos cómo agregar Rerank a la recuperación de incrustaciones (o agregarlo a una búsqueda léxica heredada) puede mejorar aún más los resultados.

El cuaderno de soporte está disponible en GitHub.

El siguiente diagrama ilustra el flujo de trabajo de la aplicación.

Habilite el acceso al modelo a través de Amazon Bedrock

Los usuarios de Amazon Bedrock deben solicitar acceso a los modelos para que estén disponibles para su uso. Para solicitar acceso a modelos adicionales, elija Modelo de acceso el panel de navegación en Amazon Bedrock un mueble consola. Para más información, consulte la Modelo de acceso. Para este tutorial, debe solicitar acceso al modelo Cohere Embed Multilingual.

Instalar paquetes e importar módulos.

Primero, instalamos los paquetes necesarios e importamos los módulos que usaremos en este ejemplo:

!pip install --upgrade cohere-aws hnswlib translate

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

Los documentos de importación

Utilizamos un conjunto de datos (MultiFIN) que contiene una lista de titulares de artículos del mundo real que cubren 15 idiomas (inglés, turco, danés, español, polaco, griego, finlandés, hebreo, japonés, húngaro, noruego, ruso, italiano, islandés y sueco). ). Este es un conjunto de datos de código abierto seleccionado para el procesamiento del lenguaje natural (NLP) financiero y está disponible en un Repositorio GitHub.

En nuestro caso, hemos creado un archivo CSV con los datos de MultiFIN así como una columna con las traducciones. No utilizamos esta columna para alimentar el modelo; Lo usamos para ayudarnos a seguir cuando imprimimos los resultados para aquellos que no hablan danés o español. Apuntamos a ese CSV para crear nuestro marco de datos:

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)

Seleccione una lista de documentos para consultar

MultiFIN cuenta con más de 6,000 registros en 15 idiomas diferentes. Para nuestro caso de uso de ejemplo, nos centramos en tres idiomas: inglés, español y danés. También clasificamos los encabezados por longitud y elegimos los más largos.

Como elegimos los artículos más largos, nos aseguramos de que la extensión no se deba a secuencias repetidas. El siguiente código muestra un ejemplo en el que ese es el caso. Lo limpiaremos.

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()

Nuestra lista de documentos está muy bien distribuida en los tres idiomas:

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

El siguiente es el encabezado del artículo más largo de nuestro conjunto de datos:

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"

Incrustar e indexar documentos

Ahora queremos incrustar nuestros documentos y almacenar las incrustaciones. Las incrustaciones son vectores muy grandes que encapsulan el significado semántico de nuestro documento. En particular, utilizamos el modelo embed-multilingual-v3.0 de Cohere, que crea incrustaciones con 1,024 dimensiones.

Cuando se pasa una consulta, también incrustamos la consulta y usamos la biblioteca hnswlib para encontrar los vecinos más cercanos.

Sólo se necesitan unas pocas líneas de código para establecer un cliente Cohere, incrustar los documentos y crear el índice de búsqueda. También realizamos un seguimiento del idioma y la traducción del documento para enriquecer la visualización de los resultados.

# 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))))

Construir un sistema de recuperación

A continuación, creamos una función que toma una consulta como entrada, la incrusta y encuentra los cuatro encabezados más estrechamente relacionados con ella:

# 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

Consultar el sistema de recuperación.

Exploremos qué hace nuestro sistema con un par de consultas diferentes. Empezamos con inglés:

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

for query in queries:
    retrieval(query)

Los resultados son los siguientes:

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 

Note lo siguiente:

  • Hacemos preguntas relacionadas, pero ligeramente diferentes, y el modelo tiene los matices suficientes para presentar los resultados más relevantes en la parte superior.
  • Nuestro modelo no realiza búsqueda basada en palabras clave, sino búsqueda semántica. Incluso si utilizamos un término como "ciencia de datos" en lugar de "IA", nuestro modelo es capaz de comprender lo que se pregunta y devolver el resultado más relevante en la parte superior.

¿Qué tal una consulta en danés? Veamos la siguiente consulta:

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

En el ejemplo anterior, el acrónimo en inglés "PP&E" significa "propiedad, planta y equipo" y nuestro modelo pudo conectarlo con nuestra consulta.

En este caso, todos los resultados devueltos están en danés, pero el modelo puede devolver un documento en un idioma distinto al de la consulta si su significado semántico es más cercano. Tenemos total flexibilidad y con unas pocas líneas de código podemos especificar si el modelo solo debe examinar los documentos en el idioma de la consulta o si debe examinar todos los documentos.

Mejore los resultados con Cohere Rerank

Las incrustaciones son muy poderosas. Sin embargo, ahora veremos cómo refinar aún más nuestros resultados con el punto final Rerank de Cohere, que ha sido capacitado para calificar la relevancia de los documentos frente a una consulta.

Otra ventaja de Rerank es que puede funcionar sobre un motor de búsqueda de palabras clave heredado. No es necesario cambiar a una base de datos vectorial ni realizar cambios drásticos en su infraestructura, y solo se necesitan unas pocas líneas de código. Rerank está disponible en Amazon SageMaker.

Probemos una nueva consulta. Usamos SageMaker esta vez:

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

En este caso, una búsqueda semántica pudo recuperar nuestra respuesta y mostrarla en los resultados, pero no está en la parte superior. Sin embargo, cuando pasamos la consulta nuevamente a nuestro punto final de Rerank con la lista de documentos recuperados, Rerank puede mostrar el documento más relevante en la parte superior.

Primero, creamos el cliente y el punto final de 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)

Cuando pasamos los documentos a Rerank, el modelo puede elegir el más relevante con precisión:

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

Conclusión

Esta publicación presentó un tutorial sobre el uso del modelo de integración multilingüe de Cohere en Amazon Bedrock en el dominio de servicios financieros. En particular, mostramos un ejemplo de una aplicación de búsqueda de artículos financieros multilingüe. Vimos cómo el modelo integrado permite el descubrimiento eficiente y preciso de información, aumentando así la productividad y la calidad de los resultados de un analista.

El modelo de integración multilingüe de Cohere admite más de 100 idiomas. Elimina la complejidad de crear aplicaciones que requieren trabajar con un corpus de documentos en diferentes idiomas. El Cohere Insertar modelo está capacitado para ofrecer resultados en aplicaciones del mundo real. Maneja datos ruidosos como entradas, se adapta a sistemas RAG complejos y ofrece rentabilidad gracias a su método de entrenamiento consciente de la compresión.

Comience a construir con el modelo de integración multilingüe de Cohere en Amazon Bedrock hoy.


Acerca de los autores

james yi es arquitecto senior de soluciones de socios de IA/ML en el equipo tecnológico COE de socios tecnológicos en Amazon Web Services. Le apasiona trabajar con clientes y socios empresariales para diseñar, implementar y escalar aplicaciones de IA/ML para obtener valor empresarial. Fuera del trabajo, le gusta jugar fútbol, ​​viajar y pasar tiempo con su familia.

Gonzalo Betegón es arquitecto de soluciones en Cohere, un proveedor de tecnología de procesamiento de lenguaje natural de vanguardia. Ayuda a las organizaciones a abordar sus necesidades comerciales mediante la implementación de grandes modelos lingüísticos.

Meor Amer es promotor de desarrolladores en Cohere, un proveedor de tecnología de vanguardia de procesamiento del lenguaje natural (NLP). Ayuda a los desarrolladores a crear aplicaciones de vanguardia con los modelos de lenguajes grandes (LLM) de Cohere.

punto_img

Información más reciente

punto_img