Einrichten der abruferweiterten Generierung (RAG)

watsonx Code Assistant Standardplan

RAG ist der Prozess der Optimierung des großen Sprachmodells (LLM) durch die prompte Augmentation mit dem zusätzlichen Kontext. Wenn Sie eine Abfrage stellen, verwendet watsonx Code Assistant die RAG-Tools, um die Informationen aus Ihren Codebasen oder Ihrer Dokumentation abzurufen. Dieser relevante Kontext wird an die Anfrage angehängt, bevor sie an das LLM-Modell gesendet wird. Das RAG-System bestimmt die Quellen, die einbezogen oder ausgeschlossen werden müssen, um eine Antwort mit den nützlichsten Informationen zu erhalten.

RAG benötigt den watsonx Code Assistant Standardplan und die Visual Studio Code Erweiterung. Es ist nicht für die Verwendung mit dem Eclipse Plug-in verfügbar.

IBM watsonx Code Assistant unterstützt RAG, das die Antwortqualität von Benutzeranfragen in relevantem, aktuellem Kontext aus Codebasen und Dokumentation verbessert. RAG reduziert Modellhalluzinationen und verbessert die Genauigkeit der generierten Antworten.

Sie können watsonx Code Assistant mit bestimmten Code-Repositories und Projektdokumentationen konfigurieren, die nicht im Git Repository gespeichert sind, indem Sie RAG verwenden, um relevante Informationen für die Chat-Nachricht zu extrahieren. Sie können Dokumentationen wie API-Dokumente, Readme-Dateien, technische und Design-Dokumente, Markdown, PDFs, Word- und PowerPoint-Dokumente konfigurieren.

Die folgende Abbildung veranschaulicht die Vorgehensweise zur Konfiguration von RAG für watsonx Code Assistant:

Verfahren zur Einrichtung der RAG in watsonx Code Assistant
Verfahren zur Einrichtung der RAG in watsonx Code Assistant

RAG aktivieren

