RAG ๊ธฐ๋ฐ ๋ณดํ์ฒญ๊ตฌ์ฌ์ฌ ์๋ํ ์๋น์ค
"CLaiM"์ RAG(Retrieval-Augmented Generation) ๊ธฐ๋ฐ ์ฒญ๊ตฌ์ฌ์ฌ ์๋ํ ์๋น์ค๋ก,
์ฌ์ฉ์์ ๋ณดํ ์ฒญ๊ตฌ ์ ๋ณด์ ๋ํด ์ ์ฅ๋ ์ ์ฌํ ์ฝ๊ด์ ๊ฒ์ํ๊ณ ๋ถ์ํ์ฌ ์ฌ์ฌ ์๊ฒฌ์ ์ ๊ณตํฉ๋๋ค.
- ๋ ๋ฆฝ์ ์ธ ๋ณดํ ๋ด์ญ ๊ด๋ฆฌ: ๊ฐ ์ฌ์ฉ์๋ณ๋ก ๋ณ๋์ ๋ณดํ ์ฝ๊ด ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ
- ์ฌ์ฉ์๋ณ ๋ฒกํฐ์คํ ์ด:
faiss_db/user_{user_id}_{insurance_type}๊ตฌ์กฐ๋ก ๊ฒฉ๋ฆฌ
- ํ์ค ์์ฝ: "์ฌ์ฌ ํต๊ณผ ํ๋ฅ ๋์/๋ณดํต/๋ฎ์" ํํ๋ก ์ฆ์ ํ์ธ ๊ฐ๋ฅ
- LLM ๋ถ์: OpenAI/Qwen ๋ชจ๋ธ์ ํตํ ์ง๋ฅ์ ์ธ ์น์ธ ๊ฐ๋ฅ์ฑ ํ๋จ
- ์ฌ์ฉ์๋ณ ํ๋กํ: ๋์ด, ์ฑ๋ณ, ๊ธฐ์กด ๋ณ๋ ฅ ์ ๋ณด ํฌํจ
- ๋ ๋ฆฝ์ ์ธ ์ธ์ : ๊ฐ ์ฌ์ฉ์๋ณ๋ก ๋ณ๋์ ๋ณดํ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- SQLite ํตํฉ: ์ฌ์ฉ์ ์ ๋ณด์ ๋ณดํ ๋ฐ์ดํฐ ์๊ตฌ ์ ์ฅ
- ์ข ๋ฅ๋ณ ๋ถ๋ฅ: ์๋ช ๋ณดํ, ์ํด๋ณดํ, ์๋์ฐจ๋ณดํ 3๊ฐ ์นดํ ๊ณ ๋ฆฌ
- ์ฌ์ฉ์๋ณ ์ ๋ก๋: ๊ฐ ์ฌ์ฉ์๊ฐ ์์ ๋ง์ ์ฝ๊ด ๋ฑ๋ก ๊ฐ๋ฅ
- PDF ์ฒ๋ฆฌ: ํ ์คํธ ์ถ์ถ, ์ ๊ทํ, ์ฒญํฌ ๋ถํ
- ๋ฒกํฐ ์ ์ฅ: ์ฌ์ฉ์๋ณ FAISS ๋ฒกํฐ์คํ ์ด ์์ฑ ๋ฐ ๊ด๋ฆฌ
- RAG ๊ฒ์: ์์ 3๊ฐ ์ ์ฌ ์ฝ๊ด ๊ฒ์ (k=3)
- MMR ๋ค์์ฑ: Maximum Marginal Relevance๋ก ๊ฒฐ๊ณผ ์ต์ ํ
- AI ๋ถ์: GPT-4o / Qwen 1.5 ๊ธฐ๋ฐ ์ฌ์ฌ ์๊ฒฌ ์ ๊ณต
- ์น์ธ ํ๋ฅ : ๋์/๋ณดํต/๋ฎ์์ผ๋ก ๊ฐ๋จ ์์ฝ
- Backend: FastAPI, Python 3.13, SQLAlchemy, SQLite
- Frontend: Streamlit
- AI/ML:
- Embedding: OpenAI Embeddings, BAAI/BGE-M3 (์ ํ ๊ฐ๋ฅ)
- LLM: OpenAI GPT-4o, Qwen 1.5(0.5B) (์ ํ ๊ฐ๋ฅ)
- Vector DB: FAISS (์ฌ์ฉ์๋ณ ๋ ๋ฆฝ ์ธ๋ฑ์ค)
- Framework: LangChain
- Database: SQLite (์ฌ์ฉ์/๋ณดํ ๋ฐ์ดํฐ)
- PDF Processing: PyPDF (ํ ์คํธ ์ถ์ถ ๋ฐ ์ ๊ทํ)
- Dependencies: uvicorn, requests, python-dotenv