๐Ÿค— ํ•œ๊ธ€ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ l ํ•œ๊ธ€ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ(Kiwi, Kkma, Okt) + BM25, FAISS ๋ฆฌํŠธ๋ฆฌ๋ฒ„

์‹  ์˜ยท2024๋…„ 9์›” 5์ผ
2

์ž์—ฐ์–ด์ฒ˜๋ฆฌ(NLP)

๋ชฉ๋ก ๋ณด๊ธฐ
14/18

โœ… ๋„์ž…

๋ณธ ํฌ์ŠคํŒ…์€ ํ…Œ๋””๋…ธํŠธ๋‹˜์˜ ์œ ํŠœ๋ธŒ ์˜์ƒ๊ณผ ์ฝ”๋“œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
ํ…Œ๋””๋…ธํŠธ ใ…ฃ ๐Ÿ‡ฐ๐Ÿ‡ทํ•œ๊ธ€ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ(Kiwi, Kkma, Okt) + BM25, FAISS ๋ฆฌํŠธ๋ฆฌ๋ฒ„๋กœ ํ•œ๊ธ€ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๐Ÿค–
ํ…Œ๋””๋…ธํŠธ ใ…ฃ ์‹ค์Šต ์ฝ”๋“œ

์ฝ”๋“œ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Colab ใ…ฃ ์‹ค์Šต ์ฝ”๋“œ ์ˆ˜์ • ๋ฒ„์ „

  1. OpenAIEmbeddings โ†’ Huggingface ํ•œ๊ตญ์–ด ์ง€์› ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ํ™œ์šฉ : ๋ฌด๋ฃŒ๋กœ ์‹ค์Šต ๊ฐ€๋Šฅํ•˜๋„๋ก ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  2. ์‹ค์Šต ๋ฌธ์žฅ ์ˆ˜์ •
  3. ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ kiwi๋งŒ ํ…Œ์ŠคํŠธ/kiwi & konlpy ๋น„๊ต ํ…Œ์ŠคํŠธ โ†’ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ๋ณ„ kiwi & konlpy ๋น„๊ต ํ…Œ์ŠคํŠธ๋กœ ์ •๋ฆฌ : ํ•œ ๋ˆˆ์— ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ๊ณผ ๋ถ„์„๊ธฐ๋ณ„ ์„ฑ๋Šฅ์„ ํ™•์ธํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โœ… ๊ณผ์ •

Tokenizers, ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ, ๊ฐ€์ค‘์น˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ด 39 ์ข…๋ฅ˜์˜ ๋ถ„์„๊ธฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Tokenizers : kiwi, konlpy

konlpy๋Š” okt์™€ kkma๋งŒ ํ™œ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : BM25, Faiss, BM25 + Faiss

  • BM25 ๋‹จ๋…
    • term frequency(TF)์™€ inverse document frequency(IDF)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์„œ์˜ ์ค‘์š”๋„ ํ‰๊ฐ€
      TF-IDF ๊ด€๋ จ ํฌ์ŠคํŒ…
    • ์ฟผ๋ฆฌ ๊ฐ ์šฉ์–ด์™€ ๋ฌธ์„œ์—์„œ ์šฉ์–ด์˜ ๋นˆ๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ์ˆ˜ ๊ณ„์‚ฐ
  • Faiss ๋‹จ๋…
    • Facebook AI Similarity Search์˜ ์•ฝ์ž
    • ๋Œ€๊ทœ๋ชจ ๋ฒกํ„ฐ DB์—์„œ ๋ฒกํ„ฐ ๊ธฐ๋ฐ˜ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ ๋ฐ ์œ ์‚ฌ์„ฑ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰
  • BM25 + Faiss
    BM25์™€ Faiss๋ฅผ ๊ฐ™์ด ํ™œ์šฉํ•จ์œผ๋กœ์จ Faiss๋กœ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ํ•œ ๋’ค BM25๋กœ ๋ฌธ์„œ ์ค‘์š”๋„ ๊ธฐ๋ฐ˜ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰์„ ํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ

ํ…Œ๋””๋…ธํŠธ๋‹˜์ด ํ•œ๊ตญ์–ด ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ๋ฒค์น˜๋งˆํฌ๋กœ ์ข‹๋‹ค๊ณ  ํ•˜์‹  e5, bge์™€ ๊ฐœ์ธ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ bespin global์˜ ๋ชจ๋ธ๋กœ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. e5๋Š” small ๋ฒ„์ „์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ๊ฐ€์ค‘์น˜

์•™์ƒ๋ธ” ๋ฆฌํŠธ๋ฆฌ๋ฒ„๋ฅผ ๊ฑธ ๋•Œ 0.3๊ณผ 0.7, 0.7๊ณผ 0.3์˜ ๋น„์œจ๋กœ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โœ… ๊ฒฐ๊ณผ

์‹ค์Šต ์˜ˆ์ œ ์ฟผ๋ฆฌ์™€ ๊ธฐ๋Œ€ํ•œ ์ถœ๋ ฅ ๋ฌธ์žฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{query, answer}

"๋งž์ถคํ•™์Šต", "๊ฐœ๋ณ„ํ™” ๊ต์œก์€ ํ•™์ƒ๋“ค์˜ ๋งž์ถคํ•™์Šต์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค."
"๋งž์ถค ํ•™์Šต", "๊ต์‚ฌ์˜ ์ง€๋„ ๋ฐฉ์‹์€ ํ•™์ƒ๋“ค์˜ ๋งž์ถค ํ•™์Šต์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ํŠนํžˆ ํ”ผ๋“œ๋ฐฑ์˜ ์งˆ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค."
"๋งž์ถคํ˜• ํ•™์Šต", "์˜จ๋ผ์ธ ๊ต์œก ํ”Œ๋žซํผ์€ ๋งž์ถคํ˜• ํ•™์Šต์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ํ•™์ƒ๋“ค์˜ ์ž๊ธฐ ์ฃผ๋„ ํ•™์Šต์„ ๋•์Šต๋‹ˆ๋‹ค."
"๋งž์ถคํ˜• ๊ต์œก", "ํ•™์ƒ ๋งž์ถคํ˜• ๊ต์œก์€ ๊ฐœ๋ณ„ ํ•™์ƒ์˜ ํ•™์Šต ์Šคํƒ€์ผ๊ณผ ๋Šฅ๋ ฅ์„ ๋ฐ˜์˜ํ•œ ์ฐจ๋ณ„ํ™”๋œ ํ•™์Šต ์ „๋žต์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค."
"๋งž์ถคํ˜• ํ•™์Šต ๊ฒฝ๋กœ", "ํ‰์ƒ๊ต์œก์€ ํ˜„๋Œ€ ์‚ฌํšŒ์—์„œ ๋Š์ž„์—†๋Š” ํ•™์Šต์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋งž์ถคํ˜• ํ•™์Šต ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค."
"ํ•™์ƒ๋ณ„ ๋งž์ถค ํ•™์Šต", "๊ต์‚ฌ์™€ ํ•™์ƒ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ๊ณผ ํ•™์ƒ๋ณ„ ๋งž์ถค ํ•™์Šต์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ด ํ™œ๋ฐœํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."
"ํ•™์ƒ๋ณ„ ๋งž์ถค ์‹œ์Šคํ…œ", "AI ๊ธฐ๋ฐ˜์˜ ๋งž์ถคํ˜• ํ•™์Šต ์‹œ์Šคํ…œ์€ ํ•™์ƒ๋“ค์˜ ๊ฐœ๋ณ„ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด ํ•™์Šต์ž ๋งž์ถค ๊ฒฝ๋กœ๋ฅผ ์ œ์‹œํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค"

