Los asistentes de IA generativa agente representan un avance significativo en la inteligencia artificial, presentando sistemas dinámicos impulsados por grandes modelos de lenguaje (LLM) que entablan un diálogo abierto y abordan tareas complejas. A diferencia de los chatbots básicos, estas implementaciones poseen una amplia inteligencia, mantienen conversaciones de varios pasos mientras se adaptan a las necesidades del usuario y ejecutan las tareas de backend necesarias.
Estos sistemas recuperan datos específicos de la empresa en tiempo real a través de llamadas API y búsquedas en bases de datos, incorporando esta información en respuestas generadas por LLM o proporcionándolas junto con ellas utilizando estándares predefinidos. Esta combinación de capacidades LLM con recuperación dinámica de datos se conoce como generación aumentada de recuperación (RAG).
Por ejemplo, un asistente administrativo que se ocupa de la reserva de un hotel consultaría primero una base de datos para encontrar propiedades que coincidan con los requisitos específicos del huésped. Luego, el asistente realizaría llamadas API para recuperar información en tiempo real sobre la disponibilidad de habitaciones y las tarifas actuales. Estos datos recuperados se pueden manejar de dos maneras: el LLM puede procesarlos para generar una respuesta integral o se pueden mostrar junto con un resumen generado por el LLM. Ambos enfoques permiten a los huéspedes recibir información precisa y actual que se integra en su conversación continua con el asistente.
En esta publicación, mostramos cómo implementar un asistente agente de IA generativo que utiliza búsqueda semántica y basada en texto utilizando Amazon Bedrock, Amazon Bedrock AgentCore, Strands Agents y Amazon OpenSearch.
Enfoques de recuperación de información en sistemas RAG.
En términos generales, la recuperación de información que respalda las capacidades de RAG en implementaciones de IA generativa agente gira en torno a la consulta en tiempo real de las fuentes de datos de backend o la comunicación con una API. Luego, las respuestas se tienen en cuenta en los pasos posteriores realizados por la implementación. Desde una perspectiva de diseño e implementación de sistemas de alto nivel, este paso no es específico de las soluciones generativas basadas en IA: las bases de datos, las API y los sistemas que dependen de la integración con ellas existen desde hace mucho tiempo. Hay ciertos enfoques de recuperación de información que han surgido junto con las implementaciones de IA agente, en particular, las búsquedas de datos basadas en búsquedas semánticas. Recuperan datos basados en el significado de la frase de búsqueda en contraposición a la similitud léxica de patrones o palabras clave. Las incrustaciones de vectores se calculan previamente y se almacenan en bases de datos de vectores, lo que permite realizar cálculos de similitud eficientes en el momento de la consulta. El principio básico de la búsqueda de similitud de vectores (VSS) implica encontrar las coincidencias más cercanas entre estas representaciones numéricas utilizando métricas de distancia matemáticas como la similitud del coseno o la distancia euclidiana. Estas funciones matemáticas son particularmente eficientes cuando se buscan grandes corpus de datos porque las representaciones vectoriales se calculan previamente. En este proceso se utilizan habitualmente modelos bicodificadores. Codifican por separado la consulta y los documentos en vectores, lo que permite comparaciones de similitudes eficientes a escala sin necesidad de que el modelo procese pares de consulta y documento juntos. Cuando un usuario envía una consulta, el sistema la convierte en un vector y busca los vectores de contenido ubicados más cerca de ella en el espacio de alta dimensión. Esto significa que incluso si las palabras clave exactas no coinciden, la búsqueda puede encontrar resultados relevantes basados en la similitud semántica conceptual. Además, en situaciones en las que los términos de búsqueda están léxicamente pero no semánticamente cerca de las entradas del conjunto de datos, la búsqueda de similitud semántica “preferirá” entradas semánticamente similares.
Por ejemplo, dado el conjunto de datos vectorizado: [“materiales de construcción”, “suministros de plomería”, “resultado de multiplicación 2×2”], la cadena de búsqueda “tablero de madera 2×4” probablemente producirá “materiales de construcción” como el principal candidato coincidente. La combinación de la búsqueda semántica con agentes basados en LLM respalda la alineación del lenguaje natural en todos los componentes de recuperación de datos de backend y de cara al usuario de la solución. Los LLM procesan la entrada en lenguaje natural proporcionada por el usuario, mientras que las capacidades de búsqueda semántica permiten la recuperación de datos basada en la entrada en lenguaje natural formulada por los LLM dependiendo de la cadencia de comunicación entre el usuario final y el agente.
El desafío: cuando la búsqueda semántica por sí sola no es suficiente
Considere un escenario del mundo real: un cliente está buscando una propiedad hotelera y quiere encontrar “un hotel de lujo con vista al mar en Miami, Florida”. La búsqueda semántica sobresale en la comprensión de conceptos como “lujo” y “vistas al mar”, pero puede tener dificultades para lograr una coincidencia precisa de la ubicación. La búsqueda podría arrojar propiedades de lujo frente al mar muy relevantes basándose en similitudes semánticas, pero podrían estar en California, el Caribe o cualquier otro lugar con acceso al mar, no específicamente en Miami como se solicita. Esta limitación surge porque la búsqueda semántica prioriza la similitud conceptual sobre la coincidencia exacta de atributos. En los casos en los que los usuarios necesitan tanto comprensión semántica (lujo, vistas al mar) como filtrado preciso (Miami, Florida), confiar únicamente en la búsqueda semántica produce resultados subóptimos. Aquí es donde la búsqueda híbrida se vuelve esencial. Combina la comprensión semántica de las descripciones en lenguaje natural con la precisión del filtrado basado en texto en atributos estructurados como ubicación, fechas o metadatos específicos. Para abordar esto, presentamos un enfoque de búsqueda híbrido que realiza ambas cosas:
Búsqueda semántica para comprender descripciones en lenguaje natural y encontrar contenido semánticamente similar. Búsqueda basada en texto para facilitar la coincidencia precisa de atributos estructurados como ubicaciones, fechas o identificadores.
Cuando un usuario proporciona una frase de búsqueda, un LLM primero analiza la consulta para identificar atributos específicos (como la ubicación) y los asigna a valores de búsqueda (por ejemplo, "Norte de Michigan" → "MI"). Estos atributos extraídos luego se utilizan como filtros junto con la puntuación de similitud semántica, asegurando que los resultados sean conceptualmente relevantes y coincidan con precisión con los requisitos del usuario. Las siguientes tablas proporcionan una vista simplificada del flujo de búsqueda semántica con descripciones de hoteles en texto claro proporcionadas para el contexto:
Datos de la tienda de vectores:
hotel-1
Descripción: El hotel Artisan Loft se encuentra en la esquina de las calles Green y Randolph en el bullicioso Southwest Loop de la gran ciudad, ocupando un almacén de ladrillos de la década de 1920 cuidadosamente renovado que celebra la herencia industrial del vecindario. Los huéspedes se encuentran a solo unos pasos del famoso Restaurant Row, con aclamados restaurantes y boutiques de moda repartidas por las cuadras circundantes.
Descripción Vectorial: […]
Ubicación: Gran ciudad, EE. UU.
hotel-2
Descripción: Ubicado sobre un escarpado acantilado con vista a la espectacular costa de Big Sur, The Cypress Haven emerge del paisaje como si estuviera tallado en la tierra misma. Este santuario íntimo de 42 habitaciones se integra perfectamente en su entorno con jardines en la azotea, ventanales del piso al techo y materiales naturales que incluyen piedra local y secuoya recuperada. Cada espaciosa suite cuenta con una terraza privada suspendida sobre el Pacífico, donde los huéspedes pueden observar ballenas migratorias mientras se sumergen en bañeras de ofuro de cedro japonés.
Descripción Vectorial: […]
Ubicación: Beach City, EE. UU.
hotel-3
Descripción: Ubicado en un bosque de arces centenario a las afueras de Berkshires, Woodland Haven Lodge ofrece una escapada íntima donde el lujo se une a la simplicidad consciente. Esta finca reformada del siglo XIX cuenta con 28 habitaciones cuidadosamente decoradas repartidas en la casa principal y cuatro cabañas separadas, cada una con porches envolventes y ventanales que enmarcan los bosques circundantes.
Descripción Vectorial: […]
Ubicación: Ciudad tranquila, EE. UU.
hotel-4
Descripción: Ubicado en el corazón del bullicioso distrito del centro de Central City, el hotel Skyline Oasis se erige como un faro de lujo y modernidad. Esta torre de acero y vidrio de 45 pisos ofrece impresionantes vistas panorámicas del icónico horizonte de la ciudad y del cercano río Central. Con 500 habitaciones y suites elegantemente decoradas, el Skyline Oasis atiende tanto a viajeros de negocios como a turistas que buscan una experiencia urbana premium. El hotel cuenta con una piscina infinita en la azotea, un restaurante con estrella Michelin y un gimnasio de última generación. Su ubicación privilegiada sitúa a los huéspedes a poca distancia de las principales atracciones de Central City, incluido el Museo de Arte Moderno, la Ópera de Central City y el vibrante distrito Riverfront.
Descripción Vectorial: […]
Ubicación: Central City, Estados Unidos
Frase de búsqueda Buscando un hotel junto al mar Resultados de la búsqueda hotel-2
Ejemplo de búsqueda:
Frase de búsqueda: “Buscando un hotel junto al mar” Resultado de búsqueda semántica: hotel-2 (The Cypress Haven)
Ejemplo de búsqueda híbrida:
Frase de búsqueda: “Buscando un hotel con un buen restaurante en el centro de Central City” Resultado de búsqueda híbrido: hotel-4 (mejor coincidencia considerando tanto la relevancia semántica como la ubicación precisa)
Para obtener más detalles sobre las implementaciones de búsqueda híbrida, consulte la publicación del blog de búsqueda híbrida de Amazon Bedrock Knowledge Bases.
Presentamos una solución basada en agentes
Considere un escenario de búsqueda de hoteles donde los usuarios tienen diversas necesidades. Un usuario podría preguntar "búsqueme un hotel acogedor", lo que requiere una comprensión semántica de "acogedor". Otro podría solicitar "buscar hoteles en Miami", necesitando un filtrado de ubicación preciso. Un tercero podría querer “un hotel de lujo frente a la playa en Miami”, lo que requeriría ambos enfoques simultáneamente. Las implementaciones tradicionales de RAG con flujos de trabajo fijos no pueden adaptarse dinámicamente a estos requisitos variables. Nuestro escenario exige una lógica de búsqueda personalizada que pueda combinar múltiples fuentes de datos y adaptar dinámicamente las estrategias de recuperación en función de las características de la consulta. Un enfoque basado en agentes proporciona esta flexibilidad. El propio LLM determina la estrategia de búsqueda óptima analizando cada consulta y seleccionando las herramientas adecuadas.
¿Por qué agentes?
Los sistemas basados en agentes ofrecen una adaptabilidad superior porque el LLM determina la secuencia de acciones necesarias para resolver problemas, lo que permite un enrutamiento dinámico de decisiones, una selección inteligente de herramientas y un control de calidad mediante la autoevaluación. Las siguientes secciones muestran cómo implementar un asistente agente de IA generativo que utiliza búsqueda semántica y basada en texto mediante Amazon Bedrock, Amazon Bedrock AgentCore, Strands Agents y Amazon OpenSearch.
Descripción general de la arquitectura
La Figura 1 muestra una arquitectura moderna sin servidor que puede utilizar como asistente de búsqueda inteligente. Combina los modelos básicos de Amazon Bedrock, Amazon Bedrock AgentCore (para la orquestación de agentes) y Amazon OpenSearch Serverless (para capacidades de búsqueda híbrida).
Capa de interacción del cliente
Las aplicaciones cliente interactúan con el sistema a través de Amazon API Gateway, que proporciona un punto de entrada seguro y escalable para las solicitudes de los usuarios. Cuando un usuario hace una pregunta como "Búsqueme un hotel frente a la playa en el norte de Michigan", la solicitud fluye a través de API Gateway hacia Amazon Bedrock AgentCore.
Orquestación de agentes con Amazon Bedrock AgentCore
Amazon Bedrock AgentCore actúa como motor de orquestación, administra el ciclo de vida completo del agente y coordina las interacciones entre el usuario, el LLM y las herramientas disponibles. AgentCore implementa el bucle agente (un ciclo continuo de razonamiento, acción y observación) donde el agente:
Analiza la consulta del usuario utilizando los modelos básicos de Bedrock Decide qué herramientas invocar en función de los requisitos de la consulta Ejecuta la herramienta de búsqueda híbrida adecuada con parámetros extraídos Evalúa los resultados y determina si se necesitan acciones adicionales Responde al usuario con información sintetizada
A lo largo de este proceso, Amazon Bedrock Guardrails hace cumplir la seguridad del contenido y el cumplimiento de las políticas, manteniendo respuestas adecuadas.
Búsqueda híbrida con OpenSearch Serverless
La arquitectura integra Amazon OpenSearch Serverless como almacén de vectores y motor de búsqueda. OpenSearch almacena tanto incrustaciones vectorizadas (para comprensión semántica) como campos de texto estructurados (para filtrado preciso). Este enfoque respalda nuestro enfoque de búsqueda híbrida. Cuando el agente invoca la herramienta de búsqueda híbrida, OpenSearch ejecuta consultas que combinan:
Coincidencia semántica mediante similitud de vectores para la comprensión conceptual Filtrado basado en texto para restricciones precisas como ubicación o servicios
Monitoreo y seguridad
La arquitectura incluye Amazon CloudWatch para monitorear el rendimiento del sistema y los patrones de uso. AWS IAM administra el control de acceso y las políticas de seguridad en todos los componentes.
¿Por qué esta arquitectura?
Este diseño sin servidor proporciona varias ventajas clave:
Respuestas de baja latencia para interacciones conversacionales en tiempo real Escalado automático para manejar diferentes cargas de trabajo sin intervención manual Rentabilidad a través de precios de pago por uso sin infraestructura inactiva Listo para producción con funciones integradas de monitoreo, registro y seguridad
La combinación de las capacidades de orquestación de AgentCore con la funcionalidad de búsqueda híbrida de OpenSearch permite a nuestro asistente adaptar dinámicamente su estrategia de búsqueda en función de la intención del usuario, algo que los rígidos canales RAG no pueden lograr.
Figura 1
Nota de la figura: Los ejemplos de código y artefactos de arquitectura proporcionados en este documento están destinados únicamente a fines de demostración y referencia y no están listos para producción.
Implementación con Strands y Amazon Bedrock AgentCore
Para construir nuestro agente de búsqueda híbrido, utilizamos Strands, un marco de agente de IA de código abierto que simplifica el desarrollo de aplicaciones basadas en LLM con capacidades de llamada de herramientas. Strands nos permite definir nuestra función de búsqueda híbrida como una "herramienta" que el agente puede invocar de forma inteligente en función de las consultas de los usuarios. Para obtener detalles completos sobre la arquitectura y los patrones de Strands, consulte la documentación de Strands.
Así es como definimos nuestra herramienta de búsqueda híbrida:
from strands import tool @tool def hybrid_search(query_text: str, country: str = Ninguno, ciudad: str = Ninguno): """ Realiza una búsqueda híbrida que combina la comprensión semántica con el filtrado de ubicación. El agente llama a esto cuando los usuarios proporcionan preferencias descriptivas y ubicación. Args: query_text: Descripción en lenguaje natural de qué buscar país: Filtro de país opcional ciudad: Filtro de ciudad opcional """ # Generar incrustaciones para vector de búsqueda semántica = generate_embeddings(query_text) # Crea una consulta híbrida combinando similitud de vectores y filtros de texto query = { "bool": { "must": [ {"knn": {"embedding_field": {"vector": vector, "k": 10}}} ], "filter":[]} } # Agregar filtros de ubicación si se proporcionan if país: query["bool"]["filter"].append({"term": {"country": country}}) if city: query["bool"]["filter"].append({"term": {"city": city}}) # Ejecutar búsqueda en OpenSearch respuesta = opensearch_client.search(index="hotels", body=query) return format_results(response)
Una vez que hayamos definido nuestras herramientas, las integramos con Amazon Bedrock AgentCore para la implementación y la orquestación del tiempo de ejecución. Amazon Bedrock AgentCore le permite implementar y operar agentes altamente eficaces de forma segura a escala utilizando cualquier marco y modelo. Proporciona una infraestructura diseñada específicamente para escalar agentes y controles de forma segura para operar agentes confiables.
Para obtener información detallada sobre la integración de Strands con Amazon Bedrock AgentCore, consulte el tutorial de integración AgentCore-Strands.
Análisis profundo de la implementación de búsqueda híbrida
Un diferenciador clave de nuestra solución de asistente de IA es su capacidad de búsqueda híbrida avanzada. Si bien muchas implementaciones de RAG se basan únicamente en la búsqueda semántica, nuestra arquitectura va más allá. Hemos utilizado todo el potencial de OpenSearch, permitiendo búsquedas semánticas, basadas en texto e híbridas, todo dentro de una consulta única y eficiente. Las siguientes secciones exploran los detalles técnicos de esta implementación.
La doble implementación
Nuestra implementación de búsqueda híbrida se basa en dos componentes fundamentales: almacenamiento de datos optimizado y manejo de consultas versátil.
1. Almacenamiento de datos optimizado
El enfoque del almacenamiento de datos es importante para una búsqueda híbrida eficiente.
Categorización de datos: categorizamos sistemáticamente nuestros datos en dos tipos principales: Candidatos de búsqueda semántica: esto incluye descripciones detalladas, contextos y explicaciones: contenido que se beneficia al comprender el significado más allá de las palabras clave. Candidatos de búsqueda de texto: esto abarca metadatos, identificadores de productos, fechas y otros campos estructurados. Incrustación de vectores: para nuestros datos semánticos, utilizamos los modelos de incrustación de AWS Bedrock. Estos transforman el texto en vectores de alta dimensión que capturan el significado semántico de manera efectiva. Optimización de datos de texto: los datos de texto se almacenan en su formato original, optimizado para consultas tradicionales rápidas. Estructura de índice unificada: nuestro índice OpenSearch está diseñado para admitir incrustaciones de vectores y campos de texto simultáneamente, lo que permite capacidades de consulta flexibles.
2. Funcionalidad de búsqueda versátil
Aprovechando nuestro almacenamiento de datos optimizado, hemos desarrollado una función de búsqueda integral que nuestro agente de IA puede utilizar de manera efectiva:
Tipos de búsqueda adaptativa: Nuestra función de búsqueda está diseñada para realizar búsquedas semánticas, de texto o híbridas según lo requiera el agente. Implementación de búsqueda semántica: para consultas centradas en el significado, generamos incorporaciones de consultas utilizando Amazon Bedrock y realizamos una búsqueda k-NN (k-vecinos más cercanos) en el espacio vectorial. Capacidades de búsqueda de texto: cuando es necesaria una coincidencia precisa, utilizamos las sólidas funcionalidades de consulta de texto de OpenSearch, incluidas las opciones de coincidencia exacta y aproximada. Ejecución de búsqueda híbrida: aquí es donde combinamos la similitud de vectores con la coincidencia de texto en una consulta unificada. Utilizando la consulta bool de OpenSearch, podemos ajustar el equilibrio entre la relevancia semántica y del texto según sea necesario. Integración de resultados: independientemente del tipo de búsqueda, nuestro sistema consolida y clasifica los resultados según la relevancia general, combinando la comprensión semántica con una coincidencia de texto precisa.
Pseudocódigo de referencia para la implementación de búsqueda híbrida:
def hybrid_search(query_text, country, city, search_type="hybrid"): """ Búsqueda híbrida que combina búsqueda semántica y basada en texto con filtrado de ubicación """ # 1. Generar incrustaciones para búsqueda semántica if search_type in ["semantic", "hybrid"]: vector = generate_embeddings(query_text) # 2. Cree una consulta de búsqueda basada en el tipo if search_type == "semantic": query = build_semantic_query(vector) elif search_type == "text": consulta = build_text_query(país, ciudad) else: # consulta de búsqueda híbrida = build_hybrid_query(vector, país, ciudad) # 3. Ejecutar respuesta de búsqueda = search_opensearch(query) # 4. Procesar y devolver resultados return format_results(respuesta) # Ejemplo de uso: resultados = hybrid_search( query_text="hotel de lujo", país="Estados Unidos", ciudad="Miami" )
OpenSearch admite múltiples tipos de consultas, incluida la búsqueda basada en texto, la búsqueda vectorial (knn) y enfoques híbridos que combinan ambos métodos. Para obtener información detallada sobre los tipos de consultas disponibles y sus implementaciones, consulte la documentación de consultas de OpenSearch.
Importancia del enfoque híbrido
El enfoque híbrido mejora significativamente las capacidades de nuestro asistente de IA:
Admite la recuperación de información de alta precisión, considerando tanto el contexto como el contenido. Se adapta a varios tipos de consultas, manteniendo un rendimiento constante. Proporciona respuestas más relevantes y completas a las consultas de los usuarios.
En el ámbito de la búsqueda impulsada por IA, nuestro enfoque híbrido representa un avance significativo. Ofrece un nivel de flexibilidad y precisión que mejora sustancialmente la capacidad de nuestro asistente para recuperar y procesar información de manera efectiva.
Casos de uso de la vida real
Algunos de los casos de uso en los que se puede aplicar la búsqueda híbrida incluyen cosas como:
Bienes raíces y propiedades: búsqueda de propiedades que combina la comprensión de las preferencias de estilo de vida (“familiar”) con la ubicación exacta y el filtrado de servicios. Servicios legales y profesionales: investigación de jurisprudencia que combina similitud jurídica conceptual con jurisdicción precisa y filtrado de fechas para una investigación jurídica integral. Atención sanitaria y médica: los equipos de atención preguntan a “pacientes con enfermedades crónicas que requieren protocolos de tratamiento similares a los de John Doe”; combina la comprensión semántica de la complejidad del tratamiento con una coincidencia exacta de los registros médicos. Medios y entretenimiento: sistema de descubrimiento de contenido que combina el filtrado exacto de género con la comprensión semántica de la trama. Comercio electrónico y venta al por menor: descubrimiento de productos en lenguaje natural con precisión de filtro: “zapatos cómodos de invierno” encuentra coincidencias semánticas mientras aplica filtros exactos de tamaño, precio o marca.
Estos casos de uso demuestran cómo la búsqueda híbrida cierra la brecha entre la comprensión del lenguaje natural y el filtrado de datos preciso, permitiendo una recuperación de información más intuitiva y precisa.
Conclusión
La integración de Amazon Bedrock, Amazon Bedrock AgentCore, Strands Agents y Amazon OpenSearch Serverless representa un avance significativo en la creación de aplicaciones de búsqueda inteligentes que combinan el poder de los LLM con técnicas sofisticadas de recuperación de información. Esta arquitectura combina capacidades de búsqueda semántica, basada en texto e híbrida para ofrecer resultados más precisos y contextualmente relevantes que los enfoques tradicionales. Al implementar un sistema basado en agentes que utiliza Amazon Bedrock AgentCore, administración de estado y abstracciones de herramientas Strands, los desarrolladores pueden crear asistentes de IA dinámicos y conversacionales que determinan de manera inteligente las estrategias de búsqueda más apropiadas en función de las consultas de los usuarios. El enfoque de búsqueda híbrida, que combina la similitud de vectores con una coincidencia de texto precisa, ofrece flexibilidad y precisión en la recuperación de información, lo que permite a los sistemas de inteligencia artificial comprender mejor la intención del usuario y brindar respuestas más completas. A medida que las organizaciones continúan creando soluciones de IA, esta arquitectura proporciona una base segura y escalable que utiliza todo el potencial de los servicios de AWS y al mismo tiempo mantiene la adaptabilidad necesaria para aplicaciones complejas del mundo real.