Logotipo de Zephyrnet

Cree soluciones de IA generativa listas para la empresa con modelos básicos de Cohere en Amazon Bedrock y la base de datos vectorial Weaviate en AWS Marketplace | Servicios web de Amazon

Fecha:

Soluciones de IA generativa tienen el potencial de transformar las empresas al aumentar la productividad y mejorar las experiencias de los clientes, y el uso de modelos de lenguajes grandes (LLM) con estas soluciones se ha vuelto cada vez más popular. Crear pruebas de concepto es relativamente sencillo porque las tecnologías de vanguardia modelos de cimientos están disponibles a través de proveedores especializados a través de una simple llamada API. Por lo tanto, organizaciones de diversos tamaños y de diferentes industrias han comenzado a reinventar sus productos y procesos utilizando IA generativa.

A pesar de su gran conocimiento general, los LLM de última generación solo tienen acceso a la información en la que fueron capacitados. Esto puede provocar inexactitudes objetivas (alucinaciones) cuando se le solicita al LLM que genere texto basado en información que no vio durante su capacitación. Por lo tanto, es crucial cerrar la brecha entre el conocimiento general del LLM y sus datos patentados para ayudar al modelo a generar respuestas más precisas y contextuales y al mismo tiempo reducir el riesgo de alucinaciones. El método tradicional de ajuste, aunque eficaz, puede requerir un uso intensivo de recursos informáticos, ser costoso y requerir experiencia técnica. Otra opción a considerar se llama Recuperación de Generación Aumentada (RAG), que proporciona a los LLM información adicional de una fuente de conocimiento externa que se puede actualizar fácilmente.

Además, las empresas deben garantizar la seguridad de los datos cuando manejen datos confidenciales y de propiedad exclusiva, como datos personales o propiedad intelectual. Esto es particularmente importante para las organizaciones que operan en industrias fuertemente reguladas, como los servicios financieros y la atención médica y las ciencias biológicas. Por lo tanto, es importante comprender y controlar el flujo de datos a través de la aplicación de IA generativa: ¿Dónde está ubicado el modelo? ¿Dónde se procesan los datos? ¿Quién tiene acceso a los datos? ¿Se utilizarán los datos para entrenar modelos, con el riesgo de que eventualmente se filtren datos confidenciales a los LLM públicos?

Esta publicación analiza cómo las empresas pueden crear aplicaciones de IA generativa precisas, transparentes y seguras mientras mantienen el control total sobre los datos propietarios. La solución propuesta es un canal RAG que utiliza una pila de tecnología nativa de IA, cuyos componentes están diseñados desde cero con la IA en su núcleo, en lugar de agregar capacidades de IA como una ocurrencia tardía. Demostramos cómo crear una aplicación RAG de un extremo a otro utilizando Modelos de lenguaje de Cohere a lecho rocoso del amazonas y Base de datos de vectores Weaviate en AWS Marketplace. El código fuente adjunto está disponible en el repositorio de GitHub relacionado organizado por Weaviate. Aunque AWS no será responsable de mantener o actualizar el código en el repositorio del socio, recomendamos a los clientes que se conecten directamente con Weaviate con respecto a cualquier actualización que deseen.

Resumen de la solución

El siguiente diagrama de arquitectura de alto nivel ilustra el proceso RAG propuesto con una pila de tecnología nativa de IA para crear soluciones de IA generativa precisas, transparentes y seguras.

Figura 1: Flujo de trabajo de RAG utilizando los modelos de lenguaje de Cohere a través de Amazon Bedrock y una base de datos vectorial Weaviate en AWS Marketplace

