
시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Create a database and enable pgVector extension
/ 20
Populate database with the sample dataset
/ 20
Create the service account retrieval-identity
/ 20
Deploy the Retrieval Service
/ 20
Create a Client Id
/ 20
대규모 언어 모델(LLM)의 응답 품질 개선을 위한 최고의 도구 중 하나는 검색 증강 생성(RAG)입니다. RAG는 일부 비공개 데이터를 검색하고 해당 데이터를 사용하여 LLM으로 보내는 프롬프트를 보강하는 패턴입니다. RAG를 사용하면 LLM이 프롬프트에 포함된 데이터를 기반으로 보다 정확한 응답을 생성할 수 있습니다.
Google Cloud의 확장 가능하고 성능이 우수한 PostgreSQL 호환 데이터베이스인 AlloyDB를 사용하여 벡터 임베딩이라는 특수한 종류의 벡터 데이터를 저장하고 검색해 보겠습니다. 벡터 임베딩은 시맨틱 검색을 사용하여 검색할 수 있으며, 이를 통해 사용자의 자연어 쿼리와 가장 일치하는 사용 가능한 데이터 검색이 가능합니다. 검색된 데이터는 프롬프트의 LLM에 전달됩니다.
Google Cloud의 완전 관리형 통합 AI 개발 플랫폼인 Vertex AI를 사용하여 생성형 AI를 빌드하고 사용할 수도 있습니다. 텍스트 또는 채팅 프롬프트에서 이미지, 오디오, 동영상, PDF 파일 추가를 지원하고 긴 컨텍스트 이해를 지원하는 멀티모달 파운데이션 모델인 Gemini Pro가 애플리케이션에 사용됩니다.
이 실습에서는 다음 방법을 배웁니다.
Qwiklabs 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
이 실습을 완료하려면 다음이 필요합니다.
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에 있는 패널에서 이 실습에 사용해야 하는 임시 사용자 인증 정보를 확인할 수 있습니다.
사용자 이름을 복사한 다음 Google 콘솔 열기를 클릭합니다. 실습에서 리소스가 실행되며 계정 선택 페이지를 표시하는 다른 탭이 열립니다.
계정 선택 페이지에서 다른 계정 사용을 클릭합니다. 로그인 페이지가 열립니다.
연결 세부정보 패널에서 복사한 사용자 이름을 붙여넣습니다. 그런 다음 비밀번호를 복사하여 붙여넣습니다.
잠시 후 Cloud 콘솔이 이 탭에서 열립니다.
Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.
Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.
Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.
계속을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:
gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.
출력:
출력 예시:
출력:
출력 예시:
이 작업에서는 PostgreSQL 클라이언트를 설치하고 AlloyDB 인스턴스에 연결합니다.
가상 머신(VM)이 생성되었습니다. 이 VM이 애플리케이션을 호스팅합니다. 또한 이 VM에 PostgreSQL 클라이언트를 만듭니다.
다음 명령어를 실행하여 VM에 연결합니다.
승인을 요청하는 메시지가 나타나면 승인을 클릭합니다.
gcloud compute ssh
명령어에서 묻는 각 질문에 대해 Enter 또는 Return을 클릭하여 기본 입력을 지정합니다.
잠시 기다리면 VM에 로그인됩니다.
VM 세션에서 다음 명령어를 실행하여 PostgreSQL 클라이언트를 설치합니다.
AlloyDB 인스턴스가 이미 생성되었습니다.
다음 명령어를 실행하여 필요한 셸 변수를 만듭니다.
다음 명령어를 실행하여 psql을 사용해서 AlloyDB 인스턴스에 연결합니다.
psql이 AlloyDB 데이터베이스에 연결되고 postgres=>
프롬프트가 표시됩니다. 이제 데이터베이스에 연결되었습니다.
다음 명령어를 실행하여 psql 세션을 종료합니다.
이 작업에서는 PostgreSQL 클라이언트를 사용하여 AlloyDB 데이터베이스를 만들고 벡터 임베딩을 사용 설정합니다.
VM 세션에서 다음 명령어를 실행하여 새 데이터베이스를 만듭니다.
psql이 CREATE DATABASE
를 반환합니다.
데이터베이스가 시맨틱 검색을 지원할 수 있게 하려면 항목을 벡터 임베딩으로 표현해야 합니다.
다음 명령어를 실행하여 이 데이터베이스에서 벡터 임베딩을 사용 설정합니다.
psql이 CREATE EXTENSION
을 반환합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
이 작업에서는 VM에 Python을 설치합니다. Python은 데이터베이스를 채우는 데 사용됩니다.
VM에서 다음 명령어를 실행하여 Python과 Git을 설치합니다.
설치가 완료되면 (.venv)
프롬프트가 표시된 상태로 가상 Python 환경에 남게 됩니다.
VM SSH 세션이 타임아웃되거나 탭이 닫히면 VM에 다시 SSH로 연결하고 source ~/.venv/bin/activate
명령어를 사용하여 가상 Python 환경을 다시 시작할 수 있습니다.
다음 명령어를 실행하여 Python 버전을 확인합니다.
응답은 다음과 유사합니다.
이 작업에서는 AlloyDB의 벡터 데이터베이스에 샘플 데이터를 채웁니다. 이 데이터는 샘플 채팅 애플리케이션에 사용됩니다.
예시 애플리케이션과 데이터는 genai-databases-retrieval-app이라는 GitHub 저장소에 저장되어 있습니다.
VM에서 다음 명령어를 실행하여 저장소를 클론합니다.
다음 명령어를 실행하여 데이터 모델을 봅니다.
Python 데이터 모델이 여기에 표시됩니다. 모델에는 공항, 항공편, 터미널 내 편의시설, 정책, 항공권이 포함되어 있습니다.
다음 명령어를 실행하여 공항 데이터의 예를 봅니다.
이 명령어는 공항 데이터 세트의 열 이름을 지정하는 CSV 헤더와 샌프란시스코 국제공항(SFO)의 행을 표시합니다. 국제 항공 운송 협회(IATA) 코드 또는 국가, 도시, 공항 이름을 기준으로 공항 모델의 데이터를 검색할 수 있습니다. 키워드 검색을 사용하여 이 테이블에서 행을 찾을 수 있으므로 이 데이터에 대한 벡터 임베딩은 없습니다.
다음 명령어를 실행하여 항공편 데이터의 예를 봅니다.
이 명령어는 항공편 데이터 세트의 열 이름을 지정하는 CSV 헤더와 SFO행 또는 SFO발 항공편의 처음 10개 행을 표시합니다. 항공사와 항공편 번호 또는 출발 공항 코드와 도착 공항 코드를 기준으로 항공편 모델의 데이터를 검색할 수 있습니다.
다음 명령어를 실행하여 편의시설 데이터의 예를 봅니다.
이 명령어는 편의시설 데이터 세트의 열 이름을 지정하는 CSV 헤더와 첫 번째 편의시설을 표시합니다.
첫 번째 편의시설에는 이름, 설명, 위치, 터미널, 카테고리, 영업시간을 비롯한 여러 개의 단순한 값이 있습니다. 다음 값은 이름, 설명, 위치를 통합하는 content
입니다. 마지막 값은 행에 대한 벡터 임베딩인 embedding
입니다.
임베딩은 768개의 숫자로 구성된 배열로, 시맨틱 검색을 수행할 때 사용됩니다. 이러한 임베딩은 Vertex AI에서 제공하는 AI 모델을 사용하여 계산됩니다. 사용자가 쿼리를 제공하면 쿼리에서 벡터 임베딩을 만들 수 있으며, 검색의 임베딩과 유사한 벡터 임베딩이 있는 데이터를 검색할 수 있습니다.
정책 데이터도 비슷한 방식으로 벡터 임베딩을 사용합니다.
다음 명령어를 실행하여 데이터베이스 구성 파일을 만듭니다.
업데이트된 인스턴스 IP 주소, 사용자 이름, 비밀번호, 데이터베이스로 config.yml
구성 파일이 생성됩니다. 구성 파일은 다음과 유사합니다.
다음 명령어를 실행하여 데이터베이스에 샘플 데이터 세트를 채웁니다.
첫 번째 명령어는 Python 가상 환경에 필요한 모든 패키지를 추가하고 두 번째 명령어는 데이터베이스에 데이터를 채웁니다.
이 작업에서는 검색 서비스에 사용할 서비스 계정을 만듭니다.
검색 서비스는 데이터베이스에서 관련 정보를 추출하는 역할을 합니다. 또한 AI 애플리케이션의 요청에 따라 데이터베이스에서 필요한 정보를 추출합니다. 이 서비스 계정은 해당 Cloud Run 서비스의 ID로 사용됩니다.
SSH 사용자가 프로젝트 인스턴스에 대한 권한이 없어 서비스 계정에 알맞은 역할을 제공할 수 없습니다. 새 Cloud Shell 탭을 사용하여 서비스 계정을 만듭니다.
Cloud Shell에서 새 Cloud Shell 탭을 열려면 새 탭 열기 (+)를 클릭합니다.
새 탭에서 다음 명령어를 실행하여 서비스 계정을 만들고 필요한 권한을 부여합니다.
이 서비스 계정에는 roles/aiplatform.user
역할이 부여되어 해당 서비스에서 Vertex AI를 호출할 수 있습니다.
다음 명령어를 실행하여 새 탭을 닫습니다.
이 작업에서는 Cloud Run에 검색 서비스를 배포합니다.
VM SSH Cloud Shell 탭에서 다음 명령어를 실행하여 검색 서비스를 배포합니다.
배포가 완료될 때까지 몇 분 정도 기다립니다.
다음 명령어를 실행하여 서비스를 확인합니다.
'Hello World' 메시지가 표시되면 서비스가 작동 중이며 요청을 처리하고 있는 것입니다.
이 작업에서는 로그인하는 사용자에게 표시되는 OAuth 동의 화면을 등록합니다.
승인에 OAuth 2.0을 사용하는 경우 애플리케이션과 데이터 공유에 대한 사용자 동의를 구하는 동의 화면이 표시됩니다.
Google Cloud 콘솔에서 탐색 메뉴()를 선택한 다음 API 및 서비스 > OAuth 동의 화면을 선택합니다.
시작하기를 클릭합니다.
앱 이름에 Cymbal Air
를 입력합니다.
사용자 지원 이메일을 클릭한 후 학습자 이메일을 클릭하고 다음을 클릭합니다.
대상에서 내부를 선택하고 다음을 클릭합니다.
프로젝트에 대한 액세스 권한이 있는 사용자는 앱에 로그인할 수 있습니다.
실습 안내의 왼쪽 패널에서 사용자 이름을 복사합니다.
연락처 정보에 복사한 사용자 이름을 붙여넣습니다.
다음을 클릭합니다.
체크박스를 클릭하여 사용자 데이터 정책에 동의한 후 계속을 클릭하고 만들기를 클릭합니다.
이제 동의 화면이 설정되었습니다.
이 작업에서는 애플리케이션의 클라이언트 ID를 만듭니다.
Google의 OAuth 서비스를 사용하려면 애플리케이션에 클라이언트 ID가 필요합니다. 이 요청을 할 수 있는 허용된 출처와 사용자가 로그인에 동의한 후 웹 앱이 리디렉션되는 리디렉션 URI를 구성합니다.
Google Cloud 콘솔에서 탐색 메뉴()를 선택하고 API 및 서비스 > 사용자 인증 정보를 선택합니다.
+ 사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 클릭합니다.
클라이언트 ID는 Google OAuth 서버에서 단일 앱을 식별하는 데 사용됩니다.
애플리케이션 유형에서 웹 애플리케이션을 선택합니다.
이름에 Cymbal Air
를 입력합니다.
Cloud Shell을 사용하여 JavaScript 출처와 리디렉션 URI를 생성할 수 있습니다.
Cloud Shell에서 새 Cloud Shell 탭을 열려면 새 탭 열기 (+)를 클릭합니다.
새 탭에서 다음 명령어를 실행하여 출처와 리디렉션 URI를 가져옵니다.
승인된 JavaScript 원본에서 + URI 추가를 클릭합니다.
echo 명령어로 생성된 출처 URI를 복사하여 URI 1에 붙여넣습니다.
승인된 리디렉션 URI에서 + URI 추가를 클릭합니다.
echo 명령어로 생성된 리디렉션 URI를 복사하여 URI 1에 붙여넣습니다.
만들기를 클릭합니다.
클라이언트 ID와 클라이언트 보안 비밀번호가 생성됩니다. 이 테스트 애플리케이션에서는 클라이언트 ID만 사용합니다.
VM SSH Cloud Shell 탭에서 Enter를 클릭하지 않고 다음 명령어를 붙여넣어 환경 변수를 만듭니다.
클라이언트 ID 복사()를 클릭합니다.
클라이언트 ID가 클립보드에 복사됩니다.
VM SSH Cloud Shell 탭에서 클라이언트 ID를 붙여넣고 Enter를 클릭합니다.
내보내기는 다음과 유사합니다.
이 작업에서는 검색 서비스를 사용하는 샘플 채팅 애플리케이션을 실행합니다.
VM SSH Cloud Shell 탭에서 다음 명령어를 실행하여 채팅 애플리케이션에 필요한 Python 요건을 설치합니다.
애플리케이션을 시작하기 전에 몇 가지 환경 변수를 설정해야 합니다. 항공편 쿼리, 공항 편의시설 반환 등의 애플리케이션 기본 기능을 사용하려면 BASE_URL
이라는 환경 변수에 검색 서비스의 기준 URL이 포함되어야 합니다.
다음 명령어를 실행하여 검색 서비스의 기준 URL을 지정합니다.
기준 URL은 로컬 애플리케이션에서 검색 서비스에 액세스하는 데 사용됩니다.
다음 명령어를 실행하여 애플리케이션을 실행합니다.
응답은 다음과 유사합니다.
이제 애플리케이션이 실행되고 있습니다.
여러 가지 방법으로 VM에서 실행 중인 애플리케이션에 연결할 수 있습니다. 예를 들어 VPC에서 방화벽 규칙을 사용하여 VM에서 포트 8081을 열거나 공개 IP로 부하 분산기를 만들 수 있습니다. 여기서는 VM에 연결되는 SSH 터널을 사용하여 Cloud Shell 포트 8080을 VM 포트 8081로 변환합니다.
Cloud Shell에서 새 Cloud Shell 탭을 열려면 새 탭 열기 (+)를 클릭합니다.
새 탭에서 다음 명령어를 실행하여 VM 포트에 연결되는 SSH 터널을 만듭니다.
gcloud 명령어가 Cloud Shell의 포트 8080을 VM의 포트 8081과 연결합니다. '요청한 주소를 할당할 수 없음' 오류는 무시해도 됩니다.
웹브라우저에서 애플리케이션을 실행하려면 웹 미리보기를 클릭하고 포트 8080에서 미리보기를 선택합니다.
브라우저에 새 탭이 열리고 애플리케이션이 실행됩니다. Cymbal Air 애플리케이션에 'Welcome to Cymbal Air! How may I assist you?(Cymbal Air에 오신 걸 환영합니다. 무엇을 도와드릴까요?)'라는 메시지가 나타납니다.
다음 쿼리를 입력합니다.
애플리케이션이 SFO에서 댈러스/포트워스로 가는 다음 항공편을 알려줍니다.
다음 쿼리를 입력합니다.
애플리케이션이 맥락을 이해하고 SFO의 탑승구 근처 식당을 알려줍니다.
이 작업에서는 애플리케이션에 로그인하여 항공편을 예약합니다.
로그인을 클릭합니다.
팝업 창이 열립니다.
팝업 창에서 학습자를 선택합니다.
학습자 계정에 로그인됩니다.
학습자로 로그인할지 확인하라는 메시지가 나타나면 확인을 클릭합니다.
다음 쿼리를 입력합니다.
애플리케이션에서 논의 중이던 항공편을 표시합니다.
Looks good to me. Book it(좋습니다. 예약하기)를 클릭합니다.
항공편이 예약됩니다.
다음 쿼리를 입력합니다.
방금 예약한 항공편이 표시됩니다.
채팅 앱은 다음과 같은 사용자 질문에 답하는 데 도움이 될 수 있습니다.
이 애플리케이션은 최신 Google 파운데이션 모델을 사용하여 응답을 생성하고, 운영 중인 AlloyDB 데이터베이스의 항공편과 편의시설 관련 정보로 응답을 보강합니다. 프로젝트의 GitHub 페이지에서 이 데모 애플리케이션에 관한 자세한 내용을 확인할 수 있습니다.
대규모 언어 모델(LLM)과 검색 증강 생성(RAG)을 활용하여 흥미롭고 유익한 대화를 만드는 채팅 애플리케이션을 빌드했습니다.
실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.
실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.
별점의 의미는 다음과 같습니다.
의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.
의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.
Copyright 2024 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.