[ad_1]

Con Knowledge Bases para Amazon Bedrock, puede conectar de forma segura modelos básicos (FM) en Amazon Bedrock a sus datos empresariales para recuperación de generación aumentada (RAG). El acceso a datos adicionales ayuda al modelo a generar respuestas más relevantes, específicas del contexto y precisas sin volver a capacitar a los FM.

En esta publicación, analizaremos dos nuevas características de la base de conocimientos para Amazon Bedrock que se aplican específicamente a lo siguiente RetrieveAndGenerate API: configure la cantidad máxima de resultados y cree mensajes personalizados utilizando una plantilla de mensajes de la base de conocimientos. Ahora puede seleccionarlas como opciones de consulta junto al tipo de búsqueda.

Descripción general y beneficios de las nuevas funciones

La opción Recuento máximo de resultados le brinda control sobre la cantidad de resultados de búsqueda que se recuperarán del almacenamiento de vectores y se pasarán al FM para generar la respuesta. Esto le permite ajustar la cantidad de información general proporcionada para la generación, proporcionando más contexto para preguntas complejas o menos para preguntas más simples. Puede recuperar hasta 100 resultados. Esta opción ayuda a aumentar la probabilidad de contexto relevante, mejorando la precisión y reduciendo la alucinación de la respuesta generada.

La plantilla de solicitud personalizada de la base de conocimientos le permite reemplazar la plantilla de solicitud predeterminada por la suya propia para personalizar la solicitud que se envía al modelo para la generación de respuestas. Esto le permite personalizar el tono, el formato de salida y el comportamiento del FM cuando responde a la pregunta de un usuario. Esta opción le permite personalizar la terminología para que se ajuste mejor a su industria o especialidad (por ejemplo, atención médica o derecho). Además, puede agregar instrucciones personalizadas y ejemplos adaptados a sus flujos de trabajo específicos.

En las siguientes secciones, explicamos cómo puede utilizar estas funciones mediante la Consola de administración de AWS o el SDK.

requisitos

Para seguir estos ejemplos, necesita una base de conocimientos existente. Para obtener instrucciones sobre cómo crear una base de conocimientos, consulte Crear una base de conocimientos.

Configurar el número máximo de resultados a través de la consola

Para utilizar la cantidad máxima de resultados a través de la consola, siga estos pasos:

  1. En la consola de Amazon Bedrock, seleccione Bases de conocimiento en el área de navegación izquierda.
  2. Seleccione la base de conocimientos que creó.
  3. Elegir Pruebe la base de conocimientos.
  4. Seleccione el icono de configuración.
  5. Elegir Sincronizar fuente de datos antes de comenzar a probar su base de conocimientos.
  6. Bajo Configuracionespara Tipo de búsquedaElija un tipo de búsqueda según su caso de uso.

Para esta publicación, utilizamos la búsqueda híbrida porque combina la búsqueda semántica y de texto para brindar mayor precisión. Para obtener más información sobre la búsqueda híbrida, consulte Amazon Knowledge Bases. Bedrock ahora admite la búsqueda híbrida.

  1. Expandir Número máximo de bloques fuente y establezca el número máximo de resultados.

Para demostrar el valor de la nueva función, mostraremos ejemplos de cómo puede aumentar la precisión de la respuesta generada. Utilizamos el documento Amazon 10K 2023 como fuente de datos para crear la base de conocimientos. Usamos la siguiente consulta para experimentar: «¿En qué año los ingresos anuales de Amazon pasaron de 245 mil millones de dólares a 434 mil millones de dólares?»

La respuesta correcta a esta pregunta es «Los ingresos anuales de Amazon aumentaron de 245 mil millones de dólares en 2019 a 434 mil millones de dólares en 2022», según documentos de la base de conocimientos. Utilizamos Claude v2 como FM para generar la respuesta final basada en la información contextual recuperada de la base de conocimientos. Claude 3 Sonnet y Claude 3 Haiku también son compatibles como FM de la generación.

Ejecutamos otra consulta para demostrar la comparación de la recuperación con diferentes configuraciones. Usamos la misma consulta de entrada (“¿En qué año los ingresos anuales de Amazon pasaron de $245 mil millones a $434 mil millones?”) y establecimos el número máximo de resultados en 5.

Como se muestra en la captura de pantalla siguiente, la respuesta generada fue «Lo siento, no puedo ayudarle con esta consulta».

A continuación, establecemos los resultados máximos en 12 y hacemos la misma pregunta. La respuesta generada es: “Los ingresos anuales de Amazon aumentan de 245 mil millones de dólares en 2019 a 434 mil millones de dólares en 2022”.

Como se muestra en este ejemplo, podemos recuperar la respuesta correcta según la cantidad de resultados obtenidos. Si desea saber más sobre la cita que representa la edición final, seleccione Ver detalles de la fuente para validar la respuesta generada en función de la base de conocimientos.