๐Ÿ“Œ BAAI/bge-m3

๋ฆฌํŠธ๋ฆฌ๋ฒ„๋ณ„ ์ •๋‹ต ํšŸ์ˆ˜:
bm25: 2
kiwi_bm25: 2
faiss: 2
bm25_faiss_73: 2
bm25_faiss_37: 1
kiwi_bm25_faiss_73: 2
kiwi_bm25_faiss_37: 2
kkma_bm25: 2
kkma_bm25_faiss_73: 2
kkma_bm25_faiss_37: 2
okt_bm25: 2
okt_bm25_faiss_73: 2
okt_bm25_faiss_37: 2

๐Ÿ“Œ intfloat/multilingual-e5-large

๋ฆฌํŠธ๋ฆฌ๋ฒ„๋ณ„ ์ •๋‹ต ํšŸ์ˆ˜:
bm25: 2
kiwi_bm25: 2
faiss: 2
bm25_faiss_73: 2
bm25_faiss_37: 1
kiwi_bm25_faiss_73: 2
kiwi_bm25_faiss_37: 2
kkma_bm25: 2
kkma_bm25_faiss_73: 2
kkma_bm25_faiss_37: 2
okt_bm25: 2
okt_bm25_faiss_73: 2
okt_bm25_faiss_37: 2

๐Ÿ“Œ bespin-global/klue-sroberta-base-continue-learning-by-mnr

๋ฆฌํŠธ๋ฆฌ๋ฒ„๋ณ„ ์ •๋‹ต ํšŸ์ˆ˜:
bm25: 2
kiwi_bm25: 2
faiss: 1
bm25_faiss_73: 1
bm25_faiss_37: 1
kiwi_bm25_faiss_73: 1
kiwi_bm25_faiss_37: 2
kkma_bm25: 2
kkma_bm25_faiss_73: 1
kkma_bm25_faiss_37: 2
okt_bm25: 2
okt_bm25_faiss_73: 1
okt_bm25_faiss_37: 1

โœ… ๋Š๋‚€ ์ 

ํ…Œ๋””๋…ธํŠธ๋‹˜์€ ๊ธˆ์œต ๋ณดํ—˜ ๊ด€๋ จ ์˜ˆ์ œ ๋ฌธ์žฅ์„ ์‚ฌ์šฉํ•˜์…จ๋Š”๋ฐ ๋ฌธ์žฅ์„ ๋ฐ”๊ฟ” ์ง„ํ–‰ํ•ด ๋ณด์•˜๋”๋‹ˆ ์‚ฌ๋ญ‡ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ํ…Œ๋””๋…ธํŠธ๋‹˜์ด ์ถ”์ฒœํ•˜์‹  bge์™€ e5๋Š” ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๊ณ , bespin global์˜ ๋ชจ๋ธ์€ ์•ž์˜ ๋‘ ๋ชจ๋ธ์— ๋น„ํ•ด ์ข€ ๋” ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์ง€๋Š” ๋“ฏ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์‰ฌ์šด ์ ์ด ์žˆ์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ๋‹ค์–‘ํ•œ ์•™์ƒ๋ธ” ๋ชจ๋ธ์„ ํ…Œ์ŠคํŠธ ํ•ด๋ณธ ๋ฐ์— ์˜์˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ฒˆ๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ Faiss๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹์„ ๊ณ ๋ คํ•˜๊ณ  ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐฉ์•ˆ์„ ํ…Œ์ŠคํŠธ ํ•จ์œผ๋กœ์จ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐฉ์•ˆ์„ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณ ๋ คํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ ์ž๋ฃŒ
์œ„ํ‚ค๋…์Šค ใ…ฃ ๋žญ์ฒด์ธ(LangChain) ์ž…๋ฌธ๋ถ€ํ„ฐ ์‘์šฉ๊นŒ์ง€ HuggingFaceEmbeddings

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด