๊ฑด์ค ํ์ฅ ์ฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ RAG (Retrieval-Augmented Generation) ๋ฐ LLM(Ollama) ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ณ ์๋ฐฉ/์กฐ์น ๊ณํ์ ์์ฑํ๋ ํ๋ก์ ํธ์ ๋๋ค. ๊ฐ ๋จ๊ณ๋ Jupyter Notebook์ผ๋ก ๊ตฌํ๋์์ผ๋ฉฐ, ์ต์ข ๊ฒฐ๊ณผ๋ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ฅผ ํตํด ํ๊ฐ๋ฉ๋๋ค.
๋ชฉ์ฐจ
- ํ๋ก์ ํธ ๊ฐ์
- ๋ฐ์ดํฐ ๊ตฌ์ฑ
- ๋ชจ๋ธ ์ ํ
- ์ต์ข ํ์ดํ๋ผ์ธ (Notebooks)
- ์ฃผ์ ์คํ ๋ฐ ๊ฒฐ๊ณผ
- ํต์ฌ ๊ตํ ๋ฐ ๊ฐ์ ๋ฐฉํฅ
- ํ์ผ ๊ตฌ์กฐ
- ์ฌ์ฉ๋ ์ฃผ์ ๊ธฐ์
๋ณธ ํ๋ก์ ํธ๋ "๊ฑด์ค ๊ณต์ฌ ์ฌ๊ณ ์ ๋ณด ๊ธฐ๋ฐ RAG-LLM ๊ฒฝ์ง๋ํ"์ ์ผํ์ผ๋ก ์งํ๋์์ต๋๋ค. ๋ชฉํ๋ ์ฃผ์ด์ง ๊ฑด์ค ์ฌ๊ณ ์ ๋ณด(ํ ์คํธ)๋ฅผ ์ ๋ ฅ๋ฐ์, ๊ด๋ จ๋ ๊ณผ๊ฑฐ ์ฌ๋ก ๋ฐ ์ ๋ณด๋ฅผ ๊ฒ์(Retrieval)ํ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก LLM์ด ์ต์ ์ ์ฌ๊ณ ๋ฐฉ์ง ๋๋ ์กฐ์น ๊ณํ(์ ๋ต ๋ฌธ์ฅ)์ ์์ฑ(Generation)ํ๋ RAG ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค. ์ต์ข ํ๊ฐ๋ ์์ฑ๋ ๊ณํ๊ณผ ์ค์ ์ ๋ต ๊ณํ ๊ฐ์ ์ ์ฌ๋๋ฅผ ์ ์ฌ๋ ์ ์ (์ฝ์ฌ์ธ ์ ์ฌ๋ * 0.7 + ์์นด๋ ์ ์ฌ๋ * 0.3) ๋ก ์ธก์ ํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค.
- ์ฝ์ฌ์ธ ์ ์ฌ๋ (Cosine Similarity): ๋ ํ ์คํธ๋ฅผ ๋ฒกํฐ ๊ณต๊ฐ์ ํํํ์ ๋, ๋ ๋ฒกํฐ ๊ฐ์ ๊ฐ๋์ ์ฝ์ฌ์ธ ๊ฐ์ ์ธก์ ํฉ๋๋ค. ๋ฐฉํฅ์ฑ์ ์ด์ ์ ๋ง์ถฐ ๋ฌธ๋งฅ์ , ์๋ฏธ์ ์ ์ฌ์ฑ์ ํ์ ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. (์: ์๋ฒ ๋ฉ ๋ฒกํฐ ๊ฐ ์ ์ฌ๋)
- ์์นด๋ ์ ์ฌ๋ (Jaccard Similarity): ๋ ํ ์คํธ์ ์ฌ์ฉ๋ ๋จ์ด(๋๋ ํ ํฐ) ์งํฉ ๊ฐ์ ์ค๋ณต ์ ๋๋ฅผ ์ธก์ ํฉ๋๋ค. ๋ ์งํฉ์ ๊ต์งํฉ ํฌ๊ธฐ๋ฅผ ํฉ์งํฉ ํฌ๊ธฐ๋ก ๋๋ ๊ฐ์ผ๋ก, ๊ณต์ ํ๋ ๋จ์ด์ ๋น์จ์ ํตํด ์ ์ฌ์ฑ์ ํ๊ฐํฉ๋๋ค.
-
ํ๋ จ ๋ฐ์ดํฐ: ๊ฐ ์ฌ๊ณ ์ฌ๋ก์ ๋ํ ์์ธ ์ ๋ณด์ ๊ทธ์ ํด๋นํ๋ ์ฌ๋ฐ ๋ฐฉ์ง ๋์ฑ /ํฅํ ์กฐ์น ๊ณํ(์ ๋ต ๋ฌธ์ฅ) ํ ์คํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
-
์ฌ๊ณ ์ค๋ช ๋ฌธ: ์ฌ๊ณ ์ ๋ณด ์ปฌ๋ผ์ ์กฐํฉํ์ฌ ์์ฑ๋ฉ๋๋ค:
์์ ํ๋ก์ธ์ค
: ์ฌ๊ณ ๊ฐ ๋ฐ์ํ ์์ ๊ณผ์ ์ฌ๊ณ ๊ฐ์ฒด(์ค๋ถ๋ฅ)
: ์ฌ๊ณ ์ ๊ด๋ จ๋ ์์ค๋ฌผ ๋๋ ์ฅ๋น์ธ์ ์ฌ๊ณ
: ๋ฐ์ํ ์ธ์ ์ฌ๊ณ ์ ํ (๋จ์ด์ง, ๋์ด์ง ๋ฑ)๋ฌผ์ ์ฌ๊ณ
: ๋ฐ์ํ ๋ฌผ์ ์ฌ๊ณ ์ ํ์ฌ๊ณ ์์ธ
: ์ฌ๊ณ ์ ์ง์ ์ ์ธ ์์ธ
-
์ ๋ต ๋ฌธ์ฅ:
์ฌ๋ฐ๋ฐฉ์ง๋์ฑ ๋ฐ ํฅํ์กฐ์น๊ณํ
์ปฌ๋ผ์ ๊ธฐ๋ก๋ ์๋ฐฉ/์กฐ์น ๊ณํ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ RAG ์์คํ ์ด ์์ฑํด์ผ ํ๋ ๋ชฉํ ๋ฌธ์ฅ์ด๋ฉฐ, ์ต์ข ํ๊ฐ์์ ์์ฑ๋ ๋ฌธ์ฅ๊ณผ์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๋ ๊ธฐ์ค์ด ๋ฉ๋๋ค.
-
-
ํ ์คํธ ๋ฐ์ดํฐ: ์ฌ๊ณ ์ ๋ณด๋ง ์ ๊ณต๋๋ฉฐ, ๋์ผํ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋ ์ฌ๊ณ ์ค๋ช ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ฐฉ/์กฐ์น ๊ณํ์ ์์ฑํ๊ณ ์ด๋ฅผ ์ค์ ์ ๋ต๊ณผ ๋น๊ตํ์ฌ ์ฑ๋ฅ์ ํ๊ฐํฉ๋๋ค.
Google Gemma 3 ๊ณ์ด ์ค gemma3:4b (instruction-tuned) ๋ชจ๋ธ์ ์ฌ์ฉํ์ต๋๋ค.
- 128 K ํ ํฐ ์ปจํ ์คํธ ์๋์ฐ
- ๋ฉํฐ๋ชจ๋ฌ ์ ๋ ฅ(ํ ์คํธ + ์ด๋ฏธ์ง) ๋ฐ 140+ ๊ฐ ์ธ์ด ์ง์
- ๋จ์ผ GPU์์๋ ๊ตฌ๋ ๊ฐ๋ฅํ ๊ฒฝ๋ ์ค๊ณ
- ์ ์ ์ด์ : ํ๊ตญ์ด ์ฒ๋ฆฌ ์ฑ๋ฅ์ ์ค์ ์ ์ผ๋ก ์คํํ ๊ฒฐ๊ณผ, Gemma3:4B๊ฐ ํ๊ตญ์ด ๋ฌธ์ฅ ์ดํด ๋ฐ ์์ฑ์์ ์ฐ์ํ ํ์ง์ ๋ณด์ฌ ์ ํํ์์ต๋๋ค.
๋ณธ ํ๋ก์ ํธ์ ์ ์ฒด ํ์ดํ๋ผ์ธ์ ์๋์ Jupyter Notebook๋ค์ ์์ฐจ์ ์ผ๋ก ์คํํ๋ฉฐ ์งํ๋ฉ๋๋ค.
-
10-local-formatting.ipynb: ์ด๊ธฐ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ๊ธฐ๋ณธ ํ์ ์ ๋ฆฌ ์์ ์ ์ํํฉ๋๋ค.
-
20-colab-spelling_correction.ipynb: ํ ์คํธ ๋ฐ์ดํฐ์ ํ์ง ํฅ์์ ์ํด ์คํ์๋ฅผ ์์ ํฉ๋๋ค.
ํ๋กฌํํธ ์์
๋น์ ์ ๋ง์ถค๋ฒ ์์ ์ ๋ฌธ๊ฐ์ ๋๋ค. ์ ๊ณต๋ ๋ฌธ์ฅ์ ๋ง์ถค๋ฒ์ ์์ ํ๋, ํ์์ ์ ์งํ๊ณ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์์ฑํ์ง ๋ง์ธ์. ๋ฌธ์ฅ: "๋์ด์ง ์ฌ๊ณ (์ฌ๊ณ ์๊ฐ ๋ณดํ๋ก๊ฐ ์๋ ์ฝํฌ๋ฆฌํธ Lํ ์ธก๊ตฌ ์์์ ์ํด ๋ฎ์ด๋ ์ฒ๋ง์๋ฅผ ๊ฑท๋ค๊ฐ ์ง์์ (๋งจํ) ๊ฐ๊ตฌ๋ถ๋ฅผ ๋ฐ์ ์ค์กฑํ์ฌ ์ํด ๋ฐ์)" ์์ :
LLM ๋ต๋ณ
๋์ด์ง ์ฌ๊ณ (์ฌ๊ณ ์๋ ๋ณดํ๋ก๊ฐ ์๋ ์ฝํฌ๋ฆฌํธ Lํ ์ธก๊ตฌ ์์์ ์ํด ๋ฎ์ด๋ ์ฒ๋ง ์๋ฅผ ๊ฑท๋ค๊ฐ ์ง์์ (๋งจํ) ๊ฐ๊ตฌ๋ถ๋ฅผ ๋ฐ์ ์ค์กฑํ์ฌ ์ํด ๋ฐ์)
-
30-colab-structured_description.ipynb: LLM์ ์ด์ฉํด ์ฌ๊ณ ์ ๋ณด ํ ์คํธ์์ '๋ฐ์ ๋ฐฐ๊ฒฝ', '์ฌ๊ณ ์ข ๋ฅ', '์ฌ๊ณ ์์ธ' ๋ฑ ๊ตฌ์กฐํ๋ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. ์ด๋ ํ์ RAG ๋จ๊ณ์์ ๊ฒ์ ํ์ง์ ๋์ด๊ธฐ ์ํจ์ ๋๋ค.
ํ๋กฌํํธ ์์
ํ๊ตญ ๊ฑด์ค ๊ณต์ฌ ์์ ์ฌ๊ณ ๊ด๋ จ ๋ฌธ์ฅ์ ์ธ์ด ๋ชจ๋ธ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ ์ฒ๋ฆฌํ๋ ค ํฉ๋๋ค. ์ฌ๊ณ ๊ฐ ๋ฐ์ํ ๋ฐฐ๊ฒฝ๊ณผ ํต์ฌ์ ์ธ ํผํด ๋ด์ฉ, ์ฌ๊ณ ์์ธ์ ๋์ถํ๊ณ , "๋ฐ์ ๋ฐฐ๊ฒฝ, ์ฌ๊ณ ์ข ๋ฅ, ์ฌ๊ณ ์์ธ"์ json ํ์์ผ๋ก ํต์ฌ์ ์ธ ๋ด์ฉ๋ง ๊ฐ๊ฒฐํ ์ ๋ฆฌํด์ฃผ์ธ์. ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์์๋ก ์ถ๋ก ํ๊ฑฐ๋ ์์ฑํ์ง ๋ง๊ณ , ์๋ฌธ์ ์ฃผ์ด์ง ์ ๋ณด๋ง์ ๋ฐ์ํ์ธ์. ์ ๊ณต๋ ๋ฌธ์ฅ์ [๋ฌธ์ฅ: "์ฌ๊ณ ์ข ๋ฅ (์ฌ๊ณ ์ค๋ช ๋๋ ์์ธ)"] ํ์์ผ๋ก ์ ๊ณต๋ฉ๋๋ค. ๋ฌธ์ฅ: "์ค์น์์ ์ค ๋์ด์ง ์ฌ๊ณ (ํฌ๋ ์ธ ์ด์ฉ ์์ ์ค ์ค๊ฑธ์ด์ ์์ ์ ์๋ช ์ค์ด ๊ฑธ๋ ค ์ค์ฌ์ ์๊ณ ์ธ์ ์์คํ ๋๋ฐ๋ฆฌ ์์ฌ์ ๋ถ๋ชํ ๋ถ์)"
LLM ๋ต๋ณ
```json { "๋ฐ์ ๋ฐฐ๊ฒฝ": "ํฌ๋ ์ธ ์ด์ฉ ์์ ์ค", "์ฌ๊ณ ์ข ๋ฅ": "๋์ด์ง ์ฌ๊ณ (์ค๊ฑธ์ด)", "์ฌ๊ณ ์์ธ": "์ค๊ฑธ์ด์ ์์ ์ ์๋ช ์ค์ด ๊ฑธ๋ ค ์ค์ฌ์ ์๊ณ ์ธ์ ์์คํ ๋๋ฐ๋ฆฌ ์์ฌ์ ๋ถ๋ชํ" } ```
-
40-local-reason_extract.ipynb: LLM์ JSON ์ถ๋ ฅ์์ '๋ฐ์ ๋ฐฐ๊ฒฝ', '์ฌ๊ณ ์ข ๋ฅ', ํนํ RAG ๊ฒ์์ ํต์ฌ ํค๊ฐ ๋ '๋ฐ์ ์์ธ' ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค.
-
50-local-rag_prompt.ipynb: '๋ฐ์ ์์ธ'์ ์ฟผ๋ฆฌ๋ก, '์ฌ๋ฐ๋ฐฉ์ง๋์ฑ ๋ฐ ํฅํ์กฐ์น๊ณํ'๋ฅผ ๋ต๋ณ์ผ๋ก ์ฌ์ฉํด ์ ์ฌ ์ฌ๊ณ ์ฌ๋ก์ QA๋ฅผ ๊ฒ์ํ๋ FAISS RAG ํ์ดํ๋ผ์ธ์ ๊ตฌํํฉ๋๋ค. ์ด๊ธฐ ๊ฒ์(Retrieve)์์๋ ์ฟผ๋ฆฌ์ ์ ์ฌํ ์์ 25๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ๊ณ , ์ดํ ๊ฒ์๋ ๊ฒฐ๊ณผ๋ค์ ๋ต๋ณ๊ณผ ๋ํ ๋ฌธ์ฅ๊ณผ์ ์ ์ฌ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ ๋ ฌ(Reranking)ํ์ฌ ๊ฐ์ฅ ๋์ ์ ์ฌ๋, ์ค๊ฐ, ๊ทธ๋ฆฌ๊ณ ๋ฎ์ ์ ์ฌ๋ ๋ต๋ณ์ ๊ฐ์ง 3๊ฐ์ QA๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด LLM์ด ๋ค์ํ ๋ต๋ณ์ ์ฐธ๊ณ ํ ์ ์๋๋ก ๊ฐ์ ํ์์ต๋๋ค.
-
60-colab-llm_summary.ipynb: ๊ฒ์๋ 3๊ฐ์ QA ์์์
base_answer
์ ๋ฐํ์ผ๋ก ๋ต๋ณ์ N๊ฐ ์์ฑํฉ๋๋ค.ํ๋กฌํํธ ์์
์๋์ ๋ชจ๋ฒ ๋ต์ ์์๋ฅผ ์ฐธ๊ณ ํด answer์ ์์ฑํด์ฃผ์ธ์. ๊ฐ๊ฐ์ answer์ ๋ชจ๋ question๊ณผ base_answer์ ๋ฐ์ํด ๋ง๋ ๊ฒฐ๊ณผ์ ๋๋ค. ๊ฒฐ๊ณผ๋ ""user_question""๋ง json์ผ๋ก ์ถ๋ ฅํด์ฃผ์ธ์. ```json { ""base_answer"": ""์์ ์ ์์ ๊ต์ก ๊ฐํ ๋ฐ ์์ ์ฅ ์ํ์์ ์ ๊ฒ์ ํตํ ์ฌ๋ฐ ๋ฐฉ์ง์ ์์ ๊ด๋ฆฌ ๊ต์ก ์ฒ ์ ๋ฅผ ํตํ ํฅํ ์กฐ์น ๊ณํ."" ""examples"": [ { ""question"": ""๋ฐ์ ๋ฐฐ๊ฒฝ: ์ ๋จ ์์ ์ค, ์ฌ๊ณ ์ข ๋ฅ: ๊ธฐ๊ณ ์ฌ์ฉ ๋ถ์ฃผ์๋ก ์ธํ ์ ๋จ, ๋ฒ ์ ์ฌ๊ณ , ์ฌ๊ณ ์์ธ: ๊ธฐ๊ณ ์ฌ์ฉ ๋ถ์ฃผ์"", ""answer"": ""์ฅ๋น ์ ๊ฒ ๋ฐ ์์ ์ ์์ ๊ต์ก ์ค์."" }, { ""question"": ""๋ฐ์ ๋ฐฐ๊ฒฝ: ์ค์น์์ ์ค, ์ฌ๊ณ ์ข ๋ฅ: ๋ณด๊ฐํ ์น๋ฒฝ ๊ด๋ จ ์ ๋จ, ๋ฒ ์ ์ฌ๊ณ , ์ฌ๊ณ ์์ธ: ์์ฌ ์ ๋จ ์์ ์ ์ ๋จ๋ถ๋ก๋ถํฐ ์์ ์ ์ด๊ฒฉ ๋ฏธํก, ์์ ์ฅ๋น(๋ฒ ์ ๋ฐฉ์ง ์ฅ๊ฐ) ๋ฏธ์ฐฉ์ฉ"", ""answer"": ""์ ๋จ์์ ์ ์์ ์ฅ๊ฐ ์ง๊ธ๊ณผ ๊ทผ๋ก์ ์์ ๊ต์ก ์ค์๋ฅผ ํตํ ์ฌ๋ฐ ๋ฐฉ์ง ๋์ฑ ๋ง๋ จ."" }, { ""question"": ""๋ฐ์ ๋ฐฐ๊ฒฝ: ์ ๋จ ์์ ์ค, ์ฌ๊ณ ์ข ๋ฅ: ๊ณต๊ตฌ๋ฅ ๊ด๋ จ ์ ๋จ, ๋ฒ ์ ์ฌ๊ณ , ์ฌ๊ณ ์์ธ: ๊ณต๊ตฌ ์ฌ์ฉ ์ค ์์ ์ ๋ถ์ฃผ์"", ""answer"": ""๊ณต๊ตฌ์ฌ์ฉ ์ ์ฃผ์์ฌํญ ๊ณ ์ง ๋ฐ ๊ณต๊ตฌ์ฌ์ฉ ์๋ จ์ ๋ฐฐ์น์ ํจ๊ป ๊ฑด์คํ์ฅ ์ฌํด์๋ฐฉ์ ์ํ ์์ ๊ด๋ฆฌ ์ฒ ์ ์ง์."" } ] } ``` ```json { ""user_question"": { ""question"": ""๋ฐ์ ๋ฐฐ๊ฒฝ: ์ ๋จ ์์ ์ค ๊ฐ๋ ์ ๋จ๊ธฐ ์ด์ฉ, ์ฌ๊ณ ์ข ๋ฅ: ๊ฐ๋ ์ ๋จ๊ธฐ ๊ด๋ จ ๋ฒ ์ ์ฌ๊ณ , ์ฌ๊ณ ์์ธ: ๋ฐฉํธ๋ฎ๊ฐ ํ๋ฝ ์ง์ฐ์ผ๋ก ์ธํ ์ฌํด์ ์์"", ""answer"": """" } } ```
LLM ๋ต๋ณ
```json { ""user_question"": { ""question"": ""๋ฐ์ ๋ฐฐ๊ฒฝ: ์ ๋จ ์์ ์ค ๊ฐ๋ ์ ๋จ๊ธฐ ์ด์ฉ, ์ฌ๊ณ ์ข ๋ฅ: ๊ฐ๋ ์ ๋จ๊ธฐ ๊ด๋ จ ๋ฒ ์ ์ฌ๊ณ , ์ฌ๊ณ ์์ธ: ๋ฐฉํธ๋ฎ๊ฐ ํ๋ฝ ์ง์ฐ์ผ๋ก ์ธํ ์ฌํด์ ์์"", ""answer"": ""๊ฐ๋์ ๋จ๊ธฐ ์์ ์ ๊ฒ ๊ฐํ ๋ฐ ์์ ์ ๊ต์ก ์ค์, ๋ฐฉํธ๋ฎ๊ฐ ์๋ ์ํ ํ์ธ ์ฒ ์ , ์ฌํด ๋ฐ์ ์ ์๊ธ์ฒ์น ๊ต์ก ์ค์๋ฅผ ํตํ ํฅํ ์กฐ์น ๊ณํ."" } } ```
-
70-local-answer_extract.ipynb: LLM์ด ์์ฑํ JSON ํ ์คํธ์์ 'answer'์ ์ถ์ถํฉ๋๋ค. LLM์ด ์ง์ ๋ ๋ต๋ณ ํ์๋๋ก ์๋ตํ์ง ์์์ ๊ฒฝ์ฐ, ์ฌ๋ฐ๋ฅธ ํ์์ผ๋ก ๋ต๋ณํ ๋๊น์ง ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์์ฑํฉ๋๋ค.
-
80-local-answers_rerank.ipynb: LLM์ด ์์ฑํ N๊ฐ์ ๋ต๋ณ๊ณผ 25๊ฐ์ Retrieve๋ ๋ต๋ณ๊ณผ์ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ์ฌ, N๊ฐ์ ๋ต๋ณ ์ค ๊ฐ์ฅ ๋์ ์ ์ฌ๋๋ฅผ ๊ฐ์ง ๋ต๋ณ์ ์ต์ข ๊ฒฐ๊ณผ๋ก ์ ์ ํฉ๋๋ค. (BoN ๋ฐฉ์)
ํ๊ฐ ์งํ: ์ ์ฌ๋ ์ ์ = ์ฝ์ฌ์ธ ์ ์ฌ๋ * 0.7 + ์์นด๋ ์ ์ฌ๋ * 0.3
- ์ด๊ธฐ ์ ๊ทผ (0.5465): ํ๋ จ ๋ฐ์ดํฐ์ ์ ๋ต ๋ฌธ์ฅ ์๋ฒ ๋ฉ ํ, ์ฝ์ฌ์ธ ์ ์ฌ๋๊ฐ ๊ฐ์ฅ ๋์ ๋ํ ๋ฌธ์ฅ์ ์ฌ์ฉํ๋ ๋ฐฉ์.
- ๊ตฐ์งํ ์๋: ์ฌ๊ณ ์ค๋ช ๋ฌธ ์๋ฒ ๋ฉ ๊ธฐ๋ฐ ๊ตฐ์งํ๋ ๋ฒกํฐ ๊ณต๊ฐ์์์ ๊ฒฝ๊ณ ๋ชจํธ์ฑ ๋ฐ ๊ท ์ผํ ๋ถํฌ ๋ฑ์ ๋ฌธ์ ๋ก ์ ์๋ฏธํ ๊ตฐ์ง ํ์ฑ์ ์คํจ.
- ๊ธฐ๋ณธ RAG (0.4385): '์ฌ๊ณ ์์ธ' ์ปฌ๋ผ์ ์ฟผ๋ฆฌ๋ก ์ฌ์ฉํ๊ณ , ์ฌ๊ณ ์ ๋ณด๋ฅผ ์กฐํฉํ '์ฌ๊ณ ์ค๋ช ๋ฌธ'์ผ๋ก Rerankingํ์ฌ ์์ 5๊ฐ ์ ์ฌ ์ฌ๋ก๋ฅผ LLM์ ์ ๊ณต.
- RAG + Base Answer (0.4701): ์ด์ ๋จ๊ณ์ ์์ 5๊ฐ ์ฌ๋ก๋ฅผ 3๊ฐ๋ก ์ค์ด๊ณ , ์ด๊ธฐ ์ ๊ทผ์์ ์ฐพ์ '๋ํ ๋ฌธ์ฅ'์ LLM ํ๋กฌํํธ์
base_answer
๋ก ์ถ๊ฐ ์ ๊ณต. LLM ๋ต๋ณ์ ๋ฐฉํฅ์ฑ์ ์ ์ํ์ฌ ์ฑ๋ฅ์ด ๊ฐ์ ๋์์ต๋๋ค. - JSON์ ์ด์ฉํ ์ ๋ณด ์ถ์ถ ๋ฐ ์ ์ (0.4899): LLM์ ํตํด JSON์ผ๋ก ์์ฑ๋ ๊ตฌ์กฐํ๋ ์ ๋ณด('๋ฐ์ ๋ฐฐ๊ฒฝ', '์ฌ๊ณ ์ข ๋ฅ', '์ฌ๊ณ ์์ธ') ์ค '์ฌ๊ณ ์์ธ'์ ์ฟผ๋ฆฌ๋ก ์ฌ์ฉํ๊ณ , '๊ตฌ์กฐํ๋ ์ค๋ช ๋ฌธ'์ผ๋ก Rerankingํ์ฌ ์์ 3๊ฐ ์ ์ฌ ์ฌ๋ก๋ฅผ LLM์ ์ ๊ณต. ๊ธฐ์กด '์ฌ๊ณ ์์ธ' ์ปฌ๋ผ์์ ์ฌ๊ณ ์์ธ์ด ์๋ ๋ถํ์ ์์๋ฅผ ์ ๊ฑฐํด RAG Query์ Reranking ๋ฌธ์์ ํ์ง์ด ๊ฐ์ ๋์์ต๋๋ค.
- ๋ค์ํ ๋ต๋ณ ์ ๊ณต RAG (0.4951): '๊ตฌ์กฐํ๋ ์ค๋ช ๋ฌธ'์ ์ฟผ๋ฆฌ๋ก ์ฌ์ฉํ๊ณ , ๊ฒ์๋ ๊ฒฐ๊ณผ๋ค์ ๋ต๋ณ๊ณผ '๋ํ ๋ฌธ์ฅ' ๊ฐ ์ ์ฌ๋๋ฅผ ๊ธฐ์ค์ผ๋ก Rerankingํ์ฌ ์์ 1๊ฐ, ์ค๊ฐ 1๊ฐ, ํ์ 1๊ฐ, ์ด 3๊ฐ์ ๋ค์ํ ๋ต๋ณ์ LLM์ ์ ๊ณต. LLM์ด ๋ ๋ค์ํ ๋ต๋ณ์ ์ฐธ๊ณ ํ์ฌ ๋ต๋ณ์ ์์ฑํ๋๋ก ์ ๋ํ์ต๋๋ค.
์์ธํ ๋ถ์ ๋ฐ ์คํ, ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฑ์ ๊ดํ ๋ด์ฉ์ DETAILS.md ์ฐธ๊ณ .
- ํ๋กฌํํธ ์์ง๋์ด๋ง: ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ํ๋กฌํํธ, ํนํ JSON ํ์ ์ถ๋ ฅ ์ง์๋ sLLM ํ์ฉ ๋ฐ ํ์ ์ฒ๋ฆฌ ํจ์จํ์ ์ค์. ํต์ฌ ์ ๋ณด ์ถ์ถ์ด ๋ชจ๋ธ ์ฑ๋ฅ์ ํฐ ์ํฅ.
- ์๋ฒ ๋ฉ/๊ตฐ์งํ: ๋ฐ์ดํฐ ํน์ฑ์ ๋ง๋ ์๋ฒ ๋ฉ ์ ๋ต๊ณผ ๊ตฐ์งํ ๊ธฐ๋ฒ ์ ํ์ ์ค์์ฑ ํ์ธ. ๋จ์ ์ ์ฉ์ ํ๊ณ ์ธ์ง.
- RAG ์ ๋ต: ๋จ์ ์ ์ฌ๋ ๊ฒ์์ ๋์ด, ์ฟผ๋ฆฌ ํ์ง ํฅ์, ๊ฒ์ ๊ฒฐ๊ณผ์ ํ์ง๊ณผ ๋ค์์ฑ์ ๋์ด๋ ์ฌ๋ญํน(Reranking) ๋ฑ ์ /ํ์ฒ๋ฆฌ ์ ๋ต์ด ํจ๊ณผ์ .
- ์ฑ๋ฅ ์ต์ ํ: ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ I/O ๋ณ๋ชฉ ํ์ ๋ฑ ์ฑ๋ฅ ์ ํ ์์ธ์ ํ์ ํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฑ ์ต์ ํ ๊ธฐ๋ฒ ์ ์ฉ ํ์.
- ํฅํ ๋ฐฉํฅ:
- ์๋ฒ ๋ฉ ๋ฒกํฐ์ ํน์ฑ์ ๋ง๋ ๊ตฐ์งํ ๋ฐฉ๋ฒ ํ์ ๋ฐ ์ ์ฉ.
- ์ง์์ ์ธ RAG ๊ฒ์/์ฌ๋ญํน ์ ๋ต ๊ฐ์ .
- CPU-GPU ๊ฐ ๋ฐ์ดํฐ ์ ์ก ๋ฑ ์ถ๋ก ๋ณ๋ชฉ ํ์ ์ถ๊ฐ ๋ถ์ ๋ฐ ์ต์ ํ.
- Jupyter Notebook์ผ๋ก ๊ตฌ์ฑ๋ ํ์ดํ๋ผ์ธ์ ํตํฉํ์ฌ, ๋จ์ผ ์คํฌ๋ฆฝํธ๋ก ์คํ ๊ฐ๋ฅํ ํํ๋ก ๊ตฌ์ถ.
Dacon_HanSolDeco/
โโโ data/
โ โโโ train.csv
โ โโโ test.csv
โ
โโโ preprocess/
โ โโโ 10-local-formatting.ipynb
โ โโโ 20-colab-spelling_correction.ipynb
โ โโโ 30-colab-structured_description.ipynb
โ โโโ 40-local-reason_extract.ipynb
โ โโโ utils.py
โ
โโโ rag/
โ โโโ vector_stores/ # ๋ฒกํฐ ์ ์ฅ์ ๋๋ ํ ๋ฆฌ
โ โ โโโ faiss_index/ # FAISS ์ธ๋ฑ์ค
โ โโโ 50-local-rag_prompt.ipynb
โ โโโ 60-colab-llm_summary.ipynb
โ โโโ 70-local-answer_extract.ipynb
โ โโโ 80-local-answers_rerank.ipynb
โ โโโ faiss_utils.py
โ โโโ utils.py
โ
โโโ settings.py # Colab ํ๊ฒฝ ์ค์ ์คํฌ๋ฆฝํธ (Ollama, requirements ์ค์น ๋ฑ)
โโโ requirements.txt
โโโ README.md
- ์ธ์ด: Python 3.8+
- ํ๊ฒฝ: Jupyter Notebook / Google Colab
- LLM: Ollama (๋ก์ปฌ ๊ตฌ๋ LLM)
- RAG ํ๋ ์์ํฌ: Langchain
- ๋ฒกํฐ ๊ฒ์: FAISS (CPU)
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ: Pandas, Numpy
- ๊ธฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: Scikit-learn (PCA ๋ฑ), HuggingFace Transformers/Sentence-Transformers (์๋ฒ ๋ฉ ๋ชจ๋ธ ๋ก๋ฉ ๋ฑ)
์์ธํ ๋ด์ฉ์ settings.py, requirements.txt ์ฐธ๊ณ .