โ† Sandbox

๐Ÿ“š docrepo โ€” ๋…ธ์กฐ ์•„์นด์ด๋ธŒ ๋…๋ฆฝ ๋ฐฐํฌ

๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ์— ํฉ์–ด์ ธ ์žˆ๋Š” ๋…ธ์กฐ ๋ฌธ์„œ๋ฅผ ์ƒ‰์ธํ•ด ์ž์—ฐ์–ด๋กœ ๋ฌป๊ณ  ๊ทผ๊ฑฐ์™€ ํ•จ๊ป˜ ๋‹ตํ•˜๋Š” RAG ๊ฒ€์ƒ‰. ์„ฑ๋ช…ยท๋…ผํ‰ยท๊ณต๋ฌธ์€ ๋ฌธ์„œ ์นด๋“œ๋กœ, ํšŒ์˜๋Š” ํšŒ์˜์ฒด โ†’ ํšŒ์ฐจ โ†’ ์•ˆ๊ฑด โ†’ ์›๋ฌธ ์ˆœ์œผ๋กœ ์ขํ˜€ ๋ณธ๋‹ค. ์ž์—ฐ์–ด ์ฃผ๋ฌธ ์ผ๋ถ€๋Š” ์‚ฐ๋ฌธ ๋‹ต๋ณ€ ๋Œ€์‹  ํ‘œยท์นด๋“œ ๋ฆฌํฌํŠธ๋กœ ๋‚˜์˜จ๋‹ค.

์ ‘๊ทผ

์ฃผ์†Œ
http://192.168.0.10:5075/ (๋‚ด๋ถ€๋ง, ๋กœ๊ทธ์ธ ์—†์Œ)
ํ™”๋ฉด
/archive ์ž๋ฃŒ์‹ค ยท /chat ์ฑ—๋ด‡ ยท /search ๊ฒ€์ƒ‰ ยท /db ์ธ๋ฑ์Šค ๋ทฐ์–ด ยท /status ์ƒ‰์ธ ํ˜„ํ™ฉ ยท /usage ์ง€์ถœ
๊ทœ๋ชจ
๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํŒŒ์ผ 33,458๊ฑด(์ƒ‰์ธ ์™„๋ฃŒ 14,867) ยท ์ฒญํฌ 450,396 ยท ๋ฒกํ„ฐ ๋™์ˆ˜

์•„์นด์ด๋ธŒ โ€” ์™œ ์ขํ˜€ ๋ณด๊ฒŒ ๋งŒ๋“ค์—ˆ๋‚˜

RAG ํŒŒ์ดํ”„๋ผ์ธ

์ˆ˜์ง‘
Drive ๋ชฉ๋ก โ†’ SQLite ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(services/registry.py). 2026 ๋“œ๋ผ์ด๋ธŒ๋Š” 39,987๊ฑดยท44GB๋ผ ํด๋” ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋ฅผ ์บ์‹œ ์ƒ์„ฑ ๋‹จ๊ณ„์— ๊ฑด๋‹ค โ€” ์ธ๋ฑ์„œ์— ๊ฑธ๋ฉด ๋Šฆ๋‹ค(๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์บ์‹œ ์ „์ฒด๋ฅผ pending์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค)
์ถ”์ถœ
hwpยทhwpx๋Š” Rust CLI rhwp๋ฅผ subprocess๋กœ ํ˜ธ์ถœํ•ด ์ชฝ ๋‹จ์œ„ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ฝ‘๋Š”๋‹ค. ํ‘œ๋ฅผ ๋งˆํฌ๋‹ค์šด ํ‘œ๋กœ ๋ณด์กดํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ โ€” ์ด์ „ pyhwp ๊ฒฝ๋กœ๋Š” ํ‘œ ์…€์„ <ํ‘œ> ์ž๋ฆฌํ‘œ์‹œ์ž๋กœ๋งŒ ๋‚จ๊ฒผ๋‹ค
์ฒญํ‚น
๋ฌธ์„œ ์œ ํ˜•๋ณ„๋กœ ๋‹ค๋ฅด๋‹ค โ€” ๋‹จ์ฒดํ˜‘์•ฝ์€ ์กฐ ๋‹จ์œ„, ํšŒ์˜์ž๋ฃŒยทํšŒ์˜๊ฒฐ๊ณผ๋Š” ์ชฝ ๋‹จ์œ„. ๊ณ ์ • 500์ž ๋ถ„ํ• ์€ ์กฐํ•ญยท์•ˆ๊ฑด ๊ฒฝ๊ณ„๋ฅผ ๊ทธ๋Œ€๋กœ ์ž˜๋ž๋‹ค
๋งฅ๋ฝ ๋ถ€์—ฌ
Contextual Retrieval โ€” ์ฒญํฌ ๋‹จ๋…์œผ๋กœ ์•Œ ์ˆ˜ ์—†๋Š” ์†Œ์† ๋ฌธ์„œ ๋งฅ๋ฝ์„ ํ•œ ์ค„๋กœ ๋ถ™์ธ๋‹ค. ๋ณ‘์› ๋‹จ์ฒดํ˜‘์•ฝ์ด ๋ฌธ๊ตฌ๊นŒ์ง€ ๊ฑฐ์˜ ๊ฐ™์€ ํ…œํ”Œ๋ฆฟ์ด๋ผ ์ฒญํฌ๋งŒ์œผ๋กœ๋Š” ์–ด๋А ๋ณ‘์›์ธ์ง€ ๋ชป ๊ฐ€๋ฅธ๋‹ค. ๋‹จํ˜‘ยทํšŒ์˜์ž๋ฃŒยทํšŒ์˜๊ฒฐ๊ณผ์—๋งŒ ์ ์šฉ โ€” ๋Œ€๋‹ค์ˆ˜์ธ ๊ธฐํƒ€๋Š” ํšจ์šฉ์ด ๋‚ฎ๊ณ  ์ถœ๋ ฅ ํ† ํฐ๋งŒ ๋“ ๋‹ค
์ƒ‰์ธ
BM25๋Š” SQLite FTS5 + kiwipiepy ํ˜•ํƒœ์†Œ, ๋ฒกํ„ฐ๋Š” Chroma v2(chroma_db_v2/) ยท ์ž„๋ฒ ๋”ฉ gemini-embedding-001
๊ฒ€์ƒ‰
BM25ยท๋ฒกํ„ฐ ๊ฐ ํ›„๋ณด 100๊ฑด์„ RRF(k=60)๋กœ ๋ณ‘ํ•ฉ. ์ฑ„๋„ ๊ฐ€์ค‘์น˜๋Š” ํ‰๊ฐ€์…‹ ์Šค์œ•์œผ๋กœ ์ •ํ–ˆ๋‹ค โ€” BM25 0.5~0.7์ด ์ตœ์ (MRR 0.64)์ด๊ณ  1.0์—์„œ 0.43, 1.5์—์„œ 0.37๋กœ ๋ฌด๋„ˆ์ ธ ์ ˆ๋ฒฝ์—์„œ ๋จผ 0.5๋ฅผ ํƒํ–ˆ๋‹ค
๋ฆฌ๋žญํ‚น
ํฌ๋กœ์Šค์ธ์ฝ”๋”๋ฅผ ์ƒˆ๋กœ ๋“ค์ด์ง€ ์•Š๊ณ  ์ด๋ฏธ ์“ฐ๋Š” Gemini Flash๋ฅผ ์žฌ์‚ฌ์šฉํ•ด ํ›„๋ณด 40๊ฑด์„ ์žฌ์ •๋ ฌํ•œ๋‹ค. ํŒŒ์‹ฑยทAPI ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋„ ๊ฒ€์ƒ‰์ด ์ฃฝ์ง€ ์•Š๊ฒŒ ์›๋ž˜ RRF ์ˆœ์„œ๋กœ ํด๋ฐฑํ•œ๋‹ค. ์ฑ—๋ด‡์€ ๊ธฐ๋ณธ on, ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ API๋Š” opt-in
๋‹ต๋ณ€
์งˆ์˜๋ฅผ Pydantic ๊ตฌ์กฐ๋กœ ๋ถ„์„(QueryAnalysis)ํ•ด ใ€Œ์ดํ•ดํ•œ ์งˆ๋ฌธใ€ ์นด๋“œ๋กœ ๋˜๋ฌป๊ณ , ํ™•์ธ ํ›„ ๋ฉ€ํ‹ฐ์ฟผ๋ฆฌ ๊ฒ€์ƒ‰ โ†’ ๋‹ต๋ณ€. ๋‹ต๋ณ€ LLM์€ CHAT_PROVIDER๋กœ geminiยทclaude ์ค‘ ์„ ํƒ(๊ธฐ๋ณธ gemini)

๊ตฌ์กฐํ™” ๋ฆฌํฌํŠธ G1ยทG2ยทG3

