์์ฐ์ด์ฒ๋ฆฌ(NLP) ๋ถ์ผ์์ ํ ์คํธ ์๋ฒ ๋ฉ(Text Embedding)์ด๋, ๋ฌธ์ฅ์ด๋ ๋ฌธ์๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋๋ก ๊ณ ์ฐจ์์ ๋ฒกํฐ๋ก ๋ณํํ๋ ์์ ์ ๋งํ๋ค. ์ด ๋ฒกํฐ๋ ๋จ์ด ๊ฐ, ๋ฌธ์ฅ ๊ฐ์ ์๋ฏธ์ ์ ์ฌ์ฑ์ ์์น์ ์ผ๋ก ํํํ ์ ์๋๋ก ๋์์ค๋ค.
ํ ์คํธ ์๋ฒ ๋ฉ์ ๋ค์๊ณผ ๊ฐ์ ์์ ์์ ํต์ฌ ์ญํ ์ ํ๋ค.
- ๋ฌธ์ฅ ์ ์ฌ๋ ๋ถ์
- ์๋ฏธ ๊ธฐ๋ฐ ๊ฒ์ (semantic search)
- ํ ์คํธ ๋ถ๋ฅ ๋ฐ ๊ตฐ์งํ
- ์ถ์ฒ ์์คํ
- ์ง๋ฌธ-์๋ต(QA) ๋งค์นญ
- ์ ๋ณด ๊ฒ์ (Retrieval-Augmented Generation ๋ฑ)
์๋ฒ ๋ฉ ๋ฒกํฐ๊ฐ ์ ๋ง๋ค์ด์ก๋ค๋ ๊ฒ์, ์๋ฅผ ๋ค์ด "๋๋ ์ํ๋ฅผ ์ข์ํ๋ค"์ "์ํ ๋ณด๋ ๊ฑธ ์ฆ๊ธด๋ค" ๊ฐ์ ๋ฌธ์ฅ์ด ์๋ก ๊ฐ๊น์ด ์์น์ ๋ฒกํฐ๋ก ํํ๋๋ค๋ ๋ป์ด๋ค. ์ด์ฒ๋ผ ์ ์ฌํ ์๋ฏธ์ ๋ฌธ์ฅ์ด ๊ฐ๊น์ด ์์นํ๋ฉด ๊ฒ์, ๋ถ๋ฅ, ์ถ์ฒ์ ์ฑ๋ฅ๋ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค.
Hugging Face์์ ์ฌ์ฉ ๊ฐ๋ฅํ ํ ์คํธ ์๋ฒ ๋ฉ ๋ชจ๋ธ๋ค
์ต๊ทผ์๋ Hugging Face Transformers์ sentence-transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๊ฐํธํ๊ฒ ํ ์คํธ ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์๋ค. ์๋๋ ํ์ ๊ณผ ์ฐ๊ตฌ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋ชจ๋ธ๋ค์ด๋ค.
1. all-MiniLM-L6-v2
- sentence-transformers/all-MiniLM-L6-v2
- ํน์ง: ์๊ณ ๋น ๋ฅด์ง๋ง ๊ฝค ๊ฐ๋ ฅํ ๋ฌธ์ฅ ์๋ฒ ๋ฉ ์ฑ๋ฅ ์ ๊ณต
- ๋ฒกํฐ ํฌ๊ธฐ: 384์ฐจ์
- ์ ํฉํ ์ฉ๋: ๋น ๋ฅธ ๋ฌธ์ฅ ์ ์ฌ๋ ๋ถ์, ๊ฒ์ ์์คํ , ๋ฒกํฐ ๊ธฐ๋ฐ ํด๋ฌ์คํฐ๋ง
- ์ฅ์ : ์๋์ ์ฑ๋ฅ์ ๊ท ํ์ด ๋ฐ์ด๋จ
2. all-mpnet-base-v2
- sentence-transformers/all-mpnet-base-v2
- ํน์ง: ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ SOTA ์๋ฒ ๋ฉ ๋ชจ๋ธ ์ค ํ๋
- ๋ฒกํฐ ํฌ๊ธฐ: 768์ฐจ์
- ์ ํฉํ ์ฉ๋: ๊ณ ์ ๋ฐ ์๋ฏธ ๊ธฐ๋ฐ ๊ฒ์, ๋ถ๋ฅ, QA ๋งค์นญ
- ์ฅ์ : ์ฑ๋ฅ์ด ๋งค์ฐ ๋ฐ์ด๋๋ฉฐ ์ฌ๋ฌ ํ์คํฌ์์ ์ข์ ๊ฒฐ๊ณผ
3. e5-base / e5-large
- intfloat/e5-base, intfloat/e5-large
- ํน์ง: "query:"์ "passage:" ํ๋ฆฌํฝ์ค๋ฅผ ๋ถ์ฌ ๊ฒ์์ ์ต์ ํ๋ ์๋ฒ ๋ฉ์ ์์ฑ
- ์ ํฉํ ์ฉ๋: RAG, ๊ฒ์ ๊ธฐ๋ฐ QA, ๋ฌธ์ ๊ฒ์
- ์ฅ์ : query-passage ๊ตฌ๋ถ์ ํตํด ๊ฒ์ ํนํ ์ฑ๋ฅ ๊ทน๋ํ
- ์ถ๊ฐ ํ: E5 ๋ชจ๋ธ์ ์ฌ์ฉํ ๋ ๋ฐ๋์ ํ๋ฆฌํฝ์ค๋ฅผ ๋ถ์ฌ์ผ ์ฑ๋ฅ์ด ์ ๋๋ก ๋์จ๋ค.
# ์์
query = "query: ๋ ์จ๊ฐ ์ข์ ๋ ํ ๋งํ ์ผ์ธ ํ๋"
docs = ["passage: ๋ฑ์ฐ์ ์ข์ ์ด๋์
๋๋ค.", "passage: ์ค๋ด ๋ณด๋๊ฒ์๋ ์ฌ๋ฏธ์์ต๋๋ค."]
4. gte-base / gte-large
- ๋ชจ๋ธ ๊ฒฝ๋ก: thenlper/gte-base, thenlper/gte-large
- ํน์ง: E5์ ๋น์ทํ ๊ตฌ์กฐ์ง๋ง ํ๋ฆฌํฝ์ค ์์ด๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ฅ์ : ์ผ๋ฐ์ ์ธ ๋ฌธ์ฅ ์๋ฒ ๋ฉ ํ์คํฌ์ ์ ํฉํ๋ฉฐ ์ฌ์ฉ์ด ๊ฐํธ
- ์ ํฉํ ์ฉ๋: ๋ฌธ์ฅ ๋ถ๋ฅ, ์ ์ฌ๋ ๊ณ์ฐ, ์ถ์ฒ ์์คํ
5. OpenAI Text Embedding Models
- ๋ํ ๋ชจ๋ธ: text-embedding-ada-002 (API ๊ธฐ๋ฐ)
- ํน์ง: OpenAI์์ ์ ๊ณตํ๋ ๊ณ ์ฑ๋ฅ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋ฒ ๋ฉ ๋ชจ๋ธ
- ๋ฒกํฐ ํฌ๊ธฐ: 1536์ฐจ์
- ์ ํฉํ ์ฉ๋: ๋๊ท๋ชจ ๊ฒ์, RAG, ์ ์ฌ๋ ๋ถ์, ๋ถ๋ฅ
- ์ฅ์
- ๋ฒกํฐ ํ์ง์ด ๋งค์ฐ ๋ฐ์ด๋๋ฉฐ ๋ค์ํ ์ธ์ด์์๋ ๋์ ์ผ๊ด์ฑ
- API ํธ์ถ ํ ๋ฒ์ผ๋ก ์์ฝ๊ฒ ๋ฒกํฐ๋ฅผ ์ป์ ์ ์์
- ์ฃผ์์ฌํญ: ์ ๋ฃ API ๊ธฐ๋ฐ์ด๋ฏ๋ก ์ฌ์ฉ๋์ ๋ฐ๋ผ ์๊ธ์ด ๋ฐ์
์ด๋ค ๋ชจ๋ธ์ ์ ํํด์ผ ํ ๊น?
๋ชฉ์ | ์ถ์ฒ๋ชจ๋ธ |
๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ๋ฌธ์ฅ ์๋ฒ ๋ฉ | all-MiniLM-L6-v2 |
๊ณ ์ฑ๋ฅ ๋ฌธ์ฅ ์๋ฒ ๋ฉ | all-mpnet-base-v2 |
๊ฒ์ ์ต์ ํ (Query/Document) | intfloat/e5-base or e5-large |
๋ฒ์ฉ์ฑ + ๊ฐํธํจ | thenlper/gte-base |
API ๊ธฐ๋ฐ ๊ณ ํ์ง ์๋ฒ ๋ฉ | OpenAI text-embedding-ada-002 |
ํ ์คํธ ์๋ฒ ๋ฉ์ ๋จ์ํ ๋ฌธ์ฅ ํํ์ ๋์ด, NLP ์์คํ ์ ๊ฑฐ์ ๋ชจ๋ ์์ญ์์ ํต์ฌ ๊ธฐ๋ฐ ๊ธฐ์ ๋ก ์ฌ์ฉ๋๊ณ ์๋ค. ์ข์ ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ์ ํํ๊ณ ์ ํ์ฉํ๋ฉด, ๊ฒ์ ํ์ง์ด ๋น์ฝ์ ์ผ๋ก ํฅ์๋๊ณ ์ถ์ฒ์ด๋ ์ ์ฌ๋ ๊ธฐ๋ฐ ๊ธฐ๋ฅ ๊ตฌํ์ด ์ฌ์์ง๋ค.
Hugging Face์ sentence-transformers, OpenAI API๋ฅผ ํ์ฉํ๋ฉด ์์ฝ๊ฒ SOTA ๋ชจ๋ธ๋ค์ ์ฌ์ฉํ ์ ์์ผ๋, ์คํ์ ์ผ๋ก ๋ค์ํ ๋ชจ๋ธ์ ์ ์ฉํด๋ณด๊ณ ๋ด ๋ฌธ์ ์ ๊ฐ์ฅ ์ ๋ง๋ ์๋ฒ ๋ฉ์ ์ฐพ์๋ณด๋ ๊ฒ์ด ์ข๋ค.