Uso de Azure LLM Functions con Elasticsearch para experiencias de consulta más inteligentes

Explora un ejemplo de aplicación de búsqueda inmobiliaria que emplea Azure Gen AI LLM Functions con Elasticsearch para ofrecer resultados híbridos flexibles. Consulta paso a paso cómo configurar y ejecutar la aplicación de ejemplo en GitHub Codespaces.

Elasticsearch tiene integraciones nativas con las herramientas y proveedores líderes en la industria de IA generativa. Echa un vistazo a nuestros webinars sobre cómo ir más allá de los conceptos básicos de RAG o crear apps listas para la producción con la base de datos vectorial de Elastic.

Para crear las mejores soluciones de búsqueda para tu caso de uso, inicia una prueba gratuita en el cloud o prueba Elastic en tu máquina local ahora mismo.

Precisión. Cuando importa, importa mucho. Cuando buscas algo específico, la precisión es muy importante. Sin embargo, a veces una consulta demasiado precisa no devuelve resultados, por lo que es ventajoso tener la flexibilidad de ampliar el ámbito de una consulta para encontrar datos adicionales potencialmente relevantes.

En esta entrada de blog se explica el uso de Elasticsearch y Azure Open AI para crear una aplicación de ejemplo que demuestre cómo encontrar resultados exactos al buscar propiedades inmobiliarias muy específicas y, al mismo tiempo, proporcionar resultados relevantes cuando una coincidencia específica no está disponible. Te guiaremos por todos los pasos necesarios para crear un índice de Elasticsearch junto con una plantilla de búsqueda. Luego, expondremos todo el proceso de cómo crear una aplicación que use Azure OpenAI para tomar consultas de usuarios y transformarlas en consultas de plantillas de búsqueda de Elasticsearch que pueden producir resultados increíblemente personalizados.

Aquí hay una lista de todos los recursos que usaremos para crear nuestra aplicación de búsqueda de bienes raíces de ejemplo:

  • Índice y plantilla de búsqueda de Elasticsearch
  • Azure OpenAI
  • Azure Maps API
  • Codespaces Jupyter Notebook
  • Núcleo semántico
  • Aplicación de C# con front-end de Blazor

Flujo de trabajo de consulta inteligente

Este flujo de trabajo combina LLM, herramientas de LLM y búsqueda para transformar las consultas en lenguaje natural en resultados de búsqueda estructurados y relevantes:

  • LLM (Large Language Model): interpreta consultas complejas de usuarios y organiza herramientas para extraer la intención de búsqueda y enriquecer el contexto.
  • Herramientas LLM : cada herramienta LLM es un programa de C # que creamos para esta publicación. Hay tres herramientas:
    • Herramienta de extracción de parámetros: extrae atributos clave como dormitorios, baños, características y precio de la consulta.
    • Herramienta GeoCode: convierte los nombres de ubicación en latitud/longitud para el filtrado espacial.
    • Herramienta de búsqueda: completa una plantilla de búsqueda de Elasticsearch con parámetros de consulta y ejecuta una búsqueda. Búsqueda híbrida : ejecuta la búsqueda híbrida (texto completo + vector denso) con inferencia de ML integrada. Este enfoque por capas garantiza experiencias de consulta más inteligentes y sensibles al contexto para el usuario final.

Arquitectura de la aplicación

Este es un diagrama de arquitectura del sistema de la aplicación de ejemplo. Usaremos un bloc de notas de Codespaces Jupyter para interactuar con Elastic Cloud.

Prerrequisitos

[@portabletext/react] Unknown block type "block", specify a component for it in the `components.types` prop

Clonación de repositorio de aplicación de ejemplo en Codespaces

Comience clonando el código de la aplicación de ejemplo. Puede hacerlo en GitHub Codespaces, que proporciona una manera de clonar y ejecutar aplicaciones. Haga clic en Nuevo codespace.

A continuación, seleccione el repositorio jwilliams-elastic/msbuild-intelligent-query-demo en la lista desplegable Repositorio y haga clic en Crear codespace.

Crear .env archivo

Usaremos un cuaderno de Python Jupyter para acceder e interactuar con Elastic Cloud y lo hace empleando los valores de configuración que se almacenan en un archivo de configuración. El archivo de configuración del Notebook debe tener el nombre de archivo .env y lo crearás ahora.

  1. En GitHub Codespaces, haga clic en el botón Nuevo archivo y agregue un archivo denominado .env
  2. Agregue el siguiente contenido al .env recién creado archivo

Como puede ver, tenemos un par de valores faltantes, ELASTIC_URL y ELASTIC_API_KEY, que deben agregar al .env archivo. Obtengámoslos ahora creando un proyecto sin servidor de Elasticsearch para que sirva como backend que impulsará la funcionalidad de búsqueda para nuestra aplicación de ejemplo.

