스마트 검색 기능 구현: 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.DocumentsSearchAsync 메서드로 쿼리 실행

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와 호환 확인 필수