Elasticsearch verfügt über native Integrationen mit den branchenführenden Gen-AI-Tools und -Anbietern. Sehen Sie sich unsere Webinare zu den Themen „RAG-Grundlagen“ oder zum „Erstellen produktionsreifer Apps“ mit der Elastic-Vektordatenbank an.
Um die besten Suchlösungen für Ihren Anwendungsfall zu entwickeln, starten Sie jetzt eine kostenlose Cloud-Testversion oder testen Sie Elastic auf Ihrem lokalen Rechner.
Präzision. Wenn es darauf ankommt, ist es sehr wichtig. Wenn Sie nach etwas Bestimmtem suchen, ist Präzision äußerst wichtig. Manchmal liefert eine zu präzise Abfrage jedoch keine Ergebnisse. Daher ist es von Vorteil, den Umfang einer Abfrage flexibel erweitern zu können, um zusätzliche potenziell relevante Daten zu finden.
In diesem Blogbeitrag wird die Verwendung von Elasticsearch und Azure Open AI zum Erstellen einer Beispiel-App beschrieben, die zeigt, wie bei der Suche nach sehr spezifischen Immobilienobjekten genaue Ergebnisse erzielt werden und gleichzeitig relevante Ergebnisse bereitgestellt werden, wenn keine spezifische Übereinstimmung verfügbar ist. Wir gehen alle erforderlichen Schritte durch, um einen Elasticsearch-Index zusammen mit einer Suchvorlage zu erstellen. Anschließend erläutern wir den gesamten Prozess der Erstellung einer App, die Azure OpenAI verwendet, um Benutzerabfragen entgegenzunehmen und in Elasticsearch-Suchvorlagenabfragen umzuwandeln, die erstaunlich benutzerdefinierte Ergebnisse liefern können.
Hier ist eine Liste aller Ressourcen, die wir zum Erstellen unserer Beispiel-App zur Immobiliensuche verwenden werden:
- Elasticsearch-Index und Suchvorlage
- Azure OpenAI
- Azure Maps-API
- Codespaces Jupyter Notebook
- Semantischer Kernel
- C#-App mit Blazor-Frontend
Intelligenter Abfrage-Workflow

Dieser Workflow kombiniert LLM, LLM-Tools und Suche, um Abfragen in natürlicher Sprache in strukturierte, relevante Suchergebnisse umzuwandeln:
- LLM (Large Language Model) – Interpretiert komplexe Benutzerabfragen und orchestriert Tools, um die Suchabsicht zu extrahieren und den Kontext anzureichern.
- LLM-Tools – Jedes LLM-Tool ist ein C#-Programm, das wir für diesen Beitrag erstellt haben. Es gibt drei Werkzeuge:
- Tool zur Parameterextraktion: zieht wichtige Attribute wie Schlafzimmer, Badezimmer, Ausstattung und Preis aus der Abfrage.
- GeoCode-Tool: Konvertiert Ortsnamen in Breiten-/Längengrade zur räumlichen Filterung.
- Suchtool: füllt eine Elasticsearch-Suchvorlage mit Abfrageparametern und führt eine Suche aus. Hybridsuche – Führt eine Hybridsuche (Volltext + dichter Vektor) mit integrierter ML-Inferenz aus. Dieser mehrschichtige Ansatz gewährleistet intelligentere, kontextbezogene Abfrageerlebnisse für den Endbenutzer.
Anwendungsarchitektur
Hier ist ein Systemarchitekturdiagramm der Beispiel-App. Wir werden ein Codespaces Jupyter Notebook verwenden, um mit Elastic Cloud zu interagieren.

Voraussetzungen
Klonen Sie das Beispiel-App-Repository in Codespaces
Beginnen Sie mit dem Klonen des Codes für die Beispielanwendung. Sie können dies in GitHub Codespaces tun, das eine Möglichkeit zum Klonen und Ausführen von Anwendungen bietet. Klicken Sie auf „Neuer Codespace“.

Wählen Sie dann das Repository jwilliams-elastic/msbuild-intelligent-query-demo im Dropdown-Menü „Repository“ aus und klicken Sie auf „Codespace erstellen“.

Erstellen Sie .env Datei
Wir verwenden ein Python Jupyter Notebook, um auf Elastic Cloud zuzugreifen und mit ihr zu interagieren. Dabei werden die Konfigurationseinstellungen verwendet, die in einer Konfigurationsdatei gespeichert sind. Die Konfigurationsdatei für das Notebook sollte den Dateinamen .env haben und Sie werden es jetzt erstellen.
- Klicken Sie in GitHub Codespaces auf die Schaltfläche „Neue Datei“und fügen Sie eine Datei mit dem Namen .envhinzu.
- Fügen Sie der neu erstellten .env -Datei den folgenden Inhalt hinzu Datei

