Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2025년 소프트웨어융합학과 졸업논문 | 개인 프로젝트 (기여도 100%) 기획·데이터 파이프라인·백엔드·프론트엔드·RAG 서버·AWS 배포 전 과정 단독 수행 개발 기간: 2025.03 ~ 2025.12

프로젝트 소개

마이애널리스트 로고 사진

서비스 시연 동영상 유튜브 링크

MyAnalyst는 기존 기업 분석 보고서가 가진 주관성, 정보의 비실시간성, 높은 접근 장벽의 문제점을 해결하기 위해 탄생한 RAG 기반 기업 분석 보고서 생성 서비스입니다.

사용자는 원하는 기업의 최신 공시 및 뉴스 데이터를 기반으로, 편향성이 배제된 객관적인 분석 보고서를 언제든지 직접 생성할 수 있습니다. 또한, 어려운 금융 용어를 설명해주는 용어 사전과 궁금증을 즉시 해결해주는 AI 비서 기능 등을 통해 누구나 쉽게 보고서를 이해하고 의사 결정에 활용할 수 있도록 돕습니다.

이를 통해 MyAnalyst는 금융 정보의 비대칭성을 해소하고, 모든 투자자가 신뢰할 수 있는 정보에 평등하게 접근하는 새로운 기준을 제시합니다.

프로젝트 배경

현행 기업 분석 보고서의 문제점

PPT 문제점 제시

기업 분석은 특정 기업의 재무 상태, 비즈니스 모델, 경쟁력 등을 체계적으로 평가하여 해당 기업의 현재 및 미래 가치를 판단하는 과정입니다. 이를 기반으로 작성된 기업 분석 보고서는 증권사나 투자 리서치 기관의 전문가들이 투자자들에게 제공하는 중요한 자료입니다.

개인 투자자의 입장에서 기업 분석 보고서는 투자 전략을 수립하고 의사 결정을 내리는 데 중요한 역할을 합니다. 일반 투자자가 기업의 성장 가능성, 재무 안정성, 시장 트렌드를 직접 분석하는 것은 어렵기 때문에, 금융 전문가들이 작성한 보고서를 통해 주가 전망, 리스크 요인, 목표 주가 등 전문적인 정보를 얻습니다. 이를 통해 투자자는 보다 신뢰할 수 있는 데이터를 바탕으로 합리적인 결정을 내릴 수 있습니다.

그러나 현재의 기업 분석 보고서는 몇 가지 한계점이 존재합니다.

첫째로, 현재의 기업 분석 보고서는 분석자의 소속 기관, 투자 성향, 선호도 등에 따라 주관적인 견해가 포함될 가능성이 있습니다. 이는 투자자들이 객관적인 데이터를 바탕으로 판단하기 어렵게 만들고, 특정 분석가의 의견을 맹신하게 하는 부작용을 초래할 수 있습니다. 이로 인한 책임은 개인 투자자가 져야 하기 때문에, 개인 투자자에게는 더욱 객관적이고 중립적인 자료가 필요합니다.

둘째로, 정보의 최신성이 부족합니다. 대부분의 기업 분석 보고서는 분기(약 3개월) 단위로 발간되기 때문에, 시시각각 변화하는 투자 환경에 대한 실시간 반영이 어렵습니다. 특히 급변하는 금융 시장에서는 단기간 내에 중요한 정보가 바뀔 수 있어, 투자자가 시의적절한 결정을 내리기 어렵습니다.

셋째로, 높은 진입장벽이 있습니다. 기업 분석은 방대한 데이터를 수집하고 이를 해석하는 과정에서 많은 시간과 인력이 소요됩니다. 특히 금융 전문가의 경험과 인사이트가 중요한 요소로 작용하기 때문에, 일반 투자자들이 직접 기업 분석을 수행하기에는 높은 진입 장벽이 존재합니다. 이로 인해 금융 기관이나 투자 전문가의 기업 분석 보고서에만 의존할 수 밖에 없다는 한계가 있습니다.

이러한 한계를 극복하기 위해 이 프로젝트에서는 RAG(Retrieval-Augmented Generation) 기술을 활용하여, 보다 발전된 기업 분석 보고서를 생성하고자 합니다.

RAG 기술을 적용하는 이유

RAG 설명

RAG는 대규모 데이터를 빠르고 정확하게 검색한 후, 이를 바탕으로 LLM(Large Language Model)이 고도화된 분석을 수행하는 기술입니다. 이를 통해 기존의 기업 분석 방식에서 발생하는 문제점을 보완할 수 있습니다.

