Die Suche nach Informationen ist eine der häufigsten Anwendungen von generativen Modellen der künstlichen Intelligenz (KI). Wenn Sie mithilfe von KI eine Konversationssuche für Ihre Inhalte erstellen, können Nutzer bestimmte Fragen stellen und direkte Antworten erhalten.
In dieser Anleitung erfahren Sie, wie Sie eine KI-gestützte Konversationsoberfläche für Ihre Inhalte erstellen. Es basiert auf Docs Agent, einem Open-Source-Projekt, das die Google Gemini API verwendet, um eine Konversationsoberfläche für die Suche zu erstellen, ohne ein neues KI-Modell zu trainieren oder die Modelle mit Gemini-Modellen zu optimieren. So können Sie diese Suchfunktion schnell einrichten und für kleine und große Inhaltsmengen verwenden.
Eine Videoübersicht über das Projekt und seine Erweiterungsmöglichkeiten, einschließlich Einblicken von den Entwicklern, finden Sie unter KI-gestützte Inhaltssuche | Mit Google AI entwickeln. Andernfalls können Sie mit der Erweiterung des Projekts beginnen, indem Sie der Anleitung unten folgen.
Übersicht
Das Docs Agent-Projekt bietet eine Konversationssuchoberfläche für einen bestimmten Inhaltssatz, die von der Google Gemini API und generativen Modellen unterstützt wird. Nutzer können eine detaillierte Frage in einem Konversationsstil stellen und eine detaillierte Antwort auf der Grundlage eines bestimmten Inhaltssets erhalten. Im Hintergrund sucht der Docs-Agent anhand der Frage in einer Vektordatenbank der Inhalte und erstellt einen detaillierten Prompt für das generative Modell, einschließlich Snippets mit relevantem Text. Das generative Modell generiert eine Antwort auf die Frage und der Docs-Agent formatiert die Antwort und präsentiert sie dem Nutzer.
Abbildung 1. Funktionsdiagramm der Docs Agent-Projekt-App
Damit der Docs-Agent Fragen zu Ihren Inhalten beantworten kann, müssen Sie eine Vektordatenbank dieser Inhalte erstellen. Sie teilen den Inhalt in logische Textblöcke auf und generieren für jeden einen Vektor. Diese Vektoren sind numerische Darstellungen der Informationen in jedem Chunk und werden mit einer KI-Text-Embedding-Funktion aus den generativen Modellen von Google generiert.
Wenn ein Nutzer eine Frage stellt, verwendet der Docs-Agent dieselbe Funktion zur Text-Embedding, um eine numerische Darstellung dieser Frage zu erstellen. Anhand dieses Werts wird in der Vektordatenbank nach ähnlichen Inhalten gesucht. Die Top-Ergebnisse werden in einen Prompt für das generative Modell aufgenommen. Das KI-Modell nimmt die Frage und die zusätzlichen Kontextinformationen auf und generiert eine Antwort.
Projekt einrichten
In dieser Anleitung erfahren Sie, wie Sie das Docs-Agent-Projekt für die Entwicklung und den Test einrichten. Die allgemeinen Schritte sind die Installation einiger erforderlicher Software, das Festlegen einiger Umgebungsvariablen, das Klonen des Projekts aus dem Code-Repository und das Ausführen der Konfigurationsinstallation. Das Codeprojekt verwendet Python Poetry, um Pakete und die Python-Laufzeitumgebung zu verwalten.
Erforderliche Komponenten installieren
Im Docs Agent-Projekt werden Python 3 und Python Poetry verwendet, um Pakete zu verwalten und die Anwendung auszuführen. Die folgende Installationsanleitung gilt für einen Linux-Hostcomputer.
So installieren Sie die erforderliche Software:
- Installieren Sie Python 3 und das
venv
-Paket für virtuelle Python-Umgebungen.
sudo apt update sudo apt install git pip python3-venv
- Installieren Sie Python Poetry, um Abhängigkeiten und Pakete für das Projekt zu verwalten.
curl -sSL https://install.python-poetry.org | python3 -
Wenn Sie das Projekt erweitern, können Sie mit Python Poetry weitere Python-Bibliotheken hinzufügen.
Umgebungsvariablen festlegen
Legen Sie einige Umgebungsvariablen fest, die erforderlich sind, damit das Docs-Agent-Codeprojekt ausgeführt werden kann, einschließlich eines Google Gemini API-Schlüssels und einer Python-Poetry-Einstellung. Wenn Sie Linux verwenden, können Sie diese Variablen der Datei $HOME/.bashrc
hinzufügen, um sie zu den Standardeinstellungen für Ihre Terminalsitzungen zu machen.
So legen Sie die Umgebungsvariablen fest:
- Rufen Sie einen Google Gemini API-Schlüssel ab und kopieren Sie die Schlüsselzeichenfolge.
- Legen Sie den API-Schlüssel als Umgebungsvariable fest. Verwenden Sie auf Linux-Hosts den folgenden Befehl.
export API_KEY=<YOUR_API_KEY_HERE>
- Sie können ein bekanntes Problem mit Python Poetry beheben, indem Sie den Parameter
PYTHON_KEYRING_BACKEND
festlegen. 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 Quellcode-Verwaltungssoftware git, um den Quellcode des Projekts abzurufen. Um den Projektcode herunterzuladen und zu konfigurieren, gehen Sie so vor:
- Klonen Sie das Git-Repository mit dem folgenden Befehl.
git clone https://github.com/google/generative-ai-docs
- Optional können Sie Ihr lokales Git-Repository für die sparsame Überprüfung konfigurieren, damit nur die Dateien für das Docs-Agent-Projekt vorhanden sind.
cd generative-ai-docs/ git sparse-checkout init --cone git sparse-checkout set examples/gemini/python/docs-agent/
- Wechseln Sie zum Stammverzeichnis des Projekts
docs-agent
.
cd examples/gemini/python/docs-agent/
- Führen Sie den Befehl „Poetry install“ aus, um Abhängigkeiten herunterzuladen und das Projekt zu konfigurieren:
poetry install
Inhalte vorbereiten
Das Docs Agent-Projekt wurde für die Arbeit mit Textinhalten entwickelt 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 Aufgabe zur Inhaltsverarbeitung diese Inhalte zuordnen und Links zu ihnen erstellen kann.
Je nach Format und Details Ihrer Inhalte müssen Sie sie möglicherweise bereinigen, um nicht öffentliche Informationen, interne Notizen oder andere Informationen zu entfernen, die nicht suchbar sein sollen. Sie sollten grundlegende Formatierungen wie Titel und Überschriften beibehalten, da diese beim Schritt der Inhaltsverarbeitung dazu beitragen, logische Textaufteilungen oder Blöcke zu erstellen.
So bereiten Sie Inhalte für die Verarbeitung vor:
- Erstellen Sie ein Verzeichnis für die Inhalte, in denen der KI-Agent suchen soll.
mkdir docs-agent/content/
- Kopieren Sie Ihre Inhalte in das Verzeichnis
docs-agent/content/
. Wenn es sich bei den Inhalten um eine Website handelt, bewahren Sie die Verzeichnisstruktur der bereitgestellten Website auf oder duplizieren Sie sie. - Bereinigen oder bearbeiten Sie die Inhalte nach Bedarf, um nicht öffentliche Informationen oder andere Informationen zu entfernen, die nicht in den Suchanfragen enthalten sein sollen.
Flutter-Dokumente für Tests verwenden
Wenn Sie Inhalte zum Testen des Docs-Agenten benötigen, können Sie die Flutter-Entwicklerleitfäden verwenden.
So rufen Sie die Flutter-Entwicklerleitfäden auf:
- Rufen Sie das Inhaltsverzeichnis für die Inhalte auf, in denen der KI-Agent suchen soll.
cd docs-agent/content/
- Klonen Sie die Flutter-Dokumente in das Verzeichnis
docs-agent/content/
.
git clone --recurse-submodules https://github.com/flutter/website.git
Inhalte verarbeiten
Damit der Suchagent effektiv nach Inhalten suchen kann, die sich auf die Fragen der Nutzer beziehen, müssen Sie eine Datenbank mit Vektoren erstellen, die Ihre Inhalte repräsentieren. Die Vektoren werden mithilfe einer generativen KI-Modellfunktion namens Texteinbettung generiert. Texteinbettungen sind numerische Darstellungen des Textinhalts. Sie approximieren die semantische Bedeutung des Texts als eine Reihe von Zahlen. Mithilfe der numerischen Darstellung von Informationen kann das System die Frage eines Nutzers mit derselben Text-Embedding-Funktion approximieren und dann mithilfe eines k-Nearest-Neighbors-Algorithmus (k-NN) ähnliche Informationen als mathematische Berechnung finden.
Textinhalte aufteilen
Die Menge an Text, die ein Vektor für Texteinbettungen effektiv darstellen kann, ist begrenzt. In diesem Projekt ist der in einem Vektor dargestellte Text auf 3.000 Zeichen oder weniger begrenzt. Das bedeutet, dass Sie Ihren Inhalt in Blöcke unter dieser Zeichenbeschränkung aufteilen müssen. In diesem Abschnitt wird beschrieben, wie Sie mit einem Skript, das im Docs-Agent-Projekt enthalten ist, Markdown-Dateien in kleinere Textblöcke aufteilen. Tipps zur Arbeit mit anderen Inhaltsformaten findest du unter Andere Formate verarbeiten.
So splittest du Inhalte im Markdown-Format:
- Konfigurieren Sie die Eingabeparameter für das Verarbeitungsskript. Bearbeiten Sie dazu die Datei
docs-agent/config.yaml
. Dieses Beispiel richtet sich an einen Teil der Flutter-Dokumente:
input: - path: "content/website/src/ui" url_prefix: "https://docs.flutter.dev/ui"
- Speichern Sie die Änderungen in dieser Konfigurationsdatei.
- Rufen Sie das Projektverzeichnis
docs-agent
auf:
cd docs-agent/
- Teile den Markdown-Quellcode, indem du den Befehl
agent chunk
ausführst:
agent chunk
Das Script verarbeitet den Eingabeinhalt und erstellt Textdateien im Verzeichnis docs-agent/data
. Dabei wird der Text anhand von Titeln, Überschriften und ähnlichen Absätzen aufgeteilt. Je nach Größe der Inhalte kann die Verarbeitung einige Zeit dauern.
Texteinbettungsvektoren erstellen
Nachdem Sie Ihre Inhalte in angemessen große, sinnvolle Blöcke aufgeteilt haben, können Sie die Vektordatenbank mithilfe einer Text-Embedding-Funktion mit Ihren Inhalten füllen. Das Docs-Agent-Projekt verwendet die Chroma-Vektordatenbank, um Text-Embedding-Vektoren zu speichern. In dieser Anleitung wird beschrieben, wie Sie mit dem Docs Agents-Script eine Vektordatenbank mit Ihren aufgeteilten Inhalten füllen.
So generieren Sie Texteinbettungen und füllen die Vektordatenbank:
- Rufen Sie das Projektverzeichnis
docs-agent
auf:
cd docs-agent/
- Füllen Sie die Vektordatenbank mit Ihren Inhalten mit dem Befehl
agent populate
auf:
agent populate
Dieses Script verwendet die Google Gemini API, um Text-Embedding-Vektoren zu generieren, und speichert die Ausgabe dann in der Vektordatenbank. Je nach Größe der Inhalte kann die Verarbeitung einige Zeit dauern.
Umgang mit anderen Formaten
Das Docs Agent-Projekt ist für Websiteinhalte im Markdown-Format konzipiert. Die Projektautoren haben einige Konvertierungsscripts 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 Konverter finden Sie im Verzeichnis docs-agent/apps_script des Code-Repositories.
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 erstellt werden. Suchen Sie im Code-Repository in den Issues und Pull-Requests nach Personen, die ähnliche Lösungen entwickeln.
Der wichtigste Code, den du für die Unterstützung anderer Inhaltsformate erstellen musst, ist ein Splitter-Script wie das files_to_plain_text.py
-Script. Versuchen Sie, ein Script oder Programm zu erstellen, das eine ähnliche Ausgabe wie dieses Script erzeugt. Denken Sie daran, dass die endgültige Textausgabe möglichst wenig Formatierungen und überflüssige Informationen enthalten sollte. Wenn Sie Inhaltsformate wie HTML oder JSON verwenden, entfernen Sie so viel wie möglich der nicht informativen Formatierung (Tags, Scripting, CSS), damit die Werte der Text-Embeddings, die Sie daraus generieren, nicht verzerrt werden.
Nachdem Sie ein Splitter-Script für das Inhaltsformat erstellt haben, sollten Sie das Script populate_vector_database.py
ausführen können, um Ihre Vektordatenbank zu füllen. Weitere Informationen zur Verarbeitung von Dateien für den Docs-Agenten finden Sie in der Vorverarbeitungsanleitung für den Docs-Agenten.
App testen
Sobald Sie die Vector-Datenbank vollständig gefüllt haben, ist das Projekt bereit für den Test. Das Projekt bietet eine Verpackungsfunktion, mit der Sie das Projekt lokal ausführen können.
So führen Sie die Weboberfläche des Projekts aus und testen sie:
- Rufen Sie das Projektverzeichnis
docs-agent
auf:
cd docs-agent/
- Führen Sie das Startskript der Webanwendung aus:
agent chatbot
- Rufen Sie in Ihrem Webbrowser die URL auf, die in der Ausgabe des Startscripts angezeigt wird, und testen Sie die Anwendung.
* Running on http://your-hostname-here:5000
Implementierungsmöglichkeiten
Die Gemini API bietet Programmiertools, mit denen Komponenten der Docs-Agent-Implementierung ersetzt werden können, insbesondere die Gemini-Modellvariante für die semantische Suche und die Beantwortung von Fragen mit Attributen (Attributed Question Answering, AQA). Sie können die Funktion Semantische Suche der Gemini API verwenden, um die separate Vektordatenbank zu ersetzen. Mit der Funktion „Semantische Suche“ können Sie Einbettungen für Ihre Inhalte generieren und diese Inhalte speichern. Das AQA-Gemini-Modell ist für die Beantwortung von Fragen mit Quellmaterial aus einem Prompt optimiert. Sie verwenden die semantische Suche zusammen mit dem AQA-Modell, um Fragen zu Ihren Inhalten über die Gemini API zu beantworten.
Der Docs-Agent bietet Konfigurationsoptionen, mit denen Sie entweder die Semantic Retrieval API, das AQA Gemini-Modell oder beides verwenden können. Weitere Informationen finden Sie in der Readme-Dokumentation für den Docs-Agenten.
Zusätzliche Ressourcen
Weitere Informationen zum Docs Agent-Projekt finden Sie im Code-Repository. Wenn Sie Hilfe beim Erstellen der Anwendung benötigen oder nach Entwicklern suchen, die mit Ihnen zusammenarbeiten möchten, besuchen Sie den Server der Google Developers Community Discord.
Produktionsanwendungen
Wenn Sie Docs-Agent für eine große Zielgruppe bereitstellen möchten, beachten Sie, dass die Nutzung der Google Gemini API möglicherweise einer Ratenbegrenzung und anderen Nutzungsbeschränkungen unterliegt. Wenn Sie eine Produktionsanwendung mit der Gemini API wie Docs Agent erstellen möchten, sehen Sie sich die Google Cloud Vertex AI-Dienste an, um die Skalierbarkeit und Zuverlässigkeit Ihrer App zu verbessern.