์ฃผ์ฑ์ฉ ยท ๋ฐ์ค์ ยท ์ค๋ณํ ยท ์ด์ฌ์ฐ
๊ธ์ต๋ณด์ ๋ฒ๋ น ํด์์ ์ํ Graph-augmented Hybrid RAG ํ๋ ์์ํฌ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ ๋ฒ๋ น, ์ํ๋ น, ์ง์นจ, MITRE ATT&CK ์๋ฃ๋ฅผ EXAONE-3.5-7.8B-Instruct ๊ธฐ๋ฐ ์ง์์๋ต ํ์ดํ๋ผ์ธ์ ์ฐ๊ฒฐํ๊ณ , ๋ฒ๋ น ์กฐํญ ๊ฐ ์ฐธ์กฐ ๊ทธ๋ํ์ dense/sparse retrieval์ ๊ฒฐํฉํด ๊ท์ ์ง์์ ๊ทผ๊ฑฐ ๋ฌธ๋งฅ ๊ฒ์ ํ์ง์ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
๋จ์ํ ๋ฌธ์๋ฅผ ๋ฒกํฐ DB์ ๋ฃ๊ณ ๊ฒ์ํ๋ ๋ฐฉ์์ด ์๋๋ผ, ํ๊ตญ ๋ฒ๋ น ๋ฌธ์์ ํน์ง์ธ ์กฐํญ ๊ฐ ์ฐธ์กฐ, ๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ, ์ํ๋ น/์ง์นจ ์ฐ๊ฒฐ, ๋ฒ๋ น๋ช ๊ธฐ๋ฐ ๋ผ์ฐํ ์ retrieval ๋จ๊ณ์ ๋ฐ์ํฉ๋๋ค.
๊ธ์ต๋ณด์ ๊ท์ ์ง์๋ ํน์ ์กฐํญ ํ๋๋ง์ผ๋ก ๋ตํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด "๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ ์ ํ", "์ ์๊ธ์ต๊ฑฐ๋ ์ฌ๊ณ ์ฑ ์", "์ ๋ณดํต์ ๋ง ๋ณดํธ์กฐ์น" ๊ฐ์ ์ง๋ฌธ์ ์ ์กฐํญ, ์์ธ ์กฐํญ, ์ํ๋ น, ๊ด๋ จ ์ง์นจ์ด ํจ๊ป ๊ฒ์๋์ด์ผ ํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ๋ค์ ๋ฐฉ์์ผ๋ก RAG์ ๊ฒ์ ๋ณ๋ชฉ์ ์ค์ ๋๋ค.
| ๋ฌธ์ | ์ ๊ทผ ๋ฐฉ์ |
|---|---|
| ๋ฒกํฐ ๊ฒ์๋ง์ผ๋ก ์ ํํ ์กฐํญ์ ๋์นจ | E5 dense retrieval๊ณผ BM25 sparse retrieval ๊ฒฐํฉ |
| ๋ฒ๋ น ๋ฌธ๋งฅ์ด ์กฐํญ ๋จ์๋ก ๋ถ์ฐ๋จ | ๋ฒ๋ น ์กฐํญ์ ๋ ธ๋๋ก ๋ง๋ค๊ณ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ์ฃ์ง๋ก ๊ตฌ์ฑ |
| "์ n์กฐ" ์ฐธ์กฐ๊ฐ ์ฌ๋ฌ ๋ฒ๋ น์ ์ค๋ณต๋จ | ๋ฒ๋ น๋ช + ์กฐํญ ํจํด์ ์ฐ์ ์ฐ๊ฒฐํ๊ณ , ๋จ์ ์กฐํญ ์ฐธ์กฐ๋ ํ๋ณด ์์ ๋ฐ๋ผ fallback |
| ์ค๋ณต ๋ฌธ๋งฅ์ด ๋ง์ด ๋ค์ด๊ฐ | optional reranker์ MMR๋ก ์ฌ์ ๋ ฌ ๋ฐ ๋ค์ํ |
| ๊ด๋ จ์ฑ์ด ๋ฎ์ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์ฃผ์ ๋จ | low-confidence gating์ผ๋ก RAG ์ ์ฉ ์ฌ๋ถ ์ ์ด |
๊ธ์ต๋ณด์ ๊ท์ ์ง์์๋ต์์๋ ๋ชจ๋ธ์ด ์ต์ ๋ฒ๋ น, ์ํ๋ น, ๊ณ ์, ์ง์นจ, MITRE ์๋ฃ๋ฅผ ์ ํํ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ํ์ง๋ง ์ผ๋ฐ LLM์ ํ์ต ์์ ์ดํ์ ๊ท์ ๋ณํ๋ ์ธ๋ถ ์กฐํญ ๊ด๊ณ๋ฅผ ์์ ์ ์ผ๋ก ๊ธฐ์ตํ์ง ๋ชปํ๊ณ , naive RAG๋ ์๋ฏธ์ ์ผ๋ก ๋น์ทํ chunk๋ฅผ ๊ฒ์ํ๋๋ผ๋ ์ค์ ์ ๋ต์ ํ์ํ ๊ด๋ จ ์กฐํญ, ์์ธ ์กฐํญ, ์ค์ฉ ์กฐํญ, ์ํ๋ น ์ฐ๊ฒฐ์ ๋์น ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ํ๋ก์ ํธ์ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธ์ต๋ณด์ ๋ฒ๋ น ๋ฌธ์์ ๊ตฌ์กฐ์ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ํ์ฉํด, ๊ท์ ์ง์์๋ต์์ ํ์ํ ๊ทผ๊ฑฐ ๋ฌธ๋งฅ์ ๋ ์ ํํ๊ฒ ๊ฒ์ํ๊ณ ์์ฑ ๋ต๋ณ์ ๊ทผ๊ฑฐ์ฑ์ ๋์ด๋ RAG ์์คํ ์ ๊ตฌ์ถํ๋ค.
์ต๊ทผ RAG ์ฐ๊ตฌ๋ ๋จ์ dense retrieval์ ๋์ด ๋ฌธ์ ๊ฐ ๊ด๊ณ, ๊ทธ๋ํ ๊ตฌ์กฐ, retrieval ํ์ง ํ๊ฐ๋ฅผ ํจ๊ป ๋ค๋ฃจ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
| Prior work / trend | Main idea | Limitation for Korean financial regulation QA |
|---|---|---|
| Naive RAG | ๋ฌธ์๋ฅผ chunkingํ ๋ค vector search๋ก ๊ด๋ จ ๋ฌธ๋งฅ ๊ฒ์ | ์กฐํญ ๊ฐ ์ฐธ์กฐ, ์ํ๋ น ์ฐ๊ฒฐ, ์์ธ ์กฐํญ์ฒ๋ผ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ๋์น๊ธฐ ์ฌ์ |
| Hybrid RAG | dense retrieval๊ณผ BM25๋ฅผ ๊ฒฐํฉํด semantic match์ lexical match๋ฅผ ํจ๊ป ํ์ฉ | ๊ฒ์ recall์ ๊ฐ์ ๋์ง๋ง ๋ฒ๋ น ๊ฐ ์ฐธ์กฐ ๊ตฌ์กฐ ์์ฒด๋ฅผ ๋ชจ๋ธ๋งํ์ง๋ ์์ |
| Microsoft GraphRAG | entity graph์ community summary๋ฅผ ๋ง๋ค์ด corpus-level global question answering์ ํ์ฉ (arXiv:2404.16130) | global summarization์๋ ๊ฐํ์ง๋ง, ํ๊ตญ ๋ฒ๋ น์ ์กฐํญ ๋ฒํธ/๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ๋ฅผ ์ง์ ํด์ํ๋ ๋๋ฉ์ธ ๊ท์น์ ๋ณ๋๋ก ํ์ |
| LightRAG | graph structure๋ฅผ indexing/retrieval์ ํตํฉํ๊ณ dual-level retrieval๋ก ํจ์จ๊ณผ ๋ฌธ๋งฅ์ฑ์ ๊ฐ์ (arXiv:2410.05779) | ๋ฒ์ฉ graph retrieval ๊ตฌ์กฐ์ด๋ฉฐ, ๋ฒ๋ น๋ช + ์ n์กฐ ๊ฐ์ ๊ท์ ๋ฌธ์ ๊ณ ์ ํจํด์ ๋๋ฉ์ธ ํนํ ์ฒ๋ฆฌ๊ฐ ํ์ |
| RAG evaluation frameworks | context precision, context recall, faithfulness, answer relevancy์ฒ๋ผ RAG๋ฅผ retrieval/generation ๋จ์๋ก ๋ถํด ํ๊ฐ (arXiv:2309.15217) | ํ๊ฐ ํ๋ ์์ ์ ๊ณตํ์ง๋ง, ๋ฒ๋ น ์ฐธ์กฐ ๊ทธ๋ํ๋ฅผ ์ด๋ป๊ฒ retrieval์ ๊ฒฐํฉํ ์ง๋ ์์คํ ์ค๊ณ ๋ฌธ์ ๋ก ๋จ์ |
์ต๊ทผ GraphRAG์ Hybrid RAG๋ ๋ฌธ์ ๊ด๊ณ๋ฅผ ๊ฒ์์ ํ์ฉํ๋ค๋ ํฐ ๋ฐฉํฅ์ ์ ์ํ์ง๋ง, ๊ธ์ต๋ณด์ ๋ฒ๋ น ์ง์์๋ ๋ค์๊ณผ ๊ฐ์ ๋๋ฉ์ธ ํนํ ๋ฌธ์ ๊ฐ ๋จ์ ์์ต๋๋ค.
-
๋ฒ๋ น ์กฐํญ ์ฐธ์กฐ์ ๋ชจํธ์ฑ
"์ 21์กฐ"๊ฐ์ ํํ์ ์ฌ๋ฌ ๋ฒ๋ น์ ๋์์ ์กด์ฌํฉ๋๋ค.- ๋ฒ๋ น๋ช ์ ํจ๊ป ๋ณด์ง ์์ผ๋ฉด ์๋ชป๋ ์กฐํญ์ผ๋ก ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
-
๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ
- ํ ๋ฒ๋ น์ ์กฐํญ์ด ๋ค๋ฅธ ๋ฒ๋ น, ์ํ๋ น, ์ํ๊ท์น, ๊ณ ์๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- flat chunk retrieval์ ์ด๋ฐ ์ฐ๊ฒฐ์ ๊ฒ์ ์์ ์ ์์ ์ ์ผ๋ก ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ต์ต๋๋ค.
-
์ ๋ต ๊ทผ๊ฑฐ์ ๋ถ์ฐ
- ํ๋์ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํด ์์น ์กฐํญ, ์์ธ ์กฐํญ, ๋ฒ์น ์กฐํญ, ์ ์ ์กฐํญ์ด ํจ๊ป ํ์ํ ์ ์์ต๋๋ค.
- top-k vector search๋ง์ผ๋ก๋ ๊ด๋ จ ์กฐํญ ๋ฌถ์์ด ๋น ์ง ์ ์์ต๋๋ค.
-
ํ๊ตญ์ด ๋ฒ๋ น ํํ์ lexical dependency
- ๋ฒ๋ น๋ช , ์กฐํญ ๋ฒํธ, ์ฝ์นญ, ๊ณ ์๋ช ๋ฑ์ semantic similarity๋ณด๋ค ์ ํํ ๋ฌธ์์ด ๋งค์นญ์ด ์ค์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- dense retrieval๋ง์ผ๋ก๋ ์กฐํญ ๋ฒํธ ๊ธฐ๋ฐ ์ง์์์ recall์ด ํ๋ค๋ฆด ์ ์์ต๋๋ค.
๋ณธ ํ๋ก์ ํธ๋ ๋ฒ์ฉ GraphRAG๋ฅผ ๊ทธ๋๋ก ์ฌํํ๊ธฐ๋ณด๋ค, ํ๊ตญ ๊ธ์ต๋ณด์ ๋ฒ๋ น ๋ฌธ์์ ๊ตฌ์กฐ๋ฅผ ์ง์ ํ์ฉํ๋ domain-specific lightweight GraphRAG๋ฅผ ์ ์ํฉ๋๋ค.
ํต์ฌ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| Challenge | Our method |
|---|---|
| ์กฐํญ ์ฐธ์กฐ ๋ชจํธ์ฑ | (law, article) ์ญ์์ธ์ ๋ง๋ค๊ณ "๋ฒ๋ น๋ช
+ ์ n์กฐ" ํจํด์ ์ฐ์ ์ฐ๊ฒฐ |
| ๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ | graph_build_crosslaw.py์์ ๋ฒ๋ น ๊ฐ ์ฐธ์กฐ edge ์์ฑ |
| ๋ถ์ฐ๋ ๊ทผ๊ฑฐ ์กฐํญ | FAISS ๊ฒ์์ผ๋ก seed ์กฐํญ์ ์ฐพ์ ๋ค graph hop์ผ๋ก ์ธ์ ์กฐํญ ํ์ฅ |
| lexical dependency | BM25์ dense retrieval์ ๊ฒฐํฉํด ์กฐํญ ๋ฒํธ/๋ฒ๋ น๋ช match ๋ณด๊ฐ |
| irrelevant context | reranker, MMR, low-confidence gating์ผ๋ก context ํ์ง ์ ์ด |
์ฆ, ์ด ๋ฐฉ๋ฒ์ ๊ฒ์์ ๋จ์ํ chunk ranking ๋ฌธ์ ๊ฐ ์๋๋ผ ๋ฒ๋ น ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ๊ด๋ จ ๊ทผ๊ฑฐ๋ฅผ ํ์ฅํ๋ ๋ฌธ์ ๋ก ์ฌ์ ์ํฉ๋๋ค.
ํ์ฌ ์ฝ๋๋ answer-only PPL ํ๊ฐ์ RAG ์คํ ๋ก๊ทธ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ต์ข ์ ์ผ๋ก๋ ๋ค์ ์คํ์ผ๋ก ํจ๊ณผ๋ฅผ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
| Experiment | Comparison | Metric |
|---|---|---|
| Retrieval ablation | dense only vs BM25 only vs hybrid vs hybrid + graph | Recall@k, MRR, nDCG |
| Graph contribution | hybrid RAG vs hybrid RAG + graph hop | gold article hit rate, cross-law reference hit rate |
| Context quality | retrieved context before/after graph expansion | Context Precision, Context Recall |
| Generation quality | no RAG vs FAISS RAG vs GraphRAG | accuracy, faithfulness, answer relevancy |
| Robustness | law-name queries, article-number queries, cross-law queries | per-type accuracy and retrieval recall |
| Efficiency | FAISS RAG vs GraphRAG | latency, context length, tokens/sec |
๊ถ์ฅ evaluation set์ ๋ค์ query type์ ํฌํจํด์ผ ํฉ๋๋ค.
- ํน์ ๋ฒ๋ น๋ช ๊ณผ ์กฐํญ ๋ฒํธ๊ฐ ๋ช ์๋ ์ง๋ฌธ
- ์กฐํญ ๋ฒํธ๋ง ์ฃผ์ด์ง ์ง๋ฌธ
- ์ํ๋ น/์ํ๊ท์น๊น์ง ํจ๊ป ๋ด์ผ ํ๋ ์ง๋ฌธ
- ์ ์ ์กฐํญ๊ณผ ๋ฒ์น ์กฐํญ์ด ํจ๊ป ํ์ํ ์ง๋ฌธ
- MITRE ATT&CK์ ๋ฒ๋ น ๊ทผ๊ฑฐ๋ฅผ ํจ๊ป ์๊ตฌํ๋ ์ง๋ฌธ
์ฑ๊ณต ๊ธฐ์ค์ GraphRAG๊ฐ ๋จ์ FAISS RAG ๋๋น ํนํ cross-law reference hit rate, gold article Recall@k, faithfulness์์ ๊ฐ์ ๋๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
-
Domain-specific RAG
- ๊ธ์ต๋ณด์ ๊ด๋ จ ๋ฒ๋ น, ์ํ๋ น, ์ง์นจ, MITRE ์๋ฃ๋ฅผ ๋ก์ปฌ ํ ์คํธ/JSONL ๊ธฐ๋ฐ์ผ๋ก ์์ธ
- EXAONE-3.5-7.8B-Instruct ๋ฐ LoRA adapter ๊ธฐ๋ฐ ์ถ๋ก ์ง์
-
Hybrid Search
intfloat/multilingual-e5-base์๋ฒ ๋ฉ ๊ธฐ๋ฐ FAISS dense retrieval- ์ ํ์ BM25 sparse retrieval
rag_alpha๋ก dense/BM25 ๊ฒฐํฉ ๋น์จ ์กฐ์
-
Lightweight GraphRAG
- ๋ฒ๋ น ์กฐํญ์ ๊ทธ๋ํ ๋ ธ๋๋ก ๊ตฌ์ฑ
- ์กฐํญ ์ฐธ์กฐ, ๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ, ์ญ์์ธ์ ํ์ฉํด ์ฃ์ง ์์ฑ
- FAISS๋ก seed ์กฐํญ์ ์ฐพ์ ๋ค graph hop์ผ๋ก ๊ด๋ จ ์กฐํญ ํ์ฅ
-
Retrieval Control
rag_mode=faiss|graph๋ก ๊ฒ์ ๋ชจ๋ ์ ํrag_topk,rag_max_chars,rag_injection์ผ๋ก ๊ฒ์๋๊ณผ context injection ์ ์ดrag_log_top1๋ก ๊ฒ์ ์์ ๊ฒฐ๊ณผ ๋๋ฒ๊น- ๊ฐ๊ด์ ๋ฌธ์ ๋ ์ง๋ฌธ๊ณผ ๋ณด๊ธฐ๋ฅผ ํจ๊ป ์ฌ์ฉํด ๊ฒ์ ์ง์ ๊ฐํ
Question
-> law/MITRE trigger and routing
-> E5 dense retrieval + optional BM25 retrieval
-> score fusion
-> optional reranker / MMR
-> optional graph hop expansion
-> context injection into system or user message
-> EXAONE-3.5-7.8B-Instruct + LoRA generation
-> answer post-processing
.
โโโ README.md
โโโ dataset/
โโโ fin/
โโโ pjy/
โโโ build_index.py # ํ
์คํธ/JSONL ๊ธฐ๋ฐ FAISS/BM25 ์ธ๋ฑ์ค ์์ฑ
โโโ rag_searcher.py # hybrid retrieval, routing, reranker, MMR, gating
โโโ inference_graphrag.py # FAISS/GraphRAG ์ถ๋ก ํ์ดํ๋ผ์ธ
โโโ evals.py # answer-only PPL ํ๊ฐ
โโโ graphrag/
โโโ graph_build_crosslaw.py # ๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ ๊ทธ๋ํ ์์ฑ
โโโ build_index_embed.py # ๊ทธ๋ํ ๋
ธ๋ ์๋ฒ ๋ฉ ๋ฐ FAISS ์ธ๋ฑ์ค ์์ฑ
โโโ query_graphrag_embed.py # ๊ทธ๋ํ ๊ธฐ๋ฐ ๊ฒ์ ํ
์คํธ
pip install "transformers>=4.41.0" \
"accelerate>=0.31.0" \
"sentence-transformers>=3.0.1" \
"faiss-cpu>=1.8.0" \
rank_bm25 \
"bitsandbytes>=0.43.1" \
"peft>=0.11.1"CUDA ํ๊ฒฝ์์๋ ํ๊ฒฝ์ ๋ง๋ faiss-gpu wheel ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
๋ก์ปฌ ํ ์คํธ/JSONL ์๋ฃ๋ฅผ chunkingํ ๋ค E5 ์๋ฒ ๋ฉ, FAISS ์ธ๋ฑ์ค, ์ ํ์ BM25 ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
cd pjy
python build_index.py \
--sources "/mnt/data/*.txt" "/mnt/data/*.jsonl" \
--index-dir "./data/index/law_rag" \
--embedding-model "intfloat/multilingual-e5-base" \
--chunk-chars 900 \
--chunk-overlap 200 \
--bm25cd pjy
python ask_rag.py \
--index-dir "./data/index/law_rag" \
--base-model "LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct" \
--topk 6 \
--alpha 0.2 \
--max-new-tokens 320 \
--temperature 0.2alpha๋ BM25์ ๋ฒกํฐ ์ค์ฝ์ด ๊ฒฐํฉ ๊ฐ์ค์น์
๋๋ค. 0์ ๋ฒกํฐ ๊ฒ์๋ง, 1์ BM25 ๊ฒ์๋ง ์ฌ์ฉํฉ๋๋ค.
๋ฒ๋ น ๊ตฌ์กฐ JSON์์ ์กฐํญ ๋จ์ ๋ ธ๋๋ฅผ ๋ง๋ค๊ณ , ์กฐํญ ์ฐธ์กฐ์ ๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ๋ฅผ ์ฃ์ง๋ก ์ฐ๊ฒฐํฉ๋๋ค.
cd pjy/graphrag
python graph_build_crosslaw.py \
--json_dir ../../dataset/laws/parsed_laws \
--out_json ../../dataset/laws/graphrag/law_graph.json \
--out_html ../../dataset/laws/graphrag/law_graph.htmlgraph_build_crosslaw.py๋ ๋ค์ ์ ๋ต์ ์ฌ์ฉํฉ๋๋ค.
"๋ฒ๋ น๋ช + ์ n์กฐ"ํจํด์ ๋ช ์์ ๊ต์ฐจ ๋ฒ๋ น ์ฐธ์กฐ๋ก ์ฐ์ ์ฐ๊ฒฐ"์ด ๋ฒ","๊ฐ์ ๋ฒ"์ ํ์ฌ ๋ฒ๋ น์ผ๋ก ํด์"์ n์กฐ"๋ง ์๋ ๊ฒฝ์ฐ ์ ์ฒด ๋ฒ๋ น์์ ํ๋ณด๊ฐ ํ๋๋ฉด ์ฐ๊ฒฐ- ํ๋ณด๊ฐ ์ฌ๋ฌ ๊ฐ๋ฉด ํ์ฌ ๋ฒ๋ น์ ํด๋น ์กฐํญ์ผ๋ก fallback
- ์ค๋ณต ์กฐํญ์ ๋ณํฉํ๊ณ
(law, article)์ญ์์ธ์ผ๋ก ํ์ ํจ์จ ๊ฐ์
๊ทธ๋ํ ๋ ธ๋ ํ ์คํธ๋ฅผ ์๋ฒ ๋ฉํ๊ณ FAISS ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
cd pjy/graphrag
python build_index_embed.py \
--graph_json ../../dataset/laws/graphrag/law_graph.json \
--faiss_index ../../dataset/laws/graphrag/law_graph.index \
--emb_path ../../dataset/laws/graphrag/embeddings.npy \
--model_name intfloat/multilingual-e5-baseinference_graphrag.py๋ FAISS ๊ธฐ๋ฐ RAG์ ๊ทธ๋ํ ๊ธฐ๋ฐ RAG๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค.
cd pjy
python inference_graphrag.py \
--adapter out-exaone-law-qlora/20250828_040425/adapter \
--rag on \
--rag_mode graph \
--index_dir ../dataset/laws/graphrag \
--graph_json_path ../dataset/laws/graphrag/law_graph.json \
--rag_topk 3 \
--rag_max_chars 600 \
--rag_injection user \
--rag_log_top1 \
--bf16์ฃผ์ ์ต์ :
| ์ต์ | ์ค๋ช |
|---|---|
--rag_mode faiss |
E5 + FAISS + optional BM25 ๊ธฐ๋ฐ ๊ฒ์ |
--rag_mode graph |
๊ทธ๋ํ seed ๊ฒ์ ํ ์ธ์ ์กฐํญ ํ์ฅ |
--rag_alpha |
dense/BM25 ๊ฒฐํฉ ๋น์จ |
--rag_topk |
๊ฒ์ ์์ ๋ฌธ๋งฅ ์ |
--rag_max_chars |
๋ฌธ๋งฅ๋น ์ต๋ ๋ฌธ์ ์ |
| `--rag_injection system | user` |
--rag_log_top1 |
๊ฒ์ ์์ 1๊ฐ ๊ฒฐ๊ณผ ๋ก๊ทธ ์ถ๋ ฅ |
ํ์ฌ pjy/evals.py๋ answer-only perplexity(PPL) ์ค์ฌ ํ๊ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
cd pjy
python evals.py \
--base LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct \
--adapter out-exaone-law-qlora/20250816_014322/adapter \
--val_jsonl ../dataset/all/val.jsonl \
--per_device_eval_batch_size 2ํฅํ RAG ํ์ง ํ๊ฐ๋ ๋ค์ ์งํ๋ก ํ์ฅํ ์ ์์ต๋๋ค.
| ํ๊ฐ ์ถ | ๊ถ์ฅ ์งํ |
|---|---|
| Retrieval quality | Recall@k, MRR, nDCG |
| Context quality | Context Precision, Context Recall |
| Generation quality | Answer Relevancy, Faithfulness |
| System efficiency | latency, tokens/sec, context length |
| Error analysis | retrieval miss, wrong graph expansion, irrelevant context, hallucination |
์ด ๋ ํฌ๋ Microsoft GraphRAG์ full pipeline, ์ฆ entity extraction, community detection, community summary ๊ธฐ๋ฐ global QA ์์คํ ์ ๊ทธ๋๋ก ์ฌํํ๋ ํ๋ก์ ํธ๋ ์๋๋๋ค. ๋์ ํ๊ตญ ๋ฒ๋ น ๋๋ฉ์ธ์ ๊ตฌ์กฐ์ ํน์ง์ธ ์กฐํญ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ํ์ฉํ๋ domain-specific lightweight GraphRAG์ ๊ฐ๊น์ต๋๋ค.
๋ฐ๋ผ์ ์ด ํ๋ก์ ํธ์ ํต์ฌ ๊ฐ์น๋ "GraphRAG๋ฅผ ์ฌ์ฉํ๋ค"๋ณด๋ค ๋ค์ ๋ฌธ์ฅ์ ๋ ๊ฐ๊น์ต๋๋ค.
๋ฒ๋ น ์กฐํญ ๊ฐ ์ฐธ์กฐ ๊ทธ๋ํ์ hybrid retrieval์ ๊ฒฐํฉํด ๊ธ์ต๋ณด์ ๊ท์ ์ง์์๋ต์ ๊ฒ์ ๋ณ๋ชฉ์ ์ค์ด๋ RAG ์์คํ
- ์ ๋ RAG ํ๊ฐ๋ ์์ง answer-only PPL ์ค์ฌ์ด๋ฉฐ, retrieval metric๊ณผ faithfulness metric ๋ณด๊ฐ์ด ํ์ํฉ๋๋ค.
- ์ง์๋ณ retriever ์ ํ, top-k ์ ์, graph hop, context length, latency, generation token ์๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐํ tracing์ด ์์ง ๋ถ์กฑํฉ๋๋ค.
- LLM์ด ๊ฒ์ ์ ๋ต์ ๋์ ์ผ๋ก ๊ณํํ๊ณ ์์ ํ๋ agentic RAG ๊ตฌ์กฐ๋ ์์ง ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
- ํฅํ ablation study๋ก
dense only,BM25 only,hybrid,hybrid + graph,hybrid + graph + rerank/MMR๋ฅผ ๋น๊ตํ๋ฉด ํ๋ก์ ํธ์ ๊ธฐ์ฌ๊ฐ ๋ ๋ช ํํด์ง๋๋ค.
GraphRAG ยท Hybrid Search ยท Dense Retrieval ยท BM25 ยท FAISS ยท Korean Legal RAG ยท Financial Security Regulation ยท EXAONE ยท LoRA ยท MITRE ATT&CK