FinFusion은 SEC 10-K 보고서를 분석하고 요약하기 위해 설계된 RAG 기반 금융 특화 QA 시스템입니다.
다단계 문서 검색, 임베딩 기반 벡터 검색, 고도화된 프롬프트 전략을 통해 해석 가능한 투자 인사이트를 제공합니다.
Question: What is the company’s primary business model and revenue drivers?
Model's Answer (based on SEC 10-K, 2024 filing for FY 2023):
“Uber is one of the largest open platforms for work in the world, providing accessible, flexible work in approximately 70 countries. Drivers are key parts of the marketplaces that Uber has created through its apps.”
“For the year ended December 31, 2023, the Company’s Mobility and Delivery revenue, net of incentives, was $32.0 billion and discounts, loyalty programs, promotions, refunds, and credits provided to end-users who are not customers totaled $1.7 billion.”
평가 요약 (정성적 기준 기반):
- ✅ 보고서 내 수치 ($32.0B, $1.7B)를 정확히 인용하고, 출처 항목까지 명확히 표기하여 정확성(Accuracy) 우수
- ✅ "추정 금지", "단계별 설명" 등 프롬프트 지침을 충실히 따르며 프롬프트 준수(Prompt Adherence) 뛰어남
- ✅ 질문 범위(사업 모델 + 수익원)를 빠짐없이 다루고, 사실 기반의 객관적 응답(Factuality) 으로 완결성(Completeness) 충족
📂 실험 결과는 result 폴더에서 확인하실 수 있습니다.
- 🔍 Hybrid Retrieval: BM25 + FAISS + RRF (Reciprocal Rank Fusion) 기반 다단계 검색
- 🧠 LLM Reasoning: ReAct, Tree-of-Thoughts 기반의 체계적 추론 및 Query-aware Re-ranking
- 📑 SEC Filing Parsing: SEC 10-K 보고서 구조(Item 단위) 기반 파싱 및 처리
- 🧾 Item-Level Chunking: PART/ITEM 기준으로 문서 구조화
- 💡 Investment Memo Generator: 투자 인사이트 요약 및 리스크 분석 자동 생성
| Category | Tools & Libraries |
|---|---|
| Language Model | Ollama + openhermes (로컬 LLM) |
| Vector Database | FAISS (Facebook AI Similarity Search) |
| Sparse Retrieval | BM25 via rank_bm25 |
| Prompting | ReAct, Tree-of-Thoughts |
| Framework | LangChain |
| Parsing | PyMuPDF, BeautifulSoup |
| Programming | Python 3.10+, tqdm 등 |
- 가상환경 생성 및 활성화
python -m venv rag-finance
source rag-finance/bin/activate- 필요 패키지 설치
pip install -r requirements.txtrequirements.txt에는 본 프로젝트에 필요한 모든 Python 패키지가 포함되어 있습니다.
- Ollama 서버 실행 (로컬 LLM)
ollama serve
ollama run openhermes설정 완료 후, 다음과 같이 메인 파이프라인을 실행할 수 있습니다:
python main.py --query "What are the key risk factors in Apple's 2018 10-K?"현재는 SEC EDGAR에서 수집한 10-K 보고서에 최적화되어 있습니다.
FinFusion/
│
├── requirements.txt
├── retriever.py
├── embedder.py
├── chunker.py
├── llm_agent.py
├── fusion_pipeline.py
...
└── data/
-
Yao et al., 2022.
ReAct: Synergizing Reasoning and Acting in Language Models -
Jiang et al., 2023.
Prompt-as-Program: Interpreting and Executing Programs from Language Instructions -
Yao et al., 2023.
Tree of Thoughts: Deliberate Problem Solving with Large Language Models -
Aggarwal et al., 2024.
ChunkRAG: A Chunk-Level Filtering Method for Reliable Retrieval-Augmented Generation -
Villardar, 2025.
Semantic Decomposition and Selective Context Filtering for LLM-based QA -
Cormack et al., 2009.
Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods -
Pillai et al., 2023.
Hybrid Question Answering System: A FAISS and BM25 Approach -
Lewis et al., 2020.
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (RAG) -
Izacard & Grave, 2020.
Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering (FiD) -
Longpre et al., 2023.
The Flipped QA Paradigm for Answering Complex Questions