Overview
저희 프로젝트는 RAG (Retrieval-Augmented Generation) 기술을 활용해 전통적인 사주를 현대적으로 재해석하고 개인화된 상담 서비스를 제공하는 것을 목표로 합니다. RAG는 LLM이 외부 지식베이스에서 정보를 검색해 정확하고 풍부한 응답을 생성하는 방식으로 이 프로젝트에서는 이를 사주 기반 상담과 결합해 현실적이고 실용적인 정보를 제공하고자 했습니다. 기존 사주 해석의 한계를 보완하기 위해 Adaptive RAG를 적용해 쿼리 특성에 따라 적합한 데이터 소스를 선택하고 검색 및 응답 방식을 동적으로 조정했습니다. 이를 통해 전통적인 사주풀이와 함께 직업, 심리와 같은 현대적 고민을 반영한 종합적인 상담 서비스를 구현했습니다.
1. Motivation
저희는 RAG 기술을 적용할 수 있는 흥미로운 주제를 고민하던 중 많은 사람들이 관심을 가지고 즐겨 보는 “사주”라는 키워드에 주목했습니다. 사주는 오랜 역사를 가진 동양의 데이터 시스템으로 방대한 자료가 축적된 고전적인 빅데이터 시스템입니다. 초기에는 명리학 도서를 기반으로 사주 데이터베이스를 구축해 RAG를 활용하는 방안을 검토했지만 사주는 생년월일과 같은 고정된 인자를 입력받아 결과를 도출하는 규칙 기반의 구조라는 점에서 자유로운 쿼리와 정보를 증강하는 것이 핵심인 RAG 기술과는 본질적으로 맞지 않다고 판단했습니다. 이에 따라 저희는 RAG의 주요 특징 중 하나인 데이터 최신성에 주목했습니다. 사주 데이터는 변동이 없는 고정된 내용이지만 이를 현대적으로 해석하기 위해서는 현대의 실시간 데이터와 사용자 맞춤형 정보를 결합하는 접근이 필요하다고 생각했습니다. 따라서 저희는 현대의 데이터를 RAG를 통해 주입시켜 사용자들에게 개인화된 사주 상담을 제공하는 챗봇 서비스를 구현하는 방향으로 프로젝트를 구체화했습니다. 이를 통해 전통적인 사주 풀이를 현대적인 관점에서 재구성해 최신 데이터를 통해 사용자들에게 실질적이고 개인화된 경험을 제공하고자 했습니다.
2. Methodology
2.1. What is RAG?
RAG는 LLM(Large Language Model)이 외부 데이터베이스의 내용을 프롬프트에 추가해 정확한 정보를 생성하는 기술입니다. 기존 LLM의 한계를 보완하는 역할을 하며 정보 검색과 응답 생성을 결합해 사용자 질문에 적합하고 신뢰할 수 있는 답변을 제공합니다.

RAG는 크게 Retrieval(검색)과 Generator(생성)으로 나누어 설명됩니다. ✅ Retrieval 사용자의 질문을 바탕으로 외부 데이터베이스에서 관련 정보를 검색합니다. ✅ Generator 검색된 정보를 기반으로 사용자의 질문에 적합한 응답을 생성합니다.
RAG의 주요 장점은 다음과 같습니다. 첫째, 외부 데이터베이스에서 검증된 정보를 검색해 포함해 LLM의 추론 오류를 줄이고 정확성을 높입니다. 둘째, 사용자 질문과 관련된 최신 정보를 실시간으로 검색해 반영해 문맥에 적합한 응답을 생성할 수 있습니다. 마지막으로 RAG는 외부 데이터베이스를 활용하기 때문에 Fine-tuning에 비해 시간과 비용이 적게 소요됩니다. 별도의 대규모 학습 데이터를 준비할 필요가 없으므로 리소스를 효율적으로 사용할 수 있습니다. 하지만 기존 RAG는 모든 질문에 동일한 검색 방식을 사용하는 고정된 검색 방식의 한계가 있었습니다. 이로 인해 질문의 복잡성이나 유형에 따라 검색 결과의 적합성이 떨어지는 현상이 발생합니다. 또한 이러한 검색 방식은 상황에 따라 달라지는 사용자의 요구를 충분히 반영하지 못합니다. 따라서 저희는 이러한 문제를 해결하기 위해 Adaptive RAG 구조를 사용했습니다.
2.2. 서비스 아키텍처

