스마트 검색 기능 구현: Azure + .NET을 활용한 AI 기반 검색 시스템
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
.NET 및 Azure 개발자 (중급 이상)
- 난이도: 중급 이상 (Azure 리소스 구성, .NET SDK 사용, AI 모델 연동 필요)
핵심 요약
- Azure Cognitive Search + Azure OpenAI 연동을 통해 Semantic + Vector Hybrid Search 구현
- Retrieval-Augmented Generation (RAG) 기반으로 문맥 인식형 답변 제공
- .NET 7/8 SDK 사용, Azure OpenAI의 text-embedding-ada-002 모델 활용
섹션별 세부 요약
1. 아키텍처 개요
- 사용자 쿼리 → .NET API → Azure Search(하이브리드 검색) → 관련 문서 → Azure OpenAI RAG → 답변
- Azure Cognitive Search의 Standard+ 이상 SKU 필요 (기본형은 벡터/세마틱 기능 미지원)
- Azure CLI 명령어:
az search service create --name my-search --sku standard --resource-group my-rg
2. Azure Cognitive Search 구성
dotnet add package Azure.Search.Documents
패키지 설치- 문서 인덱싱 시 contentVector 필드에 Azure OpenAI의 text-embedding-ada-002 모델로 생성된 벡터 삽입
3. 하이브리드 검색 수행
SearchOptions
설정:
- Vector = embeddingBytes
- VectorFields = { "contentVector" }
- QueryType = Semantic
- SemanticConfigurationName = "default"
Azure.Search.Documents
의SearchAsync
메서드로 쿼리 실행
4. Azure OpenAI RAG 연동
AzureOpenAIClient
생성 후gpt-35-turbo
모델 사용- 검색 결과 문서 내용을 ChatMessage에 포함해 RAG 기반 답변 생성
- 예시:
```csharp
var completion = await chat.GetChatCompletionsAsync(new ChatCompletionsOptions
{
Messages = {
new ChatMessage(ChatRole.System, "You are an AI assistant."),
new ChatMessage(ChatRole.User, $"Answer based on: {resultContent}\n\nQuery: azure ai")
},
Temperature = 0.7f,
MaxTokens = 256
});
```
5. 실세계 활용 사례
- Microsoft Learn: 문서 검색 시 세마틱 + 벡터 검색 적용
- 기업 내부: 내부 지식 베이스 Q&A, 규제 준수 자동화
- 도메인별 스마트 어시스턴트: Internal Copilots 구현
결론
- 30분 내 기본 키워드 검색에서 GPT-增强 Hybrid Retrieval으로 전환 가능
- 보안 및 확장성 고려: Azure의 암호화, 스케일링, 모니터링 기능 활용
- 실무 적용 시 Azure OpenAI의 text-embedding-ada-002 모델 사용 권장, .NET 7/8 SDK와 호환 확인 필수