Las bases de conocimiento de Amazon Bedrock ahora admiten el filtrado de metadatos para mejorar la precisión de la recuperación

[ad_1]

En AWS re:Invent 2023, anunciamos la disponibilidad general de bases de conocimiento para Amazon Bedrock. Con Knowledge Bases para Amazon Bedrock, puede conectar de forma segura Foundation Models (FM) en Amazon Bedrock a los datos de su empresa mediante un modelo de recuperación de generación aumentada (RAG) totalmente administrado.

En aplicaciones basadas en RAG, la precisión de las respuestas generadas por los FM depende del contexto proporcionado al modelo. Los contextos se recuperan de los almacenes de vectores en función de las consultas de los usuarios. La función de base de conocimientos recientemente lanzada de Amazon Bedrock, Búsqueda híbrida, le permite combinar la búsqueda semántica con la búsqueda de palabras clave. Sin embargo, en muchas situaciones es posible que necesite recuperar documentos creados durante un período de tiempo específico o etiquetados con categorías específicas. Para refinar los resultados de la búsqueda, puede filtrar según los metadatos del documento para mejorar la precisión de la recuperación, lo que a su vez da como resultado generaciones de FM más relevantes que coincidan con sus intereses.

En esta publicación, analizaremos la nueva función de filtrado de metadatos personalizado en las bases de conocimiento de Amazon Bedrock, que le permite mejorar los resultados de búsqueda al filtrar previamente sus recuperaciones de las tiendas de vectores.

Descripción general del filtrado de metadatos

Antes de que se lanzara el filtrado de metadatos, todos los bloques semánticamente relevantes hasta el máximo preestablecido se devolvían como contexto que el FM podía usar para generar una respuesta. Ahora los filtros de metadatos le permiten recuperar no solo bloques semánticamente relevantes, sino también un subconjunto bien definido de esos bloques relevantes en función de los filtros de metadatos aplicados y los valores asociados.

Con esta función, ahora puede proporcionar un archivo de metadatos personalizado (de hasta 10 KB cada uno) para cada documento de la base de conocimientos. Puede aplicar filtros a sus recuperaciones e indicarle al almacén de vectores que realice un filtrado previo en función de los metadatos del documento y luego busque documentos relevantes. Esto le brinda control sobre los documentos recuperados, especialmente si sus consultas son ambiguas. Por ejemplo, puedes utilizar documentos legales con términos similares para diferentes contextos, o películas con una trama similar estrenadas en diferentes años. Además, al reducir la cantidad de bloques buscados, obtiene beneficios de rendimiento, como la reducción de los ciclos de CPU y los costos de consulta de memoria vectorial, además de mejorar la precisión.

Para utilizar la función de filtrado de metadatos, además de los archivos de datos de origen, también debe proporcionar archivos de metadatos con el mismo nombre que el archivo de datos de origen. .metadata.json Sufijo. Los metadatos pueden ser cadenas, números o valores booleanos. El siguiente es un ejemplo del contenido del archivo de metadatos:

{
    "metadataAttributes" : { 
        "tag" : "project EVE",
        "year" :  2016,
        "team": "ninjas"
    }
}

La función de filtrado de metadatos de las bases de conocimiento para Amazon Bedrock está disponible en las regiones de AWS Este de EE. UU. (Norte de Virginia) y Oeste de EE. UU. (Oregón).

Los siguientes son casos de uso comunes para el filtrado de metadatos:

  • Chatbot de documentos para una empresa de software – Esto permite a los usuarios encontrar información del producto y guías de solución de problemas. Los filtros basados ​​en el sistema operativo o la versión de la aplicación, por ejemplo, pueden ayudar a evitar recuperar documentos obsoletos o irrelevantes.
  • Búsqueda conversacional en la aplicación de una organización. – Esto permite a los usuarios buscar documentos, kanbans, actas de grabación de reuniones y otros activos. Utilice filtros de metadatos para grupos de trabajo, unidades de negocio o ID de proyectos para personalizar la experiencia de chat y mejorar la colaboración. Un ejemplo sería "¿Cuál es el estado del Proyecto Sphinx y cuáles son los riesgos?", donde los usuarios pueden filtrar documentos por un proyecto específico o tipo de fuente (por ejemplo, correo electrónico o documentos de reuniones).
  • Búsqueda inteligente de desarrolladores de software – Esto permite a los desarrolladores buscar información sobre una versión específica. Los filtros por versión de lanzamiento y tipo de documento (por ejemplo, código, referencia de API o problema) pueden ayudar a localizar documentos relevantes.

Descripción general de la solución

En las siguientes secciones, mostramos cómo preparar un conjunto de datos para usarlo como base de conocimientos y luego consultarlo mediante el filtrado de metadatos. Puede realizar consultas mediante la Consola de administración de AWS o el SDK.