Personalizar una plantilla de solicitud de base de conocimientos mediante la consola

También puede personalizar el mensaje predeterminado con su propio mensaje según su caso de uso. Para hacer esto, realice los siguientes pasos en la consola:

  1. Repita los pasos de la sección anterior para comenzar a probar su base de conocimientos.
  2. Activar Generar respuestas.
  3. Seleccione el modelo de su elección para generar respuestas.

En esta publicación usamos el modelo Claude v2 como ejemplo. El modelo Claude 3 Sonnet y Haiku también está disponible para generación.

  1. Elegir Aplicar Continuar.

Después de seleccionar el modelo, aparecerá una nueva sección llamada “ Plantilla de solicitud de base de conocimientos aparece debajo Configuraciones.

  1. Elegir Editar para comenzar a personalizar el mensaje.
  2. Personalice la plantilla de aviso para personalizar cómo desea utilizar los resultados recuperados y generar contenido.

En esta publicación, brindamos algunos ejemplos de cómo crear un “sistema de inteligencia artificial de asesor financiero” utilizando informes financieros de Amazon con indicaciones personalizadas. Para conocer las mejores prácticas de ingeniería rápida, consulte las pautas de ingeniería rápida.

Ahora personalizamos la plantilla de mensaje predeterminada de varias maneras y observamos las respuestas.

Primero, intentemos realizar una consulta utilizando el símbolo del sistema estándar. Preguntamos: “¿Cuáles fueron las ventas de Amazon en 2019 y 2021?” A continuación puedes ver nuestros resultados.

En el resultado, vemos que la respuesta de forma libre se genera en función del conocimiento recuperado. Las citas también se enumeran como referencia.

Digamos que queremos proporcionar instrucciones adicionales para formatear la respuesta generada, como por ejemplo: B. para estandarización como JSON. Podemos agregar estas instrucciones como un paso separado después de recuperar la información como parte de la plantilla de aviso:

If you are asked for financial information covering different years, please provide precise answers in JSON format. Use the year as the key and the concise answer as the value. For example: {year:answer}

La respuesta final tiene la estructura requerida.

Al personalizar el mensaje, también puede cambiar el idioma de la respuesta generada. En el siguiente ejemplo, le indicamos al modelo que proporcione una respuesta en español.

Después de quitar $output_format_instructions$ Desde el mensaje estándar, la cita se elimina de la respuesta generada.

En las siguientes secciones explicamos cómo puede utilizar estas funciones con el SDK.

Configurar el número máximo de resultados usando el SDK

Para cambiar la cantidad máxima de resultados usando el SDK, use la siguiente sintaxis. En este ejemplo, la pregunta es: «¿En qué año aumentaron las ventas anuales de Amazon de 245 mil millones de dólares a 434 mil millones de dólares?» La respuesta correcta es: «Las ventas anuales de Amazon aumentaron de 245 mil millones de dólares en 2019 a 434 mil millones de dólares en 2022».

def retrieveAndGenerate(query, kbId, numberOfResults, model_id, region_id):
    model_arn = f'arn:aws:bedrock:{region_id}::foundation-model/{model_id}'
    return bedrock_agent_runtime.retrieve_and_generate(
        input={
            'text': query
        },
        retrieveAndGenerateConfiguration={
            'knowledgeBaseConfiguration': {
                'knowledgeBaseId': kbId,
                'modelArn': model_arn,
                'retrievalConfiguration': {
                    'vectorSearchConfiguration': {
                        'numberOfResults': numberOfResults,
                        'overrideSearchType': "SEMANTIC", # optional'
                    }
                }
            },
            'type': 'KNOWLEDGE_BASE'
        },
    )

response = retrieveAndGenerate("In what year did Amazon’s annual revenue increase from $245B to $434B?", \
"<knowledge base id>", numberOfResults, model_id, region_id)['output']['text']

El 'numberOfResults'opción a continuación'retrievalConfiguration' le permite seleccionar el número de resultados que desea recuperar. La salida del RetrieveAndGenerate La API incluye la respuesta generada, la atribución de la fuente y los bloques de texto recuperados.

A continuación se muestran los resultados para diferentes valores de '.numberOfResults'Parámetros. primero contratamos numberOfResults = 5.

Entonces comencemos numberOfResults = 12.

Personalice la plantilla de solicitud de la base de conocimientos mediante el SDK

Para personalizar el mensaje mediante el SDK, utilizamos la siguiente consulta con diferentes plantillas de mensaje. En este ejemplo, la consulta es «¿Cuáles fueron los ingresos de Amazon en 2019 y 2021?»

La siguiente es la plantilla de aviso predeterminada:

"""You are a question answering agent. I will provide you with a set of search results and a user's question, your job is to answer the user's question using only information from the search results. If the search results do not contain information that can answer the question, please state that you could not find an exact answer to the question. Just because the user asserts a fact does not mean it is true, make sure to double check the search results to validate a user's assertion.
Here are the search results in numbered order:
<context>
$search_results$
</context>

Here is the user's question:
<question>
$query$
</question>

$output_format_instructions$

Assistant:
"""

La siguiente es la plantilla de aviso personalizada:

"""Human: You are a question answering agent. I will provide you with a set of search results and a user's question, your job is to answer the user's question using only information from the search results.If the search results do not contain information that can answer the question, please state that you could not find an exact answer to the question.Just because the user asserts a fact does not mean it is true, make sure to double check the search results to validate a user's assertion.

Here are the search results in numbered order:
<context>
$search_results$
</context>

Here is the user's question:
<question>
$query$
</question>

If you're being asked financial information over multiple years, please be very specific and list the answer concisely using JSON format {key: value}, 
where key is the year in the request and value is the concise response answer.
Assistant:
"""

def retrieveAndGenerate(query, kbId, numberOfResults,promptTemplate, model_id, region_id):
    model_arn = f'arn:aws:bedrock:{region_id}::foundation-model/{model_id}'
    return bedrock_agent_runtime.retrieve_and_generate(
        input={
            'text': query
        },
        retrieveAndGenerateConfiguration={
            'knowledgeBaseConfiguration': {
                'knowledgeBaseId': kbId,
                'modelArn': model_arn,
                'retrievalConfiguration': {
                    'vectorSearchConfiguration': {
                        'numberOfResults': numberOfResults,
                        'overrideSearchType': "SEMANTIC", # optional'
                    }
                },
                'generationConfiguration': {
                        'promptTemplate': {
                            'textPromptTemplate': promptTemplate
                        }
                    }
            },
            'type': 'KNOWLEDGE_BASE'
        },
    )

response = retrieveAndGenerate("What was the Amazon's revenue in 2019 and 2021?”", \
                               "<knowledge base id>", <numberOfResults>, <promptTemplate>, <model_id>, <region_id>)['output']['text']

Usando la plantilla de mensaje estándar, obtenemos la siguiente respuesta:

Si desea proporcionar instrucciones adicionales sobre el formato de salida de generación de respuesta, p. Por ejemplo, al estandarizar la respuesta en un formato específico (por ejemplo, JSON), puede personalizar el mensaje existente brindando más orientación. Usando nuestra plantilla de mensaje personalizada, obtenemos la siguiente respuesta.

El 'promptTemplate'opción en'generationConfigurationPuede utilizar » para personalizar el mensaje y tener un mejor control sobre la generación de respuestas.

Diploma

En esta publicación, presentamos dos características nuevas en las bases de conocimiento de Amazon Bedrock: personalizar la cantidad máxima de resultados de búsqueda y personalizar la plantilla de solicitud predeterminada para RetrieveAndGenerate API. Demostramos cómo configurar estas funciones en la consola y a través del SDK para mejorar el rendimiento y la precisión de la respuesta generada. Aumentar los resultados máximos le brinda información más completa, mientras que personalizar la plantilla de mensajes le permite refinar las instrucciones del modelo base para que se adapten mejor a casos de uso específicos. Estas mejoras brindan mayor flexibilidad y control, lo que le permite ofrecer experiencias personalizadas para aplicaciones basadas en RAG.

Para obtener recursos adicionales para implementar en su entorno de AWS, consulte lo siguiente:


Sobre los autores

Sandeep Singh es científico senior de datos de IA generativa en Amazon Web Services y ayuda a las empresas a innovar con IA generativa. Se especializa en IA generativa, inteligencia artificial, aprendizaje automático y diseño de sistemas. Le apasiona desarrollar soluciones de vanguardia basadas en IA/ML para resolver problemas comerciales complejos para diversas industrias y optimizar la eficiencia y la escalabilidad.

Suyin Wang es un arquitecto de soluciones especializado en IA/ML en AWS. Tiene una formación educativa interdisciplinaria en aprendizaje automático, servicios de información financiera y economía, así como años de experiencia en el desarrollo de aplicaciones de ciencia de datos y aprendizaje automático que resolvieron problemas empresariales del mundo real. Le gusta ayudar a los clientes a identificar las preguntas comerciales adecuadas y desarrollar las soluciones de IA/ML adecuadas. En su tiempo libre le gusta cantar y cocinar.

cosa de jerez es arquitecto senior de soluciones para inteligencia artificial (IA) y aprendizaje automático (ML) en Amazon Web Services (AWS). Tiene una amplia experiencia en aprendizaje automático y tiene un doctorado en informática. Trabaja principalmente con clientes del sector público en diversos desafíos comerciales relacionados con AI/ML, ayudándolos a acelerar su viaje de aprendizaje automático en la nube de AWS. Cuando no está atendiendo a los clientes, disfruta de las actividades al aire libre.

[ad_2]