Como paso de preparación para el flujo de trabajo de RAG, se incorpora una base de datos vectorial, que sirve como fuente de conocimiento externa, con el contexto adicional de los datos propietarios. El flujo de trabajo real de RAG sigue los cuatro pasos ilustrados en el diagrama:

  1. El usuario ingresa su consulta.
  2. La consulta del usuario se utiliza para recuperar contexto adicional relevante de la base de datos de vectores. Esto se hace generando las incrustaciones de vectores de la consulta del usuario con un modelo de incrustación para realizar una búsqueda de vectores para recuperar el contexto más relevante de la base de datos.
  3. El contexto recuperado y la consulta del usuario se utilizan para aumentar una plantilla de aviso. El mensaje de recuperación aumentada ayuda al LLM a generar una finalización más relevante y precisa, minimizando las alucinaciones.
  4. El usuario recibe una respuesta más precisa en función de su consulta.

La pila de tecnología nativa de IA ilustrada en el diagrama de arquitectura tiene dos componentes clave: modelos de lenguaje Cohere y una base de datos vectorial Weaviate.

Modelos de lenguaje Cohere en Amazon Bedrock

El Plataforma Cohere ofrece modelos de lenguaje con rendimiento de última generación a empresas y desarrolladores a través de una simple llamada API. Hay dos tipos clave de capacidades de procesamiento del lenguaje que proporciona la plataforma Cohere (generativa e incrustada) y cada una cuenta con un tipo diferente de modelo:

  • Generación de texto Comando – Los desarrolladores pueden acceder a puntos finales que potencian las capacidades de IA generativa, permitiendo aplicaciones como conversacionales, respuesta a preguntas, redacción, resúmenes, extracción de información y más.
  • Representación de texto Incrustar – Los desarrolladores pueden acceder a puntos finales que capturan el significado semántico del texto, habilitando aplicaciones como motores de búsqueda vectorial, clasificación y agrupación de texto, y más. Cohere Embed viene en dos formas, un modelo en inglés y un modelo multilingüe, los cuales son ya disponible en Amazon Bedrock.

La plataforma Cohere permite a las empresas personalizar su solución de IA generativa de forma privada y segura a través de la implementación de Amazon Bedrock. Amazon Bedrock es un servicio en la nube totalmente administrado que permite a los equipos de desarrollo crear y escalar aplicaciones de IA generativa rápidamente. mientras ayuda a mantener sus datos y aplicaciones seguros y privados. Sus datos no se utilizan para mejorar el servicio, nunca se comparten con proveedores de modelos externos y permanecen en el Provincia donde se procesa la llamada API. Los datos siempre están cifrados en tránsito y en reposo, y usted puede cifrarlos utilizando sus propias claves. Amazon Bedrock admite requisitos de seguridad, incluida la elegibilidad para la Ley de Responsabilidad y Portabilidad de Seguros Médicos de EE. UU. (HIPAA) y el cumplimiento del Reglamento General de Protección de Datos (GDPR). Además, puede integrar de forma segura e implementar fácilmente sus aplicaciones de IA generativa utilizando las herramientas de AWS con las que ya está familiarizado.

Base de datos de vectores Weaviate en AWS Marketplace

tejido es un Nativo de IA base de datos vectorial eso facilita que los equipos de desarrollo creen aplicaciones de IA generativa seguras y transparentes. Weaviate se utiliza para almacenar y buscar datos vectoriales y objetos fuente, lo que simplifica el desarrollo al eliminar la necesidad de alojar e integrar bases de datos separadas. Weaviate ofrece un rendimiento de búsqueda semántica inferior a un segundo y puede escalarse para manejar miles de millones de vectores y millones de inquilinos. Con una arquitectura excepcionalmente extensible, Weaviate se integra de forma nativa con los modelos básicos de Cohere implementados en Amazon Bedrock para facilitar la vectorización conveniente de los datos y utilizar sus capacidades generativas desde la base de datos.