Prepare un conjunto de datos de base de conocimientos para Amazon Bedrock

Para esta publicación, usaremos un conjunto de datos de muestra sobre videojuegos ficticios para demostrar cómo ingerir y recuperar metadatos utilizando bases de conocimiento para Amazon Bedrock. Si desea seguirlo en su propia cuenta de AWS, descargue el archivo.

Si desea agregar metadatos a sus documentos en una base de conocimientos existente, cree los archivos de metadatos con el nombre de archivo y el esquema esperados y luego continúe con el paso de sincronizar sus datos con la base de conocimientos para iniciar la ingesta incremental.

En nuestro conjunto de datos de ejemplo, el documento de cada juego es un archivo CSV independiente (p. ej. s3://$bucket_name/video_game/$game_id.csv) con las siguientes columnas:

title, description, genres, year, publisher, score

Los metadatos de cada juego tienen el sufijo .metadata.json (Por ejemplo, s3://$bucket_name/video_game/$game_id.csv.metadata.json) con el siguiente esquema:

{
  "metadataAttributes": {
    "id": number, 
    "genres": string,
    "year": number,
    "publisher": string,
    "score": number
  }
}

Cree una base de conocimientos para Amazon Bedrock

Para obtener instrucciones sobre cómo crear una nueva base de conocimientos, consulte Crear una base de conocimientos. Para este ejemplo usaremos la siguiente configuración:

  • Sobre el Configurar fuente de datos lado, debajo estrategia de fragmentaciónelegir sin fragmentaciónya que ya has preprocesado los documentos en el paso anterior.
  • En el Modelo de incrustación Sección, elija Titan G1 incrustado - Texto.
  • En el Base de datos vectorial Sección, elija Crea rápidamente un nuevo almacenamiento vectorial. La función de filtrado de metadatos está disponible para todos los almacenes de vectores compatibles.

Sincronizar el registro con la base de conocimientos

Después de crear la base de conocimientos y de que sus archivos de datos y archivos de metadatos estén en un depósito de Amazon Simple Storage Service (Amazon S3), puede comenzar la ingesta incremental. Para obtener instrucciones, consulte Sincronizar para agregar sus fuentes de datos a la base de conocimientos.

Consulta con filtrado de metadatos en la consola de Amazon Bedrock

Para utilizar las opciones de filtrado de metadatos en la consola de Amazon Bedrock, complete los siguientes pasos:

  1. En la consola de Amazon Bedrock, seleccione Bases de conocimiento en el área de navegación.
  2. Seleccione la base de conocimientos que creó.
  3. Elegir Pruebe la base de conocimientos.
  4. Selecciona el Configuraciones icono, luego expandir filtrar.
  5. Ingrese una condición en el formato: Tecla = Valor (por ejemplo, Géneros = Estrategia) y presione Aporte.
  6. Para cambiar la clave, el valor o el operador, seleccione la condición.
  7. Continúe con las condiciones restantes (por ejemplo, (Géneros = Estrategia Y Año >= 2023) O (Rating >= 9))
  8. Cuando haya terminado, ingrese su solicitud en el cuadro de mensaje y luego seleccione Correr.

Para este artículo ingresamos la consulta de búsqueda "Un juego de estrategia con gráficos geniales, lanzado después de 2023".

Consulta con filtrado de metadatos usando el SDK

Para utilizar el SDK, primero cree el cliente de tiempo de ejecución de Agents for Amazon Bedrock:

import boto3

bedrock_agent_runtime = boto3.client(
    service_name = "bedrock-agent-runtime"
)

Luego crea el filtro (aquí hay algunos ejemplos):

# genres = Strategy
single_filter= {
    "equals": {
        "key": "genres",
        "value": "Strategy"
    }
}

# genres = Strategy AND year >= 2023
one_group_filter= {
    "andAll": [
        {
            "equals": {
                "key": "genres",
                "value": "Strategy"
            }
        },
        {
            "GreaterThanOrEquals": {
                "key": "year",
                "value": 2023
            }
        }
    ]
}

# (genres = Strategy AND year >=2023) OR score >= 9
two_group_filter = {
    "orAll": [
        {
            "andAll": [
                {
                    "equals": {
                        "key": "genres",
                        "value": "Strategy"
                    }
                },
                {
                    "GreaterThanOrEquals": {
                        "key": "year",
                        "value": 2023
                    }
                }
            ]
        },
        {
            "GreaterThanOrEquals": {
                "key": "score",
                "value": "9"
            }
        }
    ]
}

pasar el filtro retrievalConfiguration la API de recuperación o la API RetrieveAndGenerate:

retrievalConfiguration={
        "vectorSearchConfiguration": {
            "filter": metadata_filter
        }
    }

La siguiente tabla enumera algunas respuestas con diferentes condiciones de filtro de metadatos.

consulta Filtrado de metadatos Documentos recuperados Observaciones
“Un juego de estrategia con gráficos geniales, lanzado después de 2023” Fuera de

* Viking Saga: The Sea Raider, Año: 2023, Géneros: Estrategia

* Castillo Medieval: Asedio y Conquista, año:2022Géneros: Estrategia
* Fantasy Kingdoms: Chronicles of Eldoria, Año: 2023, Géneros: Estrategia

* Revolución Cibernética: El Auge de las Máquinas, Año:2022Géneros: Estrategia
* Crónicas Steampunk: Los imperios mecánicos, año:2021Géneros: Desarrollo Urbano

2/5 juegos cumplen la condición (géneros = estrategia y año >= 2023)
En * Viking Saga: The Sea Raider, Año: 2023, Géneros: Estrategia
* Fantasy Kingdoms: Chronicles of Eldoria, Año: 2023, Géneros: Estrategia
2/2 juegos cumplen la condición (géneros = estrategia y año >= 2023)

Además de los metadatos personalizados, también puede filtrar utilizando prefijos S3 (estos son metadatos integrados, por lo que no es necesario proporcionar archivos de metadatos). Por ejemplo, si organizas los documentos del juego por editor en prefijos (p. ej. s3://$bucket_name/video_game/$publisher/$game_id.csv), puede filtrar por editor específico (p. ej. neo_tokyo_games) con la siguiente sintaxis:

publisher_filter = {
    "startsWith": {
                    "key": "x-amz-bedrock-kb-source-uri",
                    "value": "s3://$bucket_name/video_game/neo_tokyo_games/"
                }
}

Limpiar

Para limpiar sus recursos, siga estos pasos:

  1. Eliminar la base de conocimientos:
    1. En la consola de Amazon Bedrock, seleccione Bases de conocimiento bajo Orquestación en el área de navegación.
    2. Seleccione la base de conocimientos que creó.
    3. Anote el nombre del rol de servicio de AWS Identity and Access Management (IAM) en el Descripción general de la base de conocimientos Sección.
    4. En el Base de datos vectorial En la sección, observe el ARN de la colección.
    5. Elegir Borrary luego escriba "Eliminar" para confirmar.
  2. Eliminar la base de datos de vectores:
    1. En la consola de Amazon OpenSearch Service, seleccione Colecciones bajo Sin servidor en el área de navegación.
    2. Ingrese el ARN de la colección que guardó en la barra de búsqueda.
    3. Selecciona la colección y elige Borrar.
    4. En el mensaje de confirmación, escriba "Confirmar" y luego seleccione " Borrar.
  3. Elimine la función del servicio IAM:
    1. En la consola de IAM, seleccione rollo en el área de navegación.
    2. Busque el nombre del rol que anotó anteriormente.
    3. Seleccione el rol y elija Borrar.
    4. En el mensaje de confirmación, ingrese el nombre del rol y elimine el rol.
  4. Eliminar el conjunto de datos de muestra:
    1. En la consola de Amazon S3, navegue hasta el depósito de S3 que utilizó.
    2. Seleccione el prefijo y los archivos y luego seleccione Borrar.
    3. Para eliminar, ingrese "Eliminación permanente" en el mensaje de confirmación.

Diploma

En esta publicación, cubrimos la función de filtrado de metadatos en las bases de conocimiento de Amazon Bedrock. Aprendió a agregar metadatos personalizados a los documentos y usarlos como filtros mientras recupera y consulta los documentos usando la consola y el SDK de Amazon Bedrock. Esto ayuda a mejorar la precisión contextual, haciendo que las respuestas a las consultas sean aún más relevantes y al mismo tiempo reduce el costo de consultar la base de datos vectorial.

Se pueden encontrar recursos adicionales aquí:


Sobre los autores

Corvus Lee es un arquitecto senior de soluciones de GenAI Labs con sede en Londres. Le apasiona diseñar y desarrollar prototipos que utilizan IA generativa para resolver los problemas de los clientes. También se mantiene al tanto de los últimos avances en IA generativa y técnicas de recuperación aplicándolas a escenarios del mundo real.

Ahmed Ewis es arquitecto de soluciones senior en AWS GenAI Labs y ayuda a los clientes a crear prototipos de IA generativa para resolver problemas comerciales. Cuando no está trabajando con clientes, le gusta jugar con sus hijos y cocinar.

Chris Pecora es científico de datos de IA generativa en Amazon Web Services. Le apasiona desarrollar productos y soluciones innovadores mientras se centra en la ciencia centrada en el cliente. Cuando no está realizando experimentos y manteniéndose al día con los últimos avances en GenAI, le gusta pasar tiempo con sus hijos.

[ad_2]

Deja una respuesta

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


Subir