Basic RAG + Advanced RAG(Hybrid Search & Re-ranking)
๊ฐ์
3์ฃผ์ฐจ์์ ๊ตฌ์ถํ RAG Indexing ํ์ดํ๋ผ์ธ์ Generation์ ์ฐ๊ฒฐํ์ฌ end-to-end RAG๋ฅผ ์์ฑํ๊ณ , Naive(Basic) RAG์ ๊ฒ์ ํ๊ณ๋ฅผ ๋์ด์๋ Advanced RAG ๊ธฐ๋ฒ์ ํ์ตํ๊ณ ์ค์ตํ๋ค. ์ด๋ฒ ์๊ฐ์ ์ด๋ก ๋ด์ฉ์ผ๋ก๋ Parent-Child ๋ฐฉ์, Hybrid Search, Re-ranking, ๋ฉํ๋ฐ์ดํฐ ํํฐ๋ง / ์ปจํ ์คํธ ์์ถ์ ์กฐ์ฌํ๊ณ , ์ค์ต์์๋ ๋ค๋ ๋ ๋ฌธ์๋ฅผ ๋ค๋ฃจ๋ RAG ์์คํ ์ ์ง์ ๊ตฌ์ถํ ๋ค, ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํ๋ค.
1. Advanced RAG
์ ์ :
Naive RAG(Basic RAG)์ ๋จ์ํ ๊ฒ์ -> ์์ฑ ํ์ดํ๋ผ์ธ์ ๊ฐ์ ํด์, ๊ฒ์ ์ / ์ค / ํ ๋จ๊ณ์ ๋ค์ํ ๊ธฐ๋ฒ์ ์ถ๊ฐํ ๊ณ ๋ํ๋ RAG์ด๋ค.
๊ตฌ์ฑ์์ :
Pre-retrieval (๊ฒ์ ์ ) ์ฟผ๋ฆฌ๋ฅผ ๋ ์ ๊ฒ์๋๋๋ก ๊ฐ๊ณต
- Query Rewriting (์ฟผ๋ฆฌ ์ฌ์์ฑ)
- Query Expansion (์ฟผ๋ฆฌ ํ์ฅ)
- HyDE (๊ฐ์ ๋ฌธ์ ์์ฑ ํ ๊ฒ์)
Retrieval (๊ฒ์ ์ค) ๊ฒ์ ์์ฒด๋ฅผ ๊ณ ๋ํ
- Hybrid Search (BM25 + ๋ฒกํฐ)
- Parent-Child Chunking
- Reranker (Cross-encoder)
Post-retrieval (๊ฒ์ ํ) ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ LLM์ ๋๊ธฐ๊ธฐ ์ ์ ์ ์
- Context Compression (๋ถํ์ํ ๋ด์ฉ ์์ถ)
- Reranking (์ต์ข ์์ ์ฌ์กฐ์ )
- Context Selection (๊ด๋ จ ์ฒญํฌ๋ง ์ ๋ณ)

2. ํ์ ๊ฐ๋ ์ ๋ฆฌ
1) Parent Child Chunking
์ผ๋ฐ ์ฒญํน์ ๋ฌธ์ ์ :
์ผ๋ฐ ์ฒญํน์ ๋ฌธ์๋ฅผ ์ผ์ ํ ํฌ๊ธฐ๋ก ์๋ผ์ ๊ทธ๋๋ก ๊ฒ์ํ๊ณ LLM์ ๋๊ธด๋ค.
์ฌ๊ธฐ์ ๋ ๊ฐ ์ง ํธ๋ ์ด๋์คํ๊ฐ ์๊ธด๋ค.
- ์ฒญํฌ๊ฐ ์์ผ๋ฉด -> ๊ฒ์ ์ ํ๋๋ ๋์์ง์ง๋ง, LLM์ ์ ๋ฌ๋๋ ๋ฌธ๋งฅ์ด ๋๋ฌด ์ ์
- ์ฒญํฌ๊ฐ ํฌ๋ฉด -> ๋ฌธ๋งฅ์ ํ๋ถํ์ง๋ง, ๊ฒ์ ์ ํ๋๊ฐ ๋จ์ด์ง
Parent-Child Chunking ์ด๋ :
์ด ๋๋ ๋ง๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฒญํฌ๋ฅผ ๋ ๊ฐ์ง ๋จ์๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.
| ์ญํ | ํฌ๊ธฐ | ํ๋์ผ |
| Child ์ฒญํฌ | ์์ | ๊ฒ์(Retrieval)์ ์ฌ์ฉ |
| Parent ์ฒญํฌ | ํผ | LLM์ ์ ๋ฌํ๋ ๋ฌธ๋งฅ์ผ๋ก ์ฌ์ฉ |