Um RAG zu aktivieren:

  1. Stellen Sie einen Vektorspeicher auf IBM Cloud bereit.

    1. Stellen Sie eine Milvus oder Elasticsearch Vektorspeicherinstanz auf dem IBM Cloud bereit. Wenn der Vektorspeicher bereits auf Ihrem IBM Cloud vorhanden ist, können Sie diesen Schritt überspringen.

    2. Optional: Stellen Sie eine Instanz von IBM watsonx.ai Studio bereit, um das Code-Repository zu indizieren.

  2. Indizieren oder aktualisieren Sie Ihre Code-Repositories in Milvus oder Elasticsearch. Weitere Informationen finden Sie unter Indizierung von Code-Repositories mit IBM watsonx.ai Studio.

    Richten Sie die Verbindungsmittel ein:

    1. Verwenden Sie den vorhandenen Bereitstellungsbereich in Ihrer watsonx Code Assistant Service-Instanz.

    2. Erstellen Sie ein Verbindungs-Asset für jeden Index, der im Vektorspeicher erstellt wird. Weitere Informationen finden Sie unter Erstellen eines Verbindungs-Assets.

  3. Richten Sie das persönliche Zugangstoken Git unter Visual Studio Code ein und verwenden Sie die RAG-aktivierten Eingabeaufforderungen.

    1. Klicken Sie auf Ihr Profilsymbol in GitHub und gehen Sie zu Einstellungen > Entwicklereinstellungen > Persönliche Zugangstoken > Token (klassisch).
    2. Kopieren Sie Ihr persönliches Zugangstoken.
    3. Klicken Sie unter Visual Studio Code auf Ansicht und dann auf Befehlspalette.
    4. Suchen Sie nach WCA und klicken Sie dann auf Enter GitHub Personal Access Token for WCA.
    5. Geben Sie Ihr persönliches Zugangstoken GitHub ein und drücken Sie Enter oder Return.
    6. Geben Sie in Chat-Nachrichten @repo < instruction > oder @docs < instruction > ein, um eine Antwort zu erzeugen, die den Kontext aus dem referenzierten Repository oder den Dokumenten im Vektorspeicher verwendet. Ersetzen Sie den Parameter < instruction > durch eine Prompt-Meldung.
    • Beispielsyntax zur Verwendung des referenzierten Repositorys:

      @repo how is a chat message processed?
      

      watsonx Code Assistant verwendet die indizierten Repositories auf der Grundlage der folgenden Bedingungen:

      • Wenn ein Repository in Visual Studio Code geöffnet ist, sucht watsonx Code Assistant standardmäßig nach dem Kontext in dem geöffneten Repository.

      • Wenn mehrere Repositories in Visual Studio Code geöffnet sind, sucht watsonx Code Assistant nach dem Kontext aus dem Repository, der mit der zuletzt aufgerufenen Datei verknüpft ist.

      • Watsonx Code Assistant sucht nach der Datei repo.yaml im indizierten Repository, wenn Sie im Chat die Syntax @repo < instruction > eingeben. Sind eine oder mehrere YAML-Konfigurationsdateien konfiguriert, verwendet watsonx Code Assistant alle konfigurierten Repositories, um eine Antwort zu erzeugen. Ist die YAML-Konfiguration nicht konfiguriert, verwendet watsonx Code Assistant das ausgewählte Repository.

    • Beispielsyntax für die Verwendung der referenzierten Dokumentensammlung:

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

      Watsonx Code Assistant verwendet die indizierten Dokumentensammlungen auf der Grundlage der folgenden Bedingungen:

      • Wenn das Dokument in Visual Studio Code geöffnet wird, sucht watsonx Code Assistant standardmäßig nach dem Kontext im geöffneten Repository.

      • Wenn mehrere Dokumentensammlungen in Visual Studio Code geöffnet sind, sucht watsonx Code Assistant nach dem Kontext des zuletzt aufgerufenen Dokuments.

      • Watsonx Code Assistant sucht nach der Datei docs.yaml im indizierten Repository, wenn Sie im Chat die Syntax @docs < instruction > eingeben. Sind eine oder mehrere YAML-Konfigurationsdateien konfiguriert, verwendet watsonx Code Assistant alle konfigurierten Dokumentensammlungen, um eine Antwort zu erzeugen. Ist die YAML-Konfiguration nicht konfiguriert, verwendet watsonx Code Assistant alle Dokumente mit dem Namen docs_<filename> in Ihrem Deployment Space.

    Optional: Wenn Sie die YAML-Konfiguration für indizierte Repositories oder Dokumentensammlungen einrichten möchten, lesen Sie bitte YAML-Konfiguration für RAG ein richten.

YAML-Konfiguration für RAG einrichten

Sie können die YAML-Konfiguration optional so einrichten, dass watsonx Code Assistant nach mehreren Repositories gleichzeitig suchen kann oder ein bestimmtes indiziertes Code-Repository oder Dokument im Vektorspeicher verwenden kann. Wenn Sie keine YAML-Konfiguration einrichten, verwendet watsonx Code Assistant standardmäßig das Repository, das in Visual Studio Code geöffnet ist.

watsonx Code Assistant verwendet die API-Schlüssel-Autorisierungsmethode, um sicherzustellen, dass Sie nur auf die autorisierten Repositories oder Dokumentensammlungen zugreifen können.

Um die YAML-Konfiguration für ein bestimmtes indiziertes Repository einzurichten, führen Sie die folgenden Schritte durch:

  1. Erstellen Sie einen Ordner .wca/repo auf der Stammebene des Repositorys.

  2. Erstellen Sie eine YAML-Datei mit den folgenden Feldern:

    repo:
       - url: git@github.ibm.com:code-assistant/<my-code>.git
    

    Wenn Sie watsonx Code Assistant mit mehreren Repositories konfigurieren müssen, erstellen Sie eine repo.yaml Datei für jedes Repository, das zur Generierung einer Antwort verwendet werden soll.