첫째로 기업 분석 보고서의 객관성을 강화할 수 있습니다. 기존의 분석 보고서는 작성자의 주관적 해석이 포함될 수 있지만, RAG를 활용하면 정량적인 데이터 분석을 기반으로 보다 객관적인 기업 평가를 수행할 수 있습니다.

둘째로, 기업 보고서에 들어가는 정보의 최신성을 보장할 수 있습니다.사용자가 원하는 시점에 즉시 기업 분석 보고서를 생성할 수 있어, 최신 데이터를 반영한 분석이 가능해집니다. 이는 기존 보고서의 주기적 발간 방식과 비교했을 때 정보의 정확성을 높이는 데 큰 장점이 됩니다.

셋째로 자원 소모가 절감되고 접근성이 향상됩니다. 웹 크롤링 및 LLM을 활용하여 방대한 데이터를 자동으로 수집하고 해석할 수 있어, 기존의 분석 과정에서 요구되던 높은 인력과 시간이 절감됩니다. 또한, 금융 전문가가 아닌 일반 투자자들도 쉽게 기업 분석 보고서를 생성하고 활용할 수 있습니다.

본 프로젝트는 이러한 RAG 기술의 강점을 활용하여 보다 효율적이고 신뢰할 수 있는 기업 분석 보고서를 제공하는 것을 목표로 합니다.

주요 기능

기업 분석 보고서 생성

기업 분석 보고서 생성 기능은 총 5단계의 마법사 스타일 인터페이스로 구성되어있습니다. 사용자는 전문성이 부족해도 해당 인터페이스의 단계를 따라가면서 쉽게 자신이 원하는 기업 분석 보고서를 생성할 수 있습니다.

보고서 생성 1단계 사진

1단계 : 기본 정보 입력

분석하고자 하는 기업명과 분석 기준 분기를 입력합니다.

현재 서비스는 셀트리온 기업의 24년 4분기만 제공하고 있습니다.

보고서 생성 2단계 사진

2단계 : 보고서 제목 설정

보고서에 표시될 제목을 설정할 수 있습니다.

기본 설정으로 날짜-기업명 형식으로 생성됩니다 (ex. 셀트리온 24년 4분기 기업 분석 보고서)

혹은 사용자의 입력을 통해 보고서의 제목을 임의로 지정할 수 있습니다.

보고서 생성 3단계 사진

3단계 : 보고서 목차 설정

보고서를 구성하는 목차를 설정할 수 있습니다.

필요치 않은 세부 목차를 제거하거나 필요한 목차를 추가할 수 있습니다.

기본 설정으로 보고서 요약, 실적 분석, 주요 사업 및 제품 동향, 시장 환경 및 전략 방향, 향후 전망으로 구성됩니다

보고서 생성 4단계 사진

4단계 : 관심 지표 설정

기업 분석 보고서를 생성할 때 분석에 집중할 경제 지표를 선택할 수 있습니다.

지표명 검색 창에서 원하는 지표를 검색하거나 주요 경제 지표 버튼을 통해 하나 이상의 경제 지표를 선택할 수 있습니다.

기본 설정으로 관심 지표 설정 없이 동등한 가중치로 분석하도록 합니다.

보고서 생성 5단계 사진

5단계 : 보고서 생성 확인

사용자의 입력 정보를 요약하여 생성하고자 하는 보고서가 맞는지 점검합니다.

보고서 생성 버튼을 눌러 기업 분석 보고서를 생성할 수 있으며, 이는 1분 정도의 시간이 소요됩니다.

보고서 읽기 도구

기업 분석 보고서를 생성한 후 이를 읽을 때 도움이 되는 4가지 도구들을 제공합니다. 사용자는 읽기 도구를 바탕으로 기업 분석 보고서 읽기 중 어려운 점을 쉽게 해결할 수 있습니다.

용어 사전 사진

용어 사전 기능

기업 분석 보고서 내에 존재하는 어려운 금융 용어나 특정 도메인 용어의 뜻과 용례를 해설합니다.

해당 용어들은 기업 분석 보고서 내에 노란 배경으로 추가 표시되어 있습니다.

용어 사전에서 용어를 클릭하거나, 노란 배경의 글자를 클릭하는 것으로 용어 설명을 펼치고 접을 수 있습니다.

관련 뉴스 사진

관련 뉴스 기능

네이버 뉴스에서 해당 기업의 실시간 관련 뉴스 상위 10개를 검색하여 가져옵니다.

