π― μΈμ κ°μ
μΈμ
λͺ
: Insurance RAG νμ΅ μ§μΉ¨ (μΈμ
2 μμ μλ£ν)
μ§ν λ°©μ: AI κ°μ΄λ & λ©ν λ§ + κΉμ΄μλ κ°λ
μ€λͺ
κΈ°μ€ μ½λ: /Users/moon/Desktop/insupanda-rag/ ꡬ쑰 μ°Έμ‘°
νμ΅ μμΉ: κΈ°μ‘΄ μ½λ μ°Έμ‘° β κ°λ
μ€λͺ
β μ€μ΅ μλ΄ β μλ£ νμΈ
β
μλ£λ νμ΅ λ΄μ©
1λ¨κ³: νλ‘μ νΈ κ΅¬μ‘° μ΄ν΄
κ°λ
νμ΅:
RAG(Retrieval-Augmented Generation): κ²μ ν λ΅λ³ μμ± κΈ°μ
λμκ΄ μ¬μμ²λΌ κ΄λ ¨ λ¬Έμλ₯Ό λ¨Όμ μ°Ύκ³ λ΅λ³ μμ±
μΈμ΄ λ΄μ©λ³΄λ€ μ€μ λ¬Έμ μ°Έμ‘°λ‘ λ μ νν λ΅λ³ μ 곡
κΈ°μ‘΄ μ½λ λΆμ:
π insupanda-rag/src/
βββ config/ # μ€μ κ΄λ¦¬ (logger.py, settings.py)
βββ db/ # λ°μ΄ν°λ² μ΄μ€ (schema.py, sql_utils.py)
βββ models/ # RAG ν΅μ¬ λͺ¨λ (μλ² λ©, κ²μ, λ΅λ³μμ±)
βββ modules/ # λ©μΈ λΉμ¦λμ€ λ‘μ§ (handler.py, user_state.py)
βββ options/ # νμ
μ μ (enums.py, insu_name.py)
βββ prompts/ # AI ν둬ννΈ ν
νλ¦Ώ (.jinja2 νμΌλ€)
βββ services/ # λΉμ¦λμ€ μλΉμ€ λ‘μ§
βββ util/ # μ νΈλ¦¬ν° ν¨μλ€
2λ¨κ³: νλ‘μ νΈ κΈ°λ³Έ ꡬ쑰 μμ±
μ€μν λ°°μ - λͺ
λ Ήμ΄ ν¨μ¨μ±:
β μλͺ»λ λ°©μ: mkdir -pλ₯Ό κ°λ³μ μΌλ‘ μ¬λ¬ λ² μ¬μ©
β
μ¬λ°λ₯Έ λ°©μ: mkdir -p src/{config,db,models,modules,options,prompts,services,util} tests
κ°λ νμ΅:
mkdir -p: parent directories μ΅μ
μΌλ‘ μ€κ° ν΄λκΉμ§ ν λ²μ μμ±
μ€κ΄νΈ {} λ¬Έλ²: μμμ μ¬λ¬ μ΄λ¦μ ν λ²μ λμ΄νλ λ°©λ²
μ€ν λͺ
λ Ήμ΄:
bashcd /Users/moon/Desktop
mkdir insurance-rag-learning
cd insurance-rag-learning
mkdir -p src/{config,db,models,modules,options,prompts,services,util} tests
3λ¨κ³: Python ν¨ν€μ§ μ΄κΈ°ν
κ°λ
νμ΅:
Python ν¨ν€μ§: init.py νμΌλ‘ ν΄λλ₯Ό Pythonμ΄ μΈμν μ μλ ν¨ν€μ§λ‘ λ³ν
import μμ€ν
: from src.config import settings κ°μ μ½λ import κ°λ₯
κΈ°μ‘΄ μ½λ μ°Έμ‘°:
insupanda-ragμ μ΄ 7κ°μ init.py νμΌ νμΈ
λͺ¨λ μ£Όμ ν΄λμ ν¨ν€μ§ μ΄κΈ°ν νμΌ μ‘΄μ¬
μ€ν λͺ
λ Ήμ΄:
bashtouch src/init.py src/config/init.py src/db/init.py src/models/init.py src/modules/init.py src/options/init.py src/prompts/init.py src/services/init.py src/util/init.py tests/init.py
λ¬Έμ ν΄κ²°:
λΆνμν src/api/ ν΄λ λ°κ²¬ λ° μμ
rm -rf src/api λͺ
λ Ήμ΄λ‘ μ 리
4λ¨κ³: νκ²½λ³μ μ€μ νμΌ (μ§ν μ€)
κ°λ
νμ΅:
νκ²½λ³μ: νλ‘κ·Έλ¨ μ€μ κ°μ μ½λ μΈλΆμ μμ νκ² μ μ₯
보μμ±: API ν€, λΉλ°λ²νΈ λ± λ―Όκ° μ 보λ₯Ό μ½λμ μ§μ λ
ΈμΆνμ§ μμ
μ μ°μ±: κ°λ°/ν
μ€νΈ/μ΄μ νκ²½λ³λ‘ λ€λ₯Έ μ€μ μ¬μ© κ°λ₯
κΈ°μ‘΄ μ½λ μ°Έμ‘°:
src/.test.env νμΌ λ°κ²¬
λ΄μ©: DB_PASSWORD, OPENAI_API_KEY, UPSTAGE_API_KEY μ€μ
π§ νμ΅ν μ£Όμ κΈ°μ κ°λ
Python κ΄λ ¨
Pydantic: λ°μ΄ν° κ²μ¦μ μ½κ² ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬ (μ€μ κ° νμ
μλ 체ν¬)
νκ²½λ³μ: μ΄μ체μ μ μ μ₯λ μ€μ κ° (λ―Όκ° μ 보 λ³λ 보κ΄)
λ‘κΉ
: νλ‘κ·Έλ¨ μ€ν μ€ μΌμ΄λλ μΌλ€μ κΈ°λ‘ (μλ¬ μ°ΎκΈ°μ λλ²κΉ
μ νμ)
RAG κ΄λ ¨
μλ² λ©: ν
μ€νΈλ₯Ό μ«μ 벑ν°λ‘ λ³ν (μ»΄ν¨ν°κ° μλ―Έ μ΄ν΄ κ°λ₯)
λ²‘ν° κ²μ: μλ―Έκ° λΉμ·ν λ¬Έμλ₯Ό μ°Ύλ κΈ°μ (ν€μλ κ²μλ³΄λ€ λλν¨)
ν둬ννΈ ν
νλ¦Ώ: AIμκ² μ§λ¬Ένλ μ ν΄μ§ νμ
ν°λ―Έλ λͺ λ Ήμ΄
mkdir -p: ν΄λ μμ± (μ€κ° ν΄λλ ν¨κ» μμ±)
touch: λΉ νμΌ μμ±
rm -rf: ν΄λμ λ΄μ© μμ μμ
find: νμΌ κ²μ
π μμ±λ νλ‘μ νΈ κ΅¬μ‘°
μ΅μ’
ν΄λ ꡬ쑰
π insurance-rag-learning/
βββ src/
β βββ init.py
β βββ config/
β β βββ init.py
β βββ db/
β β βββ init.py
β βββ models/
β β βββ init.py
β βββ modules/
β β βββ init.py
β βββ options/
β β βββ init.py
β βββ prompts/
β β βββ init.py
β βββ services/
β β βββ init.py
β βββ util/
β βββ init.py
βββ tests/
βββ init.py
μμ±λ νμΌ λͺ©λ‘
μ΄ 10κ°μ init.py νμΌ
κΈ°μ‘΄ insupanda-ragμ μ νν λμΌν ꡬ쑰
π μ€μν νμ΅ μμΉ
AI μν
β
κ°λ
μ€λͺ
+ κΈ°μ‘΄ μ½λ μ°Έμ‘° + μ€μ΅ μλ΄
β
λͺ¨λ κΈ°μ μ©μ΄ μ΄λ³΄μμ© μ€λͺ
μ 곡
β μ§μ νμΌ μμ±μ΄λ μ½λ μμ± κΈμ§
νμ΅μ μν
β
ν°λ―Έλ λͺ
λ Ήμ΄ μ§μ μ€ν
β
Cursorμμ νμΌ/μ½λ μ§μ μμ±
β
μ΄ν΄ μλλ κ°λ
μ¦μ μ§λ¬Έ
ν¨μ¨μ± μμΉ
λͺ
λ Ήμ΄ μ€λͺ
μ κ°μ₯ ν¨μ¨μ μΈ λ°©λ²μ λ¨Όμ μ μ
νλ‘ κ°λ°μκ° μ¬μ©νλ λ°©μμΌλ‘ λ°λ‘ μλ΄
λΉν¨μ¨μ λ°©λ² β μμ νλ ν¨ν΄ μ§μ