Um die YAML-Konfiguration für bestimmte Dokumentensammlungen einzurichten, führen Sie die folgenden Schritte durch:

  1. Erstellen Sie einen Ordner .wca/docs auf der Stammebene des Repositorys.

  2. Erstellen Sie eine YAML-Datei mit den folgenden Feldern:

    docs:
       - url: my_collection
    

Anwendungsszenarios

Die Anwendungsszenarien erklären, wie RAG funktioniert und wie Daten aus indizierten Repositories oder Dokumenten abgerufen werden.

Verwendung eines einzigen Code-Repositorys

Wenn Sie in einem einzigen Repository arbeiten und den Code aus diesem Repository als Kontext für Chat-Unterhaltungen verwenden möchten, führen Sie die folgenden Schritte aus:

  1. Stellen Sie sicher, dass Sie Zugriff auf das Repository in GitHub haben.

  2. Indizieren Sie das Repository im Vektorspeicher. Weitere Informationen finden Sie unter Indizierung des Code-Repositorys mit IBM watsonx.ai Studio

  3. Erstellen Sie ein Verbindungs-Asset für das Repository. Weitere Informationen finden Sie unter Erstellen eines Verbindungs-Assets.

  4. Generieren Sie ein Git persönliches Zugangstoken von Ihrem GitHub Konto und schließen Sie die Einrichtung in Visual Studio Code ab.

  5. Öffnen Sie das Repository in Visual Studio Code.

  6. Verwenden Sie den Befehl @repo im Chat, um eine Antwort zu erzeugen, die den Kontext aus dem Repository verwendet.

Verwendung mehrerer Code-Repositories

Wenn Sie an einem Repository arbeiten, das Abhängigkeiten zu einem anderen Repository hat, können Sie den Code aus beiden Repositories als Kontext für Chat-Unterhaltungen verwenden. Um beide Repositories zu verwenden, führen Sie die folgenden Schritte aus:

  1. Stellen Sie sicher, dass Sie Zugriff auf beide Repositories in GitHub haben.

  2. Indizieren Sie jedes Repository im Vektorspeicher separat. Weitere Informationen finden Sie unter Indizierung des Code-Repositorys mit IBM watsonx.ai Studio.

  3. Erstellen Sie zwei Verbindungs-Assets für jeden Vektorspeicher. Weitere Informationen finden Sie unter Erstellen eines Verbindungs-Assets.

  4. Generieren Sie ein Git persönliches Zugangstoken von Ihrem GitHub Konto und schließen Sie die Einrichtung in Visual Studio Code ab.

  5. Im ersten Repository richten Sie die YAML-Konfiguration ein, um beide Repositories aufzulisten.

  6. Verwenden Sie den Befehl @repo im Chat, um eine Antwort zu erzeugen, die den Kontext aus beiden Repositories verwendet.

Wenn Sie für beide Repositories denselben Index verwenden, wird die Zugriffsprüfung GitHub nicht für das zweite Repository verwendet. Wenn Sie für eines der Repositories keinen Zugriff haben, generiert watsonx Code Assistant den Kontext nur aus dem autorisierten Repository.

Ermöglichung des Zugriffs aller Benutzer eines Teams auf die Projektdokumentationssammlungen

Sie können allen Benutzern in einem Team den Zugriff auf die Projektdokumentationsspeicher erlauben und die Dokumente als Kontext für Chat-Unterhaltungen verwenden.

Um den Zugang für alle Benutzer zu ermöglichen:

  1. Indizieren Sie die Projektdokumentations-Repositories im Vektorspeicher. Weitere Informationen finden Sie unter Indizierung des Code-Repositorys mit IBM watsonx.ai Studio.

    Sie können denselben Index für alle Dokumentations-Repositories verwenden, wenn alle Benutzer Zugriff auf die indizierten Projektdokumentations-Repositories haben. Wenn die Benutzer eine Zugriffsbeschränkung für das indizierte Repository haben, lesen Sie bitte den Abschnitt Benutzern in einem anderen Unterteam den Zugriff auf Projektdokumentations-Repositories ermöglichen.

  2. Erstellen Sie ein Verbindungs-Asset für den Dokumentationsindex im Bereitstellungsraum, das alle Benutzer des Teams umfasst. Weitere Informationen finden Sie unter Erstellen eines Verbindungs-Assets.

  3. Verwenden Sie den Befehl @docs im Chat, um eine Antwort zu erzeugen, die den Kontext aus dem Dokumentationsindex verwendet.

