# [[BM25]] ## ๐Ÿ“Œ Brief Summary BM25๋Š” ์ •๋ณด ๊ฒ€์ƒ‰(IR) ์‹œ์Šคํ…œ๊ณผ ์ „ํ†ต์ ์ธ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํ™•๋ฅ  ๋ชจ๋ธ์ด์ž ๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค [1-3]. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์šฉ์–ด์˜ ๋นˆ๋„์™€ ๋ฌธ์„œ์˜ ๊ธธ์ด ๋“ฑ ๋‹ค์–‘ํ•œ ๊ตฌ์กฐ์  ์š”์†Œ๋ฅผ ํ‰๊ฐ€ํ•˜์—ฌ ํŠน์ • ์ฟผ๋ฆฌ์™€ ๋ฌธ์„œ ๊ฐ„์˜ ๊ด€๋ จ์„ฑ ํ™•๋ฅ ์„ ์‚ฐ์ถœํ•˜๊ณ  ์ˆœ์œ„๋ฅผ ๋งค๊ธด๋‹ค [2, 3]. ์ตœ๊ทผ์—๋Š” ํ…์ŠคํŠธ ์œ ์‚ฌ๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ๋‹จ๋… ๋ชจ๋ธ์„ ๋„˜์–ด, ์˜๋ฏธ๋ก ์  ๋ฒกํ„ฐ ๊ฒ€์ƒ‰๊ณผ ๊ฒฐํ•ฉ๋œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰(Hybrid Search)์ด๋‚˜ ๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ(RAG) ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ •ํ™•๋„๋ฅผ ๋ณด์™„ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ๋กœ ํ™œ๋ฐœํžˆ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‹ค [4, 5]. ## ๐Ÿ“– Core Content * **๊ด€๋ จ์„ฑ ํ™•๋ฅ  ๋ฐ ๋žญํ‚น ์‚ฐ์ถœ**: BM25๋Š” ์ „ํ†ต์ ์ธ ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ ์šฉ์–ด ๋นˆ๋„(Term Frequency)์™€ ์—ญ๋ฌธ์„œ ๋นˆ๋„(IDF) ๋“ฑ ๊ฐ€์ค‘ ํ†ต๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ์ˆœ์œ„๋ฅผ ๋งค๊ธฐ๋Š” ์—ญ์ƒ‰์ธ(Inverted index) ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค [1-3, 6]. ์ด๋Š” ํ…์ŠคํŠธ์˜ ์œ ์‚ฌ๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜๋กœ ๊ธฐ๋Šฅํ•œ๋‹ค [7]. * **ํ•™์Šต ๊ธฐ๋ฐ˜ ๋žญํ‚น(LTR)์—์„œ์˜ ํ™œ์šฉ**: ๊ธฐ๊ณ„ ํ•™์Šต์„ ์ด์šฉํ•ด ๊ฒ€์ƒ‰ ์ˆœ์œ„๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” LTR(Learning To Rank) ๋ชจ๋ธ์—์„œ BM25 ์ ์ˆ˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ์ฟผ๋ฆฌ-๋ฌธ์„œ ๊ฐ„ ํ”ผ์ฒ˜(Feature) ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋œ๋‹ค [8]. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์„œ์˜ ์ œ๋ชฉ, ๋ณธ๋ฌธ, ์•ต์ปค ํ…์ŠคํŠธ, URL ์˜์—ญ ๋“ฑ์— ๋Œ€ํ•œ BM25 ์ ์ˆ˜๊ฐ€ ๋žญํ‚น ๋ชจ๋ธ์˜ ํ•™์Šต ๋ฐ์ดํ„ฐ(์˜ˆ: LETOR ๋ฐ์ดํ„ฐ์…‹)๋กœ ํฌํ•จ๋˜์–ด ๊ด€๋ จ์„ฑ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ•œ๋‹ค [9]. * **1์ฐจ ๋ฌธ์„œ ๊ฒ€์ƒ‰(Top-k Retrieval) ๋ชจ๋ธ๋กœ์˜ ์—ญํ• **: BM25๋Š” ์—ฐ์‚ฐ ๋น„์šฉ์ด ๋‚ฎ๊ณ  ๋น ๋ฅธ ์ฟผ๋ฆฌ ํ‰๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค [6, 10]. ๋”ฐ๋ผ์„œ ๋ณต์žกํ•˜๊ณ  ๊ณ„์‚ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๊ธฐ๊ณ„ ํ•™์Šต ๊ธฐ๋ฐ˜ ๋žญํ‚น ๋ชจ๋ธ์„ ์ ์šฉํ•˜๊ธฐ ์ „์—, ์ „์ฒด ์ฝ”ํผ์Šค ์ค‘์—์„œ ์ž ์žฌ์ ์œผ๋กœ ๊ด€๋ จ์„ฑ์ด ๋†’์€ ์†Œ์ˆ˜์˜ ๋ฌธ์„œ ์ง‘ํ•ฉ์„ 1์ฐจ๋กœ ๋น ๋ฅด๊ฒŒ ์ถ”์ถœํ•ด ๋‚ด๋Š” ๋ชจ๋ธ๋กœ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค [10]. * **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ํŒŒ์ดํ”„๋ผ์ธ ํ†ตํ•ฉ**: ์ตœ์‹  AI ๊ฒ€์ƒ‰ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ๋ฐ€์ง‘ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰(Dense Vector Search)๊ณผ ์ „ํ†ต์ ์ธ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰์ธ BM25๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” 'ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰(Hybrid Search)' ๋ฐฉ์‹์ด ๋„๋ฆฌ ์ฑ„ํƒ๋˜๊ณ  ์žˆ๋‹ค [4, 5]. ์ด ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ ์—”์ง„์€ ๋ฒกํ„ฐ ๊ธฐ๋ฐ˜์˜ ์˜๋ฏธ๋ก ์  ์ดํ•ด๋ ฅ์„ ์–ป์œผ๋ฉด์„œ๋„, ๊ณ ์œ  ๋ช…์‚ฌ๋‚˜ ์ „๋ฌธ ์šฉ์–ด์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ผ์น˜(Exact-match) ๊ฒ€์ƒ‰์˜ ๊ฐ•์ ์„ ์žƒ์ง€ ์•Š๊ณ  ๋”์šฑ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค [4, 5]. ## โš–๏ธ Trade-offs & Caveats BM25์™€ ๊ฐ™์€ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ •ํ™•ํ•œ ๋ช…์นญ์ด๋‚˜ ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์ง๊ด€์ ์ด๊ณ  ์ฟผ๋ฆฌ ํ‰๊ฐ€ ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ ์ปดํ“จํŒ… ์—ฐ์‚ฐ ๋น„์šฉ์ด ๋‚ฎ๋‹ค๋Š” ๋šœ๋ ทํ•œ ์žฅ์ ์ด ์žˆ๋‹ค [6, 10]. ํ•˜์ง€๋งŒ ๋‹จ์–ด์˜ ๋ฌผ๋ฆฌ์  ์ผ์น˜ ์—ฌ๋ถ€๋‚˜ ํ‘œ๋ฉด์ ์ธ ํ˜•ํƒœ, ๋นˆ๋„์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰์–ด์˜ ์ˆจ๊ฒจ์ง„ ๋ฌธ๋งฅ(Context)์ด๋‚˜ ์œ ์˜์–ด, ์‚ฌ์šฉ์ž์˜ ์˜๋„๋ฅผ ๊นŠ์ด ์žˆ๊ฒŒ ํŒŒ์•…ํ•˜๋Š” ๋ฐ๋Š” ๊ทผ๋ณธ์ ์ธ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค [2, 6]. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋‹จ์–ด๊ฐ€ ๋™์Œ์ด์˜์–ด(์˜ˆ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ์˜ 'Java'์™€ ์ปคํ”ผ๋กœ์„œ์˜ 'Java')์ผ ๊ฒฝ์šฐ ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์—‰๋šฑํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์œ„ํ—˜์ด ์žˆ๋‹ค [2]. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ชจํ˜ธํ•˜๊ฑฐ๋‚˜ ์˜๋ฏธ๋ก ์ ์ธ ๊ด€๊ณ„ ํŒŒ์•…์ด ํ•„์ˆ˜์ ์ธ ๊ฒ€์ƒ‰ ํ™˜๊ฒฝ์—์„œ๋Š” BM25 ๋‹จ๋… ์‚ฌ์šฉ์ด ์˜คํžˆ๋ ค ์ •ํ™•๋„๋ฅผ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฒกํ„ฐ ๊ธฐ๋ฐ˜์˜ ์˜๋ฏธ๋ก ์  ๊ฒ€์ƒ‰์„ ๋ณด์™„์žฌ๋กœ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ ‘๊ทผ๋ฒ•์„ ์ฑ„ํƒํ•ด์•ผ๋งŒ ์ •๋ฐ€๋„์™€ ๋ฌธ๋งฅ ์ดํ•ด๋ ฅ์„ ์˜จ์ „ํžˆ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค [2, 4, 5]. --- *Last updated: 2026-05-04*