Einrichten der Retrieval Augmented Generation (RAG)

RAG (Retrieval Augmented Generation) ist der Prozess der Optimierung der Ausgabe eines großen Sprachmodells (LLM) durch die Erweiterung von Eingabeaufforderungen mit zusätzlichem Kontext. Wenn Sie eine Anfrage senden, watsonx Code Assistant verwendet RAG-Tools, um Informationen aus Ihren Codebasen oder Ihrer Dokumentation abzurufen.

Vorbereitende Schritte

Bevor Sie RAG einrichten, stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen:

  • Sie haben Cluster-Administratorzugriff, um RAG auf Ihrer IBM® Software Hub Instanz zu aktivieren.
  • Sie haben Zugriff auf die Code-Repositorys oder die Dokumentation, die Sie indizieren möchten.
  • Sie haben einen GitHub persönlichen Zugriffstoken für den Zugriff auf private Repositorys.

Informationen zu dieser Task

watsonx Code Assistant verwendet RAG, um die Antwortqualität zu verbessern, indem relevante, aktuelle Kontextinformationen aus Ihren Codebasen und Dokumentationen abgerufen werden. Dieser relevante Kontext wird Ihrer Anfrage hinzugefügt, bevor sie an das große Sprachmodell (LLM) gesendet wird, wodurch Modellhalluzinationen reduziert und die Genauigkeit der generierten Antworten verbessert werden.

Sie können so watsonx Code Assistant konfigurieren, dass bestimmte Code-Repositorys und Projektdokumentationen verwendet werden, die in Git Repositorys gespeichert sind. Unterstützte Dokumentformate sind API-Dokumente, Readme-Dateien, technische und Design-Dokumente, Markdown-Dateien, PDFs, Word-Dokumente und PowerPoint Präsentationen.

Das RAG-System bestimmt, welche Quellen einbezogen oder ausgeschlossen werden, um Antworten mit den nützlichsten Informationen zu generieren. Die folgende Abbildung veranschaulicht den RAG-Konfigurations-Workflow:

Abb. 1. RAG-Konfigurations-Workflow
Diagramm, das den RAG-Konfigurations-Workflow mit vier Hauptschritten zeigt: Cluster OpenSearch erstellen, Repositorys indizieren, Verbindungsressourcen einrichten und persönliches Git Zugriffstoken konfigurieren

Vorgehensweise

  1. Aktivieren Sie RAG auf Ihrer IBM Software Hub Instanz.

    watsonx Code Assistant verwendet OpenSearch als Vektorspeicher für seine RAG-Implementierung. Führen Sie den folgenden Befehl in Ihrer OpenShift® Shell aus, um RAG zu aktivieren:

    oc patch -n $PROJECT_CPD_INST_OPERANDS wca/wca-cr --type=merge -p '{"spec":{"rag_enabled":true}}'
  2. Beziehen Sie die OpenSearch Instanzverbindungsdetails.
    1. Extrahieren Sie den Hostnamen, indem Sie den folgenden Befehl ausführen:
      oc get -n $PROJECT_CPD_INST_OPERANDS route cpd -o jsonpath='{.spec.host}{"\n"}'
    2. Erstellen Sie die URL für OpenSearch unter Verwendung des folgenden Formats:
      https://<hostname>/wca-core-rag/

      Ersetzen Sie <hostname> durch den IBM Software Hub Hostnamen, den Sie im vorherigen Schritt erhalten haben.

    3. Rufen Sie den Benutzernamen und das Passwort für den Vektorspeicher ab, indem Sie den folgenden Befehl ausführen:
      oc extract -n $PROJECT_CPD_INST_OPERANDS secret/wca-core-rag --to=-

      Speichern Sie diese Anmeldedaten für die Verwendung beim Erstellen von Verbindungsressourcen.

  3. Indizieren Sie Ihre Code-Repositorys und Dokumentationen im Vektorspeicher.

    Sie müssen Ihre Repositorys indizieren, bevor Sie sie als watsonx Code Assistant Kontext für RAG verwenden können. Ausführliche Anweisungen finden Sie unter Indizieren von Code-Repositorys und Dokumentation.

  4. Erstellen Sie Verbindungsressourcen für Ihre indizierten Repositorys.

    Sie müssen für jeden Index im Vektorspeicher ein Verbindungs-Asset erstellen. Die Verbindungseinrichtung ermöglicht watsonx Code Assistant den Zugriff auf die indizierten Inhalte. Ausführliche Anweisungen finden Sie unter Einrichten von Verbindungsressourcen.

  5. Konfigurieren Sie Ihr GitHub persönliches Zugriffstoken in Visual Studio Code.
    1. Navigieren Sie GitHub zu Einstellungen > Entwicklereinstellungen > Persönliche Zugriffstoken > Token (klassisch).
    2. Erstellen Sie ein neues Token oder kopieren Sie ein vorhandenes persönliches Zugriffstoken.
    3. Öffnen Sie die Visual Studio CodeBefehlspalette, indem Sie auf „Ansicht“ > „Befehlspalette“ klicken.
    4. Suchen Sie nach WCA und wählen Sie GitHub „Persönlichen Zugriffstoken für WCA eingeben“ aus.
    5. Geben Sie Ihren GitHub persönlichen Zugriffstoken ein und drücken Sie die Eingabetaste.
  6. Verwenden Sie RAG-fähige Eingabeaufforderungen in Ihren Chat-Unterhaltungen.

    Um Antworten zu generieren, die den Kontext aus Ihren indizierten Repositorys verwenden, verwenden Sie die folgende Befehlssyntax in Chat-Nachrichten:

    @repo 

    Ersetzen Sie durch Ihre Frage oder Anweisung.

    Beispiel:

    @repo how is a chat message processed?

    Um die indizierte Dokumentation zu verwenden, verwenden Sie stattdessen den @docs Befehl:

    @docs What are the steps to setup a connection to the user data store?