Die persönlichen Zugangskennungen von GitHub werden nicht zur Überprüfung des Zugangs zu Dokumentationsinhalten verwendet. Sie können mehrere Dokumentations-Repositories in einem Index im Vektorspeicher zusammenfassen. Der Inhalt der Dokumentation ist weniger restriktiv als Code-Repositories und ein einziger Index für alle Dokumentations-Repositories vereinfacht die Indexverwaltung. Die Berechtigung zum Zugriff auf die Dokumentations-Repositories ist nur den im Bereitstellungsraum eingebundenen Benutzern gestattet.

Ermöglichung des Zugriffs auf Projektdokumentations-Repositories für Benutzer in einem anderen Unterteam

In diesem Anwendungsfall pflegen verschiedene Unterteams innerhalb eines großen Teams die Repositories der Projektdokumentation. Der Zugang zu den Dokumentations-Repositories ist auf die verschiedenen Unterteams beschränkt. Andere Unterteams haben keinen Zugang zu diesen Dokumentations-Repositories.

Um jedem Unterteam den Zugang zu den entsprechenden Projektdokumentations-Repositories zu ermöglichen:

  1. Indizieren Sie die Dokumentations-Repositories separat im Vektorspeicher. Weitere Informationen finden Sie unter Indizierung des Code-Repositorys mit IBM watsonx.ai Studio.

  2. Stellen Sie sicher, dass der Bereitstellungsbereich für jedes Unterteam erstellt wird, das seine Benutzer enthält.

  3. Erstellen Sie für jeden Index des Dokumentations-Repositorys ein Verbindungs-Asset im entsprechenden Bereitstellungsraum. Weitere Informationen finden Sie unter Erstellen eines Verbindungs-Assets.

  4. Verwenden Sie den Befehl @docs im Chat, um eine Antwort zu erzeugen, die den Kontext aus dem Dokumentationsindex verwendet.

Watsonx Code Assistant verwendet den Index des Dokumentations-Repositorys auf der Grundlage des den Benutzern zugewiesenen Bereitstellungsraums. Die clientseitige Konfiguration ist nicht erforderlich.

Ermöglichung des Zugriffs von rollenbasierten Benutzern auf Projektdokumentations-Repositories

In diesem Anwendungsfall benötigen die Benutzer in einem Team je nach ihrer Rolle Zugriff auf unterschiedliche Dokumentationsbestände. Der Umfang der Dokumentation, die als Kontext in verwendet wird, variiert zwischen den Benutzern ohne Zugriffsbeschränkungen. So benötigen beispielsweise Entwickler nur technische und API-Dokumentation, während Geschäftsanalysten sich auf Geschäftsprozessdokumente konzentrieren.

So passen Sie die Dokumentations-Repositories an, die als Kontext verwendet werden:

  1. Indizieren Sie jedes Dokumentations-Repository im Vektorspeicher separat. Weitere Informationen finden Sie unter Indizierung des Code-Repositorys mit IBM watsonx.ai Studio.

  2. Erstellen Sie ein Verbindungs-Asset für jeden Index im Bereitstellungsraum des Teams. Weitere Informationen finden Sie unter Erstellen eines Verbindungs-Assets.

  3. Einrichten der YAML-Konfiguration für den gewünschten Dokumentationsindex, der als Kontext verwendet wird. Wenn Sie mehrere Dokumentationsindizes verwenden müssen, richten Sie für jeden Dokumentationsindex eine YAML-Konfiguration ein.

  4. Verwenden Sie den Befehl @docs im Chat, um eine Antwort zu erzeugen, die den Kontext aus dem Dokumentationsindex verwendet.