Crear un proyecto de Elastic Serverless

  1. Vaya a cloud.elastic.co y haga clic en Crear nuevo proyecto sin servidor
  2. Haz clic en Siguiente para la solución de Elasticsearch
  3. Seleccione Optimizado para vectores
  4. Establezca el proveedor de nube para que sea Azure
  5. Haga clic en Crear proyecto sin servidor
  6. Haga clic en Primeros pasos en el menú de navegación principal y desplazar hacia abajo para copiar los detalles de la conexión
  7. Haga clic en el botón Copiar para copiar el endpoint de Elasticsearch desde los detalles de la conexión
  8. Actualizar .env para establecer el ELASTIC_URL para que sea el endpoint de Elasticsearchcopiado

Crear una clave de API elástica

  1. Abra la página Introducción a Elasticsearch, haga clic en Nuevo en la sección Agregar una clave de API
  2. Ingrese un nombrede clave
  3. Haga clic en Crear clave de API
  4. Haga clic en el botón Copiar para copiar el valor de la clave de API
  5. De vuelta en Codespaces, donde tenemos el .env archivo abierto para editar, pegue el valor copiado para establecer el ELASTIC_API_KEY

Abra el cuaderno de Codespaces e instale las dependencias de la biblioteca

En el explorador de archivos, seleccione el archivo VectorDBSetup.ipynb para abrir el cuaderno. Después de que se cargue el Notebook, busque la sección del Notebook titulada Instalar bibliotecas. Haga clic en el botón de reproducción de la sección.

Si es la primera vez que ejecuta un cuaderno en GitHub Codespaces, se le pedirá que seleccione un kernel de Codespaces y configure el entorno de Python.

Definición de importaciones y carga de variables de entorno mediante Codespaces Notebook

Vaya a la siguiente sección del Notebook titulada Definir importaciones y cargar variables de entorno. Haga clic en el botón de reproducción de la sección.

Este código importa las bibliotecas de Python usadas por el Notebook y carga las variables de entorno del archivo .env que creaste anteriormente.

Creación de un punto de enlace de inferencia de Elastic ML mediante Codespaces Notebook

Vaya a la siguiente sección del cuaderno titulada Crear punto de conexión de inferencia de ML. Haga clic en el botón de reproducción de la sección.

Esto creará un nuevo punto final de inferencia de ML en el proyecto de Elasticsearch que usaremos para generar incrustaciones de texto a partir de nuestros datos. Las incrustaciones de texto son representaciones vectoriales de texto que se almacenarán en Elasticsearch para potenciar la búsqueda semántica.

Creación de un índice de Elasticsearch con Codespaces Notebook

Ve a la siguiente sección de Notebook titulada Crear índice de Elasticsearch. Haga clic en el botón de reproducción de la sección.

Esto creará el índice de Elasticsearch que almacenará nuestros datos de ejemplo y cualquier dato vectorial asociado generado a través del punto de enlace de inferencia de ML.

Crear una plantilla de búsqueda de Elasticsearch con Codespaces Notebook

Continúe con la siguiente sección de Notebook titulada Plantilla de búsqueda. Haga clic en el botón de reproducción de la sección.

Esto crea una plantilla de búsqueda, que es lo que nuestra aplicación de ejemplo usará como plantilla rellenada con las palabras analizadas de la consulta de búsqueda de un usuario. Esto nos permite configurar y controlar qué tan específicos somos al consultar datos en el índice de Elasticsearch.

Ingesta de datos en el índice de Elasticsearch mediante Codespaces Notebook

Vaya a la siguiente sección del Notebook titulada Ingesta de datos de propiedades. Haga clic en el botón de ejecución de sección.

Al ejecutar esta sección de código, se cargarán de forma masiva los datos de ejemplo contenidos en el archivo properties.jsonl . Luego de un par de minutos, debería ver una confirmación de que el proceso se completó correctamente. Puedes confirmar que el índice contiene el registro esperado yendo a la sección Gestión de índices en Elastic Cloud.

Creación de appsetting.json para configurar la aplicación de C#

Con nuestro índice de Elasticsearch creado y poblado con datos, ahora estamos listos para configurar la aplicación de ejemplo para que funcione con Elastic y Azure Cloud. La aplicación de ejemplo de C# usa un archivo denominado appsettings.json para almacenar y cargar su información de acceso, como claves API. Creará el archivo appsettings.json ahora usando el editor en Codespaces.

1. Cree appsettings.json en la carpeta HomeFinderApp

2. Pegue el siguiente código en el archivo appsettings.json

3. Busca los valores de Url y ApiKey en la sección ElasticSettings . Establézcalos para que sean los mismos valores que estableció en el archivo .env en un paso anterior.

Creación del servicio Azure OpenAI

Nuestra aplicación de ejemplo usará Azure OpenAI para analizar la consulta del usuario de la aplicación y, a continuación, enviará una solicitud a Elasticsearch rellenando la plantilla de búsqueda para intentar comunicar de forma flexible lo que busca el usuario.

  1. Abra una nueva pestaña del navegador y vaya a AI Foundry | Azure OpenAI en Azure Portal. Haga clic en +Crear
  2. En el formulario de creación, elija un grupo de recursos.
  3. Ingrese un nombre
  4. Elija un plan de tarifa
  5. Haga clic en Siguiente
  6. En la pestaña Red , haga clic en Siguiente
  7. En la pestaña Etiquetas , haga clic en Siguiente
  8. En la pestaña Revisar y enviar , haga clic en Crear
  9. Una vez completada la creación, haga clic en Ir al recurso
  10. Seleccione Claves y punto de conexión en el menú de navegación izquierdo
  11. Copie el punto de conexión y péguelo en el archivo appsettings.json que creó en la pestaña del navegador que tiene abierto el editor de Codespaces.
  12. A continuación, vuelva a la pestaña del explorador que contiene la clave de Azure OpenAI y la página del punto de conexión. Haga clic en el botón de copia de la clave 1 y pegue el valor copiado en el archivo appsettings.json , de nuevo en la pestaña del navegador que tiene abierto el editor de Codespaces.

Adición de la implementación del modelo gpt-4o al servicio Azure Open AI

Genial, ahora tenemos un servicio Azure OpenAI en ejecución, pero aún necesita una implementación de modelo para brindarnos las funcionalidades de LLM que requiere nuestra aplicación de ejemplo. Hay un montón de modelos para elegir. Implementemos gpt-4o ya que ya está especificado en el archivo appsettings.json que creó.

  1. Vaya a Azure AI Foundry y haga clic en Crear una implementación
  2. Busque gpt-4o y selecciónelo de los resultados
  3. Haga clic en Confirmar para seleccionarlo
  4. Haga clic en Implementar para implementar el modelo

Una vez que implementó correctamente el modelo gpt-4o, puede seleccionar Implementaciones en el menú de navegación izquierdo y confirmar que la implementación de gpt-4o aparece con un estado correcto.

Creación de una cuenta de Azure Maps

Queremos que los usuarios de nuestra aplicación de ejemplo puedan buscar propiedades inmobiliarias en áreas específicas, pero sin tener que ser demasiado específicos. Si alguien quiere buscar una propiedad cerca del mercado de agricultores local, Azure Maps es un servicio que OpenAI LLM puede usar para obtener coordenadas de latitud y longitud para el mercado. Luego, las coordenadas se pueden incluir en las solicitudes basadas en plantillas de búsqueda enviadas a Elasticsearch para consultas de usuarios que incluyen ubicaciones específicas y consideraciones de distancia geográfica.

  1. Haga clic en Crear en cuentas de Azure Maps
  2. Seleccionar un grupo de recursos
  3. Ingrese un nombre
  4. Aceptar la declaración de licencia y privacidad
  5. Haz clic en Revisar y crear
  6. Haga clic en Crear
  7. Una vez completada la creación de la cuenta, haga clic en Ir al recurso
  8. Haga clic en Autenticación en el menú de navegación izquierdo
  9. Copie el valor de la clave principal y péguelo para que sea el valor de ApiKey en la sección AzureMapsSettings del archivo appsettings.json , de nuevo en la pestaña del explorador que contiene el editor de Codespaces

Prueba la aplicación de ejemplo

Ahora viene la parte divertida. Es hora de ejecutar la aplicación de ejemplo. Tenemos todos los detalles de configuración en su lugar junto con los recursos de Elastic Cloud y Azure Cloud que necesitamos para impulsar la aplicación.

1. Abra una ventana de Terminal en el editor de Codespaces.

2. Emplee el siguiente comando para cambiar el directorio activo para que sea la carpeta de la aplicación de ejemplo.

3. Use el siguiente comando dotnet para ejecutar la aplicación.

4. Haga clic en el botón Abrir en el navegador cuando aparezca.

5. Pruebe la búsqueda predeterminada y luego pruebe algunas de sus propias búsquedas personalizadas. Si desea ver más detalles sobre lo que se realiza en el backend para generar los resultados de búsqueda, puede hacer clic en el enlace Mostrar junto a Invocaciones de herramientas.

Sobresueldo: Si realmente desea probar GPT-4o, intente la siguiente búsqueda: Estoy buscando una propiedad cerca de disney world fl con 30+ habitaciones y 20+ baños y una piscina y garaje y cerca de la playa por menos de 200K. Esta consulta devolverá resultados luego de varias invocaciones de herramientas de búsqueda.

Elastic es tu solución para la IA de búsqueda

La aplicación en ejecución es un ejemplo de búsqueda guiada de Gen AI LLM empleando Elasticsearch a través de plantillas de búsqueda como fuente de datos de base. Sentir libre de experimentar y personalizar la aplicación de ejemplo para crear una experiencia de búsqueda que sea precisa pero flexible, para ayudar a sus usuarios a encontrar lo que buscan.

Gracias por leer. Prueba Elastic Cloud .

Contenido relacionado

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo