검색 증강 생성(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는 모델 환각을 줄이고 생성된 응답의 정확도를 향상시킵니다.

Git 리포지토리에 저장되지 않은 특정 코드 리포지토리 및 프로젝트 문서로 watsonx Code Assistant 를 구성하여 RAG를 사용하여 채팅 메시지에 대한 관련 정보를 추출할 수 있습니다. API 문서, readme 파일, 기술 및 디자인 문서, Markdown, PDF, Word, PowerPoint 문서 등의 문서를 구성할 수 있습니다.

다음 그림은 watsonx Code Assistant 에 대한 RAG를 구성하는 절차를 설명합니다:

RAG 설정 절차 RAG 설정 절차 watsonx Code Assistant
watsonx Code Assistant

RAG 활성화

RAG를 활성화하려면:

  1. IBM Cloud 에서 벡터 스토어를 프로비저닝합니다.

    1. IBM Cloud 에서 Milvus 또는 Elasticsearch 벡터 스토어 인스턴스를 프로비저닝합니다. 벡터 스토어가 이미 IBM Cloud 에서 사용 가능한 경우 이 단계를 건너뛸 수 있습니다.

    2. 선택 사항입니다: IBM watsonx.ai Studio 인스턴스를 프로비저닝하여 코드 저장소를 인덱싱합니다.

  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 을 검색한 다음 GitHub WCA용 개인 액세스 토큰 입력을 클릭합니다.
    5. GitHub 개인 액세스 토큰을 입력하고 Enter 또는 Return 을 누릅니다.
    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 구성 설정하기

watsonx Code Assistant 에서 여러 리포지토리를 동시에 검색하거나 벡터 저장소의 특정 인덱싱된 코드 리포지토리 또는 문서를 사용하도록 YAML 구성을 선택적으로 설정할 수 있습니다. 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 명령을 사용하여 문서 색인의 컨텍스트를 사용하는 응답을 생성합니다.