AI 기반 검색으로 AWS GitHub 레포지토리 검색, 10초 컷!
AWS 개발자의 고충 해결을 위해 10,000개 이상의 AWS GitHub 레포지토리를 검색하는 AI 기반 검색 엔진을 구축
BM25(키워드 매칭)와 FAISS(시맨틱 벡터 검색)를 결합한 하이브리드 검색 방식을 통해 정확도와 의미 기반 검색을 동시에 지원
Amazon Bedrock(Nova Pro)을 활용하여 각 레포지토리를 22개의 메타데이터 필드로 분류하여 검색 결과의 유용성(Usefulness) 극대화
FAISS on Lambda를 통해 월 6달러 미만의 비용으로 검색 엔진을 운영하며, 비용 효율성(Cost-Effectiveness)을 입증
향후 관련성 점수 개선 및 메타데이터 필드 추가를 통해 검색 엔진의 성능을 지속적으로 향상시킬 계획
하이브리드 검색 아키텍처(Hybrid Search Architecture) 심층 분석
본문에서는 BM25(BM25) 알고리즘과 FAISS(FAISS) 기반의 시맨틱 검색을 결합한 하이브리드 검색 방식을 채택했다. 특히, AWS 서비스명과 같이 정확한 키워드 매칭이 중요한 경우 BM25를 활용하고, 사용자의 의도를 파악해야 하는 경우 FAISS를 사용하여 검색 정확도를 높였다.
BM25: 정확한 키워드 매칭(Exact Keyword Matching)에 특화되어 AWS 서비스명 검색에 효과적
FAISS: 시맨틱 검색(Semantic Search)을 통해 사용자의 의도를 파악하고 관련 레포지토리 검색
70/30 비율: 테스트를 통해 최적화된 BM25와 FAISS의 가중치(Weighting)
이러한 하이브리드 방식은 도메인 특화 검색(Domain-Specific Search)에 매우 유용하며, 검색 결과의 관련성을 향상시킨다.
FAISS on Lambda의 비용 효율성(Cost-Effectiveness)
글쓴이는 FAISS를 AWS Lambda(Lambda) 환경에서 운영하여 비용 효율성(Cost-Effectiveness)을 확보했다. OpenSearch Serverless(OpenSearch Serverless)와 비교하여, FAISS on Lambda는 월 6달러 미만의 비용으로 운영 가능하며, 이는 부트스트랩(Bootstrapped) 단계에서 매우 중요한 요소이다.
OpenSearch Serverless: 24/7 운영 비용(24/7 Operational Cost) 발생
FAISS on Lambda: 요청 기반(Request-Based) 비용으로 저렴하게 운영 가능
S3 활용: 벡터 인덱스(Vector Index) 저장을 위한 S3(S3) 사용
이러한 아키텍처는 서버리스(Serverless) 환경의 장점을 극대화하여, 적은 비용으로 고성능 검색 엔진을 구축할 수 있게 한다.
22개 메타데이터 필드(Metadata Fields)의 역할
본문에서는 22개의 메타데이터 필드를 활용하여 검색 결과의 유용성(Usefulness)을 극대화했다. 단순히 레포지토리를 찾는 것을 넘어, 개발자가 원하는 정보(유지보수 여부, 복잡도, 사용 AWS 서비스, 설정 시간 등)를 제공하여 검색의 가치를 높였다.
Amazon Bedrock(Bedrock) 활용: 자동 분류(Automatic Classification)를 통해 메타데이터 생성
주요 필드: 솔루션 유형, 사용 AWS 서비스, 복잡도, 최신성, 설정 시간 등
검색 결과 필터링(Filtering) 및 정렬(Sorting) 기능 지원
이러한 메타데이터는 개발자가 프로젝트 선택(Project Selection) 시 필요한 정보를 제공하며, 검색 엔진의 사용자 경험(User Experience)을 향상시킨다.
자동 인덱싱(Auto-Indexing) 시스템 설계
글쓴이는 EventBridge(EventBridge)를 사용하여 자동 인덱싱(Auto-Indexing) 시스템을 구축했다. 이를 통해 새로운 AWS 레포지토리가 추가될 때마다 12시간 이내에 검색 가능하도록 유지하며, 수동 작업 없이 최신 검색 결과를 제공한다.
EventBridge: 정기적인 인덱싱 작업(Scheduled Indexing)을 위한 트리거(Trigger) 설정
Lambda 함수: GitHub 레포지토리 크롤링(Crawling) 및 인덱싱 수행
DynamoDB: 사용량 추적(Usage Tracking)을 위한 데이터 저장
CloudFront + S3: 프론트엔드 배포(Frontend Deployment)
이러한 자동화된 시스템은 지속적인 데이터 갱신(Continuous Data Refresh)을 가능하게 하며, 검색 엔진의 최신성(Freshness)을 유지한다.
하이브리드 검색 vs. 순수 벡터 검색(Pure Vector Search)
본문에서는 하이브리드 검색(Hybrid Search) 방식을 선택한 이유를 설명하며, 순수 벡터 검색의 한계점을 지적한다. AWS 서비스명과 같이 정확한 키워드 매칭이 필요한 경우, 순수 벡터 검색만으로는 원하는 결과를 얻기 어렵기 때문이다.
순수 벡터 검색의 한계: AWS 서비스명 정확도(Accuracy) 부족
하이브리드 검색의 장점: 정확한 키워드 매칭과 의미 기반 검색의 결합
BM25: 정확한 일치(Exact Match)를 보장
FAISS: 의미적 유사성(Semantic Similarity) 기반 검색
결과적으로 하이브리드 검색은 도메인 특화 검색(Domain-Specific Search)에 적합하며, 검색 정확도와 관련성을 모두 향상시킬 수 있다.