BM25

BM25๋Š” ํ…์ŠคํŠธ, ์ž์—ฐ์–ด ๊ฒ€์ƒ‰์— ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋‹ค. BM์€ Best Matching์˜ ์ถ•์•ฝ์ด๋ฉฐ, ์—ฌ๋Ÿฌ ๋ณ€์ข…์ด ์กด์žฌํ•œ๋‹ค.

์ตœ์ดˆ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ 80๋…„๋Œ€, ๋Ÿฐ๋˜ ์‹œ๋ฆฝ ๋Œ€ํ•™๊ต์—์„œ ์ง„ํ–‰๋œ ์—ฐ๊ตฌ์ธ Okapi ํ”„๋กœ์ ํŠธ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ OKApi BM25๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.




๊ธฐ๋ณธ ๊ฐœ๋…

BM25์˜ ๊ธฐ๋ณธ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฐ ํ…์ŠคํŠธ์— ์ ์ˆ˜๋ฅผ ๋งค๊ธฐ๊ณ  ๋‹จ์–ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ผ์ข…์˜ ๋žญํ‚น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ž˜์„œ ์ผ๋‹จ ํ˜•ํƒœ์†Œ ๋ถ„์„ ๋“ฑ์„ ํ†ตํ•ด "๋‹จ์–ด" ๋‹จ์œ„๊ฐ€ ๊ตฌ๋ถ„๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ „์ œ๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  BM25๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ ์ˆ˜ ๊ธฐ์ค€์„ ์‚ฌ์šฉํ•ด์„œ ์ข‹์€ ํ’ˆ์งˆ์„ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ์„ ์ค‘์ ์œผ๋กœ ๋‘๋Š”๋ฐ, ์ ์ˆ˜์— ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ค€๊ฐ’์„ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


  1. ๋‹จ์–ด์˜ ๋“ฑ์žฅ ๋นˆ๋„(Term Frequency): ๋™์ผํ•œ ๋‹จ์–ด๊ฐ€ ๋งŽ์ด ๋“ฑ์žฅํ•  ์ˆ˜๋ก ๋†’์€ ์ ์ˆ˜๊ฐ€ ๋ถ€์—ฌ๋œ๋‹ค.

  2. IDF (Inverse Document Frequency) - ํฌ๊ท€ํ•œ ๋‹จ์–ด์— ๋Œ€ํ•ด์„œ ๋†’์€ ์ ์ˆ˜๋ฅผ ์ฃผ๊ณ , ํ”ํ•œ ๋‹จ์–ด์— ๋Œ€ํ•ด์„œ ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ์ค€๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํŠน์ • ๋‹จ์–ด๊ฐ€ ์ „์ฒด ๋ฐ์ดํ„ฐ์—์„œ ์–ผ๋งˆ๋‚˜ ํฌ๊ท€ํ•œ์ง€๋ฅผ ์ธก์ •ํ•ด๋‘ฌ์•ผ ํ•œ๋‹ค.

  3. Document Length Normalization: ๋™์ผํ•˜๊ฒŒ ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋˜๋”๋ผ๋„, ํ…์ŠคํŠธ๊ฐ€ ๊ธธ ๊ฒฝ์šฐ ๋” ๋‚ฎ์€ ์ ์ˆ˜๋ฅผ ์ฃผ๊ณ , ํ…์ŠคํŠธ๊ฐ€ ์งง๋‹ค๋ฉด ๋†’์€ ์ ์ˆ˜๋ฅผ ์ค€๋‹ค. ํ…์ŠคํŠธ๊ฐ€ ๋งŽ๋‹ค๋ฉด ํ™•๋ฅ ์ ์œผ๋กœ ๋” ๋งŽ์€ ๋‹จ์–ด๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.



์ด๋ฅผ ํ†ตํ•ด ๊ณ ํ’ˆ์งˆ์˜ ๋ฌธ์„œ ๊ฒ€์ƒ‰์„ ๊ฐ€๋Šฅ์ผ€ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.




์žฅ๋‹จ์ 

๋‹จ์–ด์˜ ๋นˆ๋„ ๋“ฑ์„ ๊ณ ๋ คํ•ด์„œ ๊ฒ€์ƒ‰์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌด์‹ํ•œ ๋‹จ์ˆœ ํฌํ•จ ๊ฒ€์ƒ‰์— ๋น„ํ•˜๋ฉด ํ•ฉ๋ฆฌ์ ์ด๊ณ  ๋‚ฉ๋“ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์š”์ฆ˜์—๋Š” Vector Search์™€ ๋น„๊ต๋ฅผ ๋งŽ์ด ํ•˜๋Š”๋ฐ, BM25์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋ถ€๋ถ„์€ ๊ทœ์น™ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์—„๊ฒฉํ•œ ๋‹จ์–ด ํฌํ•จ ๊ฒ€์ƒ‰์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. Vector Search์ฒ˜๋Ÿผ ์ƒ๋šฑ๋งž์€ ๊ฐ’์ด ๋‚˜์˜ฌ ์ผ์€ ์—†๋‹ค.

ํ•˜์ง€๋งŒ ๊ทœ์น™ ๊ธฐ๋ฐ˜์˜ ์—„๊ฒฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ์œ ์—ฐ์„ฑ์€ ๋งŽ์ด ๋ถ€์กฑํ•˜๋‹ค.
๋ฌธ๋งฅ์„ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•˜๋ฉฐ, ๋™์˜์–ด ๋“ฑ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ์ด๋Ÿฐ๊ฑด ๋ชจ๋ธ์— ๊ธฐ๋ฐ˜ํ•œ Vector Search๊ฐ€ ๋” ์ž˜ํ•˜๋Š” ์˜์—ญ์ด๋‹ค.




์‚ฌ์šฉ ์‚ฌ๋ก€

BM25์˜ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” Lucene/Elasticsearch๋‹ค.
Elasticsearch๋Š” ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ BM25๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ ์™ธ์—๋„ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ง€๋ฐฐ์ ์œผ๋กœ ์“ฐ์ธ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
๋น„์Šทํ•œ ๊ฒ€์ƒ‰์—”์ง„์ธ Apache Solr, Meilisearch ๋˜ํ•œ BM25๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฒ€์ƒ‰ ๋กœ์ง์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•œ๋‹ค.



์ฐธ์กฐ
https://www.elastic.co/kr/blog/practical-bm25-part-2-the-bm25-algorithm-and-its-variables