Baseline First 10 KO - teamswyg/laya-tools GitHub Wiki

์ฒซ ํ›„๋ณด ๋ณด์กด 10: ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋น„ํ•™์Šต ๋ณด์กฐ ๊ฒ€์ƒ‰

English ยท ์ „์ฒด ๊ฒฐ๊ณผ

๊ธฐ์กด ๊ฒ€์ƒ‰์˜ ์ฒซ ํ›„๋ณด๋ฅผ ๊ณ ์ •ํ•˜๊ณ  ์‹๋ณ„์ž ๋ถ„๋ฆฌ ๊ฒ€์ƒ‰์˜ ํ›„๋ณด๋ฅผ ์‚ฌ์ด์— ๋„ฃ๋Š”๋‹ค. 2,948๊ฐœ ๋ฌธ์„œ ์„ค๋ช… ์งˆ๋ฌธ์—์„œ ์ฒซ ํ›„๋ณด ์ •๋‹ต๋ฅ ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ƒ์œ„ 10๊ฐœ ๋ฐœ๊ฒฌ๋ฅ ๊ณผ ํ‰๊ท  ์ •๋‹ต ์ˆœ์œ„๋ฅผ ๊ฐœ์„ ํ–ˆ๋‹ค. ํ•™์Šต ๋ชจ๋ธ์˜ ์„ฑ๊ณผ๊ฐ€ ์•„๋‹Œ ๋น„ํ•™์Šต ๊ธฐ์ค€์„ ์ด๋ฉฐ, ๊ธฐ๋ณธ ์˜ต์…˜์€ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.

๋ฐ”๋กœ ์‹œํ—˜ํ•˜๊ธฐ

๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ๋‚˜ Python ์—†์ด ๋‹ค์Œ ์›๋ณธ ๊ณต๊ฐœ ์˜ˆ์ œ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

printf '%s\n' '{"snapshot_id":"demo","query":"read config","documents":[{"id":"a","text":"read"},{"id":"b","text":"config"},{"id":"c","text":"func ReadConfig() {}"}]}' \
  | go run ./cmd/riido-hints --identifier-hints

๊ธฐ์กด ์ˆœ์„œ๋Š” a,b,c์ด๊ณ  ์ƒˆ ์ˆœ์„œ๋Š” a,c,b๋‹ค. ์ฒซ ํ›„๋ณด a๋Š” ์œ ์ง€ํ•˜๋ฉด์„œ ReadConfig๋ฅผ read config๋กœ ๋‚˜๋ˆ  ์ฐพ์€ c๋ฅผ ๋‘ ๋ฒˆ์งธ์— ์ œ์•ˆํ•œ๋‹ค. ์ถœ๋ ฅ์€ ํ›„๋ณด IDยท์ˆœ์œ„ยท๊ธฐ์กด BM25 ์ ์ˆ˜์ด๋ฉฐ ์›๋ฌธ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค. ์ ์ˆ˜๋Š” ๊ธฐ์กด ๊ฒ€์ƒ‰ ์ ์ˆ˜์ด๋ฏ€๋กœ ์ƒˆ ์ˆœ์„œ์—์„œ ๋ฐ˜๋“œ์‹œ ๋‚ด๋ฆผ์ฐจ์ˆœ์ธ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. status: unverified, policy: identifier_bm25_baseline_first๋กœ ํ‘œ์‹œ๋œ๋‹ค.

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

๋ณดํ˜ธ ๋ฒ”์œ„

