<?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/de/search-labs/author/jeff-vestal</link>
    </image>
    <link>https://www.elastic.co/de/search-labs/author/jeff-vestal</link>
    <atom:link href="https://www.elastic.co/de/search-labs/rss/author/jeff-vestal.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[de]]></language>
    <lastBuildDate>Fri, 11 Sep 2026 09:18:32 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Schnell vs. genau: Messung der Recall-Rate bei der quantisierten Vektorsuche]]></title>
    <description><![CDATA[Eine Erklärung, wie der Recall für die Vektorsuche in Elasticsearch mit minimalem Aufwand gemessen werden kann.]]></description>
    <content:encoded><![CDATA[<p>Wir alle wünschen uns eine sofortige Vektorsuche. Jedoch sind hochdimensionale Vektoren sehr umfangreich. Ein einzelner 1.024-dimensionaler Float-32-Vektor beansprucht viel Speicherplatz, wobei der Vergleich mit Millionen anderer Vektoren einen hohen Rechenaufwand erfordert.</p><p>Zur Lösung dieses Problems wenden Suchmaschinen wie Elasticsearch zwei wesentliche Optimierungsstrategien an:</p><ol><li><p><strong>Ungefähre Suche (Hierarchical Navigable Small World [HNSW]):</strong> Anstatt jedes Dokument zu durchsuchen, erstellen wir einen Navigationsgraphen, um schnell in die wahrscheinliche Nachbarschaft der Antwort zu gelangen.</p></li><li><p><strong>Quantisierung:</strong> Wir komprimieren die Vektoren (beispielsweise von 32-Bit-Gleitkommazahlen auf 8-Bit-Ganzzahlen oder sogar auf 1-Bit-Binärwerte), um den Speicherbedarf zu verringern und die Berechnungen zu beschleunigen.</p></li></ol><p>Doch Optimierung hat oft ihren Preis: <strong>Genauigkeit</strong>.</p><p>Die Befürchtung ist berechtigt: „Wenn ich meine Daten komprimiere und bei der Suche Abstriche mache, verpasse ich dann die besten Ergebnisse?“ „Beeinträchtigt diese Optimierung die Relevanz meiner Suchmaschine?“</p><p>Für den Nachweis, dass die Quantisierung von Elastic die Ergebnisse nicht beeinträchtigt, haben wir einen wiederholbaren Testrahmen unter Verwendung des <a href="https://huggingface.co/datasets/fancyzhx/dbpedia_14"><strong>DBPedia-14</strong></a><a href="https://huggingface.co/datasets/fancyzhx/dbpedia_14">-Datensatzes</a> entwickelt, um präzise zu berechnen, wie viel Genauigkeit (genauer gesagt <strong>Recall)</strong> wir bei der Verwendung der Standardoptimierungen in Elasticsearch zugunsten der Geschwindigkeit einbüßen.</p><p>Kurz gesagt: Viel weniger, als Sie denken. Sehen Sie sich das <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">Notebook hier</a> an und testen Sie es selbst</p><h2><strong>Die Definitionen (für die Nicht-Experten)</strong></h2><p>Klären wir zunächst einige Begriffe, bevor wir uns den Code ansehen.</p><ul><li><p><strong>Relevanz vs. Recall:</strong> <strong>Relevanz</strong> ist subjektiv (habe ich etwas Gutes gefunden?). <strong>Recall</strong> ist mathematisch. Wenn sich in der Datenbank 10 Dokumente befinden, die <em>perfekt</em> zu Ihrer Abfrage passen, und die Suchmaschine neun davon findet, beträgt Ihr Recall 90 % (oder 0,9).</p></li><li><p><strong>Exakte Suche (flach):</strong> Wird auch als „Brute-Force“-Methode bezeichnet. Die Suchmaschine scannt jedes einzelne Dokument in einem Index und berechnet die Entfernung.</p><ul><li><p><em>Vorteile:</em> 100 % perfekter Recall.</p></li><li><p><em>Nachteile:</em> Rechenintensiv und bei großem Umfang langsam.</p></li></ul></li><li><p><strong>Näherungssuche (HNSW):</strong> Die „Abkürzungs“-Methode. Die Suchmaschine erstellt einen <a href="https://www.elastic.co/search-labs/blog/hnsw-graph">HNSW-Graphen</a>. Sie durchläuft den Graphen, um die nächsten Nachbarn zu finden.</p><ul><li><p><em>Vorteile:</em> Extrem schnell und skalierbar.</p></li><li><p><em>Nachteile:</em> Falls das Durchlaufen des Graphen zu früh beendet wird, könnte ein Nachbar übersehen werden.</p></li></ul></li></ul><h2><strong>Das Experiment: Exakt vs. ungefähr</strong></h2><p>Für den Recall-Test haben wir den <strong>DBPedia-14</strong>-Datensatz verwendet, einen umfangreichen Datensatz mit Titeln und Auszügen aus 14 Ontologieklassen, der häufig zum Trainieren und Bewerten von Modellen zur Textkategorisierung genutzt wird. Konkret konzentrieren wir uns auf die Kategorie „Film“. Wir wollten die optimierten Produktionseinstellungen mit einem mathematisch perfekten Referenzwert vergleichen.</p><p>Für dieses Experiment verwenden wir das Modell <a href="https://www.elastic.co/search-labs/blog/jina-embeddings-v5-text">jina-embeddings-v5-text-small</a>, ein fortschrittliches mehrsprachiges Modell, das bei den Branchen-Benchmarks für Textdarstellung führend ist. Wir haben uns für dieses Modell entschieden, da es den aktuellen Standard für leistungsstarke Einbettungen setzt. Durch die Kombination der herausragenden Genauigkeit von Jina v5 mit der nativen Quantisierung von Elasticsearch können wir eine Sucharchitektur präsentieren, die sowohl rechnerisch effizient ist als auch keine Kompromisse bei der Abrufqualität eingeht.</p><p>Wir haben einen Index mit doppeltem Mapping eingerichtet. Wir haben denselben Text gleichzeitig in zwei verschiedene Felder aufgenommen:</p><ol><li><p><strong><code>content.raw</code></strong>mit Typ: <code>flat</code>. Dadurch wird Elasticsearch gezwungen, einen Brute-Force-Scan der gesamten Float32-Vektoren durchzuführen. Hierdurch werden exakte Übereinstimmungen geliefert, die als Ausgangsbasis dienen.</p></li><li><p><strong><code>content</code></strong>mit Typ <code>semantic_text</code>. Standardmäßig werden HNSW und „Better Binary Quantization“ (BBQ) verwendet. Hierbei handelt es sich um die standardmäßige, optimierte Produktionseinstellung für die ungefähre Übereinstimmung.</p></li></ol><h3><strong>Der Recall @10-Test</strong></h3><p>Als Metrik verwendeten wir Recall@10.</p><p>Wir haben 50 zufällige Filme ausgewählt und dieselbe Abfrage für beide Felder durchgeführt.</p><ul><li><p>Wenn die <strong>exakte (flache)</strong> Suche ergibt, dass die ersten 10 Nachbarn IDs [1, 2, 3 ... 10] sind.</p></li><li><p>Und die <strong>ungefähre (HNSW)</strong> Suche liefert die IDs [1, 2, 3 ... 9, 99].</p></li><li><p>Wir haben neun der Top 10 korrekt gefunden. Der Score liegt bei <strong>0,9</strong>.</p></li></ul><p>Hier ist das von uns verwendete Mapping:</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>Das Ergebnis: Die „flache Kurve“ des Erfolgs</strong></p><p>Wir haben einen Skalierungstest durchgeführt, bei dem wir den gesamten Datensatz neu geladen und mit Indexgrößen von 1.000 bis 40.000 Dokumenten getestet haben.</p><p>So hat sich der Recall-Score entwickelt:</p><p>Dokumente</p><p>Recall@10-Wert</p><p>1.000</p><p>1.000 (100 %)</p><p>5.000</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>Die Ergebnisse waren erstaunlich stabil. Selbst als wir die Skalierung erhöhten, stimmte die ungefähre Suche in <strong>&gt;99 % der Fälle</strong> mit der exakten Brute-Force-Suche überein.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8168a0a4946bade7/6a170e154a531b61b536a9eb/a4bfacb1d0cce6fdf6df0e1a9d4fc5d4007a66da-1999x1209.png" alt="Stabilität der Vektorsuche: Recall vs. Indexgröße" /><h2><strong>Warum hat es so gut funktioniert?</strong></h2><p>Sie könnten erwarten, dass die Komprimierung von Vektoren zu Binärwerten die Genauigkeit stärker beeinträchtigen würde. Der Grund dafür liegt in der Art und Weise, wie Elasticsearch den Abruf handhabt.</p><p>Die meisten Einbettungsmodelle liefern heutzutage Float32-Vektoren als Ausgabe, die sehr groß sind. Für eine effiziente Suche nutzt Elasticsearch die Quantisierung für hochdimensionale Vektoren. Genauer gesagt wird seit Version 9.2 standardmäßig <a href="https://www.elastic.co/search-labs/blog/elasticsearch-9-1-bbq-acorn-vector-search">BBQ</a> verwendet.</p><p>BBQ verwendet einen <strong>Rescoring</strong>-Mechanismus:</p><ol><li><p><strong>Durchlaufen:</strong> Die Suchmaschine verwendet die komprimierten (quantisierten) Vektoren, um den HNSW-Graphen schnell zu durchlaufen. Da die Vektoren klein sind, kann das System effizient überabtasten und so eine größere Liste von Kandidaten (zum Beispiel die 100 am ehesten passenden Dokumente) ohne Leistungseinbußen zusammenstellen.</p></li><li><p><strong>Rescore:</strong> Sobald diese Kandidaten vorliegen, ruft das System die Werte in voller Genauigkeit nur für diese wenigen Dokumente ab, um das endgültige, genaue Ranking zu berechnen.</p></li></ol><p>So erhalten Sie das Beste aus beiden Welten: die Geschwindigkeit der Quantisierung für die rechenintensiven Aufgaben und die Präzision von Gleitkommazahlen für die abschließende Sortierung.</p><h2><strong>Können wir das besser machen?</strong></h2><p>An dieser Stelle ist anzumerken, dass die hier gezeigten Ergebnisse auf den Standardeinstellungen und einer zufälligen Stichprobe von Daten basieren. Betrachten Sie das als einen leistungsstarken Ausgangspunkt. Auch wenn Jina v5 ein wahres Kraftpaket ist, sind diese Recall-Werte keine allgemeingültige Garantie für jeden Datensatz. Jede Datenerhebung hat ihre Eigenheiten, und obwohl es durchaus möglich ist, die Leistung durch weitere Optimierungen weiter zu steigern, sollten Sie stets einen Vergleichstest mit Ihren eigenen spezifischen Daten durchführen, um Ihre Leistungsgrenze zu ermitteln.</p><h2><strong>Fazit</strong></h2><p>Es handelt sich hierbei um einen sehr kleinen Test. Der Zweck dieser Übung besteht jedoch nicht speziell in der Messung des Einbettungsmodells oder von BBQ, sondern vielmehr in der Veranschaulichung, wie Sie mit minimalem Aufwand den Recall Ihres Datensatzes messen können.</p><p>Wenn Sie diesen Test mit Ihren eigenen Daten durchführen möchten, können Sie sich das <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">Notebook hier</a> ansehen und es selbst testen.</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[Vektordatenbank]]></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[Ihr erster Elastic Agent: Von einer einzelnen Anfrage bis zum KI-gestützten Chat]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie mit dem AI Agent Builder von Elastic spezialisierte KI-Agenten erstellen können. In diesem Blogbeitrag entwickeln wir einen KI-gestützten Finanzagenten.]]></description>
    <content:encoded><![CDATA[<p>Mit dem neuen <a href="https://www.elastic.co/search-labs/blog/ai-agentic-workflows-elastic-ai-agent-builder">Agent Builder</a> von Elastic können Sie spezialisierte KI-Agenten erstellen, die als Experten für Ihre spezifischen Geschäftsbereiche fungieren. Diese Funktion geht über einfache Dashboards und Suchleisten hinaus und verwandelt Ihre Daten von einer passiven Ressource in einen aktiven, dialogfähigen Partner.</p><p>Stellen Sie sich einen Finanzmanager vor, der sich vor einem Kundengespräch schnell einarbeiten muss. Statt manuell Newsfeeds zu durchforsten und Portfolio-Dashboards abzugleichen, können sie ihrem individuell entwickelten Agenten jetzt einfach eine direkte Frage stellen. Das ist der Vorteil eines „Chat-First“-Ansatzes. Der Manager hat einen direkten, dialogorientierten Draht zu seinen Daten und fragt beispielsweise: „Was gibt es Neues zu ACME Corp und wie wirkt sich das auf die Anlagen meines Kunden aus?“ und innerhalb von Sekunden eine zusammengefasste Expertenantwort zu erhalten.</p><p>Während wir heute einen Finanzexperten aufbauen, sind die Anwendungsbereiche so vielfältig wie Ihre Daten. Mit der gleichen Macht kann ein Cybersicherheitsanalyst zur Suche nach Bedrohungen, ein Site Reliability Engineer zur Diagnose eines Ausfalls oder ein Marketingmanager zur Optimierung einer Kampagne geschaffen werden. Unabhängig vom Fachgebiet bleibt die Kernmission dieselbe: Ihre Daten in einen Spezialisten zu verwandeln, mit dem Sie sich unterhalten können.</p><h2>Schritt 0: Unser Datensatz</h2><p>Unser heutiger Datensatz ist ein synthetischer, auf Finanzdaten basierender Datensatz, der aus Finanzkonten, Vermögenspositionen, Nachrichten und Finanzberichten besteht. Er ist zwar synthetisch, repliziert aber eine vereinfachte Version eines realen Finanzdatensatzes.</p><p><code>financial_accounts</code>Kundenportfolios mit Risikoprofilen</p><p><code>financial_holdings</code>: Aktien-/ETF-/Anleihenpositionen mit Kaufhistorie</p><p><code>financial_asset_details</code>Details zur Aktie/zum ETF/zur Anleihe</p><p><code>financial_news</code>: KI-generierte Marktartikel mit Stimmungsanalyse</p><p><code>financial_reports</code>Unternehmensgewinne und Analystennotizen</p><p>Sie können diesen Datensatz selbst laden, indem Sie der beigefügten Anleitung in <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/your-first-elastic-agent/Your_First_Elastic_Agent.ipynb">diesem</a> Notebook folgen.</p><h2>Schritt 1: Die Grundlage – Ihre Geschäftslogik als ES|QL</h2><p>Jede KI-Fähigkeit beginnt mit einer soliden Logik. Unserem Financial Manager-Agenten müssen wir beibringen, wie er eine häufig gestellte Frage beantworten kann: „Ich bin besorgt über die Marktstimmung.“ Können Sie mir zeigen, welche unserer Kunden am stärksten von schlechten Nachrichten bedroht sind? Diese Frage geht über eine einfache Suche hinaus. Dies erfordert von uns, die Marktstimmung mit den Kundenportfolios in Zusammenhang zu bringen.</p><p>Wir müssen die in den negativen Artikeln erwähnten Vermögenswerte finden, jeden Kunden identifizieren, der diese Vermögenswerte hält, den aktuellen Marktwert seines Engagements berechnen und dann die Ergebnisse nach dem höchsten Risiko ordnen. Diese komplexe Analyse mit mehreren Verknüpfungen ist die perfekte Aufgabe für unser hochentwickeltes ES|QL-Tool.</p><p>Hier ist die vollständige Abfrage, die wir verwenden werden. Es sieht beeindruckend aus, aber die Konzepte sind einfach.</p><h2>Aufschlüsselung: Verbindungen und Leitplanken</h2><p>Bei dieser Abfrage spielen zwei wichtige Konzepte eine Rolle, die den Agent Builder ausmachen.</p><h3>1. Die LOOKUP JOIN-Funktion</h3><p>Seit Jahren gehört die Möglichkeit, Daten aus verschiedenen Indizes anhand eines gemeinsamen Schlüssels zu verknüpfen, zu den am häufigsten nachgefragten Funktionen von Elasticsearch. Mit ES|QL ist das jetzt mit <code>LOOKUP JOIN</code> möglich.</p><p>In unserer neuen Abfrage führen wir eine Kette von drei <code>LOOKUP JOIN</code> durch: Zuerst verbinden wir negative Nachrichten mit Vermögensdetails, dann verknüpfen wir diese Vermögenswerte mit den Kundenbeständen und schließlich fügen wir sie zu den Kontoinformationen des Kunden hinzu. Dadurch wird mit einer einzigen, effizienten Abfrage ein unglaublich reichhaltiges Ergebnis aus vier verschiedenen Indizes erzeugt. Das bedeutet, dass wir unterschiedliche Datensätze kombinieren können, um eine einzige, aussagekräftige Antwort zu erhalten, ohne vorher alle unsere Daten in einen einzigen riesigen Index denormalisieren zu müssen.</p><h3>2. Parameter als LLM-Leitplanken</h3><p>Sie werden feststellen, dass die Abfrage <code>?time_duration</code> verwendet. Das ist nicht nur eine Variable; es ist eine Leitplanke für die KI. Während große Sprachmodelle (LLMs) hervorragend darin sind, Abfragen zu generieren, kann es zu ineffizienten oder sogar falschen Abfragen führen, wenn man ihnen freie Hand bei der Daten lässt.</p><p>Durch die Erstellung einer parametrisierten Abfrage zwingen wir das LLM dazu, innerhalb der getesteten, effizienten und korrekten Geschäftslogik zu arbeiten, die ein menschlicher Experte bereits definiert hat. Das ist vergleichbar damit, wie Entwickler seit Jahren Suchvorlagen verwenden, um Abfragefunktionen sicher für Anwendungen bereitzustellen. Der Agent kann eine Benutzeranfrage wie "diese Woche" interpretieren, um den Parameter <code>time_duration</code> zu füllen, muss aber unsere Abfragestruktur verwenden, um die Antwort zu erhalten. Dadurch erhalten wir die perfekte Balance zwischen Flexibilität und Kontrolle.</p><p>Letztendlich ermöglicht diese Abfrage einem Experten, der die Daten versteht, sein Wissen in einem Werkzeug zu kapseln. Andere Personen – und KI-Agenten – können dieses Werkzeug dann nutzen, um korrelierte Ergebnisse zu erhalten, indem sie einfach einen einzigen Parameter angeben, ohne etwas über die zugrunde liegende Komplexität wissen zu müssen.</p><h2>Schritt 2: Die Fertigkeit – Eine Abfrage in ein wiederverwendbares Werkzeug umwandeln</h2><p>Eine ES|QL-Abfrage ist nur Text, bis wir sie als <strong>Werkzeug</strong> registrieren. Im Agent Builder ist ein Tool mehr als nur eine gespeicherte Abfrage; es ist eine „Fähigkeit“, die ein KI-Agent verstehen und einsetzen kann. Der Zauber liegt in der von uns bereitgestellten <strong>Beschreibung in natürlicher Sprache</strong> . Diese Beschreibung bildet die Brücke zwischen der Frage eines Benutzers und der zugrunde liegenden Abfragelogik. Registrieren wir nun die soeben erstellte Abfrage.</p><h3>Der UI-Pfad</h3><p>Das Erstellen eines Tools in Kibana ist ein unkomplizierter Prozess.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte73e11c1d87593fa/6a17f2134202294dae29f6f2/a29c53a73b99af5972273c51218ea9004a9b0abb-1600x812.png" alt="Wie man ein Tool in Kibana erstellt." /><p>1. Navigieren Sie zu <strong>Agenten</strong></p><ul><li><p>Klicken Sie auf<strong> „Tools“</strong>oder <strong>„Tools verwalten“</strong> und klicken Sie dann auf die Schaltfläche <strong>„Neues Tool“</strong> .</p></li></ul><p>2. Füllen Sie das Formular mit folgenden Angaben aus:</p><ul><li><p><strong>Werkzeug-ID:</strong> <code>find_client_exposure_to_negative_news</code></p></li></ul><p>             ich. Dies ist die eindeutige ID des Tools.</p><ul><li><p><strong>Beschreibung:</strong> "Ermittelt das Risiko negativer Nachrichten im Kundenportfolio." Dieses Tool durchsucht aktuelle Nachrichten und Berichte nach negativen Stimmungen, identifiziert den zugehörigen Vermögenswert und findet alle Kunden, die diesen Vermögenswert halten. Es liefert eine nach dem aktuellen Marktwert der Position sortierte Liste zurück, um das höchste potenzielle Risiko hervorzuheben.“</p></li></ul><p>             ich. Dies ist das, was der LLM liest, um zu entscheiden, ob dieses Werkzeug das richtige für die Aufgabe ist.</p><ul><li><p><strong>Labels</strong>: <code>retrieval</code> and <code>risk-analysis</code></p></li></ul><p>         Etiketten dienen dazu, mehrere Werkzeuge zu gruppieren.</p><ul><li><p><strong>Konfiguration:</strong> Fügen Sie die vollständige ES|QL-Abfrage aus Schritt 1 ein.</p></li></ul><p>            ich. Dies ist die Suche, die der Agent verwenden wird.</p><p>3. Klicken Sie auf <strong>„Parameter aus Abfrage ableiten“</strong>. Die Benutzeroberfläche wird <code>?time_duration</code> automatisch finden und unten auflisten. Fügen Sie für jedes Element eine kurze Beschreibung hinzu, damit der Agent (und andere Benutzer) dessen Zweck verstehen können.</p><ul><li><p><code>time_duration</code>Der Zeitraum, in dem nach negativen Nachrichten gesucht wird. Format ist "X Stunden", Standardwert: 8760 Stunden</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7afbb0589c1828ad/6a17f2146864a44e7cb688a9/deb422d97863f78dbe08bfa2e3c708d1f75166ff-1600x938.png" alt="Konfigurieren Sie Ihr Tool einschließlich seiner Logik und aller benötigten Parameter mithilfe einer ESQL-Abfrage. " /><p>4. Probier es aus!</p><ul><li><p>Klicken Sie auf Speichern &amp; Testen.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfd09afbef6e21a93/6a17f2162f4a5c73b1fa89fd/57e768b88327821e70bd616744822f98fa367362-732x136.png" alt="Der gleiche &amp; Test-Button in Kibana." /><ul><li><p>Es wird ein neues Flyout angezeigt, in dem Sie die Abfrage testen können, um sicherzustellen, dass sie wie erwartet funktioniert.</p></li></ul><p>             ich. Geben Sie in <code>time_duration</code> den gewünschten Bereich ein, hier verwenden wir „8760 Stunden“.</p><ul><li><p>Klicken Sie auf „Absenden“, und wenn alles gut geht, erhalten Sie eine JSON-Antwort. Um sicherzustellen, dass es wie erwartet funktioniert, scrollen Sie nach unten und sehen Sie sich das Objekt <code>values</code> an. Dort werden die eigentlichen übereinstimmenden Dokumente zurückgegeben.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt89bdc3f093363f2a/6a17f217be60861c9c00488a/7e0c5171a4f7ffdfc1830f1a05a9acb987870b75-1600x722.png" alt="JSON-Antwort, die nach dem Klicken auf „Absenden“ erscheint." /><p>5. Klicken Sie auf das „X“ oben rechts, um das Testfenster zu schließen. Ihr neues Tool wird nun in der Liste angezeigt und kann einem Agenten zugewiesen werden.</p><h3>Der API-Pfad</h3><p>Für Entwickler, die Automatisierung bevorzugen oder Tools programmatisch verwalten müssen, lässt sich dasselbe Ergebnis mit einem einzigen API-Aufruf erzielen. Senden Sie einfach eine <code>POST</code> -Anfrage an den <code>/api/agent_builder/tools</code> -Endpunkt mit der Definition des Tools.</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>Schritt 3: Das Gehirn – Ihren individuellen Agenten erstellen</h2><p>Wir haben eine wiederverwendbare Fähigkeit entwickelt (das Tool). Nun müssen wir den <strong>Agenten</strong> erstellen, die Persona, die es tatsächlich benutzen wird. Ein Agent ist die Kombination aus einem LLM, einem bestimmten Satz von Werkzeugen, zu denen Sie ihm Zugriff gewähren, und vor allem einer Reihe von <strong>benutzerdefinierten Anweisungen</strong> , die als seine Verfassung fungieren und seine Persönlichkeit, Regeln und seinen Zweck definieren.</p><h3>Die Kunst des Prompts</h3><p>Der wichtigste Aspekt bei der Schaffung eines zuverlässigen, spezialisierten Agenten ist die Pünktlichkeit. Eine gut ausgearbeitete Anleitung macht den Unterschied zwischen einem generischen Chatbot und einem zielgerichteten, professionellen Assistenten aus. Hier legen Sie die Leitplanken fest, definieren die Ausgabe und geben dem Agenten seine Mission.</p><p>Für unseren <code>Financial Manager</code> -Agenten verwenden wir die folgende Eingabeaufforderung.</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>Lassen Sie uns genauer betrachten, warum diese Aufforderung so effektiv ist:</p><ul><li><p><strong>Es definiert eine anspruchsvolle Persönlichkeit: </strong>Schon die erste Zeile stellt den Agenten als „spezialisierten Data Intelligence Assistant“ dar und vermittelt so einen professionellen und kompetenten Eindruck.</p></li><li><p><strong>Es bietet einen Denkrahmen: </strong>Indem wir dem Agenten sagen, er solle "Verstehen, Planen, Ausführen und Synthetisieren", geben wir ihm eine Standardarbeitsanweisung. Dadurch wird seine Fähigkeit verbessert, komplexe, mehrstufige Fragen zu beantworten.</p></li><li><p><strong>Es fördert den interaktiven Dialog: </strong>Die Anweisung, „klärende Fragen zu stellen“, macht den Agenten widerstandsfähiger. Dadurch werden Fehlinterpretationen bei mehrdeutigen Anfragen minimiert, was zu genaueren Antworten führt.</p></li></ul><h3>Der UI-Pfad</h3><p>1. Navigieren Sie zu <strong>Agenten.</strong></p><ul><li><p>Klicken Sie auf<strong> „Tools“</strong>oder <strong>„Tools verwalten“</strong> und klicken Sie dann auf die Schaltfläche <strong>„Neues Tool“</strong> .</p></li></ul><p>2. Füllen Sie die grundlegenden Angaben aus:</p><ul><li><p><strong>Agenten-ID:</strong> <code>financial_assistant</code>.</p></li><li><p><strong>Anleitung: </strong>Kopieren Sie die obige Eingabeaufforderung.</p></li><li><p><strong>Labels</strong>: <code>Finance</code>.</p></li><li><p><strong>Anzeigename:</strong> <code>Financial Assistant</code>.</p></li><li><p><strong>Anzeigebeschreibung: </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="Anlegen eines Finanzassistenten – Ausfüllen des Agenten-ID-Felds." /><p>3. Klicken Sie oben auf <strong>„Tools“</strong>.</p><ul><li><p>Setzen Sie ein Häkchen neben unserem <code>find_client_exposure_to_negative_news</code> -Tool.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltcd23556e556a76c5/6a17f21baf47b63a9fcde0a0/0c1e4ecbbd51d0dd10c6e861dbe9a9ccddeb35f6-1600x149.png" alt="" /><p>4. Klicken Sie auf <strong>Speichern</strong>.</p><h3>Der API-Pfad</h3><p>Sie können denselben Agenten mit einer <code>POST</code> -Anfrage an den <code>/api/agent_builder/agents</code> -Endpunkt erstellen. Der Anfragetext enthält dieselben Informationen: die ID, den Namen, die Beschreibung, die vollständigen Anweisungen und eine Liste der Tools, die der Agent verwenden darf.</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>Schritt 4: Der Lohn – Ein Gespräch führen</h2><p>Unsere Geschäftslogik ist in einem Tool gekapselt und ein "Gehirn" ist bereit, es in unserem Agenten zu verwenden. Jetzt wird es Zeit, dass alles zusammenkommt. Wir können nun mithilfe eines spezialisierten Agenten mit unseren Daten kommunizieren.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd8826539b16e46f4/6a17f21d505ac35924ad8c5c/5414cb6b7c41365acb0356a8bfe1140751ffd8db-1600x1014.png" alt="Ein Gespräch mit dem Elastic Agent Builder nach der Erstellung eines Finanzassistenten." /><h3>Der UI-Pfad</h3><ol><li><p>Navigieren Sie in Kibana zu <strong>„Agenten“</strong> .</p></li><li><p>Wechseln Sie mithilfe des Dropdown-Menüs unten rechts im Chatfenster vom standardmäßigen <strong>Elastic AI Agent</strong> zu unserem neu erstellten <strong>Financial Assistant </strong>Agent.</p></li><li><p>Stellen Sie eine Frage, die es dem Agenten ermöglicht, unser Spezialtool zu nutzen:</p><ol><li><p><em>Ich bin besorgt über die Marktstimmung. Können Sie mir zeigen, welche unserer Kunden am stärksten von schlechten Nachrichten betroffen sein könnten?</em></p></li></ol></li></ol><p>Nach kurzer Zeit liefert der Agent eine perfekt formatierte, vollständige Antwort. Aufgrund der Beschaffenheit von LLMs kann Ihre Antwort etwas anders formatiert sein, aber für diesen Durchlauf hat der Agent Folgendes zurückgegeben:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta1e163fd7c4416bd/6a17f21f6864a4e35bb688ad/17b4ed43d279f9e53ee9fe3d482d0b2ec359a083-1600x1088.png" alt="Eine Antwort, die vom Elastic Agent Builder als Finanzassistent für folgende Kunden erstellt wurde: Kunden, die am stärksten von negativen Nachrichten betroffen sind." /><h3>Was ist gerade passiert? Die Argumentation des Agenten</h3><p>Der Agent kannte die Antwort nicht einfach nur. Es wurde ein mehrstufiger Plan umgesetzt, dessen Mittelpunkt die Auswahl des besten Werkzeugs für die jeweilige Aufgabe bildete. Hier ein Einblick in den Denkprozess:</p><ul><li><p><strong>Identifizierte Absicht:</strong> Es wurden Schlüsselwörter aus Ihrer Frage, wie „Risiko“ und „negative Nachrichten“, mit der Beschreibung des <code>find_client_exposure_to_negative_news</code> -Tools abgeglichen.</p></li><li><p><strong>Plan ausgeführt:</strong> Es hat den Zeitrahmen aus Ihrer Anfrage extrahiert und einen <strong>einzigen Aufruf</strong> an dieses spezialisierte Tool durchgeführt.</p></li><li><p><strong>Die Arbeit wurde delegiert:</strong> Das Tool übernahm dann die gesamte schwere Arbeit: die verketteten Joins, die Wertberechnungen und die Sortierung.</p></li><li><p><strong>Ergebnis zusammengefasst:</strong> Abschließend formatierte der Agent die Rohdaten des Tools gemäß den Vorgaben in eine klare, für Menschen lesbare Zusammenfassung.</p></li></ul><p>Und wir müssen nicht nur raten, wenn wir unser Denken erweitern und mehr Details betrachten.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt93f6075be8495418/6a17f221af47b65eadcde0a4/6a4da9262d3f88c60bfd8f8bf9b67c3b84e961ba-1600x607.png" alt="Die 50 Dokumente, die der Finanzassistent bei Kunden mit der höchsten Belastung durch negative Nachrichten gefunden hat." /><h3>Der API-Pfad</h3><p>Sie können diese Konversation auch programmatisch starten. Senden Sie einfach die Eingabefrage an den <code>converse</code> API-Endpunkt und achten Sie darauf, die <code>agent_id</code> unseres <code>financial_manager</code> anzugeben.</p>POST kbn://api/agent_builder/converse
{
  "input": "Show me our largest positions affected by negative news",
  "agent_id": "financial_assistant"
}<h2>Für Entwickler: Integration mit der API</h2><p>Während die Kibana-Benutzeroberfläche ein fantastisches und intuitives Erlebnis beim Erstellen und Verwalten Ihrer Agenten bietet, kann alles, was Sie heute gesehen haben, auch programmatisch erreicht werden. Der Agent Builder basiert auf einer Reihe von APIs, die es Ihnen ermöglichen, diese Funktionalität direkt in Ihre eigenen Anwendungen, CI/CD-Pipelines oder Automatisierungsskripte zu integrieren.</p><p>Die drei wichtigsten Endpunkte, mit denen Sie arbeiten werden, sind:</p><ul><li><p><strong><code>/api/agent_builder/tools</code></strong>: Der Endpunkt zum Erstellen, Auflisten und Verwalten der wiederverwendbaren Fähigkeiten, die Ihre Agenten nutzen können.</p></li><li><p><strong><code>/api/agent_builder/agents</code></strong>Der Endpunkt zur Definition Ihrer Agenten-Personas, einschließlich ihrer wichtigen Anweisungen und Tool-Zuweisungen.</p></li><li><p><strong><code>/api/agent_builder/converse</code></strong>: Der Endpunkt für die Interaktion mit Ihren Agenten, den Start von Gesprächen und das Erhalten von Antworten.</p></li></ul><p>Eine vollständige, praktische Anleitung zur Verwendung dieser APIs für jeden Schritt dieses Tutorials finden Sie im zugehörigen <strong>Jupyter Notebook</strong> , das <a href="https://github.com/elastic/elasticsearch-labs/blob/main/supporting-blog-content/your-first-elastic-agent/Your_First_Elastic_Agent.ipynb">hier</a> in unserem GitHub-Repository verfügbar ist.</p><h2>Fazit: Jetzt sind Sie am Bauen</h2><p>Wir begannen damit, eine ES|QL-Abfrage zu nehmen und sie in eine wiederverwendbare Fähigkeit umzuwandeln. Anschließend entwickelten wir einen spezialisierten KI-Agenten, gaben ihm eine klare Mission und klare Regeln und statteten ihn mit diesen Fähigkeiten aus. Das Ergebnis ist ein hochentwickelter Assistent, der eine komplexe Frage verstehen und eine mehrstufige Analyse durchführen kann, um eine präzise, datengestützte Antwort zu liefern.</p><p>Dieser Workflow ist das Herzstück des neuen <strong>Agent Builders</strong> in Elastic. Es ist so konzipiert, dass es einfach genug ist, damit auch technisch nicht versierte Benutzer Agenten über die Benutzeroberfläche erstellen können, gleichzeitig aber differenziert genug, damit Entwickler auf Basis unserer APIs maßgeschneiderte KI-gestützte Anwendungen entwickeln können. Am wichtigsten ist jedoch, dass Sie LLMs sicher und geschützt mit Ihren eigenen Daten verbinden können, die von der von Ihnen definierten Expertenlogik gesteuert werden, und mit Ihren Daten kommunizieren können.</p><h2>Sind Sie bereit, Agenten für die Kommunikation mit Ihren Daten einzusetzen?</h2><p>Am besten festigt man das Gelernte, indem man selbst Hand anlegt. Probieren Sie alles, was wir heute besprochen haben, in unserem <a href="https://www.elastic.co/training/elastic-ai-agents-mcp"><strong>kostenlosen, interaktiven Praxisworkshop</strong></a> aus. Sie werden diesen gesamten Ablauf und mehr in einer speziellen Sandbox-Umgebung durchlaufen.</p><p>In einem zukünftigen Blogbeitrag zeigen wir Ihnen, wie Sie eine eigenständige Anwendung verwenden, die mit unserem <code>Financial Assistant</code> -Agenten interagiert, und gehen näher auf das <strong>Model Context Protocol (MCP)</strong> ein, das dies alles ermöglicht. In einem separaten Blogbeitrag werden wir die Unterstützung des Agent Builders für das sich entwickelnde Agent2Agent- oder A2A-Protokoll besprechen.</p><p>Bleibt dran und viel Spaß beim Bauen!</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[KI]]></category>
    <category><![CDATA[Agentische KI]]></category>
    <category><![CDATA[Inside 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>