設定檢索擴增世代 (RAG)

watsonx Code Assistant 標準計劃

RAG 是透過額外上下文的提示增強來優化大型語言模型 (LLM) 輸出的過程。 如果您提交查詢,watsonx Code Assistant 會使用 RAG 工具從您的程式碼庫或文件中擷取資訊。 此相關上下文會在傳送至 LLM 模型之前附加到查詢中。 RAG 系統會決定需要包含或排除的來源,以產生具備最有用資訊的回應。

RAG 要求 watsonx Code Assistant 標準計劃和 Visual Studio Code 延伸。 Eclipse 外掛程式無法使用。

IBM watsonx Code Assistant 支援 RAG,可根據程式碼庫和文件中相關的最新內容提升使用者查詢的回應品質。 RAG 可減少模型幻覺,並提高產生回應的準確性。

您可以使用 RAG 為聊天訊息擷取相關資訊,將 watsonx Code Assistant 與未儲存在 Git 儲存庫的特定程式碼儲存庫及專案文件設定在一起。 您可以設定 API 文件、自述文件、技術和設計文件、Markdown、PDF、Word 和 PowerPoint 等文件。

下圖說明設定 watsonx Code Assistant 的 RAG 的步驟:

中設定 RAG 的程序。watsonx Code Assistant
在 watsonx Code Assistant

啟用 RAG

要啟用 RAG:

  1. 在 IBM Cloud 上提供向量儲存。

    1. 在 IBM Cloud 上提供 Milvus 或 Elasticsearch 向量存儲實例。 如果您的 IBM Cloud 上已有向量商店,您可以跳過此步驟。

    2. 可選:Provision an instance of IBM watsonx.ai Studio to index the code repository。

  2. 在 Milvus 或 Elasticsearch 中索引或刷新您的代碼庫。 如需詳細資訊,請參閱 使用 IBM watsonx.ai Studio 索引程式碼資料庫

    設定連線資產:

    1. 使用 watsonx Code Assistant 服務實例中的現有部署空間。

    2. 為向量儲存中建立的每個索引建立連線資產。 如需詳細資訊,請參閱 建立連線資產

  3. 在 Visual Studio Code 中設定 Git 個人存取權標,並使用啟用 RAG 的提示。

    1. 在 GitHub 中按一下您的個人資料圖示,然後進入「設定」>「開發者設定」>「個人存取權限>「權限 (經典)」
    2. 複製您的個人存取權標。
    3. 在 Visual Studio Code 中,按一下檢視,然後按一下指令調板
    4. 搜尋 WCA,然後按一下 Enter GitHub Personal Access Token for WCA
    5. 輸入 GitHub 個人存取代碼,然後按 EnterReturn
    6. 在聊天訊息中,輸入 @repo < instruction >@docs < instruction >,即可產生使用向量儲存庫中所引用儲存庫或文件的上下文的回應。 以提示訊息取代 < instruction > 參數。
    • 使用引用儲存庫的語法範例:

      @repo how is a chat message processed?
      

      watsonx Code Assistant 根據下列條件使用索引儲存庫:

      • 如果 Visual Studio Code 中開啟了一個儲存庫,則 watsonx Code Assistant 會以預設方式搜尋已開啟儲存庫中的上下文。

      • 如果在 Visual Studio Code 中開啟了多個儲存庫,watsonx Code Assistant 會從儲存庫中搜尋與最近存取的檔案相關聯的上下文。

      • Watsonx Code Assistant 當您在聊天中輸入 語法時,會檢查索引儲存庫中的 檔案。@repo < instruction > repo.yaml 如果配置了一個或多個 YAML 配置檔案,watsonx Code Assistant 會使用所有已配置的儲存庫來產生回應。 如果未設定 YAML 配置,watsonx Code Assistant 會使用選取的儲存庫。

    • 使用參考文件集的語法範例:

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

      Watsonx Code Assistant 根據下列條件使用索引文件集:

      • 如果在 Visual Studio Code 中開啟文件,watsonx Code Assistant 會在已開啟的儲存庫中搜尋上下文作為預設。

      • 如果在 Visual Studio Code 中開啟了多個文件集,watsonx Code Assistant 會從最近存取的文件中搜尋上下文。

      • Watsonx Code Assistant 當您在聊天中輸入 語法時,會檢查索引儲存庫中的 檔案。@docs < instruction > docs.yaml 如果配置了一個或多個 YAML 配置檔案,watsonx Code Assistant 會使用所有配置的文件集合來產生回應。 如果沒有設定 YAML 配置,watsonx Code Assistant 會使用您部署空間中所有具有 docs_<filename> 名稱的文件。

    選用:如果您需要為索引儲存庫或文件集合設定 YAML 配置,請參閱 為 RAG 設定 YAML 配置

為 RAG 設定 YAML 配置

您可以選擇性地設定 YAML 配置,讓 watsonx Code Assistant 同時搜尋多個儲存庫,或使用向量儲存庫中特定的索引代碼儲存庫或文件。 如果您沒有設定 YAML 設定,watsonx Code Assistant 預設會使用在 Visual Studio Code 開啟的儲存庫。

watsonx Code Assistant 使用 API 金鑰授權方法,以確保您只能存取授權的儲存庫或文件收藏。

若要為特定索引儲存庫設定 YAML 配置,請完成下列步驟:

  1. 在儲存庫的根層建立 .wca/repo 資料夾。

  2. 建立包含下列欄位的 YAML 檔案:

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

    如果您需要使用多個儲存庫設定 watsonx Code Assistant,請為每個需要用來產生回應的儲存庫建立 repo.yaml 檔案。