Go API๋Š” hintsearch.InterleaveBaselineFirst(baseline, hints)๋‹ค. ๋ถ€๋ถ„ ํžŒํŠธ๋„ ํ—ˆ์šฉํ•˜๊ณ , ๋ˆ„๋ฝยท์ค‘๋ณต ์—†์ด ๋ชจ๋“  ๊ธฐ์กด ํ›„๋ณด๋ฅผ ๋‚จ๊ธด๋‹ค. ๊ธฐ์กด r๋ฒˆ์งธ ํ›„๋ณด๋Š” ๋Šฆ์–ด๋„ 2rโˆ’1๋ฒˆ์งธ(์ „์ฒด ํ›„๋ณด ์ˆ˜ ์ด๋‚ด)์— ๋‚˜์˜จ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ์กด 3๋ฒˆ์งธ ํ›„๋ณด๋Š” ์ตœ๋Œ€ 5๋ฒˆ์งธ๋‹ค. ์ด๋Š” ์ •ํ™•ํ•˜๊ณ  ๋™์ผ ๋น„์šฉ์ธ ํ›„๋ณด ๊ฒ€์‚ฌ๋ฅผ ๊ฐ€์ •ํ•œ ๊ฐœ์ˆ˜ ์ œํ•œ์ด๋‹ค. ์‹ค์ œ ์‹œ๊ฐ„ยทํ† ํฐยท๋ณต์ˆ˜ ์ฆ๊ฑฐ ์ˆ˜์ง‘์ด๋‚˜ ๋ณด์กฐ ๊ฒ€์ƒ‰ ์ƒ์„ฑ ๋น„์šฉ์˜ ์ œํ•œ์€ ์•„๋‹ˆ๋‹ค. ์ฒซ ํ›„๋ณด๊ฐ€ ๊ฐ™์•„๋„ ๊ทธ ๋’ค์˜ ์ผ๋ถ€ ์ˆœ์œ„๋Š” ๋‚˜๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ ์ž๋ฃŒ ๊ฒฐ๊ณผ

์•ž์„  07/09์™€ ๊ฐ™์€ ๊ณ ์ •๋œ ์„ธ ์ €์žฅ์†Œยท3,009๊ฐœ ํ•จ์ˆ˜ยท2,948๊ฐœ ๊ณ ์œ  ์„ค๋ช…์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ œ์™ธ ์ •์ฑ…, ํ›„๋ณด ํ•ด์‹œ ์ˆœ์„œ์™€ ์•Œ๋ ค์ง„ ์ •๋‹ต์€ ๋ฐ”๊พธ์ง€ ์•Š์•˜๋‹ค. ์ฒซ ์›์ฒœ ์ ์ˆ˜ ๊ณ„์‚ฐ ์ „์— ๊ตฌํ˜„์„ commitํ–ˆ๊ณ , ์žฌ์‹คํ–‰์˜ ์ „์ฒด JSON์ด ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๊ฐ™์•˜๋‹ค. ์ด๋ฏธ ๊ด€์ฐฐํ•œ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์ž๋ฃŒ์ด๋ฏ€๋กœ ์ƒˆ ๋…๋ฆฝ ์‚ฌ์šฉ์ž ์งˆ๋ฌธ ์‹œํ—˜์€ ์•„๋‹ˆ๋‹ค.

๋ฐฉ์‹ ์ฒซ ํ›„๋ณด ์ •๋‹ต๋ฅ  ์ƒ์œ„ 10๊ฐœ ๋ฐœ๊ฒฌ๋ฅ  MRR ํ‰๊ท  ์ฒซ ์ •๋‹ต ์ˆœ์œ„
๊ธฐ์กด BM25 41.79% 74.83% 0.5336 48.99
๋ณด์กฐ ๊ฒ€์ƒ‰ ํ›„๋ณด๋ถ€ํ„ฐ ๊ต์ฐจ 39.21% 81.51% 0.5479 26.71
๊ธฐ์กด ํ›„๋ณด๋ถ€ํ„ฐ ๊ต์ฐจ 41.79% 81.38% 0.5601 26.70