Wie Sie sehen, fehlen uns einige Werte, ELASTIC_URL und ELASTIC_API_KEY, die der .env hinzugefügt werden müssen. Datei. Lassen Sie uns diese jetzt erhalten, indem wir ein serverloses Elasticsearch-Projekt erstellen, das als Backend dient und die Suchfunktion für unsere Beispiel-App bereitstellt.
Erstellen eines Elastic Serverless-Projekts
- Gehen Sie zu cloud.elastic.co und klicken Sie auf „Neues serverloses Projekt erstellen“
- Klicken Sie auf „Weiter“ , um zur Elasticsearch- Lösung zu gelangen.
- Wählen Sie „Optimiert für Vektoren“
- Legen Sie Azure als Cloud-Anbieter fest
- Klicken Sie auf „Serverloses Projekt erstellen“
- Klicken Sie im Hauptnavigationsmenü auf Erste Schritte und scrollen Sie nach unten, um die Verbindungsdetailszu kopieren
- Klicken Sie auf die Schaltfläche „Kopieren“ , um den Elasticsearch-Endpunkt aus den Verbindungsdetailszu kopieren
- Aktualisieren Sie .env Datei, um die ELASTIC_URL als kopierten Elasticsearch-Endpunktfestzulegen

Erstellen eines Elastic-API-Schlüssels
- Öffnen Sie die Seite „Erste Schritte“ von Elasticsearch und klicken Sie im Abschnitt „API-Schlüssel hinzufügen“ auf „Neu“ .
- Geben Sie einen Schlüsselnamenein
- Klicken Sie auf API-Schlüssel erstellen
- Klicken Sie auf die Schaltfläche „Kopieren“, um den API-Schlüsselwert zu kopieren
- Zurück in Codespaces, wo wir die .envhaben Öffnen Sie die Datei zum Bearbeiten und fügen Sie den kopierten Wert ein, um den ELASTIC_API_KEYfestzulegen.

Öffnen Sie das Codespaces-Notebook und installieren Sie die Bibliotheksabhängigkeiten
Wählen Sie im Datei-Explorer die Datei VectorDBSetup.ipynb aus, um das Notebook zu öffnen. Suchen Sie nach dem Laden des Notebooks den Notebook -Abschnitt mit dem Titel „Bibliotheken installieren“. Klicken Sie auf die Schaltfläche „Abspielen“ des Abschnitts.
Wenn Sie zum ersten Mal ein Notebook in GitHub Codespaces ausführen, werden Sie aufgefordert, einen Codespaces-Kernel auszuwählen und die Python-Umgebung zu konfigurieren.

Definieren Sie Importe und laden Sie Umgebungsvariablen mit Codespaces Notebook
Gehen Sie zum nächsten Abschnitt im Notebook mit dem Titel „Importe definieren und Umgebungsvariablen laden“. Klicken Sie auf die Schaltfläche „Abspielen“ des Abschnitts.
Dieser Code importiert die vom Notebook verwendeten Python-Bibliotheken und lädt die Umgebungsvariablen aus der .env die Sie zuvor erstellt haben.

Erstellen Sie einen Elastic ML-Inferenzendpunkt mit dem Codespaces-Notebook
Gehen Sie zum nächsten Notebook -Abschnitt mit dem Titel „ML-Inferenz-Endpunkt erstellen“. Klicken Sie auf die Schaltfläche „Abspielen“ des Abschnitts.
Dadurch wird ein neuer ML-Inferenz-Endpunkt im Elasticsearch-Projekt erstellt, den wir zum Generieren von Text-Embeddings aus unseren Daten verwenden. Text-Embeddings sind Vektordarstellungen von Text, die in Elasticsearch gespeichert werden, um die semantische Suche zu unterstützen.

Erstellen Sie einen Elasticsearch-Index mit Codespaces Notebook
Gehen Sie zum nächsten Notebook -Abschnitt mit dem Titel „Elasticsearch-Index erstellen“. Klicken Sie auf die Schaltfläche „Abspielen“ des Abschnitts.
Dadurch wird der Elasticsearch-Index erstellt, in dem unsere Beispieldaten und alle zugehörigen Vektordaten gespeichert werden, die über den ML-Inferenz-Endpunkt generiert werden.

Erstellen Sie eine Elasticsearch-Suchvorlage mit Codespaces Notebook
Fahren Sie mit dem nächsten Notebook -Abschnitt mit dem Titel „Suchvorlage“ fort. Klicken Sie auf die Schaltfläche „Abspielen“ des Abschnitts.
Dadurch wird eine Suchvorlage erstellt, die unsere Beispiel-App als Vorlage verwendet und mit den Wörtern gefüllt, die aus der Suchanfrage eines Benutzers analysiert wurden. Dadurch können wir konfigurieren und steuern, wie spezifisch wir beim Abfragen von Daten im Elasticsearch-Index sind.

Daten mithilfe des Codespaces Notebooks in den Elasticsearch-Index aufnehmen
Gehen Sie zum nächsten Abschnitt des Notebooks mit dem Titel „ Eigenschaftsdaten aufnehmen“. Klicken Sie auf die Schaltfläche „Abschnitt ausführen“.
Durch Ausführen dieses Codeabschnitts werden die in der Datei „properties.jsonl“enthaltenen Beispieldaten in großen Mengen geladen. Nach einigen Minuten sollten Sie eine Bestätigung sehen, dass der Vorgang erfolgreich abgeschlossen wurde. Sie können bestätigen, dass der Index den erwarteten Datensatz enthält, indem Sie in Elastic Cloud zum Abschnitt Indexverwaltung gehen.

Erstellen Sie appsetting.json, um die C#-App zu konfigurieren
Nachdem unser Elasticsearch-Index erstellt und mit Daten gefüllt wurde, können wir nun die Beispiel-App für die Arbeit mit Elastic und Azure Cloud konfigurieren. Die C#-Beispiel-App verwendet eine Datei namens appsettings.json , um ihre Zugriffsinformationen wie API-Schlüssel zu speichern und zu laden. Sie erstellen die Datei appsettings.json jetzt mit dem Editor in Codespaces.
1. Erstellen Sie appsettings.json im HomeFinderApp -Ordner
2. Fügen Sie den folgenden Code in die Datei appsettings.json ein
3. Suchen Sie im Abschnitt „ElasticSettings“ nach den URL- und API -Schlüsselwerten. Legen Sie sie auf die gleichen Werte fest, die Sie in der .env-Datei festgelegt haben Datei in einem früheren Schritt.

Erstellen des Azure OpenAI-Diensts
Unsere Beispiel-App verwendet Azure OpenAI, um die Abfrage des App-Benutzers zu analysieren und dann eine Anfrage an Elasticsearch zu senden, indem sie die Suchvorlage ausfüllt, um zu versuchen, flexibel mitzuteilen, wonach der Benutzer sucht.
- Öffnen Sie einen neuen Browser-Tab und gehen Sie im Azure-Portal zu AI Foundry | Azure OpenAI . Klicken Sie auf +Erstellen
- Wählen Sie im Erstellungsformular eine Ressourcengruppe aus.
- Geben Sie einen Namenein
- Wählen Sie eine Preisstufe
- Klicken Sie auf Weiter
- Klicken Sie auf der Registerkarte „Netzwerk“ auf „Weiter“
- Klicken Sie auf der Registerkarte Tags auf Weiter
- Klicken Sie auf der Registerkarte „Überprüfen und senden“ auf „Erstellen“ .
- Sobald die Erstellung abgeschlossen ist, klicken Sie auf „Zur Ressource gehen“.
- Wählen Sie im linken Navigationsmenü „Schlüssel und Endpunkt“ aus.
- Kopieren Sie den Endpunkt und fügen Sie ihn in die von Ihnen erstellte Datei appsettings.json in Ihrem Browser-Tab mit dem geöffneten Codespaces-Editor ein.
- Kehren Sie dann zu Ihrem Browser-Tab zurück, der den Azure OpenAI -Schlüssel und die Endpunktseite enthält. Klicken Sie auf die Schaltfläche „Kopieren“ für Schlüssel 1 und fügen Sie den kopierten Wert in die Datei „appsettings.json“ ein, zurück in Ihrem Browser-Tab, in dem der Codespaces-Editor geöffnet ist.

Fügen Sie dem Azure Open AI-Dienst die Bereitstellung des GPT-4O-Modells hinzu
Großartig, wir haben jetzt einen laufenden Azure OpenAI-Dienst, aber es ist noch eine Modellbereitstellung erforderlich, um uns die LLM-Funktionen bereitzustellen, die unsere Beispiel-App benötigt. Es stehen unzählige Modelle zur Auswahl. Lassen Sie uns gpt-4o bereitstellen, da es bereits in der von Ihnen erstellten Datei appsettings.json angegeben ist.
- Gehen Sie zu Azure AI Foundry und klicken Sie auf „Bereitstellung erstellen“
- Suchen Sie nach gpt-4o und wählen Sie es aus den Ergebnissen aus
- Klicken Sie auf „Bestätigen“ , um es auszuwählen
- Klicken Sie auf „Bereitstellen“ , um das Modell bereitzustellen
Nachdem Sie das gpt-4o- Modell erfolgreich bereitgestellt haben, können Sie im linken Navigationsmenü „ Bereitstellungen “ auswählen und bestätigen, dass die gpt-4o- Bereitstellung mit dem Status „Erfolgreich“ aufgeführt ist.

Erstellen eines Azure Maps-Kontos
Wir möchten, dass die Nutzer unserer Beispiel-App in bestimmten Gebieten nach Immobilien suchen können, ohne dabei zu spezifisch sein zu müssen. Wenn jemand nach einem Grundstück in der Nähe des örtlichen Bauernmarkts suchen möchte, ist Azure Maps ein Dienst, mit dem das OpenAI LLM die Breiten- und Längengradkoordinaten für den Markt abrufen kann. Die Koordinaten können dann in die auf Suchvorlagen basierenden Anfragen aufgenommen werden, die für Benutzerabfragen, die bestimmte Standorte und geografische Entfernungen berücksichtigen, an Elasticsearch gesendet werden.
- Klicken Sie in Azure Maps-Konten auf Erstellen
- Auswählen einer Ressourcengruppe
- Geben Sie einen Namenein
- Stimmen Sie der Lizenz- und Datenschutzerklärung zu
- Klicken Sie auf „Überprüfen und erstellen“
- Klicken Sie auf Erstellen
- Sobald die Kontoerstellung abgeschlossen ist, klicken Sie auf „Zur Ressource gehen“.
- Klicken Sie im linken Navigationsmenü auf „Authentifizierung“
- Kopieren Sie den Primärschlüsselwert und fügen Sie ihn als Wert des API-Schlüssels im Abschnitt „AzureMapsSettings“ der Datei „appsettings.json“ ein, zurück auf der Registerkarte Ihres Browsers mit dem Codespaces-Editor.

Probieren Sie die Beispiel-App aus
Jetzt kommt der spaßige Teil. Es ist Zeit, die Beispiel-App auszuführen. Wir verfügen über alle Konfigurationsdetails sowie die Elastic Cloud- und Azure Cloud-Ressourcen, die wir zum Betrieb der App benötigen.
1. Öffnen Sie ein Terminalfenster im Codespaces-Editor.
2. Verwenden Sie den folgenden Befehl, um das aktive Verzeichnis in den Beispiel-App-Ordner zu ändern.
3. Verwenden Sie den folgenden Dotnet -Befehl, um die App auszuführen.
4. Klicken Sie auf die Schaltfläche „Im Browser öffnen“,wenn sie angezeigt wird.
5. Testen Sie die Standardsuche und probieren Sie dann einige Ihrer eigenen benutzerdefinierten Suchen aus. Wenn Sie weitere Details dazu sehen möchten, was im Backend zur Generierung der Suchergebnisse ausgeführt wird, können Sie auf den Link „Anzeigen“neben „Toolaufrufe“ klicken.

Bonus: Wenn Sie GPT-4o wirklich testen möchten, versuchen Sie die folgende Suche: Ich suche nach einer Immobilie in der Nähe von Disney World, Florida, mit über 30 Schlafzimmern und über 20 Badezimmern, einem Pool und einer Garage und in Strandnähe für weniger als 200.000. Diese Abfrage gibt nach mehreren Aufrufen des Suchtools Ergebnisse zurück.
Elastic ist Ihre Lösung für Search AI
Die laufende App ist ein Beispiel für die geführte Suche von Gen AI LLM unter Verwendung von Elasticsearch über Suchvorlagen als grundlegende Datenquelle. Experimentieren Sie ruhig und passen Sie die Beispiel-App an, um ein präzises und dennoch flexibles Sucherlebnis zu schaffen, das Ihren Benutzern hilft, das zu finden, wonach sie suchen.
Vielen Dank fürs Lesen. Probieren Sie Elastic Cloud aus.




