๐ 1. Ragas ๋?
RAGAS๋ Retrieval-Augmented Generation ์์คํ
์ ํ๊ฐํ๋ ์คํ์์ค ํ๋ ์์ํฌ๋ก, ๋จ์ผ ๋ฌธํญ ๋จ์์ ํ๊ฐ๋ถํฐ ์ ์ฒด ์์คํ
์์ค์ ํ๊ฐ๊น์ง ์ง์ํฉ๋๋ค.
ํนํ, ์ฐธ์กฐ ์๋ ํ๊ฐ(Reference-free evaluation) ๋ฐฉ์์ผ๋ก, ์ฌ๋์ด ์ง์ ํ๊ฐ ๋ฐ์ดํฐ์
์ ๊ตฌ์ถํ์ง ์์๋ ์๋์ผ๋ก ์ฑ๋ฅ์ ์ธก์ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์ฃผ์ ๋ชฉ์ :
- RAG ์์คํ ์ ์ฑ๋ฅ์ ์ธ๋ถํ๋ ์งํ๋ก ์ธก์
- ๊ฒ์ (retriever) ๋ฐ ์์ฑ (generator) ๋ชจ๋์ ํ์ง ํ์
- LLM ํ์ดํ๋ผ์ธ์ ์ง๋จ ๋ฐ ๊ฐ์
๐ 2. ํ๊ฐ ์งํ (Metrics)
RAGAS๋ ํฌ๊ฒ ๋ค์ 4๊ฐ์ง ์ฃผ์ ์งํ๋ฅผ ์ ๊ณตํฉ๋๋ค:
โ Faithfulness (์ ํ์ฑ)
- ์์ฑ๋ ์๋ต์ด ๊ฒ์๋ ์ปจํ ์คํธ์ ์ผ๋ง๋ ์ ์ผ์นํ๋์ง๋ฅผ ์ธก์
- ๊ฑฐ์ง ์ ๋ณด๋ ๋งฅ๋ฝ ์ธ ์ ๋ณด๊ฐ ์์ ๊ฒฝ์ฐ ๋ฎ์ ์ ์๋ฅผ ์ค
- ์ฌ์ฉ ๊ธฐ์ : LLM ๊ธฐ๋ฐ ํ๊ฐ ๋๋ ์์ฐ์ด ์ถ๋ก (NLI)
โก Answer Relevancy (์๋ต ๊ด๋ จ์ฑ)
- ์ง๋ฌธ์ ๋ํด ์์ฑ๋ ์๋ต์ด ์ค์ ๋ก ์ ์๋ฏธํ์ง๋ฅผ ํ๊ฐ
- ๋๋ต์ด ์ง๋ฌธ๊ณผ ๋ฌด๊ดํ๋ฉด ๋ฎ์ ์ ์
โข Context Precision (๋ฌธ๋งฅ ์ ๋ฐ๋)
- ๊ฒ์๋ ๋ฌธ์ ์ค์์ ์ง๋ฌธ์ ์ค์ ๋ก ์ ์ฉํ ๋ฌธ์๊ฐ ํฌํจ๋์๋์ง๋ฅผ ํ๊ฐ
- ๊ฒ์๊ธฐ(retriever)์ ํ์ง์ ์ธก์ ํ๋ ๋ฐ ํ์ฉ
โฃ Context Recall (๋ฌธ๋งฅ ์ฌํ์จ)
- ์๋ต ์์ฑ์ ํ์ํ ๋ฌธ์๊ฐ ๊ฒ์ ๊ฒฐ๊ณผ์ ๋น ์ง์์ด ํฌํจ๋์๋์ง๋ฅผ ํ๊ฐ
[๋ณด์กฐ ์งํ]
- Context Recall๊ณผ Context Precision์ retrieval ๋ถ๋ถ์ ์ง์ค
- Faithfulness์ Answer Relevancy๋ generation ๋ถ๋ถ์ ์ง์ค
โ๏ธ 3. RAGAS ํ๊ฐ ๊ตฌ์ฑ์์
ํ๊ฐ๋ฅผ ์ํด ์๋์ ๊ฐ์ ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค:
| ํ๋ | ์ค๋ช |
| question | ์ฌ์ฉ์ ์ง๋ฌธ |
| contexts | ๊ฒ์๋ ๋ฌธ์ ๋ฆฌ์คํธ |
| answer | ๋ชจ๋ธ์ด ์์ฑํ ์๋ต |
| ground_truth (์ ํ) | ์ ๋ต(์ฐธ์กฐ ์๋ต, ์ ํ์ ) |
๐งช 4. RAGAS ์ฌ์ฉ ๋ฐฉ๋ฒ (Python ์์)
์ค์น:
pip install ragas
ํ๊ฐ ์ฝ๋ ์์:
from ragas.metrics import faithfulness, answer_relevancy, context_precision, context_recall
from ragas import evaluate
from datasets import Dataset
# ํ๊ฐ์ฉ ๋ฐ์ดํฐ ์์ฑ
data = Dataset.from_dict({
"question": [...],
"contexts": [...], # List of strings
"answer": [...], # ๋ชจ๋ธ ์์ฑ ์๋ต
"ground_truth": [...] # ์ ํ ์ฌํญ
})
# ํ๊ฐ ์คํ
results = evaluate(data, metrics=[
faithfulness,
answer_relevancy,
context_precision,
context_recall
])
print(results)
๊ฒฐ๊ณผ ์์:
{
'faithfulness': 0.83,
'answer_relevancy': 0.91,
'context_precision': 0.75,
'context_recall': 0.65
}
๐ก 5. RAGAS์ ์ฅ์
์ฅ์ ์ค๋ช
| ์ฐธ์กฐ ์์ด ํ๊ฐ ๊ฐ๋ฅ | ์ ๋ต์ด ์๋ QA ์์คํ ์์๋ ํ์ฉ ๊ฐ๋ฅ |
| ๊ตฌ์ฑ ์์๋ณ ํ๊ฐ | Retrieval๊ณผ Generation ์ฑ๋ฅ์ ๊ตฌ๋ถํ์ฌ ๋ถ์ ๊ฐ๋ฅ |
| ํ์ฅ์ฑ | HuggingFace, LangChain, LlamaIndex ๋ฑ ๋ค์ํ ํ์ดํ๋ผ์ธ์ ์ ์ฉ ๊ฐ๋ฅ |
| ์๊ฐํ ๋ฐ ๋๋ฒ๊น ๊ฐ๋ฅ | ํน์ ์ฟผ๋ฆฌ์ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ์ถ์ ๊ฐ๋ฅ |
๐ 6. ์ฃผ์ ํ์ฉ ์ฌ๋ก
- ChatGPT Plugin์ด๋ LangChain Agent์ ์ฑ๋ฅ ์ง๋จ
- ๋ด๋ถ QA ์ฑ๋ด์ ์๋ต ํ์ง ๋ถ์
- RAG ํ์ดํ๋ผ์ธ ๊ฐ์ ์ /ํ ๋น๊ต
๐ ์ฐธ๊ณ ๋งํฌ
- ๊ณต์ GitHub: https://github.com/explodinggradients/ragas
- ๋ฌธ์: https://docs.ragas.io
'์ธ๊ณต์ง๋ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Tavily - ๊ฒ์๊ธฐ๋ฐ ํด (0) | 2025.05.26 |
|---|---|
| ํ ํฌ๋์ด์ (tokenizer) (0) | 2025.05.26 |
| ๋ฉํฐ๋ชจ๋ฌ ๋ชจ๋ธ (0) | 2025.05.26 |
| MCP(Model Context Protocol)๋? (0) | 2025.05.26 |
| ๐ ์ด๋ํฐ(Adapter)๋? (0) | 2025.05.26 |