์บ์‹œ๋ฅผ ๋ฏธ๋ฆฌ ๊ตฝ๋Š”๋‹ค

๋ฐฐํฌยท์šด์˜

์Šคํƒ
Python ยท Flask(Blueprint) ยท SQLite(๋ ˆ์ง€์ŠคํŠธ๋ฆฌยท์ฒญํฌยทFTS5) ยท ChromaDB ยท Gemini ยท rhwp
๋ฐฐํฌ
ํ˜ธ์ŠคํŠธ systemd docrepo.service โ€” ๋„์ปค๊ฐ€ ์•„๋‹ˆ๋‹ค(๋ฒกํ„ฐDBยท์ธ๋ฑ์Šค๊ฐ€ ํ˜ธ์ŠคํŠธ ๋””์Šคํฌ์— ์žˆ๋‹ค)
ํฌํŠธ
์œ ๋‹›์˜ Environment=PORT๋ณด๋‹ค EnvironmentFile(.env)์ด ๋’ค์— ์™€์„œ ๋ฎ์–ด์“ด๋‹ค. ํฌํŠธยท๊ฒฝ๋กœ์ ‘๋‘์‚ฌ๋ฅผ ๋ฐ”๊ฟ€ ๋• ๋‘ ๊ณณ์„ ๊ฐ™์ด ๋ณธ๋‹ค. ์˜ˆ์ „ /temp ์ ‘๋‘์‚ฌ์™€ 8080ยท8091 ํ”„๋ก์‹œ๋Š” ํ์ง€๋๋‹ค
CLI
main.py --build-registry / --reindex-v2 / --embed-v2 / --build-synonyms ๋“ฑ
์•ผ๊ฐ„์ž‘์—…
tmux ์„ธ์…˜ docrepo + ๊ฐ์‹œ์ž nightwatch.sh(์ž‘์—…๊ณผ ์Œ์œผ๋กœ ๋„์šด๋‹ค โ€” ์•ˆ ๊ทธ๋Ÿฌ๋ฉด ๊ธด ์ž‘์—…์ด ์„ธ์…˜๊ณผ ํ•จ๊ป˜ ์ฃฝ๋Š”๋‹ค). ์ ˆ์ฐจ๋Š” docs/TMUX_์•ผ๊ฐ„์ž‘์—…_์šด์˜๋ฒ•.md, ๊ฒฐ๊ณผ๋Š” git log์™€ docs/OVERNIGHT_RESULT_*.md
์•ผ๊ฐ„ ๋ถ„๊ธฐ
๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฐˆ๋ฆผ๊ธธ์€ ์•ˆ์ „ํ•œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ํฐ์œผ๋กœ ์•Œ๋ฆฐ ๋’ค ๊ฒฐ์ • ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธด๋‹ค. ๋˜๋Œ๋ฆด ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ˆ์ด ๋“œ๋Š” ๊ฒƒ(์‚ญ์ œยท์žฌ์ž„๋ฒ ๋”ฉยท์žฌ์‹œ์ž‘ยท์˜ˆ์‚ฐ์ดˆ๊ณผ)์€ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ  [ํŒ๋‹จํ•„์š”]๋กœ ๋ฉˆ์ถ˜๋‹ค
์†Œ์Šค
/opt/docker/apps/docrepo ยท ๋ฌธ์„œ docs/ 30์—ฌ ๊ฑด ยท ๋””๋ ‰ํ† ๋ฆฌ 21G

๊ฒฐ์ • ๋กœ๊ทธ์—์„œ โ€” ๋˜๋Œ๋ฆฌ๊ธฐ ํž˜๋“  ๊ฒƒ๋“ค

โ€ป sandbox ํ—ˆ๋ธŒ์™€ ๋ณ„๊ฐœ๋กœ ๋ฐฐํฌ๋˜๋Š” ๋…๋ฆฝ ์•ฑ์ž…๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” ๋ช…์„ธ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. OAuth ํฌ๋ฆฌ๋ด์…œ(client_secret_*.jsonยทdrive_token.jsonยท.env)์€ ์ฝ๊ฑฐ๋‚˜ ์ถœ๋ ฅยท์ปค๋ฐ‹ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์š”์•ฝ ๊ตฝ๊ธฐยท์žฌ์ž„๋ฒ ๋”ฉ ๋“ฑ ์œ ๋ฃŒ ๊ตฌ๊ฐ„์€ --yes ์—†์ด๋Š” ๊ฒฌ์ ๋งŒ ๋ƒ…๋‹ˆ๋‹ค.