lily_fast_api / PROMPT.md
gbrabbit's picture
Fresh start for HF Spaces deployment
526927a

Lily LLM RAG μ‹œμŠ€ν…œ 개발 - μƒˆ μ±„νŒ…μ°½ AI ν”„λ‘¬ν”„νŠΈ

🎯 ν”„λ‘œμ νŠΈ λͺ©ν‘œ

PDF λ¬Έμ„œμ˜ μˆ˜ν•™ 문제 해석 및 해결을 μœ„ν•œ RAG μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ CPU ν™˜κ²½μ—μ„œ μž‘μ€ ν…ŒμŠ€νŠΈ λ°μ΄ν„°λ‘œ λΉ λ₯Έ 검증을 μ™„λ£Œν–ˆμœΌλ©°, λ‹€μŒ λ‹¨κ³„λ‘œ GPU μ„œλ²„ 배포 및 μ‹€μ œ 문제 ν•΄κ²° λŠ₯λ ₯ ν–₯상을 μ§„ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ“‹ ν˜„μž¬ 상황

βœ… μ™„λ£Œλœ μž‘μ—…

  1. ν…μŠ€νŠΈ 기반 RAG μ‹œμŠ€ν…œ ꡬ좕

    • PDF ν…μŠ€νŠΈ 직접 μΆ”μΆœ (이미지 OCR λŒ€μ‹ )
    • RAG ν”„λ‘œμ„Έμ„œ λ‹¨μˆœν™” (λ©€ν‹°λͺ¨λ‹¬ 처리 제거)
    • LLM 없이도 μž‘λ™ν•˜λŠ” κ΅¬μ‘°ν™”λœ 응닡
  2. ν…ŒμŠ€νŠΈ μ‹œμŠ€ν…œ ꡬ좕

    • μ„œλ²„ μ—°κ²° 및 λ¬Έμ„œ μ—…λ‘œλ“œ ν…ŒμŠ€νŠΈ
    • ν…μŠ€νŠΈ 기반 RAG 쿼리 ν…ŒμŠ€νŠΈ
    • ꡬ체적인 μˆ˜ν•™ 문제 질문 ν…ŒμŠ€νŠΈ
  3. μ„±κ³Ό 확인

    • PDF ν…μŠ€νŠΈ μΆ”μΆœ μ™„λ²½ μž‘λ™
    • 검색 κΈ°λŠ₯ μ™„λ²½ μž‘λ™ (5개 검색 κ²°κ³Ό)
    • λΉ λ₯Έ 처리 (μ¦‰μ‹œ 응닡)
    • μ‹€μ œ μˆ˜ν•™ 문제 λ‚΄μš© μ •ν™•νžˆ μΆ”μΆœ

πŸ”§ ν•΄κ²°λœ λ¬Έμ œλ“€

  1. 토큰 ID 문제: ν…μŠ€νŠΈ 기반으둜 ν•΄κ²°
  2. PDF ν…μŠ€νŠΈ μΆ”μΆœ: μ‹€μ œ 문제 λ‚΄μš© μΆ”μΆœ 성곡
  3. λΉ λ₯Έ 검증: μž‘μ€ ν…ŒμŠ€νŠΈ λ°μ΄ν„°λ‘œ 성곡
  4. κ΅¬μ‘°ν™”λœ 응닡: 문제 뢄석과 ν•΄κ²° 방법 포함

πŸ“ μ£Όμš” 파일 ꡬ쑰

Core νŒŒμΌλ“€

  • lily_llm_core/document_processor.py: PDF ν…μŠ€νŠΈ μΆ”μΆœ κ°œμ„ 
  • lily_llm_core/rag_processor.py: RAG ν”„λ‘œμ„Έμ„œ λ‹¨μˆœν™”
  • lily_llm_api/app_v2.py: μ—”λ“œν¬μΈνŠΈ μˆ˜μ •

ν…ŒμŠ€νŠΈ νŒŒμΌλ“€

  • test_simple_rag.py: κΈ°λ³Έ μ—°κ²° ν…ŒμŠ€νŠΈ
  • test_text_only_rag.py: ν…μŠ€νŠΈ 기반 RAG ν…ŒμŠ€νŠΈ
  • test_specific_questions.py: ꡬ체적 질문 ν…ŒμŠ€νŠΈ
  • test_llm_rag.py: LLM 포함 ν…ŒμŠ€νŠΈ

πŸš€ λ‹€μŒ 단계 μš”μ²­μ‚¬ν•­

1. GPU μ„œλ²„ 배포 μ€€λΉ„

  • ν˜„μž¬ CPU ν™˜κ²½μ—μ„œ ν…ŒμŠ€νŠΈ μ™„λ£Œ
  • GPU ν™˜κ²½μ—μ„œμ˜ μ„±λŠ₯ μ΅œμ ν™”
  • μ„œλ²„ 배포 μžλ™ν™” 슀크립트 μž‘μ„±

2. LLM 톡합 κ°œμ„ 

  • Kanana λͺ¨λΈμ˜ 토큰 λ””μ½”λ”© 문제 ν•΄κ²°
  • μ‹€μ œ μˆ˜ν•™ 문제 풀이 λŠ₯λ ₯ ν–₯상
  • 더 μ •ν™•ν•œ λ‹΅λ³€ 생성

