Athrun Data Intelligence


IA generativa Y los grandes modelos de idiomas (LLM) están revolucionando a las organizaciones en diversos sectores para mejorar la experiencia del cliente, lo que tradicionalmente llevaría abriles progresar. Cada estructura tiene datos almacenados en tiendas de datos, ya sea en premisas o en proveedores de nubes.

Puede adoptar la IA generativa y mejorar la experiencia del cliente al convertir sus datos existentes en un índice sobre el cual la IA generativa puede agenciárselas. Cuando hace una pregunta a un LLM de código hendido, obtiene información pública apto como respuesta. Aunque esto es útil, la IA generativa puede ayudarlo a comprender sus datos cercano con el contexto adicional de LLMS. Esto se logra a través de la procreación de recuperación aumentada (RAG).

Rag recupera datos de una almohadilla de conocimiento preexistente (sus datos), lo combina con el conocimiento de la LLM y genera respuestas con un habla más humano. Sin secuestro, para que la IA generativa comprenda sus datos, se requiere cierta cantidad de preparación de datos, lo que implica una gran curva de formación.

Amazon Aurora es una almohadilla de datos relacional compatible con MySQL y PostgreSQL construida para la cúmulo. Aurora combina el rendimiento y la disponibilidad de las bases de datos empresariales tradicionales con la simplicidad y la rentabilidad de las bases de datos de código hendido.

En esta publicación, lo guiamos a través de cómo convertir sus datos de aurora existentes en un índice sin condición de preparación de datos para Amazon Kendra Para realizar la búsqueda de datos e implementar el trapo que combine sus datos cercano con el conocimiento de LLM para producir respuestas precisas.

Descripción caudillo de la decisión

En esta decisión, use sus datos existentes como fuente de datos (Aurora), cree un servicio de búsqueda inteligente conectando y sincronizando su fuente de datos a Amazon Kendra Search y realice una búsqueda generativa de datos de IA, que utiliza RAG para producir respuestas precisas combinando su datos cercano con el conocimiento de la LLM. Para esta publicación, usamos el Claude de Anthrope en Roca causa de Amazon como nuestro LLM.

Los siguientes son los pasos de detención nivel para la decisión:

El futuro diagrama ilustra la edificio de la decisión.

Ml-16454_solution_architecture.jpg

Requisitos previos

Para seguir esta publicación, se requieren los siguientes requisitos previos:

Crea un clúster de Aurora PostgreSQL

Ejecute los siguientes comandos AWS CLI para crear un clúster V2 sin servidor Aurora PostgreSQL:

aws rds create-db-cluster 
--engine aurora-postgresql 
--engine-version 15.4 
--db-cluster-identifier genai-kendra-ragdb 
--master-username postgres 
--master-user-password XXXXX 
--db-subnet-group-name dbsubnet 
--vpc-security-group-ids "sg-XXXXX" 
--serverless-v2-scaling-configuration "MinCapacity=2,MaxCapacity=64" 
--enable-http-endpoint 
--region us-east-2

aws rds create-db-instance 
--db-cluster-identifier genai-kendra-ragdb 
--db-instance-identifier genai-kendra-ragdb-instance 
--db-instance-class db.serverless 
--engine aurora-postgresql

La futuro captura de pantalla muestra la instancia creada.

ML-16454-Aurora_instance

Ingerir datos a Aurora PostgreSQL-Compatible

Conéctese a la instancia de Aurora usando la aparejo PGADmin. Referirse a Conectarse a una instancia de DB que ejecuta el motor de la almohadilla de datos PostgreSQL Para más información. Para ingerir sus datos, complete los siguientes pasos:

  1. Ejecute las siguientes declaraciones de PostgreSQL en PGADmin para crear la almohadilla de datos, el esquema y la tabla:
    CREATE DATABASE genai;
    CREATE SCHEMA 'employees';
    
    CREATE DATABASE genai;
    SET SCHEMA 'employees';
    
    CREATE TABLE employees.amazon_review(
    pk int GENERATED ALWAYS AS IDENTITY NOT NULL,
    id varchar(50) NOT NULL,
    name varchar(300) NULL,
    asins Text NULL,
    brand Text NULL,
    categories Text NULL,
    keys Text NULL,
    manufacturer Text NULL,
    reviews_date Text NULL,
    reviews_dateAdded Text NULL,
    reviews_dateSeen Text NULL,
    reviews_didPurchase Text NULL,
    reviews_doRecommend varchar(100) NULL,
    reviews_id varchar(150) NULL,
    reviews_numHelpful varchar(150) NULL,
    reviews_rating varchar(150) NULL,
    reviews_sourceURLs Text NULL,
    reviews_text Text NULL,
    reviews_title Text NULL,
    reviews_userCity varchar(100) NULL,
    reviews_userProvince varchar(100) NULL,
    reviews_username Text NULL,
    PRIMARY KEY
    (
    pk
    )
    ) ;

  2. En su conexión PostgreRora de Pgadmin Aurora, navegue a Bases de datos, genai, Esquema, empleados, Mesas.
  3. Elija (haga clic con el pimpollo derecho) Mesas y nominar Utensilio PSQL Para rajar una conexión de cliente PSQL.
    ML-16454_PSQL_TOOL
  4. Coloque el archivo CSV en su ubicación PGADmin y ejecute el futuro comando:
    copy employees.amazon_review (id, name, asins, brand, categories, keys, manufacturer, reviews_date, reviews_dateadded, reviews_dateseen, reviews_didpurchase, reviews_dorecommend, reviews_id, reviews_numhelpful, reviews_rating, reviews_sour
    ceurls, reviews_text, reviews_title, reviews_usercity, reviews_userprovince, reviews_username) FROM 'C:Program FilespgAdmin 4runtimeamazon_review.csv' DELIMITER ',' CSV HEADER ENCODING 'utf8';

  5. Ejecute la futuro consulta de PSQL para confirmar el número de registros copiados:
    Select count (*) from employees.amazon_review;

Crear un índice de Amazon Kendra

El Índice de Amazon Kendra mantiene el contenido de sus documentos y está estructurado de una forma de hacer que los documentos sean buscando. Tiene tres tipos de índice:

  • Índice generativo de impresión empresarial de IA – Ofrece la decano precisión para la operación de API de recuperación y para los casos de uso de trapo (recomendado)
  • Índice de impresión empresarial -Proporciona capacidades de búsqueda semántica y ofrece un servicio de adhesión disponibilidad que es adecuado para cargas de trabajo de producción
  • Índice de impresión de desarrollador – Proporciona capacidades de búsqueda semántica para que pueda probar sus casos de uso

Para crear un índice de Amazon Kendra, complete los siguientes pasos:

  1. En la consola de Amazon Kendra, elija Índices En el panel de navegación.
  2. Designar Crear un índice.
  3. En el Especificar detalles del índice Página, proporcione la futuro información:
    • Para Nombre del índiceingrese un nombre (por ejemplo, genai-kendra-index).
    • Para Papel de iamnominar Crear un nuevo rol (recomendado).
    • Para Nombre de rolingrese un nombre de rol de IAM (por ejemplo, genai-kendra). Su nombre de rol tendrá prefijo AmazonKendra-- (Por ejemplo, AmazonKendra-us-east-2-genai-kendra).
  4. Designar Próximo.
    ML-16454 Especify-Index-Details
  5. En el Adicionar capacidad adicional Página, seleccione Estampado de desarrollador (para esta demostración) y elija Próximo.
    ML-16454-capacidad adicional
  6. En el Configurar el control de paso al sucesor Página, proporcione la futuro información:
    • Bajo Configuración de control de pasoaspirar No.
    • Bajo Expansión del camarilla de usuariosaspirar Ningún.
  7. Designar Próximo.
    ML-16454-Configuración-User-Access-Control
  8. En el Revisar y crear página, confirmar los detalles y nominar Crear.
    ML-16454-revisión y creación

Puede tomar algún tiempo para que el índice cree. Verifique la letanía de índices para ver el progreso de la creación de su índice. Cuando el estado del índice es ACTIVOsu índice está diligente para usar.
ML-16454-Genai-Kendra-índice