若要為特定的文件收藏設定 YAML 配置,請完成下列步驟:

  1. 在儲存庫的根層建立 .wca/docs 資料夾。

  2. 建立包含下列欄位的 YAML 檔案:

    docs:
       - url: my_collection
    

使用個案情境

使用個案情境說明 RAG 如何運作,以及如何從索引儲存庫或文件擷取資料。

使用單一程式碼儲存庫

如果您在單一儲存庫中工作,並希望使用此儲存庫中的程式碼作為聊天對話的上下文,請完成下列步驟:

  1. 確保您可以存取 GitHub 中的儲存庫。

  2. 索引向量儲存庫中的儲存庫。 如需詳細資訊,請參閱 使用 IBM watsonx.ai Studio 索引代碼倉庫。

  3. 為儲存庫建立連線資產。 如需詳細資訊,請參閱 建立連線資產

  4. 從 GitHub 帳戶產生 Git 個人存取權標,並在 Visual Studio Code 完成設定。

  5. 在 Visual Studio Code 中開啟套件庫。

  6. 在聊天中使用 @repo 指令產生使用儲存庫中上下文的回應。

使用多個程式碼儲存庫

如果您正在使用的套件庫與另一個套件庫有依賴關係,您可以使用這兩個套件庫的程式碼作為聊天對話的上下文。 若要使用這兩個套件庫,請完成下列步驟:

  1. 確保您可以存取 GitHub 中的兩個套件庫。

  2. 分別為向量儲存中的每個儲存庫建立索引。 如需詳細資訊,請參閱 使用 IBM watsonx.ai Studio 索引代碼倉庫

  3. 為每個向量儲存建立兩個連線資產。 如需詳細資訊,請參閱 建立連線資產

  4. 從 GitHub 帳戶產生 Git 個人存取權標,並在 Visual Studio Code 完成設定。

  5. 在第一個套件庫中,設定 YAML 配置以列出兩個套件庫。

  6. 在聊天中使用 @repo 指令,產生使用兩個儲存庫內容的回應。

如果兩個儲存庫使用相同的索引,則 GitHub 存取檢查不會用於第二個儲存庫。 如果您沒有其中一個儲存庫的存取權,watsonx Code Assistant 只會從授權的儲存庫產生上下文。

讓團隊中的所有使用者都能存取專案文件儲存庫

您可以允許團隊中的所有使用者存取專案文件儲存庫,並使用文件作為聊天對話的上下文。

要啟用所有使用者的存取權限:

  1. 索引向量儲存庫中的專案文件儲存庫。 如需詳細資訊,請參閱 使用 IBM watsonx.ai Studio 索引代碼倉庫

    如果所有使用者都可以存取已編制索引的專案文件資料庫,您可以對所有文件資料庫使用相同的索引。 如果使用者對索引儲存庫有存取限制,請參閱 啟用不同子小組的使用者存取專案文件儲存庫

  2. 在部署空間中為文件索引建立連線資產,其中包括團隊的所有使用者。 如需詳細資訊,請參閱 建立連線資產

  3. 在聊天中使用 @docs 指令產生使用文件索引中的上下文的回應。

GitHub 個人存取權限並非用於驗證文件內容的存取權。 您可以在向量儲存庫的相同索引中結合數個文件儲存庫。 與程式碼儲存庫相比,文件內容的限制較少,所有文件儲存庫使用單一索引可簡化索引管理流程。 存取文件資料庫的授權僅允許部署空間中已加入的使用者。

讓不同子團隊的使用者能夠存取專案文件儲存庫

在此使用個案中,大型團隊中的不同子團隊負責維護專案文件儲存庫。 文件儲存庫的存取權限只限於不同的子團隊。 其他子團隊無法存取這些文件儲存庫。

讓每個子團隊都能存取相關的專案文件儲存庫:

  1. 在向量儲存中為文件儲存庫分別建立索引。 如需詳細資訊,請參閱 使用 IBM watsonx.ai Studio 索引代碼倉庫

  2. 確保為每個包含其使用者的子團隊建立部署空間。

  3. 針對每個文件儲存庫索引,在相關部署空間中建立連線資產。 如需詳細資訊,請參閱 建立連線資產

  4. 在聊天中使用 @docs 指令產生使用文件索引中的上下文的回應。

Watsonx Code Assistant 根據指派給使用者的部署空間使用文件儲存庫索引。 不需要用戶端設定。

允許基於角色的使用者存取專案文件儲存庫

在此使用個案中,團隊中的使用者需要根據其角色存取不同的文件集。 不同使用者使用的上下文文件範圍各異,且無存取限制。 例如,開發人員只需要技術和 API 文件,而業務分析師則專注於業務流程文件。

要自訂用作上下文的文件儲存庫:

  1. 分別為向量儲存庫中的每個文件儲存庫建立索引。 如需詳細資訊,請參閱 使用 IBM watsonx.ai Studio 索引代碼倉庫

  2. 在團隊的部署空間中為每個索引建立連線資產。 如需詳細資訊,請參閱 建立連線資產

  3. 為用作上下文的所需文件索引設定 YAML 配置。 如果您需要使用多個文件索引,請為每個文件索引設定 YAML 設定。

  4. 在聊天中使用 @docs 指令產生使用文件索引中的上下文的回應。