La base de datos vectorial nativa de IA de Weaviate brinda a los clientes la flexibilidad de implementarla como una solución "traiga su propia nube" (BYOC) o como un servicio administrado. Esta vitrina utiliza el Clúster Weaviate Kubernetes en AWS Marketplace, parte de la oferta BYOC de Weaviate, que permite una implementación escalable basada en contenedores dentro de su inquilino de AWS y VPC con solo unos pocos clics utilizando un Formación en la nube de AWS plantilla. Este enfoque garantiza que su base de datos vectorial se implemente en su región específica cerca de los modelos básicos y los datos propietarios para minimizar la latencia, respaldar la localidad de los datos y proteger los datos confidenciales al mismo tiempo que aborda posibles requisitos regulatorios, como el RGPD.

Resumen del caso de uso

En las siguientes secciones, demostramos cómo crear una solución RAG utilizando la pila de tecnología nativa de IA con Cohere, AWS y Weaviate, como se ilustra en la descripción general de la solución.

El caso de uso de ejemplo genera anuncios dirigidos a listados de estancias vacacionales en función de un público objetivo. El objetivo es utilizar la consulta del usuario para el público objetivo (por ejemplo, “familia con niños pequeños”) para recuperar el listado de estancias vacacionales más relevante (por ejemplo, un listado con parques infantiles cercanos) y luego generar un anuncio para el listado recuperado adaptado al público objetivo.

Figura 2: Primeras filas de anuncios de estancias vacacionales disponibles en Inside Airbnb.

El conjunto de datos está disponible en Dentro de airbnb y tiene licencia bajo un Licencia de Creative Commons Atribución Internacional. Puede encontrar el código adjunto en el Repositorio GitHub.

Requisitos previos

Para seguir y utilizar cualquier servicio de AWS en el siguiente tutorial, asegúrese de tener una Cuenta de AWS.

Habilite componentes de la pila de tecnología nativa de IA

Primero, debe habilitar los componentes relevantes que se analizan en la descripción general de la solución en su cuenta de AWS. Complete los siguientes pasos:

  1. En la izquierda Consola Amazon Bedrock, escoger Modelo de acceso en el panel de navegación.
  2. Elige Administrar el acceso al modelo en la parte superior derecha
  3. Selecciona los modelos de cimentación de tu preferencia y solicita acceso.

Figura 3: Administrar el acceso al modelo en la consola de Amazon Bedrock.

A continuación, configura un clúster de Weaviate.

  1. Suscríbete al Clúster Weaviate Kubernetes en AWS Marketplace.
  2. Inicie el software utilizando un Plantilla de CloudFormation según su zona de disponibilidad preferida.

La plantilla de CloudFormation se completa previamente con valores predeterminados.

  1. Nombre de pila, ingrese un nombre de pila.
  2. tipo de autenticación helm, se recomienda habilitar la autenticación configurando helmauthenticationtype a apikey y definiendo un helmautenticaciónapikey.
  3. helmautenticaciónapikey, ingrese su clave API de Weaviate.
  4. versión helmchart, ingrese su número de versión. Debe ser al menos la versión 16.8.0. Referirse a Repositorio GitHub para la última versión
  5. módulos habilitados para casco, asegurarse tex2vec-aws y generative-aws están presentes en la lista de módulos habilitados dentro de Weaviate.

Figura 4: Plantilla de CloudFormation.

Esta plantilla tarda unos 30 minutos en completarse.

Conéctate a Weaviate

Complete los siguientes pasos para conectarse a Weaviate:

  1. En Consola Amazon SageMaker, navegar a Instancias de cuaderno en el panel de navegación a través de Notebook > Instancias de cuaderno a la izquierda.
  2. Cree una nueva instancia de cuaderno.
  3. Instale el paquete del cliente Weaviate con las dependencias requeridas:
$ pip install weaviate-client

  1. Conéctese a su instancia de Weaviate con el siguiente código:
import weaviate

client = weaviate.Client(
  url = "http://<YOUR-WEAVIATE-URL>",
 auth_client_secret=weaviate.AuthApiKey(api_key="YOUR-WEAVIATE-API-KEY"),
    additional_headers={
        "X-AWS-Access-Key": "<YOUR-AWS-ACCESS-KEY>",
        "X-AWS-Secret-Key": "<YOUR-AWS-SECRET-ACCESS-KEY>"
    }
)

Provee la siguiente informacion:

  • URL tejida – Acceda a Weaviate a través de la URL del balanceador de carga. En el Nube informática elástica de Amazon (Amazon EC2), elija Equilibradores de carga en el panel de navegación y busque el equilibrador de carga. Busque la columna de nombre DNS y agregue http:// en frente de eso.
  • Clave API de Weaviate – Esta es la clave que configuró anteriormente en la plantilla de CloudFormation (helmauthenticationapikey).
  • Clave de acceso de AWS y clave de acceso secreta – Puede recuperar la clave de acceso y la clave de acceso secreta para su usuario en el Gestión de identidades y accesos de AWS (IAM) consola.

Figura 5: Consola de AWS Identity and Access Management (IAM) para recuperar la clave de acceso de AWS y la clave de acceso secreta.

Configure el módulo de Amazon Bedrock para habilitar los modelos Cohere

A continuación, define una recopilación de datos (class) llamado Listings para almacenar los objetos de datos de los listados, lo cual es análogo a crear una tabla en una base de datos relacional. En este paso, configurará los módulos relevantes para permitir el uso de modelos de lenguaje Cohere alojados en Amazon Bedrock de forma nativa desde la base de datos vectorial Weaviate. El vectorizador ("text2vec-aws“) y módulo generativo (“generative-aws“) se especifican en la definición de recopilación de datos. Ambos módulos toman tres parámetros:

  • "Servicio" - Usar "bedrock”para Amazon Bedrock (alternativamente, use “sagemaker" para JumpStart de Amazon SageMaker)
  • "Región" – Ingrese la Región donde está implementado su modelo
  • "modelo" – Proporcionar el nombre del modelo de base.

Ver el siguiente código:

collection_definition = {
    "class": "Listings",
    "moduleConfig": {
        "text2vec-aws": {
            "service": "bedrock",
            "region": "us-east-1",
            "model": "cohere.embed-english-v3",
        },
        "generative-aws": {
            "service": "bedrock",
            "region": "us-east-1",
            "model": "cohere.command-text-v14"
        }
    },
    "vectorizer": "text2vec-aws"
}

Ingerir datos en la base de datos vectorial Weaviate

En este paso, definirá la estructura de la recopilación de datos configurando sus propiedades. Además del nombre de la propiedad y el tipo de datos, también puede configurar si solo se almacenará el objeto de datos o si se almacenará junto con sus incrustaciones de vectores. En este ejemplo, host_name y property_type no están vectorizados:

collection_definition["properties"] = [
        { "name": "host_name", "dataType": ["text"], 
     "moduleConfig": {"text2vec-aws": {"skip": True}}
        },
        { "name": "property_type", "dataType": ["text"], 
     "moduleConfig": {"text2vec-aws": {"skip": True}}
        }
        { "name": "description", "dataType": ["text"] },
        {"name": "neighborhood_overview", "dataType": ["text"] },
]

Ejecute el siguiente código para crear la colección en su instancia de Weaviate:

client.schema.create_class(collection_definition)

Ahora puedes agregar objetos a Weaviate. Utiliza un proceso de importación por lotes para lograr la máxima eficiencia. Ejecute el siguiente código para importar datos. Durante la importación, Weaviate utilizará el vectorizador definido para crear una incrustación de vectores para cada objeto. El siguiente código carga objetos, inicializa un proceso por lotes y agrega objetos a la colección de destino uno por uno:

from weaviate.util import generate_uuid5
import pandas as pd

# Read CSV file
csv_file = './data/listings.csv'
df = pd.read_csv(csv_file, usecols = ['host_name', 
                                      'property_type',
                                      'description', 
                                      'neighborhood_overview', 
                                        ])

df.fillna('', inplace=True)

# Configure batch
client.batch.configure(batch_size=100) 

# Initialize batch process
with client.batch as batch:
    for _, row in df.iterrows():
        listing_object = {
            "host_name": row["host_name"],
            "property_type" : row["property_type"],
            "description": row["description"],
            "neighborhood_overview" : row["neighborhood_overview"],
        }
        batch.add_data_object(
            class_name = "Listings",
            data_object = listing_object,
            uuid = generate_uuid5(listing_object)
        )

Recuperación Generación Aumentada

Puede crear una canalización RAG implementando una consulta de búsqueda generativa en su instancia de Weaviate. Para esto, primero defina una plantilla de solicitud en forma de cadena f que pueda aceptar la consulta del usuario ({target_audience}) directamente y el contexto adicional ({{host_name}}, {{property_type}}, {{description}}y {{neighborhood_overview}}) de la base de datos vectorial en tiempo de ejecución:

   prompt_template = f"""You are a copywriter.
    Write a short advertisement for the following vacation stay.
    Host: {{host_name}}
    Property type: {{property_type}}
    Description: {{description}}
    Neighborhood: {{neighborhood_overview}}
    Target audience: {target_audience}
    """

A continuación, ejecuta una consulta de búsqueda generativa. Esto solicita el modelo generativo definido con un mensaje que se compone de la consulta del usuario y los datos recuperados. La siguiente consulta recupera un objeto de listado (.with_limit(1)) desde el Listings colección que es más similar a la consulta del usuario (.with_near_text({"concepts": target_audience})). Luego la consulta del usuario (target_audience) y las propiedades de los listados recuperados (["description", "neighborhood", "host_name", "property_type"]) se introducen en la plantilla de solicitud. Vea el siguiente código:

   result = client.query
                .get("Listings", 
            ["description", "neighborhood", "host_name", "property_type"])
                .with_near_text({"concepts": target_audience})
                .with_limit(1)
                .with_generate(single_prompt=prompt_template)
                .do()

En el siguiente ejemplo, puede ver que el fragmento de código anterior para target_audience = “Family with small children” recupera un listado del anfitrión Marre. La plantilla de aviso se amplía con los detalles del listado de Marre y el público objetivo:

"You are a copywriter.
Write a short advertisement for the following vacation stay.
Host: Marre
Property type: Entire townhouse
Description: Welcome to our lovely home! You've come to the right place ...
Neighborhood: THE NEIGHBORHOOD:<br /><br />We are in the city centre ...
Target audience: Family with small children"

Según el mensaje de recuperación aumentada, el modelo Command de Cohere genera el siguiente anuncio dirigido:

"Looking for a kid-friendly home away from home in one of the trendiest areas of 
Amsterdam? Look no further than this stylish townhouse in the heart of the city! 
Our 120ft² space is perfect for a family of four or a group of adults, with two 
bedrooms featuring elevated beds suitable for kids and one bedroom with a single 
bed. The ground floor features a spacious living room, a kitchen with a large 
dining table, and a half bath while heading upstairs leads you to a master bedroom 
and a full bathroom. Our central location means you're just steps away from the 
best cafes, restaurants, and bars that the city has to offer, and the Vondelpark 
and other attractions are only a short walk away! Supermarkets and paid parking 
are also conveniently located nearby. Experience the best of Amsterdam in a 
laid-back,local way and create unforgettable memories with your family at our 
cozy townhouse."

Personalizaciones alternativas

Puede realizar personalizaciones alternativas a diferentes componentes de la solución propuesta, como las siguientes:

  • Los modelos de lenguaje de Cohere también están disponibles a través de JumpStart de Amazon SageMaker, que proporciona acceso a modelos básicos de vanguardia y permite a los desarrolladores implementar LLM para Amazon SageMaker, un servicio totalmente administrado que reúne un amplio conjunto de herramientas para permitir el aprendizaje automático de alto rendimiento y bajo costo para cualquier caso de uso. Weaviate también está integrado con SageMaker.
  • Una poderosa adición a esta solución es la Punto final de reclasificación de Cohere, disponible a través de SageMaker JumpStart. Rerank puede mejorar la relevancia de los resultados de búsqueda de una búsqueda léxica o semántica. Rerank funciona calculando puntuaciones de relevancia semántica para los documentos que se recuperan mediante un sistema de búsqueda y clasificando los documentos en función de estas puntuaciones. Agregar Rerank a una aplicación requiere solo una línea de cambio de código.
  • Para satisfacer los diferentes requisitos de implementación de diferentes entornos de producción, Weaviate se puede implementar de varias formas adicionales. Por ejemplo, está disponible como descarga directa desde Sitio web de Weaviate, que se ejecuta en Servicio Amazon Elastic Kubernetes (Amazon EKS) o localmente a través de Docker or Kubernetes. También está disponible como servicio gestionado que puede ejecutarse de forma segura dentro de una VPC o como un servicio de nube pública alojado en AWS con una prueba gratuita de 14 días.
  • Puede servir su solución en una VPC usando Nube privada virtual de Amazon (Amazon VPC), que permite a las organizaciones lanzar servicios de AWS en una red virtual lógicamente aislada, parecida a una red tradicional pero con los beneficios de la infraestructura escalable de AWS. Dependiendo del nivel clasificado de sensibilidad de los datos, las organizaciones también pueden desactivar el acceso a Internet en estas VPC.

Limpiar

Para evitar cargos inesperados, elimine todos los recursos que implementó como parte de esta publicación. Si lanzó la pila de CloudFormation, puede eliminarla a través de la consola de AWS CloudFormation. Tenga en cuenta que puede haber algunos recursos de AWS, como Tienda de bloques elásticos de Amazon (Amazon EBS) volúmenes y Servicio de administración de claves de AWS (AWS KMS), que es posible que no se eliminen automáticamente cuando se elimina la pila de CloudFormation.

Figura 6: Eliminar todos los recursos a través de la consola de AWS CloudFormation.

Conclusión

Esta publicación analiza cómo las empresas pueden crear aplicaciones de IA generativa precisas, transparentes y seguras sin dejar de tener control total sobre sus datos. La solución propuesta es una canalización RAG que utiliza una pila de tecnología nativa de IA como una combinación de modelos básicos Cohere en Amazon Bedrock y una base de datos vectorial Weaviate en AWS Marketplace. El enfoque RAG permite a las empresas cerrar la brecha entre el conocimiento general del LLM y los datos patentados y, al mismo tiempo, minimizar las alucinaciones. Una pila de tecnología nativa de IA permite un desarrollo rápido y un rendimiento escalable.

Puede comenzar a experimentar con pruebas de concepto de RAG para sus aplicaciones de IA generativa listas para su empresa siguiendo los pasos descritos en esta publicación. El código fuente adjunto está disponible en el repositorio de GitHub relacionado. Gracias por leer. No dude en enviar comentarios o sugerencias en la sección de comentarios.


Sobre 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.

leonie monigatti es promotor de desarrolladores en Weaviate. Su área de enfoque es AI/ML y ayuda a los desarrolladores a aprender sobre AI generativa. Fuera del trabajo, también comparte sus aprendizajes en ciencia de datos y ML en su blog y en Kaggle.

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.

Shun Mao es arquitecto senior de soluciones de socios de IA/ML en el equipo de tecnologías emergentes de Amazon Web Services. Le apasiona trabajar con clientes y socios empresariales para diseñar, implementar y escalar aplicaciones de IA/ML para obtener sus valores comerciales. Fuera del trabajo, le gusta pescar, viajar y jugar al ping-pong.

punto_img

Información más reciente

café vc

café vc

punto_img