ํ๋ฆ :
- ๋ฌธ์๋ฅผ ํฐ ๋จ์(Parent)๋ก ๋๋
- Parent๋ฅผ ๋ค์ ์์ ๋จ์(Child)๋ก ๋๋
- Child ์ฒญํฌ๋ฅผ ๋ฒกํฐ DB์ ์ ์ฅํด ๊ฒ์์ ํ์ฉ
- ๊ฒ์๋ Child๊ฐ ์ํ Parent ์ฒญํฌ๋ฅผ LLM์ ์ ๋ฌ
2) Hybrid Search
์ ์ :
๋ฒกํฐ ๊ฒ์ (Semantic Search)๊ณผ ํค์๋ ๊ฒ์(BM25)์ ๊ฒฐํฉํ์ฌ ์๋ฏธ ์ดํด์ ์ ํํ ํค์๋ ๋งค์นญ์ ๋์์ ๋ฌ์ฑํ๋ ๊ฒ์ ๋ฐฉ์์ด๋ค.
BM25 ์ด๋
์ฟผ๋ฆฌ์ ๋จ์ด๊ฐ ๋ฌธ์์ ์ผ๋ง๋ ์์ฃผ, ์ผ๋ง๋ ํฌ๊ทํ๊ฒ ๋ฑ์ฅํ๋์ง๋ฅผ ์ ์๋ก ๊ณ์ฐํด์ ๊ด๋ จ์ฑ์ ์ธก์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
BM25 ํต์ฌ ๊ตฌ์ฑ 3๊ฐ์ง
- TF(Term Frequency) - ๋จ์ด ๋ฑ์ฅ ๋น๋ : ์ฟผ๋ฆฌ์ ๋จ์ด๊ฐ ๋ฌธ์์ ๋ง์ด ๋์ฌ์๋ก ์ ์๊ฐ ์ฌ๋ผ๊ฐ๋ค. ๊ทผ๋ฐ BM25๋ ๋จ์ TF์ ๋ฌ๋ฆฌ ๋น๋๊ฐ ๋์์ง์๋ก ์ ์ ์ฆ๊ฐํญ์ด ์ค์ด๋ ๋ค.
- IDF(Inverse Document Frequency) - ๋จ์ด ํฌ๊ท๋ : ์ ์ฒด ๋ฌธ์์์ ํํ ๋จ์ด("๊ทธ๋ฆฌ๊ณ ", "the")๋ ์ ์๋ฅผ ๋ฎ์ถ๊ณ , ํฌ๊ทํ ๋จ์ด๋ ์ ์๋ฅผ ๋์ธ๋ค.
- ๋ฌธ์ ๊ธธ์ด ์ ๊ทํ : ๊ธด ๋ฌธ์๋ ๋จ์ด๊ฐ ๋ง์ด ๋ฑ์ฅํ ํ๋ฅ ์ด ์์ฐํ ๋์ผ๋๊น, ๋ฌธ์ ๊ธธ์ด๋ฅผ ๋ณด์ ํด์ ์งง์ ๋ฌธ์๊ฐ ๋ถ๋ฆฌํ์ง ์๊ฒ ๋ง๋ ๋ค.
๋ฒกํฐ ๊ฒ์ vs BM25 vs Hybrid ์ฅ๋จ์
| ๊ฒ์ ๋ฐฉ์ | ๊ฐ์ | ์ฝ์ |
| ๋ฒกํฐ ๊ฒ์ (Semantic) | ์๋ฏธ•๋งฅ๋ฝ ์ดํด, ํํ ๋ฌ๋ผ๋ ๊ฒ์ | ์ ํ ํค์๋ ๋งค์นญ ์ฝํจ, ์ ๋ฌธ ์ฉ์ด ์ทจ์ฝ |
| BM25 (Keyword) | ์ ํํ ํค์๋•์ ๋ฌธ ์ฉ์ด์ ๊ฐํจ, ๋น ๋ฆ | ์๋ฏธ ์ดํด ๋ถ๊ฐ, ๋์์ด•์ ์ฌ ํํ ๋์นจ |
| Hybrid (๊ฒฐํฉ) | ๋ ๋ฐฉ์ ์ฅ์ ๋ชจ๋ ํ๋ณด, ๋์ ์ฌํ์จ + ์ ๋ฐ๋ | ๊ตฌํ ๋ณต์ก, ๊ฐ์ค์น ํ๋ ํ์ |
๊ฒฐํฉ ๋ฐฉ์
| ๋ฐฉ์ | ์ค๋ช | ํน์ง |
| RRF(Reciprocal Rank Fusion) | ๊ฐ ๊ฒ์์ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ๊ณ์ฐ ํ ๋ณํฉ | ํ๋ ๋ถํ์, ์์ ์ |
| ๊ฐ์ค์น ๊ธฐ๋ฐ Linear Combination | ๊ฐ ์ ์๋ฅผ ์ ๊ทํ ํ ๊ฐ์ค์น๋ก ๋ณํฉ | ์ธ๋ฐํ ์ ์ด ๊ฐ๋ฅ, ํ๋ ํ์ |
RRF ๊ณ์ฐ ๋ฐฉ๋ฒ
score = Σ weight_i / (rank_i + k) # k=60 default
3) Re-ranking
์ ์ :
1์ฐจ ๊ฒ์์ผ๋ก ๋ฝ์ ํ๋ณด ๋ฌธ์๋ค์ ๋ ์ ๋ฐํ ๋ชจ๋ธ๋ก ๋ค์ ์์๋ฅผ ๋งค๊ธฐ๋ ๊ณผ์ . ๋น ๋ฅธ ๊ฒ์(์ฌํ์จ)๊ณผ ์ ํํ ์์(์ ๋ฐ๋)๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ ๋ง๋ฆฌ ํ ๋ผ๋ฅผ ๋ชจ๋ ์ก๋ ์ ๋ต
Bi-encoder vs Cross-encoder ํต์ฌ ๋น๊ต
| ๊ตฌ๋ถ | Bi-encoder | Cross-encoder |
| ์ ์ | ์ง๋ฌธ•๋ฌธ์๋ฅผ ๊ฐ๊ฐ ๋ ๋ฆฝ ์ธ์ฝ๋ฉ ํ ์ฝ์ฌ์ธ ์ ์ฌ๋ ๋น๊ต | ์ง๋ฌธ•๋ฌธ์๋ฅผ ํ๋์ ์ ๋ ฅ์ผ๋ก ํฉ์ณ ํธ๋์คํฌ๋จธ์ ๋์ ํต๊ณผ |
| ์ ๋ ฅ ๋ฐฉ์ | Query -> ๋ฒกํฐ / Document -> ๋ฒกํฐ -> ์ฝ์ฌ์ธ ๋น๊ต | ์ฟผ๋ฆฌ์ Document -> ์ ์ฌ๋ ์ ์ ์ถ๋ ฅ |
| ์๋ | ๋น ๋ฆ(๋ฌธ์ ์๋ฒ ๋ฉ ์ฌ์ ๊ณ์ฐ ๊ฐ๋ฅ) | ๋๋ฆผ(์ฟผ๋ฆฌ๋ง๋ค ์ ์ฒด ์ถ๋ก ํ์) |
| ์ ํ๋ | ๋ณดํต(์๋ฏธ๋ฅผ ํ๋์ ๋ฒกํฐ๋ก ์์ถ -> ์ ๋ณด ์์ค) | ๋์(์ง๋ฌธ•๋ฌธ์ ํ ํฐ์ด ์ง์ ์ํธ์์ฉ) |
| ํ์ฅ์ฑ | ์๋ฐฑ๋ง ๋ฌธ์์๋ ์ฌ์ฉ๊ฐ๋ฅ | ์์ ํ๋ณด์๋ง ์ ์ฉ ๊ฐ๋ฅ |
| ์ฌ์ฉ ์์น | 1๋จ๊ณ : ๋๊ท๋ชจ ํ๋ณด ๊ฒ์ | 2๋จ๊ณ : ํ๋ณด ์ ๋ฐ ์ฌ์์ |
4) ๋ฉํ๋ฐ์ดํฐ ํํฐ๋ง๊ณผ ์ปจํ ์คํธ ์์ถ
๊ธฐ๋ฒ - 1 : ๋ฉํ๋ฐ์ดํฐ ํํฐ๋ง
์ฒญํฌ์ ๋ถ์ฐฉ๋ ๊ตฌ์กฐ์ ์์ฑ(์ถ์ฒ, ๋ ์ง, ์นดํ ๊ณ ๋ฆฌ ๋ฑ)์ ๊ธฐ์ค์ผ๋ก ๋ฒกํฐ ์ ์ฌ๋ ๊ฒ์ ์ด์ ์ ๊ฒ์ ๋ฒ์๋ฅผ ์ขํ๋ ๊ธฐ๋ฒ
ํ์ํ ์ด์ :
ํ์ค RAG ํ์ดํ๋ผ์ธ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ํ๋์ ๊ณต์ ๋ฒกํฐ ๊ณต๊ฐ์ ์๋ฒ ๋ฉํ๋ค. ์ฌ์ฉ์๊ฐ ์ง๋ฌธ์ ํ์ ๋ ๊ฒ์๊ธฐ๋ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ก ๋ชจ๋ ์ฒญํฌ๋ฅผ ํ๊ฐํด ์์ k๋ฅผ ๋ฐํํ๋ค. ๋ง์ฝ ์ธ๋ฑ์ค์ 3๋ ์น ์ ์ฑ ๋ฌธ์๊ฐ ์๋ค๋ฉด, ์ ์ฌ๋ 0.91 ๊ตฌ๋ฒ์ ์ด ์ ์ฌ๋ 0.87์ธ ์ต์ ๋ฌธ์๋ณด๋ค ๋จผ์ ๋ฐํํ ์ ์๋ค.
def filter_by_year(docs, source_year):
filtered = [d for d in docs if d.metadata.get("source_year", "") == source_year]
return filtered if filtered else docs
๊ธฐ๋ฒ - 2 : ์ปจํ ์คํธ ์์ถ
๊ฒ์๋ ์ฒญํฌ ์ ์ฒด๋ฅผ ๊ทธ๋๋ก LLM์ ๋๊ธฐ์ง ์๊ณ , ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ฅ•๊ตฌ์ ๋ง ์ถ์ถ•์์ถํ์ฌ ์ ๋ฌํ๋ ๊ธฐ๋ฒ
ํ์ํ ์ด์ :
๊ฒ์์ ๋ฌธ์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ฑํ ๋ ์์คํ ์ด ์ด๋ค ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์์ง ๋ฏธ๋ฆฌ ์ ์ ์๋ค. ๋ฐ๋ผ์ ์ฟผ๋ฆฌ์ ๊ฐ์ฅ ๊ด๋ จ ์๋ ์ ๋ณด๊ฐ ๊ด๋ จ ์๋ ํ ์คํธ๊ฐ ๋๋์ผ๋ก ํฌํจ๋ ๋ฌธ์ ์์ ๋ฌปํ ์์ ์ ์๋ค. ์ด ์ ์ฒด ๋ฌธ์๋ฅผ ๊ทธ๋๋ก ์ ๋ฌํ๋ฉด LLM ํธ์ถ ๋น์ฉ์ด ๋์์ง๊ณ ์๋ต ํ์ง์ด ๋ฎ์์ง ์ ์๋ค.
[์๋ณธ ์ฒญํฌ: 500 tokens] → [์์ถ ํ: 120 tokens, ํต์ฌ ๋ด์ฉ๋ง]
3 ์ค์ต ํ๊ฒฝ ๋ฐ ์ ๋ต
1) ์คํ ํ๊ฒฝ ๋ฐ ์ฌ์ฉ ๋ชจ๋ธ
| ํญ๋ชฉ | ๋ด์ฉ |
| ์ธ์ด | Python 3.14 |
| ํ๋ ์์ํฌ | LangChain |
| LLM | gpt-4o-mini |
| ์๋ฒ ๋ฉ ๋ชจ๋ธ | text-embedding-3-small |
| Re-ranker | BAAI/bge-reranker-v2-m3 (๋ก์ปฌ, sentence-transformers) |
| ๋ฒกํฐ ์ ์ฅ์ | FAISS |
| Hybrid Search | FAISS (Dense Vector) + BM25Retriever (Sparse, langchain-community) |
2) ์ธ๋ฑ์ฑ ์ ๋ต
PDF ๋ฌธ์๋ฅผ ๋งํฌ๋ค์ด ํ์์ผ๋ก ๋ณ๊ฒฝ
PDF ํ์ฑ ์ ํ ๊ตฌ์กฐ๊ฐ ์์ค๋๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด 25,26๋ ์๋ฃ๋ฅผ ๊ฐ๊ฐ ๋งํฌ๋ค์ด์ผ๋ก ๋ณํํ๋ค.
๊ฐ child chunk์ ๋ฉํ๋ฐ์ดํฐ์ source_year, parent_id, parent_content๋ฅผ ์ ์ฅํ์ฌ ๊ฒ์ ์ child๋ก ์ฐพ๊ณ , LLM์๋ parent_content๋ฅผ ์ ๋ฌํ๋ Parent-Child ๊ตฌ์กฐ๋ฅผ ์ฑํํ๋ค.
metadata = {
"source_year": "2025", # ๋
๋ ํํฐ๋ง ๊ธฐ์ค
"parent_id": "2025_p0", # ์ค๋ณต parent ์ ๊ฑฐ์ฉ
"parent_content": "...", # LLM์ ์ ๋ฌํ ๋์ ์ปจํ
์คํธ
}
์ฒญํฌ ํฌ๊ธฐ ์คํ
์ด๊ธฐ ์ค์ (c300_p1500)์์ ์ ํ๋๊ฐ ๋ฎ์ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ํ๋(c1000_p3000)ํ์ฌ ์ฌ์คํํ๋ค.
| ๊ตฌ๋ถ | child chunk | parent chunk | ๋น๊ณ |
| ์ด๊ธฐ (c300_p1500) | 300์, overlap 50์ | 1500์, overlap 100์ | HTML ํ ํ ๋ถ์ ๋ฌธ์ ๋ฐ์ |
| ๊ฐ์ (c1000_p3000) | 1000์, overlap 80์ | 3000์, overlap 150์ | HTML ํ ํ ๋จ์ ์๋ฏธ ๋ณด์กด |
4) Golden Dataset ์ค๊ณ
| ๊ตฌ๋ถ | ๋ฌธํญ ์ | source_year |
| 2025๋ ์ ์ฉ (easy/medium/hard) | 8๋ฌธํญ | 2025 |
| 2026๋ ์ ์ฉ (easy/medium/hard) | 8๋ฌธํญ | 2026 |
| cross-year (2025 ๊ธฐ์ค) | 2๋ฌธํญ | 2025+2026 |
| cross-year (2026 ๊ธฐ์ค) | 2๋ฌธํญ | 2025+2026 |
| ํฉ๊ณ | 20๋ฌธํญ |
cross-year ์ค๊ณ ์๋: CT ๊ฒ์ฌ ๋ณธ์ธ๋ถ๋ด๊ธ(2025๋ 500์ → 2026๋ 5%)๊ณผ ํญ์ ์ ๋ณ ์ฅ๊ธฐ์ง์ํ ์ฃผ์ฌ์ ๋ณธ์ธ๋ถ๋ด๋ฅ (2025๋ 5% → 2026๋ 2%)์ฒ๋ผ ์ฐ๋ ๊ฐ ์์น๊ฐ ๋ฐ๋ ํญ๋ชฉ์ ์์ผ๋ก ๊ตฌ์ฑํ๋ค. ๋์ผ ์ง๋ฌธ ๊ตฌ์กฐ์์ ๋ ๋๋ง ๋ฌ๋ฆฌํ์ฌ RAG ์์คํ ์ ๋ ๋ ๊ตฌ๋ถ ๋ฅ๋ ฅ์ ์ง์ ํ๊ฐํ ์ ์๋ค.
์์ธก 2025๋ ๊ณผ 2026๋ ๋ฌธ์ ๊ตฌ์กฐ๊ฐ ์ ์ฌํ ํญ๋ชฉ, ํนํ ๋ณธ์ธ๋ถ๋ด๋ฅ ํ ํ์์ด ๋์ผํ ํญ๋ชฉ์์ ๋ ๋ ํผ๋์ด ๋ง์ด ๋ฐ์ํ ๊ฒ์ผ๋ก ์์ธกํ๋ค. ์ถ๋์๋ฒ, ์ ์ ์งํ ์ธ๋์ฒ๋ผ ๋ ๋ฌธ์์ ๋์ผํ ํค์๋๊ฐ ๋ฐ๋ณต๋๋ ํญ๋ชฉ์ด ์ทจ์ฝํ ๊ฒ์ผ๋ก ๋ดค๋ค.
์ค์ ๊ฒฐ๊ณผ ์์ธก์ด ๋ง์๋ค. q15(๋ณต์ก์ถ๋ 2026)์์ 2025 ์ฒญํฌ๋ง ๋ฐํ๋๋ ๋ ๋ ํผ์ ์ด ๋ฐ์ํ๋ค. BM25๊ฐ ํค์๋ ๋งค์นญ์ผ๋ก ๋ ์ฐ๋์ ์ ์ฌ ๋ฌธ์๋ฅผ ๋์์ ๋์ด์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๊ณ , Hybrid Only ๋ฐฉ์์์ ๋ ๋ ํผ์ ์ด ๊ฐ์ฅ ๋น๋ฒํ๋ค.
์์ธก "๋ณต์ก์ถ๋", "์ ํ์๋ฃ๊ธ์ฌ๊ธฐ๊ด", "์ฅ๊ธฐ์ง์ํ ์ฃผ์ฌ์ "์ฒ๋ผ ๋๋ฉ์ธ ๊ณ ์ ์ฉ์ด๊ฐ ํฌํจ๋ ์ง๋ฌธ์์ BM25์ ํค์๋ ๋งค์นญ์ด ๋ฒกํฐ ๊ฒ์์ ๋ณด์ํ ๊ฒ์ผ๋ก ์์ธกํ๋ค.
์ค์ ๊ฒฐ๊ณผ ๋ถ๋ถ์ ์ผ๋ก ๋ง์๋ค. Hybrid + Re-ranking (c1000_p3000, no filter)๊ฐ 70%๋ก ๊ฐ์ฅ ๋์ ์ ๋ต๋ฅ ์ ๋ณด์์ง๋ง, Hybrid Only ๋จ๋ ์ 30%๋ก Basic RAG(40%)๋ณด๋ค ๋ฎ์๋ค. Re-ranking ๋ฐ ์ฒญํฌ ํฌ๊ธฐ์์ ์กฐํฉ์์ ํจ๊ณผ๊ฐ ๋ํ๋ฌ๋ค.
์์ธก Re-ranking์ด ์ ๋ฐ์ ์ผ๋ก ์ ๋ต๋ฅ ์ ๋์ผ ๊ฒ์ผ๋ก ์์ธกํ๋ค. ๋ค๋ง ํ๋ณด ํ์ด ์ ๊ฑฐ๋ ๊ด๋ จ ์ฒญํฌ ์์ฒด๊ฐ ์์ ๊ฒฝ์ฐ ์คํ๋ ค ๋ ธ์ด์ฆ ์ฒญํฌ๋ฅผ ์์๋ก ์ฌ๋ฆด ์ ์๋ค๊ณ ๋ดค๋ค.
์ค์ ๊ฒฐ๊ณผ ์์ธก์ด ๋ง์๋ค. Hybrid Only(30%) → Hybrid + Re-ranking no_filter(45%)๋ก 15%p ์์นํด Re-ranking ํจ๊ณผ๋ ์ ํจํ๋ค. ๋ฐ๋ฉด ๋ ๋ ํํฐ๋ง ํ ํ๋ณด ํ์ด ์ค์ด๋ ์ํ์์ Re-ranking์ ์ ์ฉํ year_filter ๋ฒ์ ์ 30%๋ก ์ ํ๋๋ค(q03, q14, q20).
์์ธก ๋ฉํ๋ฐ์ดํฐ ํํฐ๋ง์ด ๋ ๋ ํผ๋์ ์์ ํ ์ ๊ฑฐํ ์ ์์ ๊ฒ์ผ๋ก ์์ธกํ๋ค. ๋ค๋ง ํํฐ๋ง์ผ๋ก ํ๋ณด ํ์ด ์ข์์ ธ ๊ด๋ จ ์ฒญํฌ ์์ฒด๊ฐ ํ๋ฝํ๋ ๋ถ์์ฉ์ด ์์ ์ ์๋ค๊ณ ๋ดค๋ค.
์ค์ ๊ฒฐ๊ณผ ์์ธก์ด ์ ํํ๋ค. year_filter ๋ฒ์ ์ ๋ ๋ ํผ์ 0%๋ฅผ ๋ฌ์ฑํ์ง๋ง, ์ ๋ต๋ฅ ์ 30%๋ก ๊ฐ์ฅ ๋ฎ์๋ค. ํํฐ๊ฐ ํ๋ณด ํ์ ์ขํ ๊ด๋ จ ์ฒญํฌ๊ฐ ํ๋ฝํ๋ ์ญํจ๊ณผ๊ฐ ์ค์ ๋ก ๋ฐ์ํ๋ค.
5. ์ค์ต ํ ์คํธ ๊ฒฐ๊ณผ ๋น๊ต
์ง๋ฌธ → FAISS ๋ฒกํฐ ๊ฒ์ (Top-3) → parent_content ์ปจํ
์คํธ ๊ตฌ์ฑ → LLM → ๋ต๋ณ
- Retriever: vectorstore.similarity_search(question, k=3)
- LLM: gpt-4o-mini, temperature=0
- ํ๋กฌํํธ: ์ปจํ ์คํธ์ [์ถ์ฒ ๋ ๋: YYYY]๋ฅผ ๋ช ์ํ์ฌ LLM์ด ๋ ๋๋ฅผ ์ธ์ํ๋๋ก ๊ตฌ์ฑ
์๋ ์ปจํ
์คํธ๋ฅผ ๋ฐํ์ผ๋ก ์ง๋ฌธ์ ๋ตํ์ธ์.
๊ฐ ์ปจํ
์คํธ์๋ ์ถ์ฒ ๋
๋๊ฐ ํ์๋์ด ์์ต๋๋ค. ์ง๋ฌธ์ด ํน์ ๋
๋๋ฅผ ๋ฌป๋ ๊ฒฝ์ฐ ํด๋น ๋
๋์ ์ ๋ณด๋ง ์ฌ์ฉํ์ธ์.
์ปจํ
์คํธ์ ์๋ ๋ด์ฉ์ "์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค"๋ผ๊ณ ๋ตํ์ธ์.
๋ต๋ณ์ ํต์ฌ ๊ฐ๋ง ๊ฐ๊ฒฐํ๊ฒ ๋ตํ์ธ์.
๊ฒฐ๊ณผ
| ํญ๋ชฉ | ๊ฐ |
| ์ ์ฒด ์ ๋ต๋ฅ | 8 / 20 (40%) |
๋ฌธํญ๋ณ ๊ฒฐ๊ณผ
| ์ง๋ฌธID | ๋์ด๋ | source_year | ๊ฒ์๋ ์ฒญํฌ ํฌํจ ์ฌ๋ถ | ๋ ๋ ๋ถ์ | LLM ์์ฑ ๋ต๋ณ | ์ ๋ต ์ฌ๋ถ | ์ค๋ต ์์ธ |
| q01 | easy | 2025 | X | Top1 ์ญ์ (Top1=2026, Top3์ 2025 ํฌํจ) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | 1์ข ์์ ์ธ๋ ๋ณธ์ธ๋ถ๋ด๊ธ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q02 | easy | 2025 | O | ํผ์ ์์ (Top1~3 ๋ชจ๋ 2025) | 5% | ์ ๋ต | |
| q03 | easy | 2025 | O | ํผ์ ์์ (Top1=2025, Top2 ํผ์ฌ) | 0% (๋ฌด๋ฃ) | ์ ๋ต | |
| q04 | medium | 2025 | O | ํผ์ ์์ (Top1=2025, Top2 ํผ์ฌ) | ์ ์ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ 3%์ด๋ฉฐ, ์๋ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ 20%์ ๋๋ค | ์ ๋ต | |
| q05 | medium | 2025 | X | Top1 ์ญ์ (Top1=2026, Top2·3์ 2025 ํฌํจ) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | ๋ณต์ก์ถ๋ ๊ด๋ จ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q06 | medium | 2025 | X | Top1 ์ญ์ (Top1·2=2026, Top3=2025) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | ์กฐํ๋ณ ์ธ๋ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q07 | hard | 2025 | X | Top1 ์ญ์ (Top1=2026, Top2=2025) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | ์น๋งค ์ ์ 5% ์ฒญํฌ ๋ฏธ๊ฒ์, ์๋ ์ฒญํฌ๋ง ๊ฒ์ |
| q08 | hard | 2025 | X | ํผ์ ์์ (Top1=2025, Top2 ํผ์ฌ) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | ์ํ์ผ์ ์ด๊ณผ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q09 | cross-year | 2025+2026 | X | cross-year, 2026 ํธํฅ (Top1~3 ๋ชจ๋ 2026) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | CT ๊ฒ์ฌ ๋ณธ์ธ๋ถ๋ด๊ธ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q10 | cross-year | 2025+2026 | O | cross-year ํผ์ฌ (ํ์ฉ ๋ฒ์) | 5% | ์ ๋ต | |
| q11 | easy | 2026 | O | Top1 ์ญ์ (Top1=2025, Top2=2026) | 1,500~2,000์ | ์ ๋ต | |
| q12 | easy | 2026 | O | Top1 ์ญ์ (Top1=2025, Top2·3=2026) | 20% | ์ ๋ต | |
| q13 | easy | 2026 | X | ํผ์ ์์ (Top1·2=2026, Top3 ํผ์ฌ) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | ์ ์์ ๊ฐ ๋ถ๋ง ์ ์ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q14 | medium | 2026 | O | Top1 ์ญ์ (Top1·2=2025, Top3=2026) | 6์ธ ์ด์ 15์ธ ์ดํ ์๋์ธ ๊ฒฝ์ฐ ์ ์ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ 3%์ ๋๋ค | ์ ๋ต | |
| q15 | medium | 2026 | X | ์ ์ฒด ํธํฅ (Top1~3 ๋ชจ๋ 2025, ์ฐ๋ ํผ์ ) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | 2026๋ ๋ณต์ก์ถ๋ ์ฒญํฌ ๋ฏธ๊ฒ์, 2025๋ ์ฒญํฌ๋ง ๋ฐํ |
| q16 | medium | 2026 | O | ํผ์ ์์ (Top1=2026, Top2 ํผ์ฌ) | ์ด ์ง๋ฃ๋น์ 15% | ์ค๋ต | LLM์ด 15%๋ก ์ค๋ต (์ ๋ต 5%) |
| q17 | hard | 2026 | X | ํผ์ ์์ (Top1=2026, Top2 ํผ์ฌ) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | MRI ์ธ๋ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q18 | hard | 2026 | X | Top1 ์ญ์ (Top1=2025, Top2=2026) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | ์ํ์ผ์ ์ด๊ณผ ์ ์ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q19 | cross-year | 2025+2026 | X | cross-year ํผ์ฌ (ํ์ฉ ๋ฒ์) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต | CT ๋ณธ์ธ๋ถ๋ด๋ฅ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q20 | cross-year | 2025+2026 | O | cross-year ํผ์ฌ (ํ์ฉ ๋ฒ์) | 2% | ์ ๋ต | |
| ํฉ๊ณ | 8/20 (40%) |
์ฌ๋ฐ๋ฅธ ์ฃผ์ ๋ฅผ ๊ฒ์ํ์ง๋ง ๋ค๋ฅธ ๋ ๋์ ์ฒญํฌ๋ฅผ ๊ฐ์ ธ์จ ๊ฒฝ์ฐ๋ฅผ ๋ณ๋๋ก ๋ถ์ํฉ๋๋ค.
| ํญ๋ชฉ | ๊ฐ |
| ์ฌ๋ฐ๋ฅธ ๋ ๋ ๊ฒ์ ์ฑ๊ณต๋ฅ | 7 / 16 (44%) — ๋จ์ผ ๋ ๋ 16๋ฌธํญ ๊ธฐ์ค, Top1์ด ์ ๋ต ๋ ๋์ธ ๊ฒฝ์ฐ |
| ๋ ๋ ํผ๋์ผ๋ก ์ธํ ์ค๋ต ์ | 6๊ฑด (q01·q05·q06·q07·q15·q18) |
| ๋ ๋ ํผ๋ ์์ผ๋ ์ ๋ต | 3๊ฑด (q11·q12·q14 — 2025/2026 ๋ด์ฉ ๋์ผํ์ฌ ์ ๋ต ๋์ถ) |
| ์ฃผ์ ๋ ๋ ํผ๋ ํจํด | 2025/2026 ๋์ผ ์ ์ฑ ํญ๋ชฉ์์ ์๋ฒ ๋ฉ ํฌํ ๋ฐ์ — ๋ ์ฒญํฌ์ ๋ฒกํฐ๊ฐ ๊ฑฐ์ ๋์ผํด์ ธ ์ฐ๋ ๊ตฌ๋ถ ๋ถ๊ฐ |
2์ฃผ์ฐจ ๋๋น ๋น๊ต
| ๋ฐฉ์ | ์ ๋ต๋ฅ | ๋น๊ณ |
| 2์ฃผ์ฐจ Zero-shot (์ ์ฒด ๋ฐ์ดํฐ in system prompt) | 83% | |
| 2์ฃผ์ฐจ ์ต๊ณ ์ฑ๋ฅ ๊ธฐ๋ฒ | 92% | Few-shot |
| 4์ฃผ์ฐจ Basic RAG | 40% |
์ง๋ฌธ → FAISS (Top-5) + BM25 (Top-5) → ํฉ์ณ์ ์ต๋ 10๊ฐ
→ Re-ranking (์์ 3๊ฐ) → parent_content ์ปจํ
์คํธ ๊ตฌ์ฑ → LLM → ๋ต๋ณ
์ค์ ๊ฐ
| ํญ๋ชฉ | ์ค์ ๊ฐ |
| BM25 Retriever k | 5 |
| Vector Retriever k | 5 |
| Ensemble ๋ฐฉ์ | RRF (Reciprocal Rank Fusion) |
| RRF ๊ฐ์ค์น (vector : BM25) | 0.5 : 0.5 |
| Re-ranker ๋ชจ๋ธ | BAAI/bge-reranker-v2-m3 |
| Re-ranking ํ ์ต์ข Top-K | 3 |
| ๋ฉํ๋ฐ์ดํฐ ํํฐ๋ง | ์์ |
์ฃผ์ ์ค๊ณ ๊ฒฐ์ :
- Re-ranker ์ ๋ ฅ์ child chunk(300์) ๋์ parent_content(1500์) ๊ธฐ์ค์ผ๋ก ์ค์ฝ์ด๋ง → ์งง์ chunk๋ก ์ธํ ์ปจํ ์คํธ ์์ค ๋ฐฉ์ง
- ๋ ๋ ํํฐ๋ง ๋ฏธ์ ์ฉ → Re-ranking์ด ์ฐ๋ ํผ์ ์ ์์ฐ์ค๋ฝ๊ฒ ๋ณด์ ํ๋์ง ๊ฒ์ฆ
- BM25๋ ๋งค ์คํ ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๊ตฌ์ฑ (FAISS๋ ์ง์ ํ์ฉ)
๊ฒฐ๊ณผ
| ํญ๋ชฉ | ๊ฐ |
| ์ ์ฒด ์ ๋ต๋ฅ | 9 / 20 (45%) |
๋ฌธํญ๋ณ ๊ฒฐ๊ณผ
| ์ง๋ฌธID | ๋์ด๋ | source_year | ๊ฒ์ ๋ฐฉ์ | ์ ๊ฒฐ๊ณผ ํฌํจ ์ฌ๋ถ | ๋ ๋ ๋ถ์ | LLM ์์ฑ ๋ต๋ณ | ์ ๋ต ์ฌ๋ถ |
| q01 | easy | 2025 | Hybrid | X | Top1 ์ญ์ (Top1·2=2026, Top3=2025) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q02 | easy | 2025 | Hybrid | O | ํผ์ ์์ (Top1~3 ๋ชจ๋ 2025) | 5% | ์ ๋ต |
| q03 | easy | 2025 | Hybrid | X | ์ ์ฒด ํธํฅ (Top1~3 ๋ชจ๋ 2026) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q04 | medium | 2025 | Hybrid | O | ํผ์ ์์ (Top1·2=2025, Top3=2026 ํผ์ฌ) | ์ ์ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ 3%์ด๋ฉฐ, ์๋ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ 20%๋ฅผ ์ ์ฉ๋ฐ์ต๋๋ค | ์ ๋ต |
| q05 | medium | 2025 | Hybrid | X | Top1 ์ญ์ (Top1·2=2026, Top3=2025) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q06 | medium | 2025 | Hybrid | O | Top1 ์ญ์ (Top1=2026, Top2=2025) | 15% | ์ค๋ต |
| q07 | hard | 2025 | Hybrid | X | Top1 ์ญ์ (Top1·2=2026, Top3=2025) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q08 | hard | 2025 | Hybrid | X | Top1 ์ญ์ (Top1=2026, Top2=2025) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q09 | cross-year | 2025+2026 | Hybrid | X | cross-year, 2026 ํธํฅ (Top1~3 ๋ชจ๋ 2026) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q10 | cross-year | 2025+2026 | Hybrid | O | cross-year ํผ์ฌ (Top1·2=2026, Top3=2025) | 5% | ์ ๋ต |
| q11 | easy | 2026 | Hybrid | O | ํผ์ ์์ (Top1=2026, Top2=2025 ํผ์ฌ) | 1,500~2,000์์ ๋๋ค | ์ ๋ต |
| q12 | easy | 2026 | Hybrid | O | ํผ์ ์์ (Top1=2026, Top2=2025 ํผ์ฌ) | 20%์ ๋๋ค | ์ ๋ต |
| q13 | easy | 2026 | Hybrid | X | ํผ์ ์์ (Top1·2=2026, Top3=2025 ํผ์ฌ) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q14 | medium | 2026 | Hybrid | O | Top1 ์ญ์ (Top1·2=2025, Top3=2026) | ์ ์ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ 3%์ด๋ฉฐ, ์๋ ๋ณธ์ธ๋ถ๋ด๋ฅ ์ 20%๋ฅผ ์ ์ฉ๋ฐ์ต๋๋ค | ์ ๋ต |
| q15 | medium | 2026 | Hybrid | X | Top1 ์ญ์ (Top1=2025, Top2·3=2026) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| q16 | medium | 2026 | Hybrid | O | ํผ์ ์์ (Top1=2026, Top2·3=2025 ํผ์ฌ) | 15% | ์ค๋ต |
| q17 | hard | 2026 | Hybrid | O | ์ ์ฒด ํธํฅ (Top1~3 ๋ชจ๋ 2025, ๋ด์ฉ ๋์ผ๋ก ์ ๋ต) | ์ด ์ง๋ฃ๋น์ 15%์ ๋๋ค | ์ ๋ต |
| q18 | hard | 2026 | Hybrid | O | ํผ์ ์์ (Top1·2=2026, Top3=2025 ํผ์ฌ) | 20% | ์ ๋ต |
| q19 | cross-year | 2025+2026 | Hybrid | O | cross-year ํผ์ฌ (Top1·2=2026, Top3=2025) | 5% | ์ ๋ต |
| q20 | cross-year | 2025+2026 | Hybrid | X | cross-year, 2026 ํธํฅ (Top1~3 ๋ชจ๋ 2026) | ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค | ์ค๋ต |
| ํฉ๊ณ | 9/20 (45%) |
๋ ํ์ดํ๋ผ์ธ์ ์ฑ๋ฅ์ ๋น๊ตํ๊ณ ์ด๋ค ์ฐจ์ด๊ฐ ๋๋์ง ๋ถ์ํฉ๋๋ค.
3-1. ์ ๋ต๋ฅ ๋น๊ต ํ ์ด๋ธ
| ๋ฐฉ์ | ์ ์ฒด ์ ๋ต๋ฅ | easy(6๋ฌธํญ) | medium(6๋ฌธํญ) | hard(4๋ฌธํญ) | cross-year(4๋ฌธํญ) | ๋ ๋ ํผ๋ ์ค๋ต ์ |
| Basic RAG (๋ฒกํฐ ๊ฒ์๋ง) | 8/20 (40%) | 4/6 | 2/6 | 0/4 | 2/4 | 6๊ฑด |
| Advanced RAG (Hybrid + Re-ranking, no filter) | 9/20 (45%) | 3/6 | 2/6 | 2/4 | 2/4 | 5๊ฑด |
3-2. ๋ฌธํญ๋ณ ๋ณํ ๋ถ์
| ์ง๋ฌธ ID | Basic RAG | Advanced RAG (no filter) | ๋ณํ | ๋ณํ ์์ธ ๋ถ์ |
| q01 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q02 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q03 | ์ ๋ต | ์ค๋ต | ์ ํ | Re-ranking ํ ๋ถ๋ง ๊ด๋ จ ์ฒญํฌ๊ฐ ํ๋ฝ, ์๋·์ํ๋ํธ ์ฒญํฌ๋ก ๊ต์ฒด |
| q04 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q05 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q06 | ์ค๋ต | ์ค๋ต | ์ ์ง | LLM ์น๋งค/์กฐํ๋ณ ํญ๋ชฉ ํผ๋ ๊ณตํต |
| q07 | ์ค๋ต | ์ค๋ต | ์ ์ง | ์น๋งค ์ ์ 5% ์ฒญํฌ ๋ฏธ๊ฒ์ ๊ณตํต |
| q08 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q09 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q10 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q11 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q12 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q13 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q14 | ์ ๋ต | ์ ๋ต | ์ ์ง | ์ ์ฐ๋ ๋ด์ฉ ๋์ผ, Top1·2=2025 ์ญ์ ๋์ด๋ ์ ๋ต ๋์ถ |
| q15 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q16 | ์ค๋ต | ์ค๋ต | ์ ์ง | LLM์ด ๋ ๋ฐฉ์ ๋ชจ๋ 15%๋ก ์ค๋ต |
| q17 | ์ค๋ต | ์ ๋ต | ๊ฐ์ | 2025/2026 MRI ๋ณธ์ธ๋ถ๋ด๋ฅ ๋ด์ฉ ๋์ผ, ์ฐ๋ ํผ์ ์๋ ์ ๋ต ๋์ถ |
| q18 | ์ค๋ต | ์ ๋ต | ๊ฐ์ | Re-ranking์์ 2026 ์ํ์ผ์ ๊ด๋ จ ์ฒญํฌ๊ฐ ์์๋ก ์ฌ๋ผ์ด |
| q19 | ์ค๋ต | ์ ๋ต | ๊ฐ์ | CT ๋ณธ์ธ๋ถ๋ด๋ฅ ์ ๋ณด ๋์ถ ์ฑ๊ณต (cross-year ํผ์ฌ ํ์ฉ) |
| q20 | ์ ๋ต | ์ค๋ต | ์ ํ | Basic์ ์ง์ ์์น ์ฒญํฌ ํฌํจ, Re-ranking ํ ์ฃผ์ฌ์ ์ธ๋ถ ํญ๋ชฉ ์ฒญํฌ ํ๋ฝ |
3-3. ๊ธฐ๋ฒ๋ณ ๊ธฐ์ฌ๋ ๋ถ์
| ๋ฐฉ์ | ์ ๋ต๋ฅ | ํต์ฌ ๋ณํ |
| Basic RAG (๋ฒกํฐ๋ง) | 40% | ๋ฒ ์ด์ค๋ผ์ธ |
| + Hybrid Search only (RRF) | 30% | BM25 ๋ถ์์ฉ์ผ๋ก ์คํ๋ ค ํ๋ฝ |
| + Hybrid + Re-ranking (no filter) | 45% | Re-ranking์ด BM25 ํผ๋ ๋ณด์ |
Step 4: ์ฒญํฌ ํฌ๊ธฐ ๋น๊ต ์คํ (c300_p1500 vs c1000_p3000)
๋น๊ต ์กฐ๊ฑด: Advanced RAG (Hybrid + Re-ranking, ๋ ๋ ํํฐ๋ง ์์) ๋์ผ ํ์ดํ๋ผ์ธ์์ ์ฒญํฌ ํฌ๊ธฐ๋ง ๋ณ๊ฒฝ
์ ๋ต๋ฅ ๋น๊ต
| ๊ตฌ๋ถ | c300_p1500 | c1000_p3000 | ๋ณํ |
| ์ ์ฒด | 9 / 20 (45%) | 14 / 20 (70%) | +25%p |
| easy (6๋ฌธํญ) | 4 / 6 (67%) | 4 / 6 (67%) | ๋์ผ |
| medium (6๋ฌธํญ) | 2 / 6 (33%) | 5 / 6 (83%) | +50%p |
| hard (4๋ฌธํญ) | 1 / 4 (25%) | 2 / 4 (50%) | +25%p |
| cross-year (4๋ฌธํญ) | 2 / 4 (50%) | 3 / 4 (75%) | +25%p |
๋ฌธํญ๋ณ ์ ์ค๋ต ๋น๊ต
| ์ง๋ฌธ ID | ๋์ด๋ | c300_p1500 | c1000_p3000 | ๋ณํ | ์์ธ |
| q01 | easy | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q02 | easy | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q03 | easy | ์ค๋ต | ์ค๋ต | ์ ์ง | ๋ถ๋ง ๋ฉด์ ์ ๋ณด ์์ชฝ ๋ชจ๋ ์ฒญํฌ ๋ฏธํฌํจ |
| q04 | medium | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q05 | medium | ์ค๋ต | ์ ๋ต | ๊ฐ์ | c1000์์ ์ ๋ณ๊ธ์ฌ ํ ์ ์ฒด ํ ํฌํจ |
| q06 | medium | ์ค๋ต | ์ ๋ต | ๊ฐ์ | c1000์์ ์ ์ ์งํ ์ธ๋์ง๋ฃ ํ ์จ์ ํ ๊ฒ์ |
| q07 | hard | ์ค๋ต | ์ค๋ต | ์ ์ง | ์น๋งค ์ ์ ํน๋ก 5% ์ ๋ณด ์์ชฝ ๋ชจ๋ ๋ฏธํฌํจ |
| q08 | hard | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q09 | cross-year | ์ค๋ต | ์ค๋ต | ์ ์ง | CT ๋ณธ์ธ๋ถ๋ด๊ธ ์ง์ ์์น ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q10 | cross-year | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q11 | easy | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q12 | easy | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q13 | easy | ์ค๋ต | ์ค๋ต | ์ ์ง | ๋ถ๋ง ๋ฉด์ ์ ๋ณด ์์ชฝ ๋ชจ๋ ์ฒญํฌ ๋ฏธํฌํจ |
| q14 | medium | ์ค๋ต | ์ค๋ต | ์ ์ง | ํํฐ ์์์๋ ๊ด๋ จ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q15 | medium | ์ค๋ต | ์ค๋ต | ์ ์ง | ๋ณต์ก์ถ๋ 2026 ์ฒญํฌ ์์ชฝ ๋ชจ๋ ๋ฏธ๊ฒ์ |
| q16 | medium | ์ค๋ต | ์ค๋ต | ์ ์ง | LLM ์น๋งค/์กฐํ๋ณ ํญ๋ชฉ ํผ๋ (์ฒญํฌ ํฌ๊ธฐ ๋ฌด๊ด) |
| q17 | hard | ์ค๋ต | ์ค๋ต | ์ ์ง | MRI ์ธ๋ ์ธ๋ถ ์ฒญํฌ ๋ฏธ๊ฒ์ |
| q18 | hard | ์ค๋ต | ์ ๋ต | ๊ฐ์ | c1000์์ ์ํ์ผ์ ๊ด๋ จ ์ฒญํฌ ํ๋ณด |
| q19 | cross-year | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q20 | cross-year | ์ค๋ต | ์ ๋ต | ๊ฐ์ | c1000์์ ์ ์ ์งํ ์ธ๋์ง๋ฃ ํ ์ ์ฒด ํฌํจ |
| ํฉ๊ณ | 9/20 (45%) | 14/20 (70%) | +25%p |
Step 5: Advanced RAG no_filter vs year_filter ๋น๊ต
๋์ผํ Hybrid + Re-ranking (c300_p1500) ํ์ดํ๋ผ์ธ์์ ๋ ๋ pre-filtering ์ ์ฉ ์ฌ๋ถ๋ง ๋ฌ๋ฆฌํ ๋น๊ต
์ ๋ต๋ฅ ๋น๊ต
| ๋ฐฉ์ | ์ ์ฒด | easy (6๋ฌธํญ) | medium (6๋ฌธํญ) | hard (4๋ฌธํญ) | cross-year (4๋ฌธํญ) | ๋ ๋ ํผ์ |
| Advanced RAG (no filter) | 9/20 (45%) | 3/6 | 2/6 | 2/4 | 2/4 | ๋ค์ (BM25 ํผ๋·์๋ฒ ๋ฉ ํฌํ ์ง์) |
| Advanced RAG (year filter) | 6/20 (30%) | 3/6 | 1/6 | 0/4 | 2/4 | 0๊ฑด (pre-filtering์ผ๋ก ์์ ์ฐจ๋จ) |
๋ฌธํญ๋ณ ๋ณํ (no_filter → year_filter)
| ์ง๋ฌธ ID | no_filter | year_filter | ๋ณํ | ์์ธ ๋ถ์ |
| q01 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q02 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q03 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q04 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q05 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q06 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q07 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q08 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q09 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q10 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q11 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q12 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q13 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q14 | ์ ๋ต | ์ค๋ต | ์ ํ | 2026 ํํฐ ํ ํ๋ณด ํ ์ถ์, Re-ranking์์ ๊ด๋ จ ์ฒญํฌ ํ๋ฝ |
| q15 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q16 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| q17 | ์ ๋ต | ์ค๋ต | ์ ํ | 2026 ํํฐ ์ ์ฉ ํ ๊ด๋ จ ์ฒญํฌ๊ฐ ํ๋ณด ํ์์ ํ๋ฝ |
| q18 | ์ ๋ต | ์ค๋ต | ์ ํ | 2026 ํํฐ ํ ์ํ์ผ์ ๊ด๋ จ ์ฒญํฌ ํ๋ฝ |
| q19 | ์ ๋ต | ์ ๋ต | ์ ์ง | |
| q20 | ์ค๋ต | ์ค๋ต | ์ ์ง | |
| ํฉ๊ณ | 9/20 (45%) | 6/20 (30%) | -3 |
๋ ๋ ํผ์ ๋ถ์
| ํญ๋ชฉ | ๊ฐ |
| no_filter ๋ ๋ ํผ์ ๋ฐ์ ๋ฌธํญ | q01·q03·q05·q07·q08·q15·q17 ๋ฑ ๋ค์ |
| year_filter ๋ ๋ ํผ์ ์ค๋ต ์ | 0๊ฑด (pre-filtering์ผ๋ก ์์ ์ฐจ๋จ) |
| ์ฃผ์ ํจํด | 2026 ๋ฌธ์ ๋ด '2025๋ ๋ณ๊ฒฝ์ฌํญ' ์น์ BM25 ๊ณผ๊ฒ์, 2025/2026 ๋์ผ ์ ์ฑ ์๋ฒ ๋ฉ ํฌํ |
์ ๋ต๋ฅ ์ ์ฒด ๋น๊ต
| ๋ฐฉ์ | ์ ์ฒด | easy | medium | hard | cross-year |
| Basic RAG (๋ฒกํฐ๋ง) | 8/20 (40%) | 4/6 | 2/6 | 0/4 | 2/4 |
| Hybrid Only (ํํฐ·๋ฆฌ๋ญํน ์์) | 6/20 (30%) | 3/6 | 1/6 | 0/4 | 2/4 |
| Advanced RAG (no filter, c300_p1500) | 9/20 (45%) | 4/6 | 2/6 | 1/4 | 2/4 |
| Advanced RAG (year filter, c300_p1500) | 6/20 (30%) | 3/6 | 1/6 | 0/4 | 2/4 |
| Advanced RAG (no filter, c1000_p3000) | 14/20 (70%) | 4/6 | 5/6 | 2/4 | 3/4 |
๊ธฐ๋ฒ๋ณ ๊ธฐ์ฌ๋
| ๋ฐฉ์ | ์ ๋ต๋ฅ | ํต์ฌ ๋ณํ |
| Basic RAG (๋ฒกํฐ๋ง) | 40% | ๋ฒ ์ด์ค๋ผ์ธ |
| + Hybrid Search only (RRF) | 30% | BM25 ๋ถ์์ฉ์ผ๋ก ์คํ๋ ค ํ๋ฝ |
| + Hybrid + Re-ranking (no filter) | 45% | Re-ranking์ด BM25 ํผ๋ ๋ณด์ |
| + Hybrid + Re-ranking + ๋ ๋ ํํฐ๋ง | 30% | ํํฐ๋ก ํ๋ณด ํ ๊ณผ๋ ์ถ์ |
| + Hybrid + Re-ranking + ์ฒญํฌ ํฌ๊ธฐ ํ๋ | 70% | HTML ํ ๊ตฌ์กฐ ๋ณด์กด์ผ๋ก ๊ธ์์น |
- ์ฒญํน ์ ๋ต์ด ํ์ดํ๋ผ์ธ๋ณด๋ค ์ฐ์ : ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ(Hybrid, Re-ranking, ํํฐ๋ง)์ ๋ชจ๋ ์กฐํฉํด๋ 45%์๋ ์ ๋ต๋ฅ ์ด ์ฒญํฌ ํฌ๊ธฐ ๋ณ๊ฒฝ ํ๋๋ก 70%๊น์ง ์ฌ๋๋ค. ์๋ฃ๊ธ์ฌ ๋ฌธ์์ฒ๋ผ HTML ํ ์ค์ฌ ๋ฌธ์์์๋ ์ฒญํฌ๊ฐ ํ ํ ๋จ์๋ฅผ ์จ์ ํ ๋ด์์ผ LLM์ด ํญ๋ชฉ๋ช ๊ณผ ์์น๋ฅผ ํจ๊ป ํ์ธํ ์ ์๋ค.
- Hybrid Search๋ Re-ranking๊ณผ ๋ฐ๋์ ํจ๊ป: BM25๊ฐ 2026 ๋ฌธ์ ๋ด '2025๋ ๋ณ๊ฒฝ์ฌํญ' ์น์ ํค์๋์ ๊ณผ๋ํ๊ฒ ๋ฐ์ํ์ฌ Hybrid Only(30%)๋ Basic RAG(40%)๋ณด๋ค ๋ฎ์๋ค. Re-ranking์ ์ถ๊ฐํ๋ฉด ์ฟผ๋ฆฌ-๋ฌธ์ ๊ด๋ จ์ฑ ์ฌํ๊ฐ๋ก BM25 ๋ถ์์ฉ์ด ๋ณด์ ๋์ด 45%๋ก ํ๋ณต๋๋ค.
- Re-ranking์ hard ๋ฌธํญ ๊ฐ์ ์ ํจ๊ณผ์ : Basic RAG์์ 0/4์๋ hard ๋ฌธํญ์ด Hybrid + Re-ranking์์ 2/4๋ก ๊ฐ์ ๋๋ค. ๋ฒกํฐ ๊ฒ์ ๋จ๋ ์ผ๋ก ๋์ณค๋ ์ฒญํฌ๋ฅผ BM25 ํค์๋ ๋งค์นญ์ผ๋ก ํ๋ณดํ๊ณ , Re-ranking์ด ๊ด๋ จ์ฑ ๋์ ์ฒญํฌ๋ฅผ ์์๋ก ์ฌ๋ฆฐ ๊ฒฐ๊ณผ๋ค.
- medium ๋์ด๋์์ ์ฒญํฌ ํฌ๊ธฐ ํจ๊ณผ ์ง์ค: easy๋ ๋จ์ ์์น ์กฐํ๋ผ c300์์๋ ์ถฉ๋ถํ ๊ฒ์๋๊ณ , hard๋ ์ ๋ณด๊ฐ ์ฌ๋ฌ ์ฒญํฌ์ ๋ถ์ฐ๋์ด ํฌ๊ธฐ๋ฅผ ๋๋ ค๋ ํ๊ณ๊ฐ ์๋ค. ํ ๊ตฌ์กฐ๊ฐ ํต์ฌ์ธ medium(33% → 83%)์์ ๊ฐ์ ํญ์ด ๊ฐ์ฅ ์ปธ๋ค.
- ์ฐ๋ ํผ์ ์ ๊ฑฐ๊ฐ ์ ๋ต๋ฅ ํฅ์์ ๋ณด์ฅํ์ง ์๋๋ค: year_filter๋ ์ฐ๋ ํผ์ ์ 0%๋ก ์ค์์ง๋ง, ํํฐ๋ง์ผ๋ก ํ๋ณด ํ์ด ์ถ์๋๋ฉด์ ๊ด๋ จ ์ฒญํฌ๊ฐ ํ๋ฝํ๋ ๋ถ์์ฉ์ด ๋ฐ์ํด ์ ๋ต๋ฅ ์ด 45% → 30%๋ก ์คํ๋ ค ํ๋ฝํ๋ค. ์ฐ๋ ํผ์ ์ ๊ฑฐ์ ์ ๋ต๋ฅ ํฅ์์ ๋ณ๊ฐ์ ๋ฌธ์ ์ด๋ฉฐ, ํํฐ๋ง ์์ฒด๊ฐ ์ ๋ต๋ฅ ํ๋ฝ์ ์ง์ ์์ธ์ด ๋ ์ ์๋ค.
- ์๋ฒ ๋ฉ ํฌํ๋ ํํฐ๋ง·Re-ranking์ผ๋ก ํด๊ฒฐ ๋ถ๊ฐ: ์๋ฒ ๋ฉ ํฌํ(๋ ์ฐ๋์ ๋ฌธ์ ๋ด์ฉ์ด ๊ฑฐ์ ๋์ผํ ๋ ๋ฒกํฐ ๊ณต๊ฐ์์ ๋ ์ฒญํฌ๊ฐ ๊ฐ์ ์์น์ ์๋ ดํด ์ฐ๋ ๊ตฌ๋ถ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํด์ง๋ ํ์)๋ 2025·2026 ๋ฌธ์๊ฐ ๋์ผ ์ ์ฑ ๋ด์ฉ์ ๋ฐ๋ณต ์๋กํ ๋ ๋ฐ์ํ๋ฉฐ, ์ฒญํฌ ๋ด์ ์ฐ๋ ์ ๋ณด๋ฅผ ํ ์คํธ๋ก ๋ช ์ํ๊ฑฐ๋ ์ฐ๋๋ณ ๋ณ๋ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ด ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ด ๋ ์ ์๋ค.
ํ ์คํธ ๊นํ๋ธ ์ฃผ์
https://github.com/jasonpark112/aiagent-repo/tree/jasonpark112/week-4/jasonpark112
aiagent-repo/week-4/jasonpark112 at jasonpark112 · jasonpark112/aiagent-repo
Contribute to jasonpark112/aiagent-repo development by creating an account on GitHub.
github.com
'AI > AI agent' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| RAG ํ๊ฐ - Golden Dataset, LLM-as-a-Judge, Ragas (0) | 2026.05.04 |
|---|---|
| RAG์ ๊ตฌ์ฑ ์์์ ์ค์ต (0) | 2026.04.05 |
| ํ๋กฌํํธ ์์ง๋์ด๋ง ๊ธฐ๋ฒ ์กฐ์ฌ ๋ฐ ์ค์ต (2) | 2026.03.29 |
| LLM ํธ์ถ์ ํ ์คํธํ๊ณ ์ดํดํ๊ธฐ (0) | 2026.03.22 |
๋๊ธ