이 프로젝트는 Azure의 다양한 서비스를 LlamaIndex 프레임워크와 연동하여 구축한 AI 기반의 사업 분석가 면접 시스템입니다. 지원자의 분석적 사고와 전략적 통찰력을 심층적으로 평가하는 것을 목표로 합니다.
RAG(Retrieval-Augmented Generation) 기술을 활용하여, 회사 내부 자료(사업보고서, 실적 데이터 등)에 기반한 맞춤형 질문을 생성하고, 지원자의 답변을 내부 데이터와 실시간 웹 검색 결과를 교차 검증하여 정교한 피드백을 제공합니다.
-
맞춤형 질문 생성: Azure Blob Storage에 저장된 최신 회사 자료를 바탕으로, 지원자의 역량을 검증할 수 있는 날카로운 면접 질문을 동적으로 생성합니다.
-
다각적 답변 분석: 지원자의 답변에 대해 아래 두 가지 관점에서 심층 분석을 수행합니다.
- 내부 데이터 기반 사실 확인 (Fact-Checking): RAG 시스템을 통해 내부 자료와 지원자 주장의 일치 여부를 검증합니다.
- 외부 데이터 기반 최신성/객관성 확보: 웹 검색(DuckDuckGo)을 통해 지원자의 답변이 최신 시장 동향과 부합하는지 확인합니다.
-
지능형 꼬리 질문: AI가 답변 분석 결과를 바탕으로, 지원자의 논리를 더 깊게 파고드는 꼬리 질문을 생성하여 일관성과 깊이를 평가합니다.
-
자동 인덱스 동기화: Azure Blob Storage의 문서가 변경(추가, 수정, 삭제)되면, Azure AI Search의 벡터 인덱스를 자동으로 동기화하여 항상 최신 정보를 유지합니다.
-
최종 종합 리포트: 면접 종료 후, 전체 대화 내용을 바탕으로 지원자의 핵심 역량과 성장 가능성을 담은 종합 분석 리포트를 생성합니다.
현재 시스템에 데이터가 준비되어 면접 진행이 가능한 기업은 아래와 같습니다. (총 30개 기업)
삼성전자, 현대자동차, LG전자, 기아, SK하이닉스, 삼성에스디에스, 삼성SDI, CJ, 케이티, 한국전력공사, HDC, 롯데지주, 한국타이어앤테크놀로지, 하나금융지주, 현대백화점, 농심, 코오롱, 하림, GS건설, 웅진, HD현대, GS, 노루페인트, 풍산, 동서, SPC삼립, LS, HS효성, 신세계, 케이티앤지
- 데이터 저장소 (Azure Blob Storage): PDF, TXT 등 분석의 기반이 되는 회사 관련 문서를 저장합니다.
- 벡터 DB (Azure AI Search): LlamaIndex를 통해 문서들을 임베딩하고 검색 가능한 벡터 인덱스로 만듭니다.
- 오케스트레이션 (LlamaIndex): 데이터 로딩, 파싱, 인덱싱, 쿼리 등 RAG 파이프라인 전체를 관리합니다.
- LLM (Azure OpenAI Service): 질문 생성, 답변 분석, 꼬리 질문 생성, 최종 리포트 작성 등 모든 언어 모델 기반 작업을 수행합니다.
- 외부 정보 검색 (DuckDuckGo):
tool_code.py
를 통해 실시간 웹 검색을 수행하여 외부 정보를 보강합니다. - 애플리케이션 (
final_interview_rag.py
): 전체 면접 프로세스를 진행하는 메인 실행 파일입니다.
- Python 3.8 이상 (Python 3.11 권장)
- Azure 구독 및 아래 리소스 생성:
- Azure Storage Account: Blob 컨테이너 생성 (예:
interview-data
) - Azure AI Search: 서비스 생성
- Azure OpenAI Service:
gpt-4o
,text-embedding-3-small
등 모델 배포
- Azure Storage Account: Blob 컨테이너 생성 (예:
# 1. 프로젝트 클론
git clone [https://github.com/project-ares-interview/RAG-LlamaIndex](https://github.com/project-ares-interview/RAG-LlamaIndex)
cd your-project-directory
# 2. 필수 라이브러리 설치
python -m pip install -r requirements.txt
프로젝트 루트에 .env.keys 파일을 생성하고, 아래 목록에 맞게 자신의 Azure 서비스 키와 엔드포인트 정보를 입력합니다.
# .env.keys
# Azure OpenAI (LLM & Embedding)
AZURE_OPENAI_ENDPOINT="https://<your-openai-service-name>.openai.azure.com/"
AZURE_OPENAI_KEY="<your-openai-api-key>"
API_VERSION="2024-02-15-preview"
AZURE_OPENAI_MODEL="<your-chat-model-deployment-name>"
AZURE_EMBEDDING_MODEL="<your-embedding-model-deployment-name>"
# Azure Storage (RAG용)
AZURE_STORAGE_CONNECTION_STRING="<your-storage-connection-string>"
# Azure AI Search (RAG용)
AZURE_SEARCH_ENDPOINT="https://<your-search-service-name>.search.windows.net"
AZURE_SEARCH_KEY="<your-search-admin-key>"
사전에 생성한 Azure Blob Storage 컨테이너(예: interview-data)에 분석할 회사 자료(PDF, TXT 파일)를 업로드합니다.
python final_interview_rag.py
Azure AI Search 인덱스를 동기화하시겠습니까? (y/n): 라는 질문에는 n을 입력하고 엔터를 누릅니다. (미리 준비된 30개 기업의 인덱스가 이미 최신 상태입니다. 직접 데이터를 추가/수정한 경우에만 y를 선택하세요.)