Mit dem Docs-Agent eine KI-Inhaltssuche erstellen

Die Suche nach Informationen ist eine der häufigsten Anwendungen von generativen KI-Modellen (künstliche Intelligenz). Wenn Sie mit KI eine Conversational Suchoberfläche für Ihre Inhalte erstellen, können Ihre Nutzer spezifische Fragen stellen und direkte Antworten erhalten.

In dieser Anleitung erfahren Sie, wie Sie eine KI-gestützte Oberfläche für die dialogorientierte Suche für Ihre Inhalte erstellen. Es basiert auf dem Docs-Agent, einem Open-Source-Projekt, das mit der Google Gemini API eine dialogorientierte Suchoberfläche erstellt, ohne ein neues KI-Modell zu trainieren oder eine Modellabstimmung mit Gemini-Modellen durchzuführen. Das bedeutet, dass Sie diese Suchfunktion schnell erstellen und für kleine und große Inhaltsmengen verwenden können.

Ein Video mit einem Überblick über das Projekt und wie es erweitert werden kann, einschließlich Informationen von den Entwicklern, findest du unter AI Content Search | Build with Google AI. Alternativ können Sie mit dem Erweitern des Projekts beginnen, indem Sie der Anleitung unten folgen.

Überblick

Das Docs-Agent-Projekt bietet eine Oberfläche für die dialogorientierte Suche für bestimmte Inhalte, die von der Google Gemini API und generativen Modellen unterstützt wird. Nutzer können eine detaillierte Frage in einem dialogorientierten Stil stellen und eine detaillierte Antwort basierend auf einem bestimmten Inhalt erhalten. Im Hintergrund übernimmt der Docs-Agent die Frage, sucht in einer Vektordatenbank des Inhalts und erstellt einen detaillierten Prompt für das generative Modell, einschließlich Snippets relevanten Textes. Das generative Modell generiert eine Antwort auf die Frage und der Docs-Agent formatiert die Antwort und präsentiert sie dem Nutzer.

Funktionsdiagramm des Docs-AgentsAbbildung 1. Funktionsdiagramm der Projekt-App des Docs-Agents.

Damit der Docs-Agent Fragen zu Ihren Inhalten beantworten kann, müssen Sie eine Vektordatenbank dieser Inhalte erstellen. Sie teilen Ihren Inhalt in logische Textblöcke auf und generieren für jeden von ihnen einen Vektor. Diese Vektoren sind numerische Darstellungen der Informationen in jedem Block und werden mit einer KI-Funktion zur Texteinbettung aus den generativen Modellen von Google generiert.

Wenn ein Nutzer eine Frage stellt, verwendet der Docs-Agent dieselbe Texteinbettungsfunktion, um eine numerische Darstellung dieser Frage zu erstellen, und verwendet diesen Wert, um in der Vektordatenbank zu suchen und ähnliche Inhalte zu finden. Die besten Ergebnisse werden einem Prompt für das generative Modell hinzugefügt. Das KI-Modell übernimmt die Frage und die zusätzlichen Kontextinformationen und generiert eine Antwort.

Projekt einrichten

In dieser Anleitung erfahren Sie, wie Sie das Docs-Agent-Projekt für Entwicklung und Tests einrichten. Die allgemeinen Schritte bestehen darin, erforderliche Software zu installieren, einige Umgebungsvariablen festzulegen, das Projekt aus dem Code-Repository zu klonen und die Konfigurationsinstallation auszuführen. Im Codeprojekt werden Pakete und die Python-Laufzeitumgebung mithilfe von Python Poetry verwaltet.

Erforderliche Komponenten installieren

Das Docs-Agent-Projekt verwendet Python 3 und Python Poetry, um Pakete zu verwalten und die Anwendung auszuführen. Die folgende Installationsanleitung bezieht sich auf einen Linux-Hostcomputer.

So installieren Sie die erforderliche Software:

  1. Installieren Sie Python 3 und das Paket der virtuellen Umgebung venv für Python.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. Installieren Sie Python Poetry, um Abhängigkeiten und die Paketerstellung für das Projekt zu verwalten.
    curl -sSL https://install.python-poetry.org | python3 -
    