3. μ‹€μ œ 문제 ν•΄κ²° λŠ₯λ ₯ ν–₯상

  • μˆ˜ν•™ 문제 풀이 둜직 κ°œμ„ 
  • 단계별 ν•΄κ²° κ³Όμ • μ œμ‹œ
  • μ •λ‹΅κ³Ό ν•΄μ„€ 제곡

4. μ„±λŠ₯ μ΅œμ ν™”

  • 더 큰 데이터셋 처리
  • 응닡 속도 κ°œμ„ 
  • λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ μ΅œμ ν™”

πŸ’‘ 기술적 μš”κ΅¬μ‚¬ν•­

ν˜„μž¬ ν™˜κ²½

  • OS: Windows 10
  • Python: κ°€μƒν™˜κ²½ (lily_llm_env)
  • μ„œλ²„: FastAPI (포트 8001)
  • λͺ¨λΈ: Kanana-1.5-v-3b-instruct
  • 벑터 μŠ€ν† μ–΄: FAISS

λͺ©ν‘œ ν™˜κ²½

  • GPU μ„œλ²„: 더 λΉ λ₯Έ 처리 속도
  • ν™•μž₯μ„±: 더 큰 λ¬Έμ„œ 처리
  • μ •ν™•μ„±: μ‹€μ œ 문제 ν•΄κ²° λŠ₯λ ₯

πŸ” ν˜„μž¬ ν…ŒμŠ€νŠΈ κ²°κ³Ό

μ„±κ³΅ν•œ κΈ°λŠ₯λ“€

  • βœ… PDF ν…μŠ€νŠΈ μΆ”μΆœ μ™„λ²½: μ‹€μ œ μˆ˜ν•™ 문제 λ‚΄μš© μ •ν™•νžˆ μΆ”μΆœ
  • βœ… 검색 κΈ°λŠ₯ μ™„λ²½: κ΄€λ ¨ λ¬Έμ œλ“€μ„ μ •ν™•νžˆ 찾아냄
  • βœ… λΉ λ₯Έ 처리: μ¦‰μ‹œ 응닡 (LLM 없이도 μž‘λ™)
  • βœ… κ΅¬μ‘°ν™”λœ 응닡: 문제 뢄석과 ν•΄κ²° 방법 μ œμ‹œ
  • βœ… μ •ν™•ν•œ 문제 λ§€μΉ­: 23번, 24번, 15번 문제 μ •ν™•νžˆ 찾음

ν…ŒμŠ€νŠΈ κ²°κ³Ό

  • λ¬Έμ„œ μ—…λ‘œλ“œ: 12개 청크 성곡
  • 검색 κ²°κ³Ό: 5κ°œμ”© μ •ν™•νžˆ λ°˜ν™˜
  • 응닡 μ‹œκ°„: μ¦‰μ‹œ (토큰 ID 문제 해결됨)
  • 문제 인식: μ‹€μ œ μˆ˜ν•™ 문제 λ‚΄μš© μ •ν™•νžˆ μΆ”μΆœ

πŸ“ μš”μ²­μ‚¬ν•­

μƒˆλ‘œμš΄ AI μ–΄μ‹œμŠ€ν„΄νŠΈμ—κ²Œ λ‹€μŒ μž‘μ—…μ„ μš”μ²­ν•©λ‹ˆλ‹€:

  1. ν˜„μž¬ μ½”λ“œλ² μ΄μŠ€ 뢄석: μœ„μ—μ„œ μ–ΈκΈ‰λœ νŒŒμΌλ“€μ„ κ²€ν† ν•˜μ—¬ ν˜„μž¬ μƒνƒœ νŒŒμ•…
  2. GPU μ„œλ²„ 배포 κ³„νš 수립: ν˜„μž¬ CPU ν…ŒμŠ€νŠΈ μ™„λ£Œ μƒνƒœμ—μ„œ GPU ν™˜κ²½μœΌλ‘œ μ „ν™˜
  3. LLM 톡합 κ°œμ„ : 토큰 λ””μ½”λ”© 문제 ν•΄κ²° 및 μ‹€μ œ 문제 ν•΄κ²° λŠ₯λ ₯ ν–₯상
  4. μ„±λŠ₯ μ΅œμ ν™”: 더 큰 데이터셋 처리 및 응닡 속도 κ°œμ„ 
  5. μ‹€μ œ 문제 ν•΄κ²°: μˆ˜ν•™ 문제 풀이 둜직 κ°œμ„  및 μ •ν™•ν•œ λ‹΅λ³€ 생성

ν˜„μž¬ "μž‘μ€ ν…ŒμŠ€νŠΈ λ°μ΄ν„°λ‘œ λΉ λ₯Έ 검증" λͺ©ν‘œλŠ” λ‹¬μ„±ν–ˆμœΌλ―€λ‘œ, λ‹€μŒ 단계인 "μ‹€μ œ 문제 ν•΄κ²° λŠ₯λ ₯ ν–₯상"κ³Ό "GPU μ„œλ²„ 배포"에 μ§‘μ€‘ν•΄μ£Όμ„Έμš”.