Blog GenAI AI/ML Azure Azure AI Search

Fundamentos de Azure AI Search: Recuperación híbrida y agentiva en Azure Foundry

Conceptos clave de Azure AI Search en Foundry

Introducción a Azure AI Search en Foundry

Azure AI Search, parte integral de Azure Foundry, representa una evolución significativa en las capacidades de búsqueda y recuperación de información. Este servicio combina recuperación híbrida (keyword/vector) con capacidades agentivas, permitiendo una interacción más inteligente y dinámica con los datos.

La transición desde Azure Cognitive Search hacia Azure AI Search en octubre de 2023 marcó un cambio estratégico, priorizando la integración de inteligencia artificial avanzada y modelos generativos en los flujos de búsqueda.


Recuperación híbrida: Una combinación de fuerza bruta y semántica

La recuperación híbrida en Azure AI Search utiliza dos enfoques principales:

  1. Búsqueda por palabras clave: Basada en coincidencias exactas dentro del índice.
  2. Búsqueda vectorial: Utiliza embeddings semánticos para encontrar resultados relacionados contextualmente.

El sistema decide automáticamente qué enfoque usar o combina ambos dependiendo de las características del índice y la consulta del usuario.

Configuración básica de un índice híbrido

Para configurar un índice híbrido en Azure AI Search, primero necesitas definir un esquema de índice que soporte tanto datos estructurados como embeddings vectoriales. A continuación, se muestra un ejemplo en Python utilizando el SDK de Azure:

from azure.search.documents.indexes.models import (
    SearchIndex, SearchField, SearchFieldDataType, SimpleField, VectorField
)
from azure.search.documents.indexes import SearchIndexClient
from azure.identity import DefaultAzureCredential

# Autenticación
endpoint = "https://<tu-servicio>.search.windows.net"
credential = DefaultAzureCredential()
client = SearchIndexClient(endpoint=endpoint, credential=credential)

# Definición del índice
index_name = "hybrid-index"
fields = [
    SimpleField(name="id", type=SearchFieldDataType.String, key=True),
    SimpleField(name="title", type=SearchFieldDataType.String),
    SimpleField(name="content", type=SearchFieldDataType.String),
    VectorField(name="content_vector", dimensions=768, vector_search_configuration="default")
]

index = SearchIndex(name=index_name, fields=fields)

# Creación del índice
client.create_index(index)
print(f"Índice '{index_name}' creado exitosamente.")

Note: El campo content_vector está configurado para admitir búsquedas vectoriales. Asegúrate de que los embeddings se generen previamente utilizando un modelo adecuado, como Azure OpenAI.


Recuperación agentiva: Decisiones inteligentes en tiempo real

La recuperación agentiva extiende la funcionalidad híbrida al incorporar lógica dinámica que ajusta las consultas en función de la intención del usuario y el estado del índice. Esto es especialmente útil en escenarios donde los datos son heterogéneos o los índices cambian frecuentemente.

Flujo básico de recuperación agentiva

El flujo de recuperación agentiva se puede implementar utilizando pipelines en Azure Foundry. Un ejemplo simplificado sería:

  1. Analizar la consulta del usuario.
  2. Determinar el mejor enfoque (keyword, vectorial o híbrido).
  3. Realizar la búsqueda y sintetizar los resultados.

Ejemplo práctico: Implementación de un pipeline agentivo

from azure.search.documents import SearchClient
from azure.ai.textanalytics import TextAnalyticsClient
from azure.identity import DefaultAzureCredential

# Configuración
search_endpoint = "https://<tu-servicio>.search.windows.net"
text_analytics_endpoint = "https://<tu-servicio-text-analytics>.cognitiveservices.azure.com"
credential = DefaultAzureCredential()

search_client = SearchClient(endpoint=search_endpoint, index_name="hybrid-index", credential=credential)
text_analytics_client = TextAnalyticsClient(endpoint=text_analytics_endpoint, credential=credential)

def agentic_search(query):
    # Analizar la intención de la consulta
    response = text_analytics_client.analyze_sentiment(documents=[query])
    sentiment = response[0].sentiment

    if sentiment == "positive":
        # Recuperación vectorial
        results = search_client.search(search_text=None, vector=query, vector_fields=["content_vector"])
    else:
        # Recuperación por palabras clave
        results = search_client.search(search_text=query)

    # Procesar resultados
    return [result for result in results]

query = "¿Cómo configurar un índice híbrido en Azure AI Search?"
results = agentic_search(query)
for result in results:
    print(result["title"])

Warning: La recuperación agentiva depende de servicios adicionales como Azure Text Analytics para el análisis de intención. Asegúrate de configurar correctamente los permisos y endpoints.


Validación de índices tras cambios estructurales

Cuando un índice en Azure AI Search se actualiza, es fundamental revalidar su configuración y datos para garantizar que las búsquedas sigan siendo precisas y eficientes.

Proceso de revalidación

  1. Reindexación: Inserta nuevamente los datos en el índice para reflejar los cambios estructurales.
  2. Pruebas de consulta: Ejecuta consultas representativas para verificar que los resultados sean consistentes.
  3. Monitoreo de métricas: Utiliza Azure Monitor para identificar posibles problemas de rendimiento.

Ejemplo: Reindexación tras cambios

from azure.search.documents import IndexDocumentsBatch, SearchClient

# Datos actualizados
documents = [
    {"id": "1", "title": "Nuevo título", "content": "Contenido actualizado", "content_vector": [0.1, 0.2, 0.3]},
    {"id": "2", "title": "Otro título", "content": "Más contenido", "content_vector": [0.4, 0.5, 0.6]}
]

# Reindexación
batch = IndexDocumentsBatch(actions=[{"@search.action": "upload", **doc} for doc in documents])
search_client = SearchClient(endpoint=search_endpoint, index_name="hybrid-index", credential=credential)
search_client.index_documents(batch)
print("Reindexación completada.")

Note: La reindexación puede afectar el rendimiento temporalmente. Realízala en horarios de baja actividad.


Conclusión

Azure AI Search en Foundry redefine cómo interactuamos con datos, combinando recuperación híbrida y agentiva para ofrecer resultados más relevantes y dinámicos. La capacidad de adaptarse automáticamente a las consultas y cambios en los índices lo convierte en una herramienta esencial para arquitecturas modernas basadas en inteligencia artificial.

Para profundizar en temas relacionados, revisa los siguientes artículos:

Mantente atento a futuras actualizaciones en Azurebrains para más ejemplos y casos de uso.