๐ค KUKU ์ฑ๋ด Overview
์ธ๊ตญ๋ฏผ KUKU (OURS)
- ์๋๋ฆฌ์ค 1 : ์ ์ ์ฟผ๋ฆฌ๊ฐ ์ผ์๋ํ์ผ ๋
์ ์ ์ฟผ๋ฆฌ๊ฐ ์ง๋ฌธ์ด ์๋, โ์๋ , โ๋ฐฐ๊ณ ํโ, โ์ค๋ ๊ธฐ๋ถ์ด ์ข์โ ๊ฐ์ casual ๋ํ์ผ ๋ ํ์ธํ๋๋ LLM์ผ๋ก ๋ง๋ค์ด์ง ๋ผ์ฐํฐ๋ฅผ ํตํด ์ฟผ๋ฆฌ๊ฐ โ์ง๋ฌธ์ธ์ง ์๋์งโ๋ก ๋ถ๋ฅ๋๋ค. causal ๋ํ์ผ ๋๋ โ๊ตญ๋ฏผ๋ํ๊ต ํ์๋ค๊ณผ ๋ํ๋ฅผ ํ๋ ์น์ ํ ์ด์์คํดํธโ ๋ผ๋ ์์คํ ๋ฉ์์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ LLM ๋ชจ๋ธ๋ก ์ ๋ฌ๋์ด ์ผ์์ ์ธ ๋ต๋ณ์ ์์ฑํ๊ณ , ์ ์ ํํ ์ ๋ฌํ๋ค.
- ์๋๋ฆฌ์ค 2 : ์ ์ ์ฟผ๋ฆฌ๊ฐ ์ง๋ฌธ์ผ ๋
์ง๋ฌธ ์ฟผ๋ฆฌ๋ ์ฐ์ ์ธ์ด์ ์๊ด ์์ด ํ๊ตญ์ด๋ก ๋ฒ์ญ๋๋ค. ๊ทธ ์ด์ ๋ ์์งํ ๊ฑฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํ๊ตญ์ด๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์, ์ฟผ๋ฆฌ์ ๋ฌธ์์ ์ ์ฌ๋ ๋น๊ต๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํจ์ด๋ค. ์์งํ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๋ฒกํฐํ ๋์ด ์๊ณ โ๊ณต์ง์ฌํญ ๊ด๋ จโ, โํ๊ต ์ํ ๊ด๋ จโ, โ๊ทธ ์ธ ์์งํ ๋ฐ์ดํฐโ ์ธ ๊ฐ์ง ๋ถ๋ฅ๋ก ๋๋ ์ ธ ์๋ค. ๊ฐ ๋ฐ์ดํฐ ์ ์ฅ์์ ์ฐ๋ฆฌ๊ฐ ์ค์ ํ ๊ฐ์ค์น์ ๋ฐ๋ผ langchain์ ์์๋ธ ๊ฒ์๊ธฐ๋ฅผ ์ํ๋๋ค. ์์ K๊ฐ(k=10)๊ฐ์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ฌ LLM์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์์ฑํ๋ค. ์ดํ, ์ด ๋ต๋ณ์ โ๋ต๋ณ์ด ์ ์ ํ์ง ์๋์งโ ๋ถ๋ฅ๋ฅผ ์ํด Fine tuning๋ LLM์ ์ ๋ฌ๋๋ค.
- ์๋๋ฆฌ์ค 2-1 : ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ์ ์ ํ ๋
์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ์ ์ ํ ๋, ํ๊ตญ์ด๋ก ์์ฑ๋ ๋ต๋ณ์ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ์ธ์ด๋ก ๋ฒ์ญ ๋์ด ์ฌ์ฉ์์๊ฒ ์ ๋ฌ ๋๋ค.
- ์๋๋ฆฌ์ค 2-2 : ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ์ ์ ํ์ง ์์ ๋
์ด์ ์ ์์ฑ๋ ๋ต๋ณ์ ๋ฒ๋ฆฌ๊ณ ๊ตฌ๊ธ ๊ฒ์ ๊ธฐ๋ฐ RAG ์์คํ โTavily Search APIโ๋ฅผ ํตํด ์๋กญ๊ฒ ๋ต๋ณ์ ๊ตฌ์ฑํ๋ค. ์ดํ ์์ฑ๋ ๋ต๋ณ์ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ์ธ์ด๋ก ๋ฒ์ญ ํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ค.
Simple RAG
Usage
๋ค์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์ ํ
1. ์ธ๊ตญ๋ฏผ App (์ถ์ฒ) gpt-4o ๋ชจ๋ธ
ํ๋ ์ด์คํ ์ด์ ์ธ๊ตญ๋ฏผ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ค์ด๋ฐ์ ์ฑ๋ด์ ์ฌ์ฉ
2. Python
์ด ๋ฐฉ๋ฒ์ API KEY๊ฐ ํ์ ํฉ๋๋ค!
git clone https://github.com/kookmin-sw/capstone-2024-30.git
cd YOUR PATH/ai/
pip install -r requirements.txt
- ๋ฒกํฐ ์ ์ฅ์ FAISS ํด๋๋ฅผ
/ai
์ ์์น ๋ค์ด๋ก๋ ๋งํฌ - /ai์
.env
ํ์ผ ์์ฑOPENAI_API_KEY = LANGCHAIN_API_KEY = TAVILY_API_KEY = CHANNEL_ID = DEEPL_API_KEY = PAPAGO_ID = PAPAGO_API_KEY =
python run_chatbot.py
3. DiscordBot gpt-3.5-turbo
- ๋์ค์ฝ๋ ์ฑ๋์ KUKU ๋ด ์ด๋ ํ ๋ช ๋ น์ด๋ฅผ ํตํด ์ฑํ
- ๋ด ์ด๋ ๊ถํ ํ์ (์๋ฒ ๊ด๋ฆฌ์)
- ๋ด ์ด๋ ๋งํฌ : https://discord.com/oauth2/authorize?client_id=1229021729192677488
!p ์ง๋ฌธ ๋ด์ฉ
๋ช ๋ น์ด๋ก ์ฑํ ๊ฐ๋ฅ- (๋น์ฉ ๋ฌธ์ ๋ก gpt-3.5-turbo๋ฅผ ์ฌ์ฉ์ค. ์ธ๊ตญ๋ฏผ ์ฑ๊ณผ ์ฑ๋ฅ์ด ๋ค๋ฅผ ์ ์์)
Metrics
Ragas is a framework that helps you evaluate your Retrieval Augmented Generation (RAG) pipelines. RAG denotes a class of LLM applications that use external data to augment the LLMโs context. There are existing tools and frameworks that help you build these pipelines but evaluating it and quantifying your pipeline performance can be hard. This is where Ragas (RAG Assessment) comes in.
๋น๊ต ๋ชจ๋ธ (Comparison model)
- ์ธ๊ตญ๋ฏผ KUKU (OURS)
- SimpleRAG
- ChatGPT(gpt-3.5-turbo)
- ON๊ตญ๋ฏผ ์ฟ ๋ฏผ์ด
ํ ์คํธ์ ์ฌ์ฉ๋ ์ฝ 200๊ฐ์ ์ง๋ฌธ์ question_list.md ์์ ํ์ธ ๊ฐ๋ฅ
Faithfulness
This measures the factual consistency of the generated answer against the given context. It is calculated from answer and retrieved context. The answer is scaled to (0,1) range. Higher the better.
The generated answer is regarded as faithful if all the claims that are made in the answer can be inferred from the given context. To calculate this a set of claims from the generated answer is first identified. Then each one of these claims are cross checked with given context to determine if it can be inferred from given context or not. The faithfulness score is given by divided by
- Faithfulness๋ ์ฑ๋ด์ ๋ต๋ณ ๋น์จ์ด ์ผ๋ง๋ ์ฌ์ค์ ๊ธฐ๋ฐํ๋์ง ํ๊ฐํ๋ ์งํ์ด๋ค.
- 0~1 ๋ฒ์์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋์ ์๋ก ์ข๋ค
- ๋์ค์ฝ๋ ๋ด์ ํตํด ๊ตญ๋ฏผ๋ 19ํ๋ฒ์ผ๋ก ๊ตฌ์ฑ๋ โ์ธ๊ตญ๋ฏผโ ํ์์ด ์ง์ ์ฌ์ค๊ด๊ณ๋ฅผ ํ๊ฐํ์ฌ ์ธก์
Answer Relevancy
The evaluation metric, Answer Relevancy, focuses on assessing how pertinent the generated answer is to the given prompt. A lower score is assigned to answers that are incomplete or contain redundant information and higher scores indicate better relevancy. This metric is computed using the question, the context and the answer.
The Answer Relevancy is defined as the mean cosine similartiy of the original question to a number of artifical questions, which where generated (reverse engineered) based on the answer
- Answer Relevance์ ์์ฑ๋ ๋ต๋ณ์ด ์ฃผ์ด์ง ํ๋กฌํํธ์ ์ผ๋ง๋ ์ ์ ํ์ง๋ฅผ ํ๊ฐํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ๋ค.
- ๋ถ์์ ํ๊ฑฐ๋ ์ค๋ณต ์ ๋ณด๊ฐ ํฌํจ๋ ๋ต๋ณ์๋ ๋ฎ์ ์ ์๊ฐ ํ ๋น๋๊ณ , ๋ ๋์ ์ ์๋ ๋ ์ข์ ์ ํฉ์ฑ์ ๋ํ๋ธ๋ค.
- 0~1 ๋ฒ์์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋์ ์๋ก ์ข๋ค
Answer Relevance๋ Reverse Engineering์ ํตํด ๊ณ์ฐ๋๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฑ๋ด์๊ฒ ์ง๋ฌธ ํ ๋ต๋ณ์ ๋ฐ๋๋ค.
- ๋ต๋ณ์ llm์ ์ ๋ ฅ์ผ๋ก ๋ฃ์ด ์ง๋ฌธ์ ์์ธกํ๊ฒ ํ๋ค.
- ์์ธก๋ ์ง๋ฌธ๊ณผ ์๋์ ์ง๋ฌธ์ ์ ์ฌ๋(์ฝ์ฌ์ธ ์ ์ฌ๋)๋ฅผ ๋น๊ตํ๋ค.
Latency
- ์ฑ๋ด์๊ฒ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ธ ํ ๋ต๋ณ ์๋ต๊น์ง ๊ฑธ๋ฆฐ ํ๊ท ์์ ์๊ฐ(sec)
- ๋ฎ์ ์๋ก ์ข๋ค.
Test Sample
Test Log
chatbot_result.xlsx
LangSmith Tracing
LangSmith๋ฅผ ํตํด ๋๋ฒ๊น ๋ฐ ์ถ์
- ๋ญ์ค๋ฏธ์ค๋ฅผ ํตํด Langchain์ ์ฒด์ธ๊ฐ์ ์ ์ถ๋ ฅ ํ์ธ ๊ฐ๋ฅ
- Retriever์ ๊ฒฐ๊ณผ๋ก ์ด๋ค ๋ฌธ์๊ฐ ๊ฒ์๋์๋์ง ํ์ธ ๊ฐ๋ฅ
์์)