
이번 포스팅에서는 Azure의 핵심 PaaS 서비스들을 활용하여 RAG (Retrieval-Augmented Generation) 아키텍처 기반의 챗봇을 구축하는 과정을 정리합니다.
전체적인 시스템의 데이터 흐름과 사용되는 핵심 기술 스택은 다음과 같습니다.
RAG의 핵심인 벡터 저장소(Vector Store)를 구축하기 위해 Cosmos DB for NoSQL을 생성합니다.
el31-solar-hubs-rg) 후 [+ 만들기] 클릭Azure Cosmos DB 검색 및 선택el31-cosmosdb (고유한 이름)East US (OpenAI 리전과 동일하게 설정 권장)Cosmos DB가 벡터 데이터를 처리할 수 있도록 기능을 활성화하고 컨테이너를 구성해야 합니다.
Vector Search for NoSQL API 클릭 후 [사용(Enable)] 버튼 클릭solar-predict-databasesolar-predict-container/idContainer Vector Policy 설정에서 [Add vector embedding] 버튼을 눌러 아래 두 가지 정책을 모두 추가합니다.
| 설정 항목 | Vector Embedding 1 | Vector Embedding 2 |
|---|---|---|
| Path | /locationVector | /contentVector |
| Data type | float32 | float32 |
| Distance function | dotproduct | cosine |
| Dimensions | 3072 | 3072 |
| Index type | quantizedFlat | quantizedFlat |
Note: Dimensions 값
3072는 사용할 임베딩 모델(text-embedding-3-large)의 차원 수에 맞춰야 합니다.
설정 완료 후 [OK]를 클릭하여 컨테이너를 생성합니다.
Azure OpenAI 검색 및 [만들기]East USel31-azoaiStandard S0A. ChatGPT 모델 (대화용)
gpt-4o-mini 선택el31-solar-predict-gptB. Embedding 모델 (벡터화용)
text-embedding-3-large 선택el31-solar-text-embeddingVS 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 .
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"
}
}
마지막으로 백엔드 로직이 담긴 코드를 Azure Functions에 배포합니다.
사용량(Consumption)el31-solar-func)Python (버전 3.11)East US 2 (또는 리소스 그룹과 동일 지역)Azure Tools 확장 프로그램을 사용하여 간편하게 배포할 수 있습니다.
F1 키 Azure Functions: Upload Local Settings... 선택F1 키 Azure Functions: Deploy to Function App... 선택Azure Portal의 Function App 메뉴에서 함수(Functions) 탭을 클릭하여 아래 두 함수가 정상적으로 등록되었는지 확인합니다.
chat_ragsolar_predict_cosmosdb