Long Query 32 KO - teamswyg/laya-tools GitHub Wiki
๊ธด ์์ฒญ์ ๋ฒ๋ฆฌ์ง ์๋ ๊ฒ์ ์ ๋ ฅ โ ์คํ 32
๊ณ ์ ํ ์ค์ ์์ฒญ 2,400๊ฐ๋ฅผ ์๋ผ๋ด์ง ์๊ณ ๋ชจ๋ ๊ฒ์ ํจ์์ ํต๊ณผ์์ผฐ๋ค. ๊ธฐ์กด 8,192๋ฐ์ดํธ ํ๋๋ฅผ ๋๋ 53๊ฐ๋ ํฌํจํ๋ค. ๊ฒ์ ๋์์ ๋น์ฉ ํ์ธ์ฉ ํฉ์ฑ ๋ฌธ์์ด๋ฏ๋ก ์ค์ ์์ ์ ์ ๋ต ๊ฒ์๋ฅ ์ ์ธก์ ํ ๊ฒ์ ์๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
Go pkg/hintsearch์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ Index.RankLongInto(query, dst)๋ฅผ ์ถ๊ฐํ๋ค. UTF-8 ์๋ฌธ์ ์ต๋ 128KiB๊น์ง ๋ฐ์ ํ ๋ฒ ํ ํฐํํ๊ณ , ๊ธฐ์กด๊ณผ ๊ฐ์ ๊ณ ์ ๊ฒ์์ด BM25 ๋ฐ ๋์ ์์๋ฅผ ์ฌ์ฉํ๋ค. ์์ฝยท๋ถํ ยท์๋ฆผ์ ์๋ค. ์ํ ์ด๊ณผ๋ ์๋ชป๋ ์
๋ ฅ์ ๋ฒํผ๋ฅผ ๋ฐ๊พธ๊ธฐ ์ ์ ์ค๋ฅ๋ก ๋ฐํํ๋ค.
index, err := hintsearch.New(documents)
if err != nil { return err }
ranking, err := index.RankLongInto(completeRequest, hintsearch.Ranking{})
if err != nil { return err }
// ranking.Order๋ ์๋ ๋ฌธ์ ์์น๋ค. ๋ค์ ์์ฒญ์์ ranking ๋ฒํผ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
๊ธฐ์กด Rank/RankInto์ 8KiB ํ๋๋ ๊ทธ๋๋ก๋ค. ์ธ๋ฑ์ค๋ ๋ถ๋ณ์ด๊ณ ๊ฒฐ๊ณผ ๋ฒํผ๋ ํธ์ถ์ ์์ ๋ค. ๋์์ ํธ์ถํ ๋ ๋ฒํผ๋ฅผ ๊ณต์ ํ์ง ์๋๋ค. ๋ชจ๋ธยทํน์ง ์ถ์ถยทCLIยท์ธ์
์ ์
๋ ฅ ํ๋๋ฅผ ํ๋ํ๊ฑฐ๋ ๊ธด ์
๋ ฅ์ ํ์ต ๋ชจ๋ธ์ ์ฐ๊ฒฐํ ๋ณ๊ฒฝ์ ์๋๋ค. ํ์ ํ๊ฐ ๋ฐ Go ํธ์ถ์๊ฐ ์๋ฌธ ์ ์ฒด์ lexical ๊ธฐ์ค์ ์ ์ฌ์ฉํ ์ ์๊ฒ ํ ๊ฒ์ด๋ค.
์ค์ ์คํ ๊ฒฐ๊ณผ
์ฌ์ ๊ณํ์ ๊ณ ์ ํ ๋ค์ ๊ธฐ์กด projection์์ ๊ฐ์ ์ ํ ํด์๋ฅผ ๋ค์ ๊ณ์ฐํ๋ค. ๋ฌธ์๋ document 0000 source code ... ํ์์ ์์ฒด ํฉ์ฑ ์๋ฃ 4,096๊ฐ๋ค. ๋ฌธ์ ๋ฒํธ ์ธ์ ๋จ์ด๊ฐ ๋๋ถ๋ถ ๊ฐ์ ์ค์ ์ ์ฅ์๋ณด๋ค ๋จ์ํ๋ค. ์ ๋ต์ด๋ ํจ์น๋ฅผ ์ฝ์ง ์์๋ค.
| ํญ๋ชฉ | ๊ฒฐ๊ณผ |
|---|---|
| ์ ์ฒด ์์ฒญ / ์ฑ๊ณต / ์คํจ | 2,400 / 2,400 / 0 |
| 8KiB ์ด๊ณผ ์์ฒญ | 53 |
| ์๋ฌธ ํฉ๊ณ / ์ต๋ ๊ธธ์ด | 4,363,135 / 71,136๋ฐ์ดํธ |
| ์๋ฆฐ ์์ฒญ | 0 |
| ์งง์ ์ ๋ ฅ ๊ธฐ์กด ๊ฒฐ๊ณผ ๋น๊ต / ๋ถ์ผ์น | 2,347 / 0 |
์ ์ ๋ฐฐ์ด๊ณผ ์ ์ฒด ๋ฌธ์ ์์๋ฅผ ์ ํํ ๋น๊ตํ๋ค. ์ง๊ณ๋ ์ฌ์คํ์์ ๋ฐ์ดํธ ์ผ์นํ๋ค. ๋ง์ง๋ง ๊ฒ์์ด๊ฐ 8KiB ๋ค์ ์๋ ์ฌ๋ก์ ์ ์๋ฅผ ๋ ๋ฆฝ์ ์ธ BM25 ๊ณ์ฐ์ผ๋ก ํ์ธํ๊ณ , Unicode ๊ฒฝ๊ณยท์ํยท์ค๋ฅ ์ ๋ฒํผ ๋ณด์กดยท๋์ ํธ์ถ๋ ํ ์คํธํ๋ค. ์ ์ฒด Go race/vet, ํ์ ๋ฐ redacted ๋ณด์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ค.
๋น์ฉ๊ณผ ํ๊ณ
M4 Pro CPU์์ ๋ง์ง๋ง ์คํ์ ๊ฒ์ ๋ฃจํ 2,400ํ๋ 109,067,791ns(์ฝ 0.109์ด), ๋์ Go ํ ๋น 43,429,152๋ฐ์ดํธ, ํ ๋น 16,741ํ์๋ค. ํธ์ถ์ ๊ฒฐ๊ณผ ๋ฒํผ๋ ์์ฒด fixture๋ก ๋จผ์ ์ค๋นํ๋ค. ์ด ์ธก์ ์๋ ๊ฒ์ ๋ฃจํ๋ง ํฌํจ๋๋ฉฐ ์์ฒ ์ฝ๊ธฐยท์ ํยท์ธ๋ฑ์ค ์์ฑยท์งง์ ์ ๋ ฅ ๋น๊ต๋ ์ ์ธํ๋ค. ๋์ ํ ๋น๋์ ์ต๋ ์์ฃผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋๋ค.
์ ์ฒด ํ๋ก์ธ์ค๋ wall 0.92์ด/user 0.56์ด/sys 0.02์ด, ์ต๋ RSS 35,749,888๋ฐ์ดํธ(์ฝ 34.1MiB)์๋ค. ์๊ฐ๊ณผ ํ ๋น๊ฐ์ ์คํ๋ณ๋ก ๋ฌ๋ผ์ง ์ ์์ด ๊ฒฐ์ ์ ์ธ ๊ฒฐ๊ณผ JSON๊ณผ ๋ณ๋๋ก ๊ธฐ๋กํ๋ค. ํฉ์ฑ ๋ฌธ์ ๋น์ฉ์ ์ค์ ์ ์ฅ์ ๊ฒ์ยท๋ชจ๋ธยทGPUยทLLM ๋น์ฉ์ผ๋ก ํ๋ํ์ง ์๋๋ค.
์ด์ ๊ธด ์์ฒญ ๋๋ฌธ์ 53๊ฐ ์์ ์ ์ ์ธํ ํ์๊ฐ ์๋ค. ๋ค์์ ์์ ์ ํ์ผ ๋ชฉ๋ก์ ์ค๋นํด ์ค์ ํ์ผ ํ๋ณด์์ ๊ฒ์๊ณผ ํํธ์ ํจ๊ณผ๋ฅผ ์ธก์ ํ๋ ๊ฒ์ด๋ค. ์ด ๊ฒฐ๊ณผ๋ ๋ผ์ฐํ ยท๋์ด๋ยท์์ ๋ถํ ํ์ง์ ์ ์ฆํ์ง ์๋๋ค. ์ ํ์ตยทHF ๋ฐฐํฌยท๊ธฐ๋ณธ ํ์ฑํ๋ ์์ผ๋ฉฐ ์ต์ข ์๋น ํ๊ฐ์ ๋ ์ฌ์ฉํ์ง ์์๋ค.
ํ์: ์คํ 33์์ ์ ์ฒด 2,400๊ฐ ์ค์ ํ์ผ ๋ชฉ๋ก๊ณผ ๋ถ๋ฆฌ๋ ํ์ผ ์์น ์ ๋ต์ ํ๋ณดํ๋ค. ์ค์ ๊ฒ์ ์์ ๋น๊ต๋ ํ์ ํ๊ฐ์์ ์งํํ๋ค.