각 뉴스는 제목과 초반 내용이 표시되며, 이를 클릭하여 실제 뉴스 페이지로 이동할 수 있습니다.

이를 통해 해당 기업의 최신 정보를 손쉽게 얻을 수 있습니다.

주식 정보 사진

주식 정보 기능

네이버 증권에서 해당 기업의 실시간 주식 정보를 가져옵니다.

주식 정ana보에서 종목코드, 시가총액, 거래량 등의 기본적인 정보부터 PER, PBR 등의 전문적 경제 지표까지 볼 수 있습니다.

기업 분석 보고서와 현재 주식 정보를 통해 사용자는 주식 투자 의사 결정에 도움을 받을 수 있습니다.

질의응답 사진

질의응답 기능

나만의 금융 전문가 AI에게 기업 분석 보고서를 읽으며 궁금한 점을 질문할 수 있습니다.

질문은 채팅 형태로도, 음성 형태로도 가능합니다.

질문을 전달하면 금융 전문가가 기업 분석 보고서와 과거 데이터를 통해 RAG 기반으로 자세하게 답변합니다.

기술 스택

백엔드

  • 언어: Java
  • 프레임워크: Spring Boot
  • 데이터베이스: PostgreSQL
  • 의존성 관리: Maven
  • JSON 처리: ObjectMapper

프론트엔드

  • 언어: JavaScript
  • 프레임워크: React
  • 데이터베이스: Redis
  • 상태 관리: React Hooks
  • 라우팅: React Route
  • 스타일링: Bootstrap 5, Bootstrap Icons
  • 마크다운 렌더링: Marked

RAG 서버

  • 언어: Python
  • 프레임워크: FastAPI
  • 벡터 데이터베이스: Milvus
  • OCR 처리: Naver Clova OCR
  • 자연어 처리: KoNLPy, KLUE-BERT

기술적 도전과제

1. RAG 파이프라인 아키텍처 설계 및 구축

Challenge: 단순 정보 검색을 넘어 기업 분석 보고서와 같은 전문적인 결과물을 생성하기 위해서는 엔드투엔드(End-to-End) RAG 파이프라인 설계가 필수적이었습니다. 특히 비정형 데이터인 PDF 공시 자료와 실시간 뉴스 기사를 안정적으로 처리하고, 한국어의 복잡한 문맥을 정확히 벡터화하는 것이 핵심 과제였습니다.

Solution:

  • 확장성을 고려한 벡터 DB 환경 구축: 대규모 벡터 데이터의 실시간 유사도 검색 성능을 보장하고자 Milvus를 채택하고, Docker를 통해 컨테이너화하여 개발 및 배포 환경의 일관성과 확장성을 확보했습니다.
  • 데이터 소스별 맞춤형 전처리: 이미지 기반의 PDF는 Naver Clova OCR을 활용해 텍스트를 정확히 추출하고, 웹 뉴스 기사는 정규식 기반의 클리닝 파이프라인을 구축하여 유의미한 본문 데이터만 정제했습니다.
  • 한국어 의미 정확도 극대화를 위한 임베딩: 한국어 금융 및 도메인 용어의 미묘한 차이까지 파악하기 위해 한국어 특화 모델인 KLUE-BERT를 사용했습니다. 이를 통해 텍스트를 높은 의미 정확도를 가진 벡터로 변환, 검색 시 관련성 높은 문서를 효과적으로 찾아낼 수 있도록 설계했습니다.
  • 역할 기반 프롬프트 엔지니어링: LLM이 '금융 분석 전문가'라는 명확한 역할을 인지하고, 일관된 형식과 전문적인 톤앤매너로 결과물을 생성하도록 체계적인 프롬프트를 설계했습니다.
  • 핵심 RAG 로직 구현: 사용자 질문을 임베딩하여 Milvus 내 벡터 데이터와 코사인 유사도를 계산하고, 가장 관련성 높은 컨텍스트를 LLM에 전달하여 환각을 억제하고 사실 기반의 답변을 생성하는 핵심 구조를 완성했습니다.

Achievement: 데이터 수집부터 생성까지, 각 단계의 문제를 예측하고 최적의 기술을 조합하여 안정적이고 전문화된 RAG 파이프라인을 성공적으로 구축했습니다.

2. 세 종류의 데이터베이스의 효율적인 관리 설계

13

Challenge: 본 서비스는 성격이 전혀 다른 세 종류의 데이터를 동시에 관리해야 했습니다.

  1. 벡터 데이터 (Vector DB - Milvus): RAG 검색을 위한 문서 임베딩
  2. 관계형 데이터 (RDB - PostgreSQL): 생성된 보고서, 메타데이터 등 정형 정보
  3. 비정형 데이터 (In-memory DB - Redis): 사용자 세션, 캐시 등

이들을 단일 시스템에서 관리할 경우 발생할 수 있는 데이터 무결성 저하, 성능 병목, 관리 복잡성 증가를 사전에 방지할 아키텍처가 필요했습니다.

Solution:

관심사의 분리 원칙에 따라 각 데이터의 성격과 가장 연관이 깊은 기술 스택이 해당 DB를 전담하도록 아키텍처를 설계했습니다.

  • AI/데이터 처리 = FastAPI ↔ Milvus (벡터 데이터베이스)
  • 백엔드 비즈니스 로직 = Spring ↔ PostgreSQL (관계형 데이터베이스)
  • 프론트엔드 서버 간 캐시/세션 = React ↔ Redis (NoSQL 데이터베이스)

Achievement: 이러한 명확한 책임 분리 구조를 통해 데이터의 혼용 및 충돌 가능성을 원천적으로 차단하고, 시스템 전체의 안정성과 데이터 무결성을 확보했습니다. 또한 각 서버가 자신의 핵심 역할에만 집중하게 되어 유지보수성과 확장성을 크게 향상시켰습니다.

3. RAG 생성 결과물에 대한 객관적 성능 평가 체계 수립

Challenge: RAG로 생성한 보고서의 품질을 '그럴듯하다'는 주관적 판단을 넘어, 어떻게 객관적으로 입증할 것인가 하는 난관에 부딪혔습니다. 실제 증권사 애널리스트 보고서와 비교하여 생성물의 성능을 정량적, 정성적으로 증명할 명확한 평가 기준이 필요했습니다.

Solution:

생성된 보고서의 성능을 객관적으로 검증하고자, 세 가지 체계적인 평가 기준을 직접 설계하고 적용했습니다. 비교 대상은 국내 주요 증권사 4곳의 실제 기업 분석 보고서로 설정했습니다.

  1. 평가 기준 1: 핵심 정보 포함도
  • 목표: 생성 보고서가 실제 보고서의 핵심 정보(팩트, 수치)를 얼마나 빠짐없이 포함하는지 측정
  • 방법: KoNLPy로 각 보고서의 키워드를 추출한 뒤, 특정 보고서의 키워드가 다른 보고서에 얼마나 포함되었는지 Recall 점수를 계산
  • 결과: 생성 보고서의 평균 Recall은 0.5038로, 실제 보고서들의 평균인 0.45를 상회했습니다. 이는 생성 보고서가 핵심 정보를 더 폭넓게 커버하고 있음을 객관적 수치로 증명합니다
  1. 평가 기준 2: 의미적 유사도
  • 목표: 단순 키워드 일치를 넘어, 문맥과 의미가 실제 보고서와 얼마나 논리적으로 유사한지 평가
  • 방법: KLUE-BERT로 보고서 전체를 벡터로 임베딩한 후, 보고서 쌍 간의 코사인 유사도를 계산
  • 결과: 생성 보고서의 점수(0.5598)가 실제 보고서 평균(약 0.68)보다 약간 낮았으나, 이는 생성 보고서의 분량이 더 많고 상세했기 때문임을 분석을 통해 밝혔습니다. 분량을 유사하게 맞추자 대등한 수준의 의미적 유사도를 예측 가능했습니다.
  1. 평가 기준 3: 보고서 품질 평가
  • 목표: 가독성, 명확성, 논리 구조 등 정량화하기 어려운 종합적인 품질을 평가
  • 방법: 사람의 평가를 대체하고자 Gemini 2.5 Pro를 평가자로 도입했습니다. 8000회 이상 인용된 공신력 있는 Wang & Strong 데이터 품질 프레임워크에 리커트 척도를 적용하여 15개 차원에 대한 평가를 자동화했습니다.
  • 결과: 생성 보고서는 평균 3.67점을 기록, 3점 중후반대의 실제 보고서들과 품질 면에서 동등한 수준임을 입증했습니다.

Achievement: 위와 같은 세 가지 객관적인 평가 기준을 통해, 본 프로젝트의 결과물이 정보의 포괄성, 의미의 정확성, 그리고 전체적인 품질 면에서 실제 기업 분석 보고서와 대등하거나 일부 능가하는 수준임을 다각적으로 증명해냈습니다.

About

RAG 기반 기업 분석 보고서 자동 생성 서비스 | Spring Boot · FastAPI · Milvus · AWS | 개인 풀스택

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages