๐ค 2โ2๋จ๊ณ : ์๋ฒ ๋ฉ ๋ชจ๋ธ ์ถ๋ก ์ฑ๋ฅ ์ต์ ํ - 100-hours-a-week/7-team-ddb-wiki GitHub Wiki
์ฅ์ ์ถ์ฒ ์์คํ
์์ ์ ์ฌํ ์ฅ์ ํค์๋๋ฅผ ์ถ์ฒํ๊ธฐ ์ํด,
์ฌ์ฉ์ ์
๋ ฅ์์ ์ถ์ถ๋ ํค์๋๋ฅผ ๋ฒกํฐํํ์ฌ DB ๋ด ํค์๋ ๋ฒกํฐ์ ์๋ฏธ ๊ธฐ๋ฐ ์ ์ฌ๋๋ฅผ ๋น๊ตํ๋ ๊ตฌ์กฐ๋ฅผ ์ฑํํจ.
์ด์ ๋ฐ๋ผ ์๋ฒ ๋ฉ ๋ฒกํฐ ํ์ง, ๋ฌธ๋งฅ ์ ์ฌ๋, ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ๊ธฐ์ค์ผ๋ก 4์ข
์ ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ๋น๊ต ํ๊ฐํจ.
ํ
์คํธ๋ Colab CPU ํ๊ฒฝ์์ ์ํ๋์์ผ๋ฉฐ,
๋ชจ๋ ๋ชจ๋ธ์ ํค์๋ 10๊ฐ ๋ด์ธ์ ์งง์ ์
๋ ฅ์ ๋ํด encode() ์ํ ์ ์ค์๊ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ์ธํจ.
- ์ค์ ์๋น์ค๋ ์งง์ ํค์๋ ๊ธฐ๋ฐ์ ์ค์๊ฐ ๋ฒกํฐ ๊ฒ์์ด ์ค์ฌ์ด๋ฏ๋ก,
๊ฒฝ๋ ๊ตฌ์กฐ์ ๋น ๋ฅธ ์ถ๋ก ์ฑ๋ฅ์ ๋ณด์ฅํ๋MiniLM
๊ณ์ด์ ์ฐ์ ์ ์ ํจ - ํ๊ตญ์ด ํํ๋ ฅ ๊ฐํ๋ฅผ ์ํ ๋น๊ต๊ตฐ์ผ๋ก, ๊ตญ๋ด์์ ์ฑ๋ฅ์ด ์
์ฆ๋ ํ๊ตญ์ด ํนํ ๋ชจ๋ธ์ธ
KR-SBERT
๋ฅผ ํฌํจํจ - ๋ค๊ตญ์ด ๋์๋ ฅ ๋๋ ๊ฒ์ ์๋ต ์ต์ ํ์ ์ด์ ์ ๋
distiluse-multilingual
,multi-qa-MiniLM
๋ ํ๋ณด๊ตฐ์ ํฌํจํจ
๋ชจ๋ธ๋ช | ๊ธฐ๋ฐ ์ํคํ ์ฒ | ์ธ์ด ์ง์ | ํ์ต ๋ชฉ์ | ํ๋ผ๋ฏธํฐ ์ (๋๋ต) | ํน์ด ์ฌํญ |
---|---|---|---|---|---|
paraphrase-MiniLM-L6-v2 | MiniLM (Transformer) | ์์ด | Paraphrase, STS | ~22M | ๊ฒฝ๋ ๊ตฌ์กฐ, ๋น ๋ฅธ ์๋ต |
multi-qa-MiniLM-L6-cos-v1 | MiniLM | ์์ด | QA ๊ฒ์ ์ต์ ํ | ~22M | QA ํนํ, ์ผ๋ฐ ์ ์ฌ๋ ์ฝํจ |
KR-SBERT-V40K-klueNLI-augSTS | KoBERT + SBERT | ํ๊ตญ์ด | NLI, STS | ~110M | ํ๊ตญ์ด ๋ฌธ๋งฅ ํํ์ ๊ฐํจ |
distiluse-base-multilingual-cased-v1 | DistilBERT + USE | ๋ค๊ตญ์ด | STS | ~66M | ์ธ์ด ๋ฒ์ฉ์ฑ, ์ฑ๋ฅ์ ํ๊ท ์ |
๋ชจ๋ธ๋ช | ํ๊ท Cosine ์ ์ฌ๋ | ํ๊ท L2 ์ ์ฌ๋ | ์ ์ฑ ํ๊ฐ | CPU ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ (MB) |
---|---|---|---|---|
paraphrase-MiniLM-L6-v2 | 0.9759 | 0.3843 | 36.02 | |
multi-qa-MiniLM-L6-cos-v1 | 0.8879 | 0.8297 | 37.20 | |
KR-SBERT-V40K-klueNLI-augSTS | 0.7796 | 0.1043 | โ ํ๊ตญ์ด ๋ฌธ๋งฅ ์ดํด๋ ์ฐ์ | 332.20 |
distiluse-base-multilingual-cased-v1 | 0.7871 | 0.7567 | โ ํํ๋ ฅ ๋ถ์์ | 165.45 |
์ ๋ ฅ ํค์๋ | MiniLM-L6-v2 | KR-SBERT | multi-qa-MiniLM | distiluse-multilingual |
---|---|---|---|---|
24์๊ฐ ์นดํ | 24์๊ฐ ์นดํ (โ 1.00) | 24์๊ฐ ์นดํ (โ 1.00) | 24์๊ฐ ์นดํ (โ 1.00) | 24์๊ฐ ์นดํ (โ 1.00) |
๊ฐ์ฑ ์ข์ ์นดํ | ๊ฐ์ฑ ์นดํ (โ 0.99) | ๊ฐ์ฑ ์นดํ (โ 0.83) | ๊ฐ์ฑ ์นดํ (โ 0.98) | ๊ฒฝ์น ์ข์ ์นดํ ( |
๊ฐ์์ง ๋๋ฐ ์นดํ | ์กฐ์ฉํ ๋๋ค ์นดํ ( |
๋ฐ๋ ค๋๋ฌผ๋๋ฐ (โ 0.59) | ๊ณต๊ฐ ๋์ ์นดํ ( |
๋ก์ปฌ ์ปคํผ ๋ง์ง (โ 0.69) |
๊ฒฝ์น ์ข์ ์นดํ | ๊ฒฝ์น ์ข์ ์นดํ (โ 1.00) | ๊ฒฝ์น ์ข์ ์นดํ (โ 1.00) | ๊ฒฝ์น ์ข์ ์นดํ (โ 1.00) | ๊ฒฝ์น ์ข์ ์นดํ (โ 1.00) |
์ด๋ชจํฐ์ฝ | ์๋ฏธ |
---|---|
โ | ์๋ฏธ๊ฐ ๊ฑฐ์ ๋์ผํ๊ฑฐ๋ ๋งค์ฐ ์ ์ฌ (์ถ์ฒ์ ์ฌ์ฉ ๊ฐ๋ฅ) |
์ผ๋ถ ์ ์ฌํ๋ ๋ฌธ๋งฅ ์คํด ๊ฐ๋ฅ์ฑ ์์ (์ฃผ์ ํ์) | |
โ | ์๋ฏธ ์๊ณก, ์ถ์ฒ ๋งฅ๋ฝ์์ ๋ถ์ ์ ํจ (์ฌ์ฉ ๋ถ๊ฐ) |
- ํ
์คํธ ๊ฒฐ๊ณผ, KR-SBERT๋ ์ ์ฑ ํ๊ฐ์์ ๊ฐ์ฅ ๋ฐ์ด๋ ๋ฌธ๋งฅ ํด์๋ ฅ์ ๋ณด์์ผ๋ฉฐ,
ํนํ ํค์๋ ์ผ๋ฐํ ๋ฐ ์๋ฏธ ์นํ ์ธก๋ฉด์์ ์ค์ ์ถ์ฒ ํ์ง์ ๊ฐ์ฅ ์ ํฉํ ์๋ต์ ์์ฑํจ -
paraphrase-MiniLM-L6-v2
์multi-qa-MiniLM
์ ์ ์ฑ ํ๊ฐ๊ฐ ๋งค์ฐ ์ ์ฌํ ์์ค์ด์์ผ๋,
paraphrase-MiniLM
์ ๋ฌธ์ฅ ์๋ฏธ ์ ์ฌ๋(STS)๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ต๋ ๋ชจ๋ธ๋ก,
์ฅ์ ์ถ์ฒ์์ ์๊ตฌ๋๋ "ํค์๋ ๊ฐ ์๋ฏธ ๊ธฐ๋ฐ ์ ์ฌ๋ ๊ณ์ฐ" ๋ชฉ์ ์ ๋ ์ ํฉํ๋ค๊ณ ํ๋จ๋จ - ๋ค๋ง ๋ณธ ์๋น์ค์์๋ ์ค์๊ฐ์ฑ๋ณด๋ค ์ถ์ฒ ํ์ง์ ์ ๋ฐ๋์ ๋ฌธ๋งฅ ์ ํฉ์ฑ์ด ๋์ฑ ์ค์ํ๋ค๊ณ ํ๋จํ์๊ณ ,
AI ์๋ฒ์์ ๋ค๋ฅธ task๋ GPU๋ก ๋ถ๋ฆฌ ์ํํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ค์ ํฌ๋๋ผ๋ ์์ฉ ๊ฐ๋ฅํ๋ค๊ณ ํ๋จํจ - ๋ฐ๋ผ์ ์ต์ข
์ ์ผ๋ก๋
KR-SBERT-V40K-klueNLI-augSTS
๋ฅผ ์ฃผ๋ ฅ ์๋ฒ ๋ฉ ๋ชจ๋ธ๋ก ์ ์ ํ์์ผ๋ฉฐ,
ํฅํ ์ฑ๋ฅ-์์ ๊ท ํ์ด ํ์ํ ๊ฒฝ์ฐMiniLM-L6-v2
๋ฅผ ๋ณด์กฐ ๋ชจ๋ธ ๋๋ ๊ต์ฒด ๋ชจ๋ธ๋ก ๊ณ ๋ คํ ์ ์๋๋ก ์ค๊ณํจ
์ต์ข
๋์
๋ชจ๋ธ์ธ KR-SBERT-V40K-klueNLI-augSTS๋
์ ์ฑ ํ๊ฐ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ๋ฐ์ด๋ ๋ฌธ๋งฅ ํด์๋ ฅ์ ๋ณด์์ผ๋ฉฐ,
์ค์ ํ
์คํธ์์๋ ๋์ ์ถ์ฒ ํ์ง์ ํ์ธํจ.
๊ทธ๋ฌ๋ ์๋น์ค ๊ด์ ์์ ๋ค์๊ณผ ๊ฐ์ ๋ณ๋ชฉ ์์๊ฐ ๋ฐ๊ฒฌ๋์๊ณ , ์ด์ ๋ํ ๊ฐ์ ๋ฐฉํฅ์ ์ ๋ฆฌํจ.
KR-SBERT
๋ KoBERT ๊ธฐ๋ฐ ๋ํ ๊ตฌ์กฐ๋ก, ๋ชจ๋ธ ๋ก๋ฉ ์ ์ฝ 330MB ์ด์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํจ.
Jetson Orin Nano์ ๊ฐ์ ๊ฒฝ๋ AI ์๋ฒ์์ ๋จ์ผ ๋ชจ๋ธ๋ง ์ด์ฉ ๊ฐ๋ฅํ ํ๊ฒฝ์์๋
๋ค๋ฅธ AI ๊ธฐ๋ฅ(์: ํค์๋ ์ถ์ถ, ์์ฝ ๋ฑ)๊ณผ ๋ณํ ์ด์ฉ์ด ์ด๋ ค์ธ ์ ์์.
๐ก ๊ฐ์ ๋ฐฉํฅ
- GPU ๊ธฐ๋ฐ ๋ณ๋ ฌ ๊ตฌ์กฐ๋ฅผ ํตํด ์ฃผ์ ์ถ๋ก ๊ธฐ๋ฅ์ ๋ถ์ฐ
- ์ถ๋ก ์๋ฒ ๋ฉ๋ชจ๋ฆฌ ์ํฉ์ ๋ฐ๋ผ, ๋ชจ๋ธ ์คํ ์ฐ์ ์์ ์ค์ ๋๋ ํ๋ก์ธ์ค ์ํ ๊ด๋ฆฌ
- ์ฑ๋ฅ ์ต์ ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ MiniLM ๊ธฐ๋ฐ ๊ฒฝ๋ ๋ชจ๋ธ๊ณผ์ ๊ต๋ ์ด์ฉ ๊ณ ๋ ค (์: ์ ์ฌ์ fallback)
KR-SBERT
๋ ๋ฌธ๋งฅ์ ์ผ๋ก ์ ์ฌํ ํค์๋๋ฅผ ์ ์ถ์ถํ์ง๋ง,
์๋ฒ ๋ฉ ๋ฒกํฐ ๊ฐ cosine ์ ์ฌ๋ ์ ์๋ ์ ๋ฐ์ ์ผ๋ก ๋ฎ์ ๋ฒ์(0.7~0.9)์ ๋ฐ์ง๋จ.
์ด๋ก ์ธํด ์ถ์ฒ ํ๋ณด ์ ๋ ฌ ์ ์ ์ ์ฐจ์ด๊ฐ ๋๋ ทํ์ง ์๊ฑฐ๋, ์๋ฏธ๋ณด๋ค ์ซ์์ ์์กดํ ์๊ณก์ด ๋ฐ์ํ ์ ์์.
๐ก ๊ฐ์ ๋ฐฉํฅ
- cosine ์ ์ฌ๋ ๋์ ์ค์ ์ ๋ ํ๊ฐ์์ ํ๊ท ์ด ๋งค์ฐ ๋ฎ์๋ L2 ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์ ์ฌ๋ ๊ณ์ฐ ๋ฐฉ์์ผ๋ก ์ ํ
- ์๋ฒ ๋ฉ ๋ชจ๋ธ๋ณ ๋ฒกํฐ ๋ถํฌ ํน์ฑ์ ๊ณ ๋ คํ์ฌ, ์ ์ฌ๋ ์งํ๋ฅผ ์ ์ฐํ๊ฒ ์ ํํ๋ ๊ตฌ์กฐ ์ค๊ณ
์ต์ข
์ ์ ๋ ์๋ฒ ๋ฉ ๋ชจ๋ธ KR-SBERT-V40K-klueNLI-augSTS
๋
๋ฌธ๋งฅ ํด์๋ ฅ๊ณผ ์๋ฏธ ํ์ฅ ์ธก๋ฉด์์ ์ฐ์ํ ์ฑ๋ฅ์ ๋ณด์์ผ๋,
์ค์๊ฐ ์ฒ๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ๊ฒ์ ํจ์จ์ฑ ๋ฑ์์์ ์ด์ ์ต์ ํ๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ณ ์ ๋ต์ ์ ์ฉํจ.
- ๋ฒกํฐ ์์ฑ ํจ์จํ: ์ค์๊ฐ ํค์๋ ๋งค์นญ์ 0.1์ด ์ด๋ด ์ฒ๋ฆฌ
- ๊ฒ์ ์ ๋ฐ๋ ์ ์ง: ์๋ฏธ ์ ์ฌ์ฑ ๊ธฐ๋ฐ ์ถ์ฒ ํ์ง ๋ณด์กด
- ๋ฆฌ์์ค ์ ์ฝ: ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ต์ํ + ์ค๋ณต ๋ฒกํฐ ์์ฑ ๋ฐฉ์ง
๐น 1๋จ๊ณ: ์ฅ์ ํค์๋ ๋ฒกํฐ ์ฌ์ ๊ตฌ์ถ ๋ฐ ์ธ๋ฑ์ค ์ต์ ํ
- ์ฅ์ ํค์๋ ๋ชฉ๋ก์ ์ฌ์ ์๋ฒ ๋ฉํ์ฌ ์๋ฒ ๊ธฐ๋ ์ ๋ฒกํฐ DB์ ์ ์ฌ
- ๋ฒกํฐ ์ ์ฅ ๊ตฌ์กฐ๋
FAISS
๊ธฐ๋ฐFlatL2
์ธ๋ฑ์ค๋ฅผ ์ฐ์ ์ฌ์ฉ - ์ดํ ๋์ฉ๋ ์ ํ ์ Product Quantization (PQ) ๋ฐฉ์ ์ ์ฉ ๊ณ ๋ ค
โ ๋ฒกํฐ๋ฅผ ์์ถ ์ ์ฅํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ต๋ 10~30๋ฐฐ ์ ๊ฐ ๊ฐ๋ฅ
โ ๊ทผ์ฌ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ ํฅ์, ์ ํํ ์ ๋ ฌ์ ์ฌ๊ฒ์์ผ๋ก ๋ณด์
๐น 2๋จ๊ณ: ์ ์ฌ๋ ๊ณ์ฐ ๊ธฐ์ค ๊ฐ์ ๋ฐ soft-filter ๋์
-
KR-SBERT
๋ cosine ์ ์ฌ๋๊ฐ ๋ฎ๊ฒ ๋ถํฌ๋๋ฉฐ ์์ ์ ๋ ฌ์ ํ๊ณ ๋ฐ์
โ L2 ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ์ ์ฌ๋ ์ ์๋ก ์ ํํ์ฌ ์์ ์ฑ ํ๋ณด - ์ ์ฌ๋ ๊ธฐ์ค์ soft-filter ๋ฐฉ์์ผ๋ก ๋ณด์:
โ ์ผ์ ๊ฑฐ๋ฆฌ ์ดํ(์: L2 ์ ์ฌ๋ โฅ 0.7)๋ ์ถ์ฒ, ๊ทธ ์ธ๋ fallback ํ๋ณด๋ก ํ์ฉ
๐น 3๋จ๊ณ: ์๋ฒ ๋ฉ ์ฒ๋ฆฌ ๊ตฌ์กฐ์ ํจ์จ์ ๋ฐฐ์น ๋ฐ ์บ์ ํ์ฉ
- ์ค์๊ฐ ์ฌ์ฉ์ ์ ๋ ฅ๋ง ์๋ฒ ๋ฉ ์ฒ๋ฆฌ, ์ฅ์ ํค์๋๋ ์๋ฒ ๊ธฐ๋ ์ ์บ์ฑ
- ์๋ฒ ๋ฉ ์บ์๋ ๋์ผ ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ๋ํด ์ค๋ณต encode ๋ฐฉ์ง๋ฅผ ์ํ ๊ตฌ์กฐ๋ก ํ์ฉ
- ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ํด float16 ์ ํ, ๋๋ ONNX ๊ธฐ๋ฐ ์ถ๋ก ๊ตฌ์กฐ ์ ํ ๊ฐ๋ฅ
- ๋ฉํฐ ์ธ์คํด์ค ํ๊ฒฝ์์์ ํ์ฅ์ ๋๋นํ์ฌ, ์๋ฒ ๋ฉ ์ถ๋ก ๋ก์ง์ ๋ง์ดํฌ๋ก์๋น์คํํ์ฌ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ฐ์ฑ ํ๋ณด
์๋ฒ ๋ฉ ๋ชจ๋ธ KR-SBERT-V40K-klueNLI-augSTS
๋
๊ธฐ๋ณธ์ ์ผ๋ก ์
๋ ฅ ์๋ฒ ๋ฉ ์๋๊ฐ ๋น ๋ฅธ ํธ์ด๋ฉฐ(0.09์ด ์ด๋ด),
์ต์ ํ์ ํต์ฌ์ ์ค๋ณต ๊ณ์ฐ ์ ๊ฑฐ, ๋ฉ๋ชจ๋ฆฌ ์ ๊ฐ, ์ ์ฌ๋ ๊ธฐ์ค ๊ฐ์ ์ ์์.
์๋๋ ์ต์ ํ ์ ๋ต ์ ์ฉ ํ ๊ธฐ๋๋๋ ์ฑ๋ฅ ๋ณํ ์งํ์.
ํญ๋ชฉ | ๊ธฐ์กด ์ฑ๋ฅ | ์ต์ ํ ์ ์ฉ ๊ธฐ๋ ์ฑ๋ฅ |
---|---|---|
์ฌ์ฉ์ ์ ๋ ฅ ์๋ฒ ๋ฉ ์๋ | ํ๊ท 0.02 ~ 0.09์ด | ๋์ผ ์์ค ์ ์ง (์๋ ๋ณ๋ชฉ ์์) |
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | 36MB ~ 332MB | ์ค๋ณต ๊ณ์ฐ ์ ๊ฑฐ ๋ฐ float16 ์ต์ ํ๋ก ์ ๊ฐ ๊ธฐ๋ |
์ฅ์ ํค์๋ ์๋ฒ ๋ฉ | ๋งค ์์ฒญ ์ ์ฌ๊ณ์ฐ | ์ฌ์ ๋ฒกํฐ ๊ตฌ์ถ + ๋ฉ๋ชจ๋ฆฌ ์์ ๋ก๋ฉ ๊ตฌ์กฐ |
์ ์ฌ๋ ๊ณ์ฐ ์ ํ๋ | Cosine ๊ธฐ๋ฐ์ผ๋ก ์๋ฏธ ์๊ณก ๊ฐ๋ฅ | L2 ๊ธฐ์ค ๋์ ์ผ๋ก ๋ฌธ๋งฅ ์ ๋ ฌ ์์ ์ฑ ํฅ์ |
์ถ์ฒ ํ์ง ์ผ๊ด์ฑ | ์ ์ ๋ฐ์ง โ ์์ ํ๋จ ์ด๋ ค์ | L2 ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ soft-filter๋ก ํ๋ณด ์ ๋ณ ๋ช ํํ |
๊ฒ์ ์๋ต ์๊ฐ | ํ๊ท 1.0~2.0์ด | < 0.5์ด (๋ฒกํฐ ์ ์ฅ + ์ค์๊ฐ ๋น๊ต ๊ตฌ์กฐ) |
โน๏ธ ์ฌ์ฉ์ ์ ๋ ฅ ์๋ฒ ๋ฉ ์๋๋ ๋ชจ๋ธ ์ข ๋ฅ์ ๋ฐ๋ผ ํ๊ท 0.02 ~ 0.09์ด๋ก ์ธก์ ๋์์ผ๋ฉฐ,
์ด๋ ์ค์๊ฐ ์ฒ๋ฆฌ์ ์ถฉ๋ถํ๋ค๊ณ ํ๋จ๋จ.
์ต์ ํ์ ์ด์ ์ ์๋ ๊ฐ์ ๋ณด๋ค ์ค๋ณต ๊ณ์ฐ ๋ฐฉ์ง ๋ฐ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ ํฅ์์ ๋๊ณ ์์ผ๋ฉฐ,
ํนํ ์ฅ์ ํค์๋๋ ์ฌ์ ๋ฒกํฐํํ์ฌ ๋ก๋ฉ ์ง์ฐ ์์ด ์๋ต ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋๋ก ๊ตฌ์กฐํํจ.