Sie können Python-Poesie verwenden, um weitere Python-Bibliotheken hinzuzufügen, wenn Sie das Projekt erweitern.

Umgebungsvariablen festlegen

Legen Sie einige Umgebungsvariablen fest, die erforderlich sind, damit das Codeprojekt des Docs-Agents ausgeführt werden kann, einschließlich eines Google Gemini API-Schlüssels und einer Einstellung für Python Poetry. Unter Linux können Sie diese Variablen der Datei $HOME/.bashrc hinzufügen, um sie als Standardeinstellungen für Ihre Terminalsitzungen festzulegen.

So legen Sie die Umgebungsvariablen fest:

  1. Rufen Sie einen Google Gemini API-Schlüssel ab und kopieren Sie den Schlüsselstring.
  2. Legen Sie den API-Schlüssel als Umgebungsvariable fest. Verwenden Sie auf Linux-Hosts den folgenden Befehl.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Legen Sie den Parameter PYTHON_KEYRING_BACKEND fest, um ein bekanntes Problem in Bezug auf Python-Poetry zu beheben. Verwenden Sie auf Linux-Hosts den folgenden Befehl.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

Projekt klonen und konfigurieren

Laden Sie den Projektcode herunter und verwenden Sie den Poetry-Installationsbefehl, um die erforderlichen Abhängigkeiten herunterzuladen und das Projekt zu konfigurieren. Sie benötigen die git-Versionsverwaltungssoftware, um den Projektquellcode abzurufen. Extern So laden Sie den Projektcode herunter und konfigurieren ihn:

  1. Klonen Sie das Git-Repository mit dem folgenden Befehl.
    git clone https://github.com/google/generative-ai-docs
    
  2. Optional können Sie Ihr lokales Git-Repository für die Verwendung von Sparse Checkout konfigurieren, damit Sie nur die Dateien für das Docs-Agent-Projekt haben.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. Wechseln Sie in das Stammverzeichnis des Projekts docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. Führen Sie den Poetry-Installationsbefehl aus, um Abhängigkeiten herunterzuladen und das Projekt zu konfigurieren:
    poetry install
    

Inhalte vorbereiten

Das Docs-Agent-Projekt ist für die Arbeit mit Textinhalten konzipiert und enthält Tools speziell für Websites, die Markdown als Quellformat verwenden. Wenn Sie mit Websiteinhalten arbeiten, sollten Sie die Verzeichnisstruktur der bereitgestellten Website beibehalten (oder replizieren), damit die Inhaltsverarbeitung diese Inhalte zuordnen und Links erstellen kann.

Je nach Format und Details Ihrer Inhalte müssen Sie Ihre Inhalte möglicherweise bereinigen, um nicht öffentliche Informationen, interne Notizen oder andere Informationen zu entfernen, die nicht durchsuchbar sein sollen. Sie sollten die grundlegende Formatierung wie Titel und Überschriften beibehalten, da diese beim Erstellen logischer Textaufteilungen oder -blöcke bei der Inhaltsverarbeitung helfen.

So bereiten Sie Inhalte für die Verarbeitung vor:

  1. Erstellen Sie ein Verzeichnis für die Inhalte, die der KI-Agent durchsuchen soll.
    mkdir docs-agent/content/
    
  2. Kopieren Sie den Inhalt in das Verzeichnis docs-agent/content/. Wenn es sich beim Inhalt um eine Website handelt, sollten Sie die Verzeichnisstruktur der bereitgestellten Website beibehalten (oder replizieren).
  3. Bereinigen oder bearbeiten Sie die Inhalte nach Bedarf, um nicht öffentliche oder andere Informationen zu entfernen, die nicht in den Suchvorgängen enthalten sein sollen.

Flutter-Dokumente zum Testen verwenden

Wenn Sie eine Reihe von Inhalten zum Testen des Docs-Agents benötigen, können Sie zum Testen die Flutter-Entwicklerdokumentation verwenden.

So laden Sie die Flutter-Entwicklerdokumentation herunter:

  1. Wechseln Sie in das Inhaltsverzeichnis für die Inhalte, die der KI-Agent durchsuchen soll.
    cd docs-agent/content/
    
  2. Klonen Sie die Flutter-Dokumente im Verzeichnis docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

