๐Ÿ” Retrieval ๊ธฐ๋ฐ˜ ๊ฒฝ์ง„๋Œ€ํšŒ ๋„์ „๊ธฐ: Chunking๋ถ€ํ„ฐ Dual Dense ์•™์ƒ๋ธ”๊นŒ์ง€

์ง„์ •ยท2025๋…„ 9์›” 19์ผ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ œ๊ฐ€ ์ฐธ์—ฌํ–ˆ๋˜ IR(Information Retrieval) ๊ฒฝ์ง„๋Œ€ํšŒ์—์„œ ์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์ณ ์„ฑ๋Šฅ์„ ๋Œ์–ด์˜ฌ๋ ธ๋Š”์ง€ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.
์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•œ Baseline์—์„œ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ, ๋‹ค์–‘ํ•œ ์ „์ฒ˜๋ฆฌ์™€ ๋ชจ๋ธ ์‹คํ—˜์„ ๊ฑฐ์น˜๋ฉฐ ์ ์ˆ˜๋ฅผ ๊ฐœ์„ ํ–ˆ๊ณ , ์ตœ์ข…์ ์œผ๋กœ๋Š” Dual Dense ์•™์ƒ๋ธ”์ด๋ผ๋Š” ์ ‘๊ทผ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

1. ๋ฐ์ดํ„ฐ ๋ถ„์„ โ€“ ๊ฒฐ์ธก๊ฐ’ ํ™•์ธ๊ณผ ์ „์ฒ˜๋ฆฌ

๊ฒฝ์ง„๋Œ€ํšŒ์˜ ์ฒซ ๋‹จ๊ณ„๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ์ธก๊ฐ’ ์ ๊ฒ€: docid, title, content ๊ฐ™์€ ์ฃผ์š” ํ•„๋“œ์— ๊ฒฐ์ธก์€ ๊ฑฐ์˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ์ •๋ฆฌ: ๋‹ค๋งŒ ๋ฌธ์„œ ๋‚ด ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ๊ณผ ๋น„์ •์ƒ์ ์ธ ํ…์ŠคํŠธ๊ฐ€ ์žˆ์–ด์„œ ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์„œ ๊ธธ์ด ๋ฌธ์ œ: ๋ฌธ์„œ ๊ธธ์ด๊ฐ€ ์ œ๊ฐ๊ฐ์ด์–ด์„œ ๋‹จ์ผ ๋ฌธ์„œ ๋‹จ์œ„ ๊ฒ€์ƒ‰์œผ๋กœ๋Š” ์„ฑ๋Šฅ์ด ๋‚ฎ๊ฒŒ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.
โ†’ ์ด๋•Œ๋ถ€ํ„ฐ โ€œchunking ์ „๋žต์ด ํ•„์š”ํ•˜๋‹คโ€๋Š” ๊ฒฐ๋ก ์„ ์–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2. Feature ์—”์ง€๋‹ˆ์–ด๋ง โ€“ Chunking๊ณผ ์ธ๋ฑ์Šค ์„ธํŒ…

๋ณธ๊ฒฉ์ ์ธ ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค์–‘ํ•œ feature ์—”์ง€๋‹ˆ์–ด๋ง์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
Chunking: window์™€ stride๋ฅผ ์กฐ์ •ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ตœ์  ์กฐํ•ฉ์€ win=420, stride=300์ด์—ˆ๊ณ , ์ด๋•Œ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ๋†’์•˜์Šต๋‹ˆ๋‹ค.
์ค‘๋ณต ๋ฐฉ์ง€: ๊ฐ™์€ ๋ฌธ์„œ์—์„œ ๊ณผ๋„ํ•˜๊ฒŒ ๋งŽ์€ ์ฒญํฌ๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋„๋ก same-doc limit์„ 2~3์œผ๋กœ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ† ํฐํ™” & ์ž„๋ฒ ๋”ฉ:

Sparse ๋ชจ๋ธ(BM25)์—๋Š” Kiwi ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋ฅผ ์ ์šฉํ•ด ํ† ํฐ ๋‹จ์œ„ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
Dense ๋ชจ๋ธ์€ nlpai-lab/KURE-v1 ์ž„๋ฒ ๋”ฉ์„ ์‚ฌ์šฉํ•ด FAISS ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ณผ์ •์—์„œ chunking ์ „๋žต ํ•˜๋‚˜๋งŒ์œผ๋กœ๋„ MAP์ด 0.33 โ†’ 0.52๊นŒ์ง€ ์ƒ์Šนํ•˜๋Š” ํฐ ํšจ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

3. ๋ชจ๋ธ ์‹คํ—˜ โ€“ Baseline์—์„œ Hybrid๊นŒ์ง€

๋ชจ๋ธ๋ง์€ ๋‹จ๊ณ„์ ์œผ๋กœ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Baseline: ๋‹จ์ผ BM25 ๋˜๋Š” ๋‹จ์ผ Dense Retrieval โ†’ MAP โ‰ˆ 0.33
    Dense ํ›„๋ณด ์ˆ˜ ํ™•์žฅ: num_candidates๋ฅผ 300 โ†’ 1200๊นŒ์ง€ ๋Š˜๋ฆฌ๋ฉด์„œ ์‹คํ—˜ํ–ˆ๋Š”๋ฐ, RRF ๊ฒฐํ•ฉ ์‹œ MAP 0.51~0.52 ๋ฒ”์œ„์—์„œ ์•ˆ์ •์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Fusion ๊ธฐ๋ฒ• ๋น„๊ต:

