[Azure] Cosmos DB + OpenAI로 RAG 기반 챗봇 구축하기 (Full Guide)

감자·2026년 2월 12일

microsoft_dataschool

목록 보기
23/28
post-thumbnail

이번 포스팅에서는 Azure의 핵심 PaaS 서비스들을 활용하여 RAG (Retrieval-Augmented Generation) 아키텍처 기반의 챗봇을 구축하는 과정을 정리합니다.


1. 아키텍처 개요

전체적인 시스템의 데이터 흐름과 사용되는 핵심 기술 스택은 다음과 같습니다.

  • 시스템 흐름: 데이터 수집 전처리/벡터화 Cosmos DB 저장 사용자 쿼리 챗봇(RAG) 응답
  • 핵심 기술 스택:
  • Azure Cosmos DB: 벡터 데이터 저장 (Vector Store)
  • Azure OpenAI: 텍스트 임베딩 및 답변 생성 (GPT-4o, Embedding model)
  • Azure Functions: 백엔드 서버리스 컴퓨팅
  • Gradio: 사용자 인터페이스 (UI)

2. Azure Cosmos DB 리소스 생성

RAG의 핵심인 벡터 저장소(Vector Store)를 구축하기 위해 Cosmos DB for NoSQL을 생성합니다.

2-1. 리소스 생성

  1. Azure Portal 접속 (portal.azure.com)
  2. 리소스 그룹 선택 (예: el31-solar-hubs-rg) 후 [+ 만들기] 클릭
  3. Marketplace에서 Azure Cosmos DB 검색 및 선택
  4. Azure Cosmos DB for NoSQL 카드에서 [만들기] 클릭

2-2. 인스턴스 세부 설정

  • Workload Type: Learning (학습용)
  • 계정 이름: 예) el31-cosmosdb (고유한 이름)
  • Availability Zones: 사용 안 함
  • 위치: East US (OpenAI 리전과 동일하게 설정 권장)
  • 용량 모드: Serverless (비용 효율적)
  • 설정 후 [검토 + 만들기] [만들기] 클릭

3. Vector Search 설정 및 컨테이너 구성

Cosmos DB가 벡터 데이터를 처리할 수 있도록 기능을 활성화하고 컨테이너를 구성해야 합니다.

3-1. Vector Search 기능 활성화

  1. 배포 완료 후 [리소스로 이동]
  2. 왼쪽 메뉴 [설정] > [기능(Features)] 클릭
  3. Vector Search for NoSQL API 클릭 후 [사용(Enable)] 버튼 클릭
  4. 상태가 '켜기(On)'로 변경되었는지 확인

3-2. 데이터베이스 및 컨테이너 생성

  1. [데이터 탐색기(Data Explorer)] 메뉴 클릭
  2. [New Container] 버튼 클릭
  3. 다음 정보 입력:
  • Database id: solar-predict-database
  • Container id: solar-predict-container
  • Partition key: /id

3-3. 벡터 임베딩 정책 설정 (중요 ⭐)

Container Vector Policy 설정에서 [Add vector embedding] 버튼을 눌러 아래 두 가지 정책을 모두 추가합니다.

설정 항목Vector Embedding 1Vector Embedding 2
Path/locationVector/contentVector
Data typefloat32float32
Distance functiondotproductcosine
Dimensions30723072
Index typequantizedFlatquantizedFlat

Note: Dimensions 값 3072는 사용할 임베딩 모델(text-embedding-3-large)의 차원 수에 맞춰야 합니다.

설정 완료 후 [OK]를 클릭하여 컨테이너를 생성합니다.


4. Azure OpenAI 리소스 및 모델 배포

4-1. 리소스 생성

  1. Azure Portal에서 Azure OpenAI 검색 및 [만들기]
  2. 세부 정보:
  • 지역: East US
  • 이름: 예) el31-azoai
  • 가격 책정 계층: Standard S0
  1. [검토 + 제출] [만들기]

4-2. 모델 배포 (Azure AI Foundry Portal)

  1. 리소스 생성 후 [Go to Azure AI Foundry portal] 버튼 클릭
  2. 좌측 [배포(Deployments)] 메뉴 [모델 배포] 선택

A. ChatGPT 모델 (대화용)

  • 모델명: gpt-4o-mini 선택
  • 배포 이름: el31-solar-predict-gpt

B. Embedding 모델 (벡터화용)

  • 모델명: text-embedding-3-large 선택
  • 배포 이름: el31-solar-text-embedding

5. 로컬 프로젝트 설정 (VS Code)

5-1. 프로젝트 클론

VS Code 터미널에서 아래 명령어를 통해 프로젝트를 가져옵니다.

# GitHub PAT(Personal Access Token)이 포함된 URL 예시
git clone https://<YOUR_PAT>@github.com/IDKNWHORU/solar-predict-cosmosdb-rag.git

# 폴더 이동 및 VS Code 실행
cd solar-predict-cosmosdb-rag
code .

5-2. 환경 변수 설정 (local.settings.json)

VS Code 루트 경로에 local.settings.json 파일을 생성하고, Azure Portal에서 키와 엔드포인트 정보를 가져와 채워 넣습니다.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    
    // Azure OpenAI 설정 (리소스 관리 > 키 및 엔드포인트)
    "OPENAI_ENDPOINT": "https://<your-resource-name>.openai.azure.com/",
    "OPENAI_KEY": "<YOUR_OPENAI_KEY>",
    "OPENAI_API_VERSION": "2025-01-01-preview",
    "OPENAI_GPT_MODEL": "el31-solar-predict-gpt",         // 배포한 모델명
    "OPENAI_EMBEDDINGS_DEPLOYMENT": "el31-solar-text-embedding", // 배포한 모델명

    // Azure Cosmos DB 설정 (설정 > 키)
    "COSMOSDB_ENDPOINT": "https://<your-cosmos-name>.documents.azure.com:443/",
    "COSMOSDB_KEY": "<YOUR_PRIMARY_KEY>",
    "COSMOSDB_DATABASE": "solar-predict-database",
    "COSMOSDB_CONTAINER": "solar-predict-container"
  }
}

6. Azure Functions 앱 생성 및 배포

마지막으로 백엔드 로직이 담긴 코드를 Azure Functions에 배포합니다.

6-1. Functions 리소스 생성

  1. Azure Portal에서 [함수 앱(Function App)] 검색 [만들기]
  2. 기본 설정:
  • 호스팅 계획: 사용량(Consumption)
  • 함수 앱 이름: 고유한 이름 (예: el31-solar-func)
  • 런타임 스택: Python (버전 3.11)
  • 지역: East US 2 (또는 리소스 그룹과 동일 지역)
  1. [만들기] 클릭

6-2. VS Code에서 배포

Azure Tools 확장 프로그램을 사용하여 간편하게 배포할 수 있습니다.

  1. 환경 변수 업로드:
  • F1 키 Azure Functions: Upload Local Settings... 선택
  • 생성한 Function App 선택 (로컬 설정이 클라우드에 반영됨)
  1. 코드 배포:
  • F1 키 Azure Functions: Deploy to Function App... 선택
  • 배포할 Function App 선택 [Deploy] 클릭

6-3. 최종 확인

Azure Portal의 Function App 메뉴에서 함수(Functions) 탭을 클릭하여 아래 두 함수가 정상적으로 등록되었는지 확인합니다.

  • chat_rag
  • solar_predict_cosmosdb
profile
제 별명이 감자입니다

0개의 댓글