Inhalte verarbeiten

Damit der Such-Agent effektiv nach Inhalten suchen kann, die sich auf Nutzerfragen beziehen, müssen Sie eine Datenbank mit Vektoren erstellen, die Ihre Inhalte darstellen. Die Vektoren werden mithilfe einer generativen KI-Modellfunktion namens Texteinbettung generiert. Texteinbettungen sind numerische Darstellungen des Textinhalts. Sie nähern sich der semantischen Bedeutung des Textes als Satz von Zahlen an. Numerische Darstellungen von Informationen ermöglichen es dem System, die Frage eines Nutzers zu übernehmen, ihre Bedeutung mithilfe derselben Texteinbettungsfunktion anzunähern, und dann verwandte Informationen als mathematische Berechnung mithilfe des Algorithmus k-nächstliche Nachbarn (k-NN) zu finden.

Textinhalt teilen

Die Menge an Text, die ein Texteinbettungsvektor effektiv darstellen kann, ist begrenzt. In diesem Projekt wird der in einem Vektor dargestellte Text auf 3.000 Zeichen oder weniger begrenzt. Das bedeutet, dass Sie Ihren Inhalt unter dieser Zeichenbeschränkung in Blöcke aufteilen müssen. In diesem Abschnitt wird beschrieben, wie Sie ein Skript aus dem Docs-Agent-Projekt verwenden, um Markdown-Dateien in kleinere Textblöcke aufzuteilen. Tipps zum Arbeiten mit anderen Inhaltsformaten findest du unter Umgang mit anderen Formaten.

So teilen Sie Inhalte im Markdown-Format auf:

  1. Konfigurieren Sie die Eingabeparameter für das Verarbeitungsskript, indem Sie die Datei docs-agent/config.yaml bearbeiten. Dieses Beispiel bezieht sich auf einen Teil der Flutter-Dokumente:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. Speichern Sie die Änderungen an dieser Konfigurationsdatei.
  3. Rufen Sie das Projektverzeichnis docs-agent auf:
    cd docs-agent/
    
  4. Teilen Sie den Markdown-Quellinhalt mit dem Befehl agent chunk auf:
    agent chunk
    

Das Skript verarbeitet den Eingabeinhalt und erstellt Ausgabetextdateien im Verzeichnis docs-agent/data, wobei der Text anhand von Titeln, Überschriften und zugehörigen Absätzen aufgeteilt wird. Je nach Größe der Inhalte kann die Verarbeitung einige Zeit dauern.

Vektoren für Texteinbettungen erstellen

Nachdem Sie den Inhalt in aussagekräftige Blöcke in passender Größe aufgeteilt haben, können Sie die Vektordatenbank mithilfe einer Texteinbettungsfunktion mit Ihrem Inhalt füllen. Im Docs-Agent-Projekt wird die Chroma-Vektordatenbank verwendet, um Vektoren für Texteinbettungen zu speichern. In dieser Anleitung erfahren Sie, wie Sie mithilfe des Docs-Agents-Skripts Ihren aufgeteilten Inhalt in eine Vektordatenbank einfügen.

So generieren Sie Texteinbettungen und füllen die Vektordatenbank:

  1. Rufen Sie das Projektverzeichnis docs-agent auf:
    cd docs-agent/
    
  2. Füllen Sie die Vektordatenbank mit Ihrem Inhalt mit dem Befehl agent populate:
    agent populate
    

Dieses Skript verwendet die Google Gemini API, um Vektoren für Texteinbettungen zu generieren, und speichert dann die Ausgabe in der Vektordatenbank. Je nach Größe des Inhalts kann die Verarbeitung einige Zeit dauern.

Andere Formate verarbeiten

Das Docs-Agent-Projekt ist für die Arbeit mit Websiteinhalten im Markdown-Format konzipiert. Die Projektautoren haben einige Konvertierungsskripts erstellt, um andere Arten von Inhalten im Markdown-Format zu generieren, darunter Google Docs, Portable Document Format (PDF) und Gmail. Weitere Informationen zur Verwendung dieser Converter finden Sie im Verzeichnis docs-agent/apps_script des Code-Repositorys.

