<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Jeff Vestal - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Jeff Vestal - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/es/search-labs/author/jeff-vestal</link>
    </image>
    <link>https://www.elastic.co/es/search-labs/author/jeff-vestal</link>
    <atom:link href="https://www.elastic.co/es/search-labs/rss/author/jeff-vestal.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[es]]></language>
    <lastBuildDate>Mon, 28 Sep 2026 10:21:28 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Rapidez vs. precisión: medición de recuperación de la búsqueda vectorial cuantificada]]></title>
    <description><![CDATA[Explicación de cómo medir la recuperación para la búsqueda vectorial en Elasticsearch con una configuración mínima.]]></description>
    <content:encoded><![CDATA[<p>Todos quieren que la búsqueda de vectores sea instantánea. Pero los vectores de alta dimensión son pesados. Un único vector float-32 de 1024 dimensiones ocupa una memoria significativa, y compararlo con millones de otros es computacionalmente costoso.</p><p>Para resolver esto, los motores de búsqueda como Elasticsearch usan dos estrategias principales de optimización:</p><ol><li><p><strong>Búsqueda aproximada (mundo pequeño jerárquico navegable [HNSW]):</strong> en lugar de examinar cada documento, construimos un grafo de navegación para saltar rápidamente al vecindario probable de la respuesta.</p></li><li><p><strong>Cuantización:</strong> Comprimimos los vectores (por ejemplo, de flotantes de 32 bits a enteros de 8 bits o incluso valores binarios de 1 bit) para reducir el uso de memoria y acelerar los cálculos.</p></li></ol><p>Pero la optimización a menudo tiene un precio: <strong>la precisión</strong>.</p><p>El miedo es válido: "Si comprimo mis datos y tomo atajos durante la búsqueda, ¿me perderé los mejores resultados?". "¿Esta optimización degrada la relevancia de mi motor de búsqueda?".</p><p>Para demostrar que la cuantificación de Elastic no degrada los resultados, construimos un marco de pruebas repetible mediante el conjunto de datos de <a href="https://huggingface.co/datasets/fancyzhx/dbpedia_14"><strong>DBPedia-14</strong></a><a href="https://huggingface.co/datasets/fancyzhx/dbpedia_14"></a> para calcular exactamente cuánta precisión intercambiamos (específicamente, la <strong>recuperación)</strong> por velocidad al usar las optimizaciones predeterminadas en Elasticsearch.</p><p>Resumen: es probable que sea mucho menos de lo que piensas. Echa un vistazo al <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/fast_vs_accurate_measuring_the_recall_of_quantized_vector_search/vector_recall_notebook.ipynb">cuaderno aquí</a> e inténtalo por tu cuenta</p><h2><strong>Las definiciones (para los no expertos)</strong></h2><p>Antes de ver el código, establezcamos algunos términos.</p><ul><li><p><strong>Relevancia versus recuperación:</strong> <strong>La relevancia</strong> es subjetiva (¿encontré cosas buenas?). <strong>La recuperación</strong> es matemática. Si hay 10 documentos en la base de datos que son las <em>coincidencias matemáticas perfectas</em> para tu consulta, y el motor de búsqueda encuentra nueve de ellos, tu recuperación es del 90 % (o 0,9).</p></li><li><p><strong>Búsqueda exacta (plana):</strong> A veces denominado el método de "fuerza bruta". El motor de búsqueda analiza cada uno de los documentos de un índice y calcula la distancia.</p><ul><li><p><em>Pros:</em> 100 % de recuperación perfecta.</p></li><li><p><em>Contras:</em> computacionalmente caro y lento en escala.</p></li></ul></li><li><p><strong>Búsqueda aproximada (HNSW):</strong> El método del "atajo". El motor de búsqueda crea un grafo <a href="https://www.elastic.co/search-labs/blog/hnsw-graph">HNSW</a>. Recorre el grafo para encontrar a los vecinos más cercanos.</p><ul><li><p><em>Ventajas:</em> extremadamente rápido y escalable.</p></li><li><p><em>Desventajas:</em> podrías perderte algún vecino si el recorrido del grafo se detiene demasiado pronto.</p></li></ul></li></ul><h2><strong>El experimento: exactitud versus aproximación</strong></h2><p>Para probar la recuperación, usamos el conjunto de datos <strong>DBPedia-14</strong>, un gran set de datos de títulos y resúmenes de 14 clases de ontología que normalmente se utilizan para entrenar y evaluar modelos de categorización de texto. En concreto, nos centraremos en la categoría de "Cine". Queríamos comparar los ajustes de producción optimizados con una verdad de base matemáticamente perfecta.</p><p>Para este experimento, utilizamos el <a href="https://www.elastic.co/search-labs/blog/jina-embeddings-v5-text">modelo jina-embeddings-v5-text-small</a>, un modelo multilingüe de última generación que lidera los estándares de la industria para la representación de texto. Elegimos este modelo porque define el estándar actual para embeddings de alto rendimiento. Al combinar la precisión de élite de Jina v5 con la cuantización nativa de Elasticsearch, podemos demostrar una arquitectura de búsqueda que es tanto computacionalmente eficiente como intransigente en la calidad de la recuperación.</p><p>Configuramos un índice con un mapeo doble. Ingerimos el mismo texto en dos campos diferentes de forma simultánea:</p><ol><li><p><strong><code>content.raw</code></strong>con el tipo: <code>flat</code>. Esto obliga a Elasticsearch a realizar un escaneo por fuerza bruta de los vectores Float32 completos. Esto devuelve resultados de coincidencia exacta y se utilizará para nuestra línea de base.</p></li><li><p><strong><code>content</code></strong>con tipo <code>semantic_text</code>. Con valores predeterminados que utilizan HNSW + la mejor cuantificación binaria (BBQ). Esta es la configuración de producción estándar y optimizada para una coincidencia aproximada.</p></li></ol><h3><strong>La prueba de recall@10</strong></h3><p>Para nuestra métrica, usamos Recall@10.</p><p>Elegimos 50 películas aleatorias y ejecutamos la misma consulta en ambos campos.</p><ul><li><p>Si la búsqueda <strong>exacta (plana)</strong> indica que los 10 vecinos más cercanos son los ID [1, 2, 3... 10].</p></li><li><p>Y la búsqueda <strong>aproximada (HNSW)</strong> devuelve los ID [1, 2, 3... 9, 99].</p></li><li><p>Encontramos nueve de los 10 principales correctamente. La puntuación es <strong>0,9</strong>.</p></li></ul><p>Este es el mapeo que utilizamos:</p># The "Control Group": Forces exact brute-force scan
"raw": {
    "type": "semantic_text",
    "inference_id": ".jina-embeddings-v5-text-small",
    "index_options": {
        "dense_vector": {
            "type": "flat"
        }
    }
}<p><strong>Los resultados: la "línea plana" del éxito</strong></p><p>Realizamos una prueba de escala, recargando el conjunto de datos completo y probando con tamaños de índice de entre 1000 y 40 000 documentos.</p><p>Esto es lo que sucedió con la puntuación de recuperación:</p><p>Documentos</p><p>Puntuación de recall@10</p><p>1000</p><p>1000 (100 %)</p><p>5000</p><p>0,998 (100 %)</p><p>10,000</p><p>0,992 (99,4 %)</p><p>20 000</p><p>0,999 (99,0 %)</p><p>40 000</p><p>0,992 (98,8 %)</p><p>Los resultados fueron increíblemente estables. Incluso a medida que escalábamos, la búsqueda aproximada coincidió con la búsqueda exacta de fuerza bruta <strong>&gt;99 % del tiempo</strong>.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8168a0a4946bade7/6a170e154a531b61b536a9eb/a4bfacb1d0cce6fdf6df0e1a9d4fc5d4007a66da-1999x1209.png" alt="Estabilidad de la búsqueda vectorial: recuperación versus tamaño del índice" /><h2><strong>¿Por qué funcionó tan bien?</strong></h2><p>Podrías esperar que comprimir vectores a valores binarios perjudicaría más la precisión. La razón por la que esto no ocurre está en la forma en que Elasticsearch gestiona la recuperación.</p><p>La mayoría de los modelos de incrustación actuales dan como salida vectores Float32, que son grandes. Para hacer la búsqueda eficiente, Elasticsearch emplea cuantización para vectores de alta dimensión. Concretamente, desde la versión 9.2, usa <a href="https://www.elastic.co/search-labs/blog/elasticsearch-9-1-bbq-acorn-vector-search">BBQ</a> por defecto.</p><p>BBQ usa un mecanismo de <strong>recalificación</strong>:</p><ol><li><p><strong>Recorrido:</strong> el motor de búsqueda utiliza los vectores comprimidos (cuantificados) para recorrer rápidamente el grafo HNSW. Como los vectores son pequeños, puedes realizar un sobremuestreo de manera eficiente, recopilando una lista más amplia de candidatos (por ejemplo, los 100 documentos más parecidos) sin que afecte al rendimiento.</p></li><li><p><strong>Recálculo de la puntuación:</strong> una vez que obtiene esos candidatos, recupera los valores de precisión completa solo para esos pocos documentos para calcular la clasificación final y precisa.</p></li></ol><p>Esto te brinda lo mejor de ambos mundos, la velocidad de la cuantización para el trabajo pesado y la precisión de los flotantes para la ordenación final.</p><h2><strong>¿Podemos hacerlo mejor?</strong></h2><p>Cabe destacar que los resultados que vemos aquí utilizan la configuración predeterminada y una muestra aleatoria de datos. Piensa en esto como un punto de partida de alto rendimiento. Aunque Jina v5 es una bestia, estas puntuaciones de recuperación no son una garantía de "talla única" para todos los conjuntos de datos. Cada conjunto de datos tiene sus propias peculiaridades, y aunque sin duda puedes seguir ajustando los parámetros para obtener un mejor rendimiento, siempre debes realizar pruebas con tus propios datos específicos para ver cuál es tu límite.</p><h2><strong>Conclusión</strong></h2><p>Esta es una prueba a muy pequeña escala. Pero el punto del ejercicio no es medir el modelo de incrustación o BBQ específicamente, sino demostrar cómo puedes medir fácilmente la recuperación de tu conjunto de datos con una configuración mínima.</p><p>Si quieres ejecutar esta prueba con tus propios datos, puedes consultar el <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/fast_vs_accurate_measuring_the_recall_of_quantized_vector_search/vector_recall_notebook.ipynb">cuaderno aquí</a> e intentarlo por tu cuenta.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/recall-vector-search-quantization</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/recall-vector-search-quantization</guid>
    <category><![CDATA[Base de datos vectorial]]></category>
    <dc:creator><![CDATA[Jeff Vestal]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt198c7085db96aa04/6a170e17cdacbfe88c7d2a86/09f03b9239d66c36763cdab3fafcdac207ff6d83-1280x720.png" length="0" type="image/png"/>
    <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Tu primer Agente Elastic: De una sola consulta a un chat impulsado por IA]]></title>
    <description><![CDATA[Aprende a usar el constructor de agentes de IA de Elastic para crear agentes especializados en IA. En este blog, vamos a crear un Agente de IA financiera.]]></description>
    <content:encoded><![CDATA[<p>Con el nuevo <a href="https://www.elastic.co/search-labs/blog/ai-agentic-workflows-elastic-ai-agent-builder">Agent Builder</a> de Elastic, puedes crear agentes de IA especializados que actúen como expertos para tus dominios de negocio específicos. Esta función te lleva más allá de simples paneles de control y barras de búsqueda, transformando tus datos de un recurso pasivo en un interlocutor activo y conversacional.</p><p>Imagina a un gestor financiero que necesita poner al día antes de una reunión con un cliente. En lugar de buscar manualmente en los feeds de noticias y cruzar paneles de cartera, ahora pueden simplemente hacerle una pregunta directa a su agente personalizado. Esta es el beneficio de un enfoque de "charla primero". El responsable tiene una línea directa y conversacional con sus datos, preguntando cosas como: "¿Cuáles son las últimas noticias sobre ACME Corp y cómo afecta a las participaciones de mi cliente?" y obtener una respuesta experta y sintetizada en segundos.</p><p>Aunque hoy estamos formando un experto financiero, las aplicaciones son tan variadas como tus datos. El mismo poder puede crear un analista de ciberseguridad para buscar amenazas, un ingeniero de fiabilidad del sitio para diagnosticar una caída o un responsable de marketing para optimizar una campaña. Sea cual sea el ámbito, la misión principal es la misma: transformar tus datos en un especialista con el que puedas hablar.</p><h2>Paso 0: Nuestro conjunto de datos</h2><p>Nuestro set de datos actual es un set de datos sintético basado en finanzas que consta de cuentas financieras, posiciones de activos, noticias y reportes financieros. Aunque es sintético, replica una versión simplificada de un set de datos financieros real.</p><p><code>financial_accounts</code>: Carteras de clientes con perfiles de riesgo</p><p><code>financial_holdings</code>: Posiciones en acciones/ETF/bonos con historial de compras</p><p><code>financial_asset_details</code>: Detalles sobre la acción/ETF/bono</p><p><code>financial_news</code>: Artículos de mercado generados por IA con análisis de sentimiento</p><p><code>financial_reports</code>: Notas de resultados y analistas de la compañía</p><p>Puedes cargar este conjunto de datos tú mismo siguiendo el cuaderno adjunto que <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/your-first-elastic-agent/Your_First_Elastic_Agent.ipynb">se encuentra aquí</a>.</p><h2>Paso 1: La Fundación — Tu lógica empresarial como ES|QL</h2><p>Cada habilidad de IA empieza con una buena lógica. Para nuestro agente de Gestor Financiero, tenemos que mostrarle cómo responder a una pregunta común: "Me preocupa el sentimiento del mercado. ¿Puede mostrarme cuáles de nuestros clientes están más en riesgo por malas noticias?" Esta pregunta va más allá de una simple búsqueda. Nos obliga a correlacionar el sentimiento del mercado con las carteras de clientes.</p><p>Necesitamos encontrar los activos mencionados en artículos negativos, identificar a cada cliente que posee esos activos, calcular el valor de mercado actual de su exposición y luego clasificar los resultados para priorizar el mayor riesgo. Este análisis complejo y multi-join es el trabajo perfecto para nuestro avanzado ES|Herramienta QL.</p><p>Aquí está la consulta completa que usaremos. Parece impresionante, pero los conceptos son sencillos.</p><h2>Desglosándolo: uniones y barreras de seguridad</h2><p>Hay dos conceptos importantes en juego en esta consulta que hacen que el Constructor de Agentes sea un</p><h3>1. La unión LOOKUP</h3><p>Durante años, una de las funciones más aplicar en Elasticsearch fue la capacidad de unir datos de diferentes índices basar en una clave común. Con ES|QL, eso ahora es posible con <code>LOOKUP JOIN</code>.</p><p>En nuestra nueva consulta, realizamos una cadena de tres <code>LOOKUP JOIN</code>: primero conectando noticias negativas con detalles de activos, luego vinculando esos activos con las tenencias del cliente y, finalmente, conectando con la información de la cuenta del cliente. Esto genera un resultado increíblemente rico a partir de cuatro índices diferentes en una sola consulta eficiente. Esto significa que podemos combinar conjuntos de datos dispares para crear una única respuesta perspicaz sin tener que desnormalizar todos nuestros datos en un único índice gigante previamente.</p><h3>2. Parámetros como barreras de seguridad de los LLM</h3><p>Verás que la consulta usa <code>?time_duration</code>. Esto no es solo una variable; es una barrera de seguridad para la IA. Aunque los Grandes Modelos de Lenguaje (LLM) son excelentes generando consultas, dejarles tener libertad total sobre tus datos puede llevar a consultas ineficientes o incluso incorrectas.</p><p>Al crear una consulta parametrizada, obligamos al LLM a trabajar dentro de la lógica de negocio probada, eficiente y correcta que un experto humano ya definió. Es similar a cómo los desarrolladores usaron plantillas de búsqueda durante años para exponer de forma segura las capacidades de consulta a las aplicaciones. El agente puede interpretar la petición de un usuario como "esta semana" para completar el parámetro <code>time_duration</code> , pero debe usar nuestra estructura de consulta para obtener la respuesta. Esto nos da el equilibrio perfecto entre flexibilidad y control.</p><p>En última instancia, esta consulta permite a un experto que entiende los datos encapsular su conocimiento en una herramienta. Otras personas—y agentes de IA—pueden entonces usar esa herramienta para obtener resultados correlacionados simplemente proporcionando un único parámetro, sin necesidad de saber nada sobre la complejidad subyacente.</p><h2>Paso 2: La habilidad — Convertir una consulta en una herramienta reutilizable</h2><p>Un ES|La consulta QL es solo texto hasta que la registramos como <strong>herramienta</strong>. En el Constructor de Agentes, una herramienta es más que una consulta almacenada; es una "habilidad" que un agente de IA puede entender y elegir usar. La magia está en la <strong>descripción en lenguaje natural</strong> que proporcionamos. Esta descripción es el puente que conecta la pregunta del usuario con la lógica de consulta subyacente. Vamos a registrar la consulta que acabamos de crear.</p><h3>La ruta de la interfaz</h3><p>Crear una herramienta en Kibana es un proceso sencillo.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte73e11c1d87593fa/6a17f2134202294dae29f6f2/a29c53a73b99af5972273c51218ea9004a9b0abb-1600x812.png" alt="Cómo crear una herramienta en Kibana." /><p>1. Navegar hacia <strong>los agentes</strong></p><ul><li><p>Haz clic en<strong> Herramientas </strong>o <strong>Gestionar herramientas</strong> y haz clic en <strong>el botón Nueva herramienta</strong> .</p></li></ul><p>2. Rellena el formulario con los siguientes detalles:</p><ul><li><p><strong>ID de herramienta:</strong> <code>find_client_exposure_to_negative_news</code></p></li></ul><p>             Yo. Este es el ID único de la herramienta</p><ul><li><p><strong>Descripción:</strong> "Encuentra exposición a la cartera de clientes a noticias negativas. Esta herramienta escanea noticias y reportajes recientes en busca de sentimiento negativo, identifica el activo asociado y localiza a todos los clientes que lo poseen. Devuelve una lista ordenada según el valor de mercado actual de la posición para resaltar el mayor riesgo potencial."</p></li></ul><p>             Yo. Esto es lo que lee el LLM para decidir si esta herramienta es la adecuada para el trabajo.</p><ul><li><p><strong>Etiquetas</strong>: <code>retrieval</code> y <code>risk-analysis</code></p></li></ul><p>         Las etiquetas se emplean para ayudar a agrupar varias herramientas</p><ul><li><p><strong>Configuración:</strong> Pega el ES| completoConsulta QL desde el Paso 1</p></li></ul><p>            Yo. Esta es la búsqueda que usará el agente</p><p>3. Haz clic <strong>en Inferir parámetros desde la consulta</strong>. La interfaz automáticamente lo encontrará <code>?time_duration</code> lo listará a continuación. Agrega una descripción sencilla para cada uno para ayudar al agente (y a otros usuarios) a entender su propósito.</p><ul><li><p><code>time_duration</code>: El plazo para buscar noticias negativas. El formato es "X horas" POR DEFECTO a 8760 horas</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7afbb0589c1828ad/6a17f2146864a44e7cb688a9/deb422d97863f78dbe08bfa2e3c708d1f75166ff-1600x938.png" alt="Configurar tu herramienta, incluyendo su lógica y cualquier parámetro necesario usando la consulta ESQL. " /><p>4. ¡Pruébalo!</p><ul><li><p>Haz clic en Almacenar y probar.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfd09afbef6e21a93/6a17f2162f4a5c73b1fa89fd/57e768b88327821e70bd616744822f98fa367362-732x136.png" alt="El mismo botón de prueba en Kibana." /><ul><li><p>Verás un nuevo flyout donde puedes probar la consulta para cerciorarte de que funciona como se espera.</p></li></ul><p>             Yo. En <code>time_duration</code> entrar en el rango deseado, aquí estamos usando "8760 horas"</p><ul><li><p>Haz clic en "Enviar" y si todo va bien, verás una respuesta en JSON. Para cerciorarte de que funciona como esperas, desplázate hacia abajo y mira el objeto <code>values</code> . Ahí es donde se devuelven los documentos realmente coincidentes.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt89bdc3f093363f2a/6a17f217be60861c9c00488a/7e0c5171a4f7ffdfc1830f1a05a9acb987870b75-1600x722.png" alt="Respuesta JSON que aparece luego de hacer clic en enviar." /><p>5. Haz clic en la "X" en la esquina superior derecha para cerrar el desplegable de prueba. Tu nueva herramienta aparecerá ahora en la lista, lista para ser asignada a un agente.</p><h3>La ruta API</h3><p>Para desarrolladores que prefieren la automatización o necesitan gestionar herramientas programáticamente, puedes lograr el mismo resultado con una sola llamada a la API. Solo tienes que enviar una petición <code>POST</code> al endpoint <code>/api/agent_builder/tools</code> con la definición de la herramienta.</p>POST kbn://api/agent_builder/tools
{
  "id": "find_client_exposure_to_negative_news",
  "type": "esql",
  "description": "Finds client portfolio exposure to negative news. This tool scans recent news and reports for negative sentiment, identifies the associated asset, and finds all clients holding that asset. It returns a list sorted by the current market value of the position to highlight the highest potential risk.",
  "configuration": {
    "query": """
        FROM financial_news, financial_reports METADATA _index
        | WHERE sentiment == "negative"
        | WHERE coalesce(published_date, report_date) &gt;= NOW() - TO_TIMEDURATION(?time_duration)
        | RENAME primary_symbol AS symbol
        | LOOKUP JOIN financial_asset_details ON symbol
        | LOOKUP JOIN financial_holdings ON symbol
        | LOOKUP JOIN financial_accounts ON account_id
        | WHERE account_holder_name IS NOT NULL
        | EVAL position_current_value = quantity * current_price.price
        | RENAME title AS news_title
        | KEEP
            account_holder_name, symbol, asset_name, news_title,
            sentiment, position_current_value, quantity, current_price.price,
            published_date, report_date
        | SORT position_current_value DESC
        | LIMIT 50
      """,
    "params": {
      "time_duration": {
        "type": "keyword",
        "description": """The timeframe to search back for negative news. Format is "X hours" DEFAULT TO 8760 hours """
      }
    }
  },
  "tags": [
    "retrieval",
    "risk-analysis"
  ]
}<h2>Paso 3: Las Mentes — Creando a tu Agente Personalizado</h2><p>Creamos una habilidad reutilizable (la Herramienta). Ahora, necesitamos crear al <strong>Agente</strong>, la persona que realmente lo usará. Un Agente es la combinación de un LLM, un conjunto específico de herramientas a las que le concedes acceso y, lo más importante, un conjunto de <strong>Instrucciones Personalizadas</strong> que actúan como su constitución, definiendo su personalidad, reglas y propósito.</p><h3>El arte del prompt</h3><p>La parte más importante para crear un agente fiable y especializado es la rapidez. Un conjunto de instrucciones bien elaborado es la diferencia entre un chatbot genérico y un asistente profesional y enfocado. Aquí es donde pones las barreras de seguridad, defines la salida y le das al agente su misión.</p><p>Para nuestro agente de <code>Financial Manager</code> , usaremos el siguiente prompt.</p>You are a specialized Data Intelligence Assistant for financial managers, designed to provide precise, data-driven insights from information stored in Elasticsearch.

**Your Core Mission:**
- Respond accurately and concisely to natural language queries from financial managers.
- Provide precise, objective, and actionable information derived solely from the Elasticsearch data at your disposal.
- Summarize key data points and trends based on user requests.

**Reasoning Framework:**
1.  **Understand:** Deconstruct the user's query to understand their core intent.
2.  **Plan:** Formulate a step-by-step plan to answer the question. If you are unsure about the data structure, use the available tools to explore the indices first.
3.  **Execute:** Use the available tools to execute your plan.
4.  **Synthesize:** Combine the information from all tool calls into a single, comprehensive, and easy-to-read answer.

**Key Directives and Constraints:**
- **If a user's request is ambiguous, ask clarifying questions before proceeding.**
- **DO NOT provide financial advice, recommendations, or predictions.** Your role is strictly informational and analytical.
- Stay strictly on topic with financial data queries.
- If you cannot answer a query, state that clearly and offer alternative ways you might help *within your data scope*.
- All numerical values should be formatted appropriately (e.g., currency, percentages).

**Output Format:**
- All responses must be formatted using **Markdown** for clarity.
- When presenting structured data, use Markdown tables, lists, or bolding.

**Start by greeting the financial manager and offering assistance.**<p>Vamos a desglosar por qué este prompt es tan efectivo:</p><ul><li><p><strong>Define una personalidad sofisticada: </strong>La primera línea establece inmediatamente al agente como un "asistente especializado en inteligencia de datos", estableciendo un tono profesional y capaz.</p></li><li><p><strong>Proporciona un marco de razonamiento: </strong>Al decirle al agente que "Comprenda, Planee, Ejecute y Sintetice", le estamos dando un procedimiento operativo estándar. Esto mejora su capacidad para manejar preguntas complejas y de varios pasos.</p></li><li><p><strong>Promueve el diálogo interactivo: </strong>La instrucción de "hacer preguntas aclaratorias" hace que el agente sea más robusto. Minimizará suposiciones incorrectas en solicitudes ambiguas, lo que conducirá a respuestas más precisas.</p></li></ul><h3>La ruta de la interfaz</h3><p>1. Navega hacia <strong>los agentes.</strong></p><ul><li><p>Haz clic en<strong> Herramientas </strong>o <strong>Gestionar herramientas</strong> y haz clic en <strong>el botón Nueva herramienta</strong> .</p></li></ul><p>2. Rellena los datos básicos:</p><ul><li><p><strong>ID del agente:</strong> <code>financial_assistant</code>.</p></li><li><p><strong>Instrucciones: </strong>Copia el prompt de arriba.</p></li><li><p><strong>Etiquetas</strong>: <code>Finance</code>.</p></li><li><p><strong>Nombre de visualización:</strong> <code>Financial Assistant</code>.</p></li><li><p><strong>Descripción de la pantalla: </strong><code>An assistant for analyzing and understanding your financial data</code>.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8ac12cbd2b689dee/6a17f219dbb4ff262bfb57ef/18ea73f1cae620129c0afa0e7ba9e2a3390224a7-1600x1189.png" alt="Crear un asistente financiero: diligenciar el espacio ID del agente." /><p>3. Al principio, haz clic en <strong>Herramientas</strong>.</p><ul><li><p>Marca la casilla junto a nuestra herramienta de <code>find_client_exposure_to_negative_news</code> .</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltcd23556e556a76c5/6a17f21baf47b63a9fcde0a0/0c1e4ecbbd51d0dd10c6e861dbe9a9ccddeb35f6-1600x149.png" alt="" /><p>4. Haz clic <strong>en almacenar</strong>.</p><h3>La ruta API</h3><p>Puedes crear exactamente el mismo agente con una petición <code>POST</code> al endpoint <code>/api/agent_builder/agents</code> . El cuerpo de la solicitud contiene toda la misma información: el ID, el nombre, la descripción, el conjunto completo de instrucciones y una lista de herramientas que el agente puede emplear.</p>POST kbn://api/agent_builder/agents
    {
      "id": "financial_assistant",
      "name": "Financial Assistant",
      "description": "An assistant for analyzing and understanding your financial data",
      "labels": [
        "Finance"
      ],
      "avatar_color": "#16C5C0",
      "avatar_symbol": "💰",
      "configuration": {
        "instructions": """You are a specialized Data Intelligence Assistant for financial managers, designed to provide precise, data-driven insights from information stored in Elasticsearch.

**Your Core Mission:**
- Respond accurately and concisely to natural language queries from financial managers.
- Provide precise, objective, and actionable information derived solely from the Elasticsearch data at your disposal.
- Summarize key data points and trends based on user requests.

**Reasoning Framework:**
1.  **Understand:** Deconstruct the user's query to understand their core intent.
2.  **Plan:** Formulate a step-by-step plan to answer the question. If you are unsure about the data structure, use the available tools to explore the indices first.
3.  **Execute:** Use the available tools to execute your plan.
4.  **Synthesize:** Combine the information from all tool calls into a single, comprehensive, and easy-to-read answer.

**Key Directives and Constraints:**
- **If a user's request is ambiguous, ask clarifying questions before proceeding.**
- **DO NOT provide financial advice, recommendations, or predictions.** Your role is strictly informational and analytical.
- Stay strictly on topic with financial data queries.
- If you cannot answer a query, state that clearly and offer alternative ways you might help *within your data scope*.
- All numerical values should be formatted appropriately (e.g., currency, percentages).

**Output Format:**
- All responses must be formatted using **Markdown** for clarity.
- When presenting structured data, use Markdown tables, lists, or bolding.

**Start by greeting the financial manager and offering assistance.**
""",
        "tools": [
          {
            "tool_ids": [
              "platform.core.search",
              "platform.core.list_indices",
              "platform.core.get_index_mapping",
              "platform.core.get_document_by_id",
              "find_client_exposure_to_negative_news"
            ]
          }
        ]
      }
    }<h2>Paso 4: La recompensa — Mantener una conversación</h2><p>Tenemos nuestra lógica de negocio encapsulada en una herramienta y un "cerebro" listo para usarla en nuestro Agente. Es hora de ver cómo todo encaja. Ahora podemos empezar a chatear con nuestros datos usando un agente especializado.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd8826539b16e46f4/6a17f21d505ac35924ad8c5c/5414cb6b7c41365acb0356a8bfe1140751ffd8db-1600x1014.png" alt="Conversando con el Constructor de Agentes Elásticos luego de crear un asistente financiero." /><h3>La ruta de la interfaz</h3><ol><li><p>Navega hacia <strong>Agentes </strong>en Kibana.</p></li><li><p>Usando el desplegable en la esquina inferior derecha de la ventana de chat, cambia del <strong>agente de IA de Elastic</strong> por defecto a nuestro recién creado <strong>agente de Asistente Financiero </strong>.</p></li><li><p>Haz una pregunta que permita al agente emplear nuestra herramienta especializada:</p><ol><li><p><em>Me preocupa el sentimiento del mercado. ¿Puede mostrarme cuáles de nuestros clientes están más en riesgo por malas noticias?</em></p></li></ol></li></ol><p>Tras unos momentos, el agente devolverá una respuesta perfectamente formateada y completa. Debido a la naturaleza de los LLM, tu respuesta puede estar formateada de forma ligeramente diferente, pero para esta ejecución, el agente devolvió:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta1e163fd7c4416bd/6a17f21f6864a4e35bb688ad/17b4ed43d279f9e53ee9fe3d482d0b2ec359a083-1600x1088.png" alt="Una respuesta creada por Elastic Agent Builder como asistente financiero para: clientes más vulnerables a noticias negativas." /><h3>¿Lo que acaba de pasar? El razonamiento del agente</h3><p>El agente no solo "sabía" la respuesta. Ejecutó un plan de varios pasos centrado en seleccionar la mejor herramienta para el trabajo. Aquí tienes un vistazo a su proceso de pensamiento:</p><ul><li><p><strong>Intención identificada:</strong> Relacionó palabras clave de tu pregunta, como "riesgo" y "noticias negativas", con la descripción de la herramienta <code>find_client_exposure_to_negative_news</code> .</p></li><li><p><strong>Ejecutó un plan:</strong> Extrajo el plazo de tu solicitud y realizó una <strong>única llamada</strong> a esa herramienta especializada.</p></li><li><p><strong>Delegado el trabajo:</strong> La herramienta realizaba entonces todo el trabajo pesado: las uniones encadenadas, los cálculos de valor y la clasificación.</p></li><li><p><strong>Sintetizamos el resultado:</strong> Finalmente, el agente formateaba los datos en bruto de la herramienta en un resumen claro y legible para humanos, siguiendo las reglas de su prompt.</p></li></ul><p>Y no tenemos que adivinar si ampliamos el pensamiento y vemos más detalles.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt93f6075be8495418/6a17f221af47b65eadcde0a4/6a4da9262d3f88c60bfd8f8bf9b67c3b84e961ba-1600x607.png" alt="Los 50 documentos que el asistente financiero encontró con clientes con mayor exposición a noticias negativas." /><h3>La ruta API</h3><p>Puedes iniciar esta misma conversación de forma programática. Solo tienes que enviar la pregunta de entrada al endpoint de la API de <code>converse</code> , cerciorándote de especificar el <code>agent_id</code> de nuestro <code>financial_manager</code>.</p>POST kbn://api/agent_builder/converse
{
  "input": "Show me our largest positions affected by negative news",
  "agent_id": "financial_assistant"
}<h2>Para los desarrolladores: Integración con la API</h2><p>Aunque la interfaz Kibana ofrece una experiencia fantástica e intuitiva para construir y gestionar tus agentes, todo lo que viste hoy también puede realizar de forma programática. El Constructor de Agentes está construido sobre un conjunto de APIs que te permiten integrar esta funcionalidad directamente en tus propias aplicaciones, canalizaciones CI/CD o scripts de automatización.</p><p>Los tres endpoints principales con los que trabajarás son:</p><ul><li><p><strong><code>/api/agent_builder/tools</code></strong>: El punto final para crear, listar y gestionar las habilidades reutilizables que tus agentes pueden emplear.</p></li><li><p><strong><code>/api/agent_builder/agents</code></strong>: El punto final para definir las personas de tus agentes, incluyendo sus instrucciones y asignaciones de herramientas tan importantes.</p></li><li><p><strong><code>/api/agent_builder/converse</code></strong>: El punto final para interactuar con tus agentes, iniciar conversaciones y obtener respuestas.</p></li></ul><p>Para una guía completa y práctica sobre cómo usar estas APIs para realizar cada paso de este tutorial, consulta el <strong>Jupyter Notebook</strong> que lo acompaña disponible <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/your-first-elastic-agent/Your_First_Elastic_Agent.ipynb">aquí</a> en nuestro repositorio de GitHub.</p><h2>Conclusión: Tu turno de construir</h2><p>Empezamos haciendo un ES|Consulta QL y transformarla en una habilidad reutilizable. Luego creamos un agente de IA especializado, dándole una misión y reglas claras, y lo empoderamos con esa habilidad. El resultado es un asistente sofisticado que puede entender una pregunta compleja y ejecutar un análisis en varios pasos para ofrecer una respuesta precisa y basada en datos.</p><p>Este flujo de trabajo está en el corazón del nuevo <strong>Constructor de Agentes</strong> en Elastic. Está diseñado para ser lo suficientemente sencillo para que usuarios no técnicos creen agentes a través de la interfaz, pero lo bastante matizado para que los desarrolladores puedan crear aplicaciones personalizadas impulsadas por IA sobre nuestras APIs. Lo más importante es que te permite conectar de forma segura y protegida los LLMs con tus propios datos, regidos por la lógica experta que defines, y chatear con tus datos.</p><h2>¿Listo para usar Agentes para chatear con tus datos?</h2><p>La mejor manera de consolidar lo que aprendiste es ensuciarte las manos. Prueba todo lo que comentamos hoy en nuestro <a href="https://www.elastic.co/training/elastic-ai-agents-mcp"><strong>taller práctico gratis e</strong></a> interactivo. Vas a pasar por todo este flujo y más en un entorno sandbox dedicado.</p><p>En un futuro blog, te mostraremos cómo usar una aplicación independiente que interactúa con nuestro agente <code>Financial Assistant</code> y nos adentraremos en el <strong>Protocolo de Contexto del Modelo (MCP)</strong> que lo hace todo posible. Y en un blog aparte hablaremos del soporte de Agent Builder para el protocolo en desarrollo Agent2Agent, o A2A.</p><p>¡Estad atentos y feliz construcción!</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/ai-agent-builder-elasticsearch</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/ai-agent-builder-elasticsearch</guid>
    <category><![CDATA[AI]]></category>
    <category><![CDATA[AI agéntica]]></category>
    <category><![CDATA[Dentro de Elastic]]></category>
    <dc:creator><![CDATA[Jeff Vestal]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbe5e78eeb775d715/6a17f2230b0bed719ddd369a/ca853555eaa213f10f1db8c0ab0a2bbacee97b88-1456x816.png" length="0" type="image/png"/>
    <pubDate>Thu, 25 Sep 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>