BM25
BM25๋ ํ ์คํธ, ์์ฐ์ด ๊ฒ์์ ์ฌ์ฉ๋๋ ์ฃผ์ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ค. BM์ Best Matching์ ์ถ์ฝ์ด๋ฉฐ, ์ฌ๋ฌ ๋ณ์ข ์ด ์กด์ฌํ๋ค.
์ต์ด์ ์๊ณ ๋ฆฌ์ฆ์ 80๋ ๋, ๋ฐ๋ ์๋ฆฝ ๋ํ๊ต์์ ์งํ๋ ์ฐ๊ตฌ์ธ Okapi ํ๋ก์ ํธ์์ ์์๋์๋ค๊ณ ํ๋ค. ๊ทธ๋์ OKApi BM25๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
๊ธฐ๋ณธ ๊ฐ๋
BM25์ ๊ธฐ๋ณธ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ ํ
์คํธ์ ์ ์๋ฅผ ๋งค๊ธฐ๊ณ ๋จ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ข
์ ๋ญํน์ ์ํํ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ผ๋จ ํํ์ ๋ถ์ ๋ฑ์ ํตํด "๋จ์ด" ๋จ์๊ฐ ๊ตฌ๋ถ๋์ด์ผ ํ๋ค๋ ์ ์ ๊ฐ ์๋ค.
๊ทธ๋ฆฌ๊ณ BM25๋ ์ฌ๋ฌ๊ฐ์ ์ ์ ๊ธฐ์ค์ ์ฌ์ฉํด์ ์ข์ ํ์ง์ ๋ฝ์๋ด๋ ๊ฒ์ ์ค์ ์ผ๋ก ๋๋๋ฐ, ์ ์์ ์ฌ์ฉ๋๋ ๊ธฐ์ค๊ฐ์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
-
๋จ์ด์ ๋ฑ์ฅ ๋น๋(Term Frequency): ๋์ผํ ๋จ์ด๊ฐ ๋ง์ด ๋ฑ์ฅํ ์๋ก ๋์ ์ ์๊ฐ ๋ถ์ฌ๋๋ค.
-
IDF (Inverse Document Frequency) - ํฌ๊ทํ ๋จ์ด์ ๋ํด์ ๋์ ์ ์๋ฅผ ์ฃผ๊ณ , ํํ ๋จ์ด์ ๋ํด์ ๋ฎ์ ์ ์๋ฅผ ์ค๋ค. ์ด๋ฅผ ์ํด ํน์ ๋จ์ด๊ฐ ์ ์ฒด ๋ฐ์ดํฐ์์ ์ผ๋ง๋ ํฌ๊ทํ์ง๋ฅผ ์ธก์ ํด๋ฌ์ผ ํ๋ค.
-
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