Ergebnisse

watsonx Code Assistant verwendet die indizierten Repositorys basierend auf den folgenden Bedingungen:

  • Wenn ein Repository in Visual Studio Codegeöffnet ist, watsonx Code Assistant sucht standardmäßig nach Kontext im geöffneten Repository.
  • Wenn mehrere Repositorys geöffnet sind, watsonx Code AssistantVisual Studio Code sucht nach Kontext aus dem Repository, das mit der zuletzt aufgerufenen Datei verknüpft ist.
  • Wenn Sie den @repo Befehl verwenden, watsonx Code Assistant sucht nach einer repo.yaml Datei im indizierten Repository. Wenn eine oder mehrere YAML-Konfigurationsdateien konfiguriert sind, watsonx Code Assistant verwendet alle konfigurierten Repositorys, um eine Antwort zu generieren. Wenn keine YAML-Konfiguration gefunden wird, watsonx Code Assistant wird das aktuell ausgewählte Repository verwendet.

watsonx Code Assistant verwendet die indizierten Dokumentensammlungen basierend auf den folgenden Bedingungen:

  • Wenn ein Dokument in Visual Studio Codegeöffnet wird, watsonx Code Assistant sucht standardmäßig nach Kontext in der geöffneten Dokumentensammlung.
  • Wenn mehrere Dokumentensammlungen geöffnet sind, watsonx Code AssistantVisual Studio Code sucht nach Kontext aus der zuletzt aufgerufenen Dokumentensammlung.
  • Wenn Sie den @docs Befehl verwenden, watsonx Code Assistant sucht nach einer docs.yaml Datei im indizierten Repository. Wenn eine oder mehrere YAML-Konfigurationsdateien konfiguriert sind, watsonx Code Assistant verwendet alle konfigurierten Dokumentensammlungen, um eine Antwort zu generieren. Wenn keine YAML-Konfiguration gefunden wird, watsonx Code Assistant verwendet alle Dokumente mit dem docs_name Präfix in Ihrem Bereitstellungsbereich.

Nächste Schritte

  • Sehen Sie sich die Anwendungsszenarien an, um zu verstehen, wie RAG für verschiedene Teamstrukturen und Zugriffsanforderungen implementiert werden kann. Weitere Informationen finden Sie unter Anwendungsszenarien für RAG.
  • Optional können Sie eine YAML-Konfiguration einrichten, um die gleichzeitige Suche in mehreren watsonx Code Assistant Repositorys zu ermöglichen oder bestimmte indizierte Code-Repositorys oder Dokumente im Vektorspeicher zu verwenden. Weitere Informationen finden Sie unter Einrichten der YAML-Konfiguration für RAG.