먼저 사용자가 대화를 시작하면 LLM은 사용자의 요청을 받아 사주 정보 추출기로 전달합니다. 사주 정보 추출기는 요청에서 필요한 사주 데이터를 추출해 이를 LLM으로 반환합니다. LLM은 반환된 사주 데이터를 기반으로 사용자의 질문에 가장 적합한 데이터베이스를 선택하기 위해 DB 선택기와 상호작용합니다. DB 선택기는 적합한 데이터베이스를 선택한 뒤 사용자의 질문을 해당 데이터베이스로 전달하여 검색을 요청합니다. 데이터베이스는 검색 결과를 반환해 이를 다시 LLM으로 전달합니다. 마지막으로 LLM은 사용자의 사주 정보와 데이터베이스 검색 결과, 이전 대화 히스토리를 종합적으로 활용하여 최종 답변을 생성해 사용자에게 전달합니다.
2.3. 데이터 수집 및 DB 설계
데이터는 자체 크롤링, API, 실시간 검색을 활용해 웹 검색과 직업, 심리학 데이터를 수집했습니다. 데이터베이스 설계를 위해 Elastic Search를 사용해 빠른 검색과 유사도 계산이 가능하도록 구현했습니다.
웹 데이터
웹 데이터는 사용자의 질문에서 검색 키워드를 자동으로 추출해 수집했습니다. 네이버와 구글과 같은 검색 엔진에서 키워드를 기반으로 관련된 URL과 텍스트를 가져왔습니다. 수집된 텍스트는 일정 단위로 나누어 임베딩 처리를 수행해 사용자의 질문과 가장 유사한 데이터를 찾아 응답에 활용할 수 있도록 했습니다. 이를 통해 실시간으로 업데이트되는 최신 웹 데이터를 반영해 전통적인 사주 시스템의 한계를 보완했습니다.
직업 데이터
직업 데이터는 ‘커리어넷 직업백과’에서 다양한 직업 정보를 크롤링해 수집했습니다. 데이터에는 각 직업별 요구 역량, 적성, 흥미, 세부 업무 내용이 포함되어 있습니다. 사주에서 제공하는 직업운 데이터를 텍스트로 변환한 뒤 크롤링된 직업 데이터와 비교하여 사용자에게 적합한 직업을 추천했습니다. 이렇게 매칭된 추천 결과는 사주의 직업적 성향을 기반으로 개인 맞춤형 정보를 제공하는 데 사용했습니다.
심리학 데이터
심리학 데이터는‘카네기 인간관계론’ 도서를 활용해 사용자에게 실제 적용 가능한 인간관계 솔루션을 제공하고자 했습니다. 또한 GPT가 생성한 상담 데이터셋인 Councel GPT를 사용해 현대인의 고민 유형에 공감 기반 답변을 생성하는 방식을 적용했습니다. 하지만 GPT 생성 데이터의 신뢰성 부족을 보완하기 위해 카네기 인간관계론과 결합하여 데이터를 구축했습니다. 데이터 전처리 과정에서는 키워드 검색과 임베딩 유사도 검색을 함께 활용해 검색 성능을 높였습니다. Councel GPT는 질문과 답변을 하나의 청킹 단위로 구성했으며 카네기 인간관계론은 4부 30장으로 구성된 내용을 소제목과 제목 태그를 기준으로 가장 작은 단위로 분리해 임베딩했습니다. 각 임베딩 단위별로 GPT-4o mini 모델을 사용해 관계 유형과 고민 주제를 태그로 추출해 데이터베이스를 구축했습니다.
3. Experiments
3.1. Web Connector
텍스트 Chunking → 문장 단위 Chunking
기존 방식에서는 텍스트를 짧게 Chunking했지만 이로 인해 문맥이 끊기고 유의미한 정보를 추출하기 어려웠습니다. 이를 개선하기 위해 문장 단위 Chunking을 도입하여 텍스트의 맥락을 유지하고 검색 결과의 정확도를 높였습니다.
3.2. 직업 DB
직무 텍스트와 직접 비교 → 사주의 직업운 정보와 적성 데이터 연계 분석
기존에는 사주 데이터를 직업 텍스트와 단순 비교했지만 연관성이 낮은 결과가 도출되었습니다. 이를 개선하기 위해 사주의 직업운 정보를 별도로 추출하고 커리어넷의 적성과 흥미 데이터를 비교하는 방식으로 변경했습니다. 결과적으로 사용자의 직업 관련 질문에 더 적합한 응답을 제공했습니다.
3.3. 심리학 DB
인간관계 텍스트와 직접 비교 → 임베딩 기반 텍스트 유사도 분석 및 하이브리드 검색 적용
심리학 데이터는 기존 방식에서 단순한 텍스트 비교에 그쳤습니다. 이를 보완하기 위해 사용자 쿼리를 임베딩해 텍스트 유사도를 분석하고 하이브리드 검색 기능을 추가했습니다. 특히 키워드 기반 검색을 활용해 관계 유형과 고민 유형을 추출해 검색 정밀도를 높였습니다. 이를 통해 인간관계 문제와 관련된 질문에 대한 검색 정확도를 향상시켰습니다.
4. Results
4.1. 상담 결과 예시
다음은 저희 서비스에서 제공하는 상담 결과의 UI 예시입니다.

추가적으로 RAG 기술이 상담 결과의 품질에 미치는 영향을 파악하기 위해 RAG를 사용한 경우와 사용하지 않은 경우의 상담 결과를 비교해봤습니다.


먼저 RAG를 사용하지 않은 경우, 상담 결과가 전반적으로 일반적이고 포괄적인 조언에 그치는 모습을 보였습니다. 예를 들어 "존중과 배려를 보이는 것이 좋습니다.", "의사소통을 강화하세요"와 같은 기본적인 대인관계 조언 중심이며 구체성이 부족하고 개인의 질문 맥락을 반영하지 못했습니다. 또 외부 데이터를 활용하지 않아 제한적인 답변을 생성합니다. 반면 RAG를 사용한 경우, 사용자의 사주 데이터를 기반으로 성향과 강점을 분석해 더 구체적인 조언을 제공했습니다. 예를 들어, "통신, 미용, 스타일리스트, 패션 관련 직업"과 같이 구체적인 직업을 추천했습니다. 외부 데이터를 활용해 최신 직업 정보를 반영해 사용자가 바로 실행할 수 있는 실질적인 해결책과 직업 제안을 포함하고 있습니다. 두 상담 결과의 가장 큰 차이점은 “구체성과 개인화”에서 나타났습니다. RAG를 사용한 답변은 단순한 일반 조언을 넘어 사용자 맞춤형 정보와 구체적인 실행 방안을 제공해 신뢰도를 향상시킨 반면 RAG를 사용하지 않은 답변은 맥락 반영이 부족해 표면적이고 제한적인 결과로 그쳤습니다.
4.2. 한계 및 개선점
한계
현재 시스템의 주요 한계는 데이터베이스가 직업과 심리학 분야로 제한되어 있어 다양한 주제를 다루지 못한다는 점입니다. 이에 따라 일부 사용자는 원하는 정보를 얻지 못하거나 제공되는 결과가 만족스럽지 않다고 느낄 수 있습니다. 또, 특정 경우에는 결과의 신뢰도가 낮게 평가될 가능성도 존재합니다.
개선방향
기존 데이터베이스를 확장해건강, 금융 등 다양한 주제를 포함함으로써 사용자들의 폭넓은 요구를 반영할 예정입니다. 이를 통해 사주 및 인간관계 상담뿐만 아니라 일상생활 전반에 걸친 고민에 대한 조언을 제공할 수 있습니다. 추가적으로사용자 피드백을 수집하고 이를 기반으로 개인화된 맞춤형 결과를 제공함으로써 상담 결과의 신뢰도와 만족도를 높이고자 합니다.