๊ธฐ์กด ํ›„๋ณด๋ถ€ํ„ฐ ๊ต์ฐจํ•œ ๊ฒฐ๊ณผ 733๊ฐœ ์งˆ๋ฌธ์—์„œ ์ˆœ์œ„๊ฐ€ ์ข‹์•„์ง€๊ณ , 674๊ฐœ์—์„œ ๋‚˜๋น ์ง€๊ณ , 1,541๊ฐœ๋Š” ๊ฐ™์•˜๋‹ค. ํ‰๊ท  ๊ฐœ์„ ์ด ๋ชจ๋“  ์งˆ๋ฌธ์˜ ๊ฐœ์„ ์ด๋ผ๋Š” ๋œป์€ ์•„๋‹ˆ๋‹ค. ์ €์žฅ์†Œ๋ณ„ ์ˆ˜์น˜๋„ JSON์— ์žˆ๋‹ค. ์ด ๋น„ํ•™์Šต ๊ธฐ์ค€์„ ์„ ์ดํ›„ ํ•™์Šต ๋ชจ๋ธ์ด ์ถ”๊ฐ€ ๋น„์šฉ๊นŒ์ง€ ๊ณ ๋ คํ•ด ๋„˜์–ด์•ผ ํ•œ๋‹ค. ๊ธฐ์กด 09์˜ ์‹คํŒจ ๋ชจ๋ธ์„ ํ•ฉ๊ฒฉ์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ HF ๊ฐ€์ค‘์น˜๋ฅผ ๊ต์ฒดํ•˜์ง€ ์•Š์•˜๋‹ค.

๊ฒ€์ฆ๊ณผ ๋น„์šฉ

1~7๊ฐœ ํ›„๋ณด์˜ ๋ชจ๋“  ํžŒํŠธ ์ˆœ์—ดยท๋ถ€๋ถ„ ๊ธธ์ด์— ๋Œ€ํ•ด ์ฒซ ํ›„๋ณดยท์ „์ฒด ํ›„๋ณด ๋ณด์กด๊ณผ 2rโˆ’1 ์ œํ•œ์„ ๊ฒ€์‚ฌํ–ˆ๋‹ค. ๊ธฐ์กด ๋ณด์กฐ ํ›„๋ณด ์šฐ์„  ๋™์ž‘๋„ ๊ณ„์† ๊ฒ€์‚ฌํ•œ๋‹ค. ๊ธฐ์กด 09 ํ•™์Šต์„ ์ƒˆ ๊ณตํ†ต ๊ตฌํ˜„์œผ๋กœ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ์ „์ฒด ๊ฒฐ๊ณผ JSON์ด ๊ฐ™์Œ์„ ํ™•์ธํ–ˆ๋‹ค. CLI๋Š” ์‹ค์ œ ์‹คํ–‰ ์˜ˆ์ œ์™€ ์ถฉ๋Œยท๋ฒ”์œ„ ์ดˆ๊ณผ ๋ณต๊ท€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

Apple M4 Pro/Go1.27.1 CPU์—์„œ ๋น„๊ต ๋„๊ตฌ ์ „์ฒด๋Š” wall 3.02์ดˆ/user CPU 2.67์ดˆ/์ตœ๋Œ€ RSS 94,683,136๋ฐ”์ดํŠธ์˜€๋‹ค. ๋‘ ์ •์ฑ… ๋น„๊ต๋ฅผ ์œ„ํ•ด ์›์ฒœ ๊ฒ€์ฆ๊ณผ ๋‘ ๋ฒˆ์˜ ์ „์ฒด ๊ฒ€์ƒ‰ ์ค€๋น„๋ฅผ ํฌํ•จํ•œ๋‹ค. ๋‹จ์ผ CLI ๊ฒ€์ƒ‰์ด๋‚˜ ์„œ๋น„์Šค ์ง€์—ฐ ์ˆ˜์น˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ์˜ต์…˜์€ ์ถ”๊ฐ€ ์ƒ‰์ธ๊ณผ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ž‘์—… ์‹œ๊ฐ„์„ ํ•ญ์ƒ ์ค„์ธ๋‹ค๊ณ  ์ฃผ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•™์ŠตยทGPUยทLLM ํ˜ธ์ถœ์€ ์ด ๋น„๊ต์— ์—†๋‹ค.

# 07์—์„œ ์ค€๋น„ํ•œ ๊ณ ์ • ์›์ฒœ์„ ์‚ฌ์šฉํ•œ๋‹ค.
go run ./cmd/riido-interleaveprobe
go test -race ./pkg/hintsearch ./cmd/riido-hints ./internal/retrievalbench

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