Andere Inhaltsformate konvertieren

Sie können auch andere Inhaltsformate mit dem Projekt verwenden. Diese zusätzlichen Methoden müssen jedoch von Ihnen oder anderen Mitgliedern der Community entwickelt werden. Wenn Sie ähnliche Lösungen entwickeln, sehen Sie sich die Informationen unter Issues (Probleme) und Pull-Anfragen im Code-Repository an.

Der Schlüsselcode, den Sie zur Unterstützung anderer Inhaltsformate erstellen müssen, ist ein Splitter-Skript wie das files_to_plain_text.py-Skript. Versuchen Sie, ein Skript oder Programm zu erstellen, das eine ähnliche Ausgabe wie dieses Skript erzeugt. Denken Sie daran, dass die endgültige Textausgabe nur minimale Formatierung und irrelevante Informationen enthalten sollte. Wenn du Inhaltsformate wie HTML oder JSON verwendest, solltest du so viel von nicht informativen Formatierungen (Tags, Skripts, CSS) wie möglich entfernen, damit die Werte der von dir generierten Texteinbettungen nicht verzerrt werden.

Nachdem Sie ein Splitter-Skript für das Inhaltsformat erstellt haben, sollten Sie das Skript populate_vector_database.py ausführen können, um Ihre Vektordatenbank zu füllen. Weitere Informationen zum Verarbeiten von Dateien für den Docs-Agent finden Sie in der Readme-Datei für die Vorverarbeitung des Docs-Agents.

App testen

Wenn Sie die Vektordatenbank ausgefüllt haben, kann das Projekt getestet werden. Das Projekt bietet eine Paketfunktion, mit der Sie das Projekt lokal ausführen können.

So führen und testen Sie die Weboberfläche des Projekts:

  1. Rufen Sie das Projektverzeichnis docs-agent auf:
    cd docs-agent/
    
  2. Führen Sie das Startskript der Webanwendung aus:
    agent chatbot
    
  3. Rufen Sie in Ihrem Webbrowser die URL-Webadresse auf, die in der Ausgabe des Startskripts angezeigt wird, und testen Sie die Anwendung.
    * Running on http://your-hostname-here:5000
    

Implementierungsmöglichkeiten

Die Gemini API bietet Programmiertools, die Komponenten der Implementierung des Docs-Agents ersetzen können, insbesondere die Gemini-Modellvariante „Semantischer Abruf“ und „Zugeordnete Fragenbeantwortung“ (AQA). Sie können die Funktion Semantic Retrieval der Gemini API verwenden, um die separate Vektordatenbank zu ersetzen. Mit der Funktion „Semantic Retrieval“ können Sie Einbettungen für Ihre Inhalte generieren und diese Inhalte speichern. Das AQA-Gemini-Modell ist darauf ausgelegt, Fragen mit Quellmaterial in einem Prompt zu beantworten. Sie verwenden den semantischen Abruf zusammen mit dem AQA-Modell, um innerhalb der Gemini API Fragen zu Ihren Inhalten zu beantworten.

Der Docs-Agent enthält Konfigurationsoptionen für die Verwendung der Semantic Retrieval API-Funktion, dieses AQA Gemini-Modells oder beidem. Weitere Informationen finden Sie in der Readme-Datei zum Docs-Agent.

Zusätzliche Ressourcen

Weitere Informationen zum Docs-Agent-Projekt finden Sie im Code-Repository. Wenn Sie Hilfe beim Erstellen der Anwendung benötigen oder mit dem Entwickler zusammenarbeiten möchten, besuchen Sie den Server der Google Developers-Community Discord.

Produktionsanwendungen

Wenn Sie den Docs-Agent für eine große Zielgruppe bereitstellen möchten, beachten Sie bitte, dass die Verwendung der Google Gemini API möglicherweise Ratenbegrenzungen und anderen Nutzungsbeschränkungen unterliegt. Wenn Sie mit der Gemini API wie Docs Agent eine Produktionsanwendung erstellen möchten, sollten Sie sich die Google Cloud Vertex AI-Dienste ansehen, die die Skalierbarkeit und Zuverlässigkeit Ihrer Anwendung verbessern.