Websitesuche optimieren: Kontextbezogene Antworten mit generativer KI

Generative KI bezieht sich auf den Einsatz von künstlicher Intelligenz, um neue Inhalte wie Text, Bilder, Musik, Audio und Videos zu erstellen. Generative KI nutzt ein ML-Modell (maschinelles Lernen), um die Muster und Beziehungen in einem Dataset aus von Menschen erstellten Inhalten zu ermitteln.

Diese Technologie hat sich durch Anwendungen wie Gemini beeindruckt. Sie fragen sich vielleicht, wie ich Generative AI-Tools in meine Webprodukte

Ein häufiger Anwendungsfall ist die Bereitstellung einer besseren Benutzeroberfläche, über die Nutzer Fragen zu den Inhalten einer Website stellen können. Mithilfe von maschinellem Lernen können Sie die Suchergebnisse für Ihre Nutzer erheblich verbessern.

Sie könnten eine Benutzeroberfläche erstellen, in der Nutzer ihre Frage eingeben, die dann an ein Large Language Model (LLM) wie Gemini gesendet wird. Die Antworten werden dann den Nutzern angezeigt.

Angenommen, auf dieser Website gäbe es eine solche Funktion. Ein Nutzer möchte wissen, welche APIs in Interop 2024 enthalten sind, und gibt die folgende Abfrage ein:

What are the features included in Interop 24?

Leider ist die Ausgabe wahrscheinlich aus mehreren Gründen falsch:

  • Der Nutzer hat dem LLM wenig Kontext für die Frage gegeben. Daher ist das LLM eher geneigt, falsche Antworten oder Halluzinationen zurückzugeben.
  • Das LLM wurde wahrscheinlich vor der Einführung von Interop 2024 trainiert bzw. seine Funktionen wurden entschieden und sind sich dieser Informationen nicht bewusst.

LLMs können zwar aktuellere Informationen finden, aber LLM-Trainingsdatensätze sind von Natur aus veraltet. Es kann sehr zeitaufwendig und teuer sein, aktuelle Ergebnisse zu erzielen.

Prompt Engineering verwenden

Prompt Engineering ist eine Reihe von Techniken, mit denen Sie die beste Leistung aus einem LLM herausholen können.

Eine Möglichkeit besteht darin, im Prompt zusätzlichen Kontext anzugeben, damit das LLM mit größerer Wahrscheinlichkeit Inhalte ausgibt, die sich auf den Kontext beziehen.

Anknüpfend an unser Beispiel für Interoperabilität geben wir als ersten Schritt den vollständigen Inhalt des Artikels als Kontext an. Dann fügen Sie die Frage als Eingabe für das LLM hinzu, die sie beantworten soll. Beispiel:

Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)

Input:
What are the features included in Interop 2024?

Die Ausgabe von Gemini sollte in etwa so aussehen:

The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL

Diese Antwort ist wahrscheinlich viel besser als bei einem Prompt ohne Kontext, da sie auf dem bereitgestellten Kontext basiert.

Mit RAG skalieren

Anstatt beispielsweise eine Frage zu einem einzelnen Artikel zu beantworten, soll das LLM mehr Fragen zu web.dev beantworten und dabei einen beliebigen Artikel als zusätzlichen Kontext verwenden. Angesichts des Kontextfensters von Gemini 1.5 von 1 Million Tokens ist das für kleinere Websites zwar möglich, aber größere Prompts sind langsamer und kostspieliger in der Ausführung.

Die Eingabe- und Ausgabelängen von LLMs werden in Tokens gemessen und in Rechnung gestellt. Ein Token ist eine Möglichkeit, eine häufige Folge von Zeichen in einer Texteingabe darzustellen. Die Anzahl der Tokens ist in der Regel größer als die Anzahl der Wörter. Die Eingabe im ersten Beispiel enthielt beispielsweise 775 Wörter, die durch 1.097 Token dargestellt wurden. Unterschiedliche LLMs können Tokens unterschiedlich berechnen. Die meisten bieten eine API oder einen Endpunkt zur Berechnung der Anzahl der Tokens für die Texteingabe.

Eine Lösung besteht darin, dem LLM relevante Artikel zur Verfügung zu stellen. Diese Aufgabe sollte aus zwei Teilen bestehen:

  1. Fügen Sie den Inhalt der Top-Artikel als Kontext hinzu, wenn Sie den LLM auffordern.
  2. Suchen Sie in den Inhalten nach Artikeln, die sich auf „Welche Funktionen sind in Interop 2024 enthalten?“ beziehen.

Wir möchten, dass die Gemini-Ergebnisse Inhalte basierend auf den folgenden Artikeln zurückgeben:

Die Eingabe sollte so aussehen:

Context:
Article 1:
Over the past two years... (trimmed)

Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)

Article 3:
Following on from the success of Interop 2022... (trimmed)

Input:
What are the features included in Interop 2024?

Mit diesem Kontext erhalten wir die erwartete Ausgabe.

* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL

Für diejenigen, die mit KI-Techniken vertraut sind, wird bei diesem Ansatz RAG verwendet, eine gängige Praxis, um die Wahrscheinlichkeit echter Antworten von generativen KI-Tools zu verbessern.

Die RAG-Methode kann zwar mit der regulären Volltextsuche funktionieren, hat aber auch Nachteile.

  • Mit der Volltextsuche kann die KI genau passende Keywords finden. LLMs können jedoch nicht die beabsichtigte Bedeutung hinter der Suchanfrage eines Nutzers ermitteln. Dies kann zu unvollständigen oder falschen Ergebnissen führen.
  • Es kann zu Problemen kommen, wenn Wörter mehrere Bedeutungen haben oder in den Suchanfragen Synonyme verwendet werden. Beispielsweise kann "Bank" (Finanzinstitut im Vergleich zu Flussufer) zu irrelevanten Ergebnissen führen.
  • Bei einer Volltextsuche werden möglicherweise Ergebnisse ausgegeben, die zwar die Suchbegriffe enthalten, aber nicht mit dem Ziel des Nutzers übereinstimmen.

Die semantische Suche ist eine Methode, mit der die Suchgenauigkeit verbessert wird, indem sich auf die folgenden wichtigen Aspekte konzentriert wird:

  • Suchabsicht: Hier wird versucht, den Grund zu ermitteln, warum ein Nutzer nach etwas sucht. Was möchten sie finden oder erreichen?
  • Kontextbezogene Bedeutung: Wörter und Wortgruppen werden in Bezug auf den umgebenden Text sowie andere Faktoren wie der Standort des Nutzers oder der Suchverlauf des Nutzers interpretiert.
  • Beziehung zwischen Konzepten: Die semantische Suche verwendet Knowledge Graphs (große Netzwerke verwandter Entitäten) und Natural Language Processing, um zu verstehen, wie Wörter und Ideen zusammenhängen.

Wenn Sie also Tools mit semantischen Suchfunktionen erstellen, basiert das Suchergebnis auf dem Gesamtzweck der Suchanfrage und nicht auf Keywords. Das bedeutet, dass ein Tool relevante Dokumente finden kann, auch wenn das genaue Keyword nicht vorhanden ist. Außerdem können Ergebnisse vermieden werden, in denen das Wort zwar enthalten ist, aber eine andere Bedeutung hat.

Derzeit können Sie zwei Suchtools implementieren, die die semantische Suche nutzen: Vertex AI Search und Algolia AI Search.

Antworten aus veröffentlichten Inhalten ziehen

Sie haben gelernt, wie Sie mithilfe von Prompt-Engineering einem LLM Antworten zu Inhalten liefern lassen können, die es noch nie gesehen hat, indem Sie dem Prompt Kontext hinzufügen. Außerdem haben Sie gelernt, wie Sie diesen Ansatz mithilfe der Methode Retrieval-Augmented Generation (RAG) von einzelnen Artikeln auf einen ganzen Inhaltskorpus skalieren. Sie haben gelernt, wie die semantische Suche die Ergebnisse für Suchanfragen von Nutzern weiter verbessern kann, indem Sie RAG in Ihrem Produkt besser implementieren.

Es ist ein bekanntes Problem, dass Tools mit generativer KI „halluzinieren“ können. Das macht sie im besten Fall, manchmal unzuverlässig oder im schlimmsten Fall aktiv für ein Unternehmen aktiv. Mit diesen Techniken können sowohl Nutzer als auch Entwickler die Zuverlässigkeit verbessern und möglicherweise das Vertrauen in die Ausgabe dieser Anwendungen stärken.