RRF(Reciprocal Rank Fusion): ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ ์œ ์ง€ (MAP 0.51 ์ด์ƒ)
z-score weighted sum: ์˜คํžˆ๋ ค ์„ฑ๋Šฅ ํ•˜๋ฝ (MAP 0.39~0.43)

๐Ÿ‘‰ ์ด ๊ณผ์ •์—์„œ RRF ๊ธฐ๋ฐ˜ hybrid retrieval์ด ์•ˆ์ •์ ์ธ ์„ ํƒ์ง€๋ผ๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

4. ํŒ€์—์„œ ํ™•์žฅํ•œ ์‹œ๋„ โ€“ BM25 + Dense + Cross-Encoder

Dense Retrieval: KURE-v1 ์ž„๋ฒ ๋”ฉ์œผ๋กœ FAISS ์ธ๋ฑ์Šค ๊ตฌ์ถ•, cosine ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ํ›„๋ณด ๊ฒ€์ƒ‰
BM25 Retrieval: Kiwi ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ BM25Retriever ๊ตฌ์„ฑ
Hybrid ์•™์ƒ๋ธ”: BM25 20%, Dense 80% ๋น„์œจ๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์ค˜ recall๊ณผ semantic match๋ฅผ ๋™์‹œ์— ๋ฐ˜์˜
Cross-Encoder Rerank: BAAI/bge-reranker-v2-m3 ๋ชจ๋ธ๋กœ queryโ€“๋ฌธ์„œ ์Œ์„ ์ •๋ฐ€ํ•˜๊ฒŒ scoring ํ›„ ์ƒ์œ„ 3๊ฐœ๋งŒ ์„ ํƒ

ํ›„์ฒ˜๋ฆฌ: greet_id์— ํ•ด๋‹นํ•˜๋Š” ํŠน์ • ์งˆ์˜๋Š” noise๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๊ฐ•์ œ๋กœ ์ œ์™ธ

-> ์ด ์ ‘๊ทผ์€ โ€œBM25๋กœ ์ •ํ™•ํ•œ ํ‚ค์›Œ๋“œ ๋งค์นญ์„ ํ™•๋ณดํ•˜๊ณ , Dense๋กœ ์˜๋ฏธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰์„ ๊ฐ•ํ™”ํ•œ ๋’ค, ๋งˆ์ง€๋ง‰์— Cross-Encoder๋กœ ์ •๋ฐ€๋„๋ฅผ ๋Œ์–ด์˜ฌ๋ฆฐ ๋ฐฉ์‹โ€์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์€ ์•ˆ์ •์ ์œผ๋กœ ์ƒ์œ„๊ถŒ์„ ์œ ์ง€ํ•˜๋ฉด์„œ precision์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

5. ์ตœ์ข… ์ฑ„ํƒ โ€“ Dual Dense ์•™์ƒ๋ธ”

์ตœ์ข…์ ์œผ๋กœ ์ €ํฌ ํŒ€์ด ์„ ํƒํ•œ ๋ฐฉ์‹์€ Dual Dense ์•™์ƒ๋ธ”์ž…๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ FAISS ์ธ๋ฑ์Šค ์‚ฌ์šฉ:

  • question ๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค
  • semantic ๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค
    ๊ฐ€์ค‘์น˜ ์•™์ƒ๋ธ”: retrievers = [retriever1, retriever2], weights = [0.1, 0.9]

Semantic ์ธ๋ฑ์Šค์— ๋” ๋†’์€ ๋น„์ค‘์„ ๋‘์–ด ์•ˆ์ •์„ฑ์„ ํ™•๋ณด
Question ์ธ๋ฑ์Šค๋Š” ์†Œ๋Ÿ‰ ๋ฐ˜์˜ํ•ด recall์„ ๋ณด์™„
ํ›„์ฒ˜๋ฆฌ: docid ์ค‘๋ณต ์ œ๊ฑฐ ํ›„ ์ตœ์ข… ์ƒ์œ„ 3๊ฐœ๋งŒ ๋ฐ˜ํ™˜

k=3์„ ์œ ์ง€ํ•œ ์ด์œ ๋Š”, ํ‰๊ฐ€ ์ง€ํ‘œ(MAP, MRR)๊ฐ€ top-3 ๊ธฐ์ค€์ผ ๋•Œ ๊ฐ€์žฅ ์•ˆ์ •์ ์œผ๋กœ ๊ฐœ์„ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ด ๋ฐฉ์‹์€ Cross-Encoder๋ฅผ ์“ฐ์ง€ ์•Š๊ณ ๋„ ๋น ๋ฅด๋ฉด์„œ ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ์—ˆ๊ณ , ํšจ์œจ์„ฑ๊ณผ ์ ์ˆ˜์˜ ๊ท ํ˜•์„ ๋งž์ถ˜ ์ตœ์ข… ์„ ํƒ์ง€๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

6. ๊ฒฐ๋ก ๊ณผ ๋ฐฐ์šด ์ 

๋‹จ์ˆœํ•œ Baseline์—์„œ ์‹œ์ž‘ํ•ด, ์ „์ฒ˜๋ฆฌ โ†’ Hybrid โ†’ Rerank โ†’ ์•™์ƒ๋ธ”๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ๊ฑฐ์น˜๋ฉด์„œ ์ ์ง„์ ์œผ๋กœ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•œ ๊ณผ์ • ์ž์ฒด๊ฐ€ ํฐ ํ•™์Šต ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ, ๋‹จ์ˆœํžˆ ๋ชจ๋ธ์„ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ์™€ retrieval ์ „๋žต ์„ค๊ณ„๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฑธ ์ด๋ฒˆ ๋Œ€ํšŒ๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€