Configurar el conector PostgreSQL de Amazon Kendra Aurora

Complete los siguientes pasos para configurar su conector de fuente de datos:

  1. En la consola de Amazon Kendra, elija Fuentes de datos En el panel de navegación.
  2. Designar Adicionar fuente de datos.
  3. Designar Conector de postgresql aurora Como tipo de fuente de datos.
    ML-16454 Postgresql-Connector
  4. En el Especificar detalles de la fuente de datos Página, proporcione la futuro información:
    • Para Nombre de fuente de datosingrese un nombre (por ejemplo, data_source_genai_kendra_postgresql).
    • Para Lengua predeterminadonominar Inglés (es).
    • Designar Próximo.
  5. En el Detallar paso y seguridad página, debajo Fuenteproporcione la futuro información:
    • Para Huéspedingrese el nombre de host de la instancia de PostgreSQL (cvgupdj47zsh.us-east-2.rds.amazonaws.com).
    • Para Puertoingrese el número de puerto de la instancia de PostgreSQL (5432).
    • Para Instanciaingrese el nombre de la almohadilla de datos de la instancia de PostgreSQL (genai).
  6. Bajo Autenticaciónsi ya tiene credenciales almacenadas en AWS Secrets Managerelige en el menú desplegable de lo contrario, elija Crear y añadir un nuevo secreto.
  7. En el Crear un secreto de AWS Secrets Manager ventana emergente, proporcione la futuro información:
    • Para Nombre secretoingrese un nombre (por ejemplo, AmazonKendra-Aurora-PostgreSQL-genai-kendra-secret).
    • Para Nombre de sucesor almohadilla de datosingrese el nombre del sucesor de su almohadilla de datos.
    • Para Contraseña¸ Ingrese la contraseña del sucesor.
  8. Designar Adicionar secreto.
    Ml-16454-create-aws-saprets-ganager
  9. Bajo Configurar VPC y camarilla de seguridadproporcione la futuro información:
    • Para Montón privada supuestoelija su cúmulo privada supuesto (VPC).
    • Para Subredelija su subred.
    • Para Grupos de seguridad de VPCelija el camarilla de seguridad VPC para permitir el paso a su fuente de datos.
  10. Bajo Papel de iam¸ Si tiene un rol existente, elija en el menú desplegable. De lo contrario, elija Crear un nuevo rol.
    Ml-16454-create_a_new_iam_role
  11. En el Configurar configuraciones de sincronización página, debajo Inteligencia de sincronizaciónproporcione la futuro información:
    • Para Consulta SQLingrese la consulta SQL y los títulos de la columna de la futuro forma: select * from employees.amazon_review.
    • Para Secreto principalingrese la columna de esencia principal (pk).
    • Para Títuloingrese la columna de título que proporciona el nombre del título del documento en el interior de la tabla de su almohadilla de datos (reviews_title).
    • Para Cuerpoingrese a la columna del cuerpo en la que ocurrirá su búsqueda de Amazon Kendra (reviews_text).
  12. Bajo Nodo de sincronizaciónaspirar Sincronización completa Para convertir los datos completos de la tabla en un índice de búsqueda.

A posteriori de que la sincronización se complete con éxito, su índice de Amazon Kendra contendrá los datos de la tabla Aurora PostgreSQL especificada. Luego puede usar este índice para aplicaciones inteligentes de búsqueda y trapo.

  1. Bajo Horario de ejecución de sincronizaciónnominar Ejecutar.
  2. Designar Próximo.
  3. En el Establecer mapeos de campo página, deje la configuración predeterminada y elija Próximo.
  4. Revise su configuración y elija Adicionar fuente de datos.

Su fuente de datos aparecerá en el Fuentes de datos página posteriormente de que la fuente de datos se haya creado con éxito.

Ml-16454-data-fuente-creación

Invocar la aplicación RAG

La sincronización del índice de Amazon Kendra puede tolerar minutos a horas dependiendo del bulto de sus datos. Cuando la sincronización se completa sin error, está diligente para desarrollar su decisión RAG en su IDE preferido. Complete los siguientes pasos:

  1. Configure sus credenciales de AWS para permitir que Boto3 interactúe con los servicios de AWS. Puedes hacer esto configurando el AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY Variables de entorno o utilizando el ~/.aws/credentials archivo:
    import boto3
      pip install langchain
    
    # Create a Boto3 session
    
    session = boto3.Session(
       aws_access_key_id='YOUR_AWS_ACCESS_KEY_ID',
       aws_secret_access_key='YOUR_AWS_SECRET_ACCESS_KEY',
       region_name="YOUR_AWS_REGION"
    )

  2. Importar langchain y los componentes necesarios:
    from langchain_community.llms import Bedrock
    from langchain_community.retrievers import AmazonKendraRetriever
    from langchain.chains import RetrievalQA

  3. Cree una instancia del LLM (Claude de Anthrope):
    llm = Bedrock(
    region_name = "bedrock_region_name",
    model_kwargs = {
    "max_tokens_to_sample":300,
    "temperature":1,
    "top_k":250,
    "top_p":0.999,
    "anthropic_version":"bedrock-2023-05-31"
    },
    model_id = "anthropic.claude-v2"
    )

  4. Cree su plantilla de aviso, que proporciona instrucciones para el LLM:
    from langchain_core.prompts import PromptTemplate
    
    prompt_template = """
    You are a Product Review Specialist, and you provide detail product review insights.
    You have access to the product reviews in the  XML tags below and nothing else.
    
    
    {context}
    
    
    
    {question}
    
    """
    
    prompt = PromptTemplate(template=prompt_template, input_variables=("context", "question"))

  5. Inicializar el KendraRetriever con su ID de índice de Amazon Kendra reemplazando el Kendra_index_id que creaste anteriormente y el cliente de Amazon Kendra:
    session = boto3.Session(region_name="Kendra_region_name")
    kendra_client = session.client('kendra')
    # Create an instance of AmazonKendraRetriever
    kendra_retriever = AmazonKendraRetriever(
    kendra_client=kendra_client,
    index_id="Kendra_Index_ID"
    )

  6. Combine Claude de Anthrope y el Amazon Kendra Retriever en una condena de recuperación:
    qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=kendra_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": prompt},
    )

  7. Invoca la condena con su propia consulta:
    query = "What are some products that has bad quality reviews, summarize the reviews"
    result_ = qa.invoke(
    query
    )
    result_

    ML-16454-RAG-Output

Aniquilar

Para evitar incurrir en cargos futuros, elimine los fortuna que creó como parte de esta publicación:

  1. Eliminar el clúster DB de Aurora y la instancia de DB.
  2. Eliminar el índice de Amazon Kendra.

Conclusión

En esta publicación, discutimos cómo convertir sus datos de Aurora existentes en un índice de Amazon Kendra e implementar una decisión basada en RAG para la búsqueda de datos. Esta decisión reduce drásticamente la condición de preparación de datos para la búsqueda de Amazon Kendra. Todavía aumenta la velocidad del incremento generativo de aplicaciones de IA al compendiar la curva de formación detrás de la preparación de datos.

Pruebe la decisión, y si tiene algún comentario o pregunta, déjelos en la sección de comentarios.


Sobre los autores

Aravind hariharaputran es asesor de datos del equipo de servicios profesionales en Amazon Web Services. Le apasiona datos y AIML en caudillo con una amplia experiencia en la mandato de tecnologías de bases de datos. Ayuda a los clientes a modificar la almohadilla de datos y las aplicaciones heredadas en plataformas de datos modernas y aplicaciones generativas de IA. Le gusta acaecer tiempo con la tribu y brincar al cricket.

Ivan Cui Es un líder de ciencia de datos con AWS Professional Services, donde ayuda a los clientes a construir e implementar soluciones utilizando ML y IA generativa en AWS. Ha trabajado con clientes en diversas industrias, incluidos software, finanzas, farmacéutica, atención médica, IoT y entretenimiento y medios de comunicación. En su tiempo emancipado, le gusta repasar, acaecer tiempo con su tribu y recorrer.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *