cert-study-app / docs /07_troubleshooting.md
Kentlo's picture
Sync from GitHub b098d17dbed1a6386c212d28b4bfa6138ad59d75
88c7275 verified
|
Raw
History Blame Contribute Delete
9.24 kB

07. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

์ด ๋ฌธ์„œ๋Š” ๊ฐœ๋ฐœ ์ค‘ ์ž์ฃผ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์™€ ํ™•์ธ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Docker๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๋•Œ

์ฆ์ƒ

docker compose up --build ์‹คํ–‰ ์‹œ Docker daemon ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

Docker Desktop์ด ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

docker info

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • Docker Desktop์„ ์‹คํ–‰ํ•œ๋‹ค.
  • Docker๊ฐ€ ์™„์ „ํžˆ ์‹œ์ž‘๋œ ๋’ค ๋‹ค์‹œ ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค.
  • ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ผฌ์˜€์œผ๋ฉด docker compose down ํ›„ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.

Streamlit ์•ฑ์— ์ ‘์†๋˜์ง€ ์•Š์„ ๋•Œ

์ฆ์ƒ

http://localhost:8501์— ์ ‘์†ํ•ด๋„ ํ™”๋ฉด์ด ์—ด๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

docker compose ps

๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

docker compose logs cert-study-app

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • ์•ฑ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • 8501 ํฌํŠธ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • ํ•„์š”ํ•˜๋ฉด http://127.0.0.1:8501๋กœ๋„ ์ ‘์†ํ•ด ๋ณธ๋‹ค.

๋กœ์ปฌ ๊ฐ€์ƒํ™˜๊ฒฝ์˜ streamlit ์‹คํ–‰ ํŒŒ์ผ์ด ์˜ˆ์ „ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์•„๋ž˜์ฒ˜๋Ÿผ Python ๋ชจ๋“ˆ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

python -m streamlit run streamlit_app.py

PostgreSQL ์—ฐ๊ฒฐ ์˜ค๋ฅ˜

์ฆ์ƒ

์•ฑ ์‹คํ–‰ ์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

PostgreSQL ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

docker compose ps postgres

๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

docker compose logs postgres

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • postgres ์ปจํ…Œ์ด๋„ˆ๊ฐ€ healthy ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • DATABASE_URL์ด Docker Compose ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ๋กœ์ปฌ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•  ๋•Œ๋Š” host๊ฐ€ postgres๊ฐ€ ์•„๋‹ˆ๋ผ localhost์—ฌ์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

SQLite fallback ๊ด€๋ จ ํ˜ผ๋™

์ฆ์ƒ

PostgreSQL์„ ์“ฐ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ SQLite ํŒŒ์ผ์ด ์ƒ๊ธฐ๊ฑฐ๋‚˜, ๋ฐ˜๋Œ€๋กœ SQLite fallback์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ค๋ช…

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” PostgreSQL ์‚ฌ์šฉ์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. SQLite๋Š” ๊ฐœ๋ฐœ ์ค‘ ์ž„์‹œ fallback ์šฉ๋„์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

PostgreSQL์„ ์‚ฌ์šฉํ•  ๋•Œ:

DATABASE_URL=postgresql+pg8000://cert_study:cert_study@postgres:5432/cert_study

SQLite fallback์„ ๊ผญ ํ—ˆ์šฉํ•ด์•ผ ํ•  ๋•Œ:

CERT_STUDY_DB_FALLBACK=1

์šด์˜ ๋˜๋Š” ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” PostgreSQL์„ ๊ธฐ์ค€์œผ๋กœ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

attempt to write a readonly database ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๋•Œ

๊ธฐ์กด SQLite ํŒŒ์ผ ๊ถŒํ•œ ๋•Œ๋ฌธ์— seed ๊ฐฑ์‹ ์ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅด๊ฒŒ ํ™”๋ฉด๋งŒ ํ™•์ธํ•˜๋ ค๋ฉด ์ƒˆ ์ž„์‹œ DB๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

DATABASE_URL=sqlite:////tmp/cert-study-local-check.db \
  python -m streamlit run streamlit_app.py

๊ธฐ์กด DB๋ฅผ ๊ณ„์† ์“ฐ๋ ค๋ฉด data/questions.db ํŒŒ์ผ ๊ถŒํ•œ๊ณผ ์†Œ์œ ์ž๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Airflow ํ™”๋ฉด์— ์ ‘์†๋˜์ง€ ์•Š์„ ๋•Œ

์ฆ์ƒ

http://localhost:8080์— ์ ‘์†ํ•ด๋„ Airflow ํ™”๋ฉด์ด ์—ด๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

docker compose ps airflow-webserver airflow-scheduler
docker compose logs airflow-webserver

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • airflow-init์ด ๋จผ์ € ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • 8080 ํฌํŠธ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ ์ค‘์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • Airflow DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•œ๋‹ค.

PDF ์ฒ˜๋ฆฌ ์ž‘์—…์ด ๋ฉˆ์ถ˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ๋•Œ

์ฆ์ƒ

PDF ์—…๋กœ๋“œ ํ›„ ์ฒ˜๋ฆฌ ํ˜„ํ™ฉ์ด ์˜ค๋ž˜ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

  • Airflow DAG๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • ingestion_jobs์˜ stage, message, current, total ๊ฐ’์ด ๋ฐ”๋€Œ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • Airflow ๋กœ๊ทธ์—์„œ ์‹คํŒจ ๋‹จ๊ณ„๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • ํฐ PDF๋Š” ํŒŒ์‹ฑ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • LLM ๋˜๋Š” ์ด๋ฏธ์ง€ ๋ถ„์„์„ ์ผœ๋ฉด ๋” ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์‹คํŒจํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ž‘์—…์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋จผ์ € ํ™•์ธํ•œ๋‹ค.

๋ฌธ์ œ ํŒŒ์‹ฑ ๊ฒฐ๊ณผ๊ฐ€ ์ด์ƒํ•  ๋•Œ

์ฆ์ƒ

๋ฌธ์ œ ๋ณธ๋ฌธ์ด ์ž˜๋ฆฌ๊ฑฐ๋‚˜, ๋ณด๊ธฐ๊ฐ€ ๋น ์ง€๊ฑฐ๋‚˜, ์ •๋‹ต์ด ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

  • ํ’ˆ์งˆ ๋ฆฌํฌํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • quality_score, quality_status, quality_issues ๊ฐ’์„ ํ™•์ธํ•œ๋‹ค.
  • ์›๋ณธ PDF ํ…์ŠคํŠธ ์ถ”์ถœ์ด ๊ฐ€๋Šฅํ•œ PDF์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • ํŒŒ์‹ฑ ๊ทœ์น™์„ ๊ฐœ์„ ํ•œ๋‹ค.
  • OCR์ด ํ•„์š”ํ•œ PDF์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • ๋ฌธ์ œ ๋ฒˆํ˜ธ ํŒจํ„ด๊ณผ ๋ณด๊ธฐ ํŒจํ„ด์„ ๋” ๋ช…ํ™•ํžˆ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ LLM์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋ณด๋‹ค, ์‹คํŒจ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋ฌธ์ œ๋งŒ ๋ณด์ •ํ•˜๋Š” ๋ฐฉํ–ฅ์ด ์ข‹๋‹ค.

๊ณตํ†ต ์ง€๋ฌธ์ด ๋ณด์ด์ง€ ์•Š์„ ๋•Œ

์ฆ์ƒ

์ผ€์ด์Šค ์Šคํ„ฐ๋”” ๋ฌธ์ œ์ธ๋ฐ ๊ณตํ†ต ์ง€๋ฌธ ๋ณด๊ธฐ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

  • questions_seed.json์— parent_stem์ด ๋“ค์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์•ฑ์ด ์˜ค๋ž˜๋œ DB๋ฅผ ๋ณด๊ณ  ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•œ๋‹ค.
  • seed refresh๊ฐ€ DB์— ์“ธ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • Space ๋˜๋Š” ๋กœ์ปฌ ์•ฑ์„ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.
  • ๋กœ์ปฌ์—์„œ๋Š” ์ž„์‹œ SQLite DB๋กœ ๋‹ค์‹œ ์‹คํ–‰ํ•ด seed ์ž์ฒด๊ฐ€ ์ •์ƒ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • ๊ธฐ์กด DB๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์ด๋ฉด ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ƒˆ DB๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Yes/No ๋ฌธ์ œ๊ฐ€ ๊ฐ๊ด€์‹์ฒ˜๋Ÿผ ๋ณด์ผ ๋•Œ

์ฆ์ƒ

๋‹ค์Œ ๊ฐ ์ง„์ˆ ์— ๋Œ€ํ•ด ์˜ˆ/์•„๋‹ˆ์˜ค๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ A/B/C ๋ณด๊ธฐ์ฒ˜๋Ÿผ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์„ค๋ช…

Yes/No ์ง„์ˆ ํ˜• ๋ฌธ์ œ๋Š” ์ผ๋ฐ˜ ๊ฐ๊ด€์‹๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ง„์ˆ ๋ณ„ ์˜ˆ / ์•„๋‹ˆ์˜ค ์ž…๋ ฅ UI๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

  • question_type์ด Hotspot (True/False) ๋˜๋Š” ์œ ์‚ฌํ•œ ๊ฐ’์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์ •๋‹ต์ด Y,N,Y ๋˜๋Š” [{key, value}] ํ˜•ํƒœ๋กœ ์ •๊ทœํ™”๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • 1-A / 1-B / 2-A / 2-B ํ˜•์‹์€ ํ•ญ๋ชฉ๋ณ„ ์„ ํƒ UI๋กœ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค.

ํ™•์ธ ๋ช…๋ น

๋ฌธ์ œ ์œ ํ˜• alias์™€ ์ •๋‹ต ์ •๊ทœํ™” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•œ๋‹ค.

python -m pytest tests/test_answer_normalizer.py tests/test_question_type_metadata_service.py

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • ์ƒˆ ๋ฌธ์ œ ์œ ํ˜• ๋ฌธ์ž์—ด์ด ์ถ”๊ฐ€๋˜๋ฉด question_type_metadata_service.py์˜ alias์— ๋จผ์ € ๋“ฑ๋กํ•œ๋‹ค.
  • ์ฑ„์ ์ด ์ด์ƒํ•˜๋ฉด ํ™”๋ฉด ์ฝ”๋“œ๋ณด๋‹ค answer_normalizer.py์—์„œ chosen๊ณผ answer๊ฐ€ ๊ฐ™์€ ๊ธฐ์ค€์œผ๋กœ ์ •๊ทœํ™”๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • Yes/No๋Š” ์ผ๋ฐ˜ ๊ฐ๊ด€์‹ A/B/C๊ฐ€ ์•„๋‹ˆ๋ผ Y,N,Y์ฒ˜๋Ÿผ ํ–‰๋ณ„ ๋‹ต์•ˆ์œผ๋กœ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ์ค€์ด๋‹ค.

๋ชจ๋ฐ”์ผ ํ™”๋ฉด์ด ๋ณต์žกํ•˜๊ฒŒ ๋ณด์ผ ๋•Œ

์ฆ์ƒ

ํœด๋Œ€ํฐ์—์„œ ๋ฉ”๋‰ด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ฑฐ๋‚˜, ๋‹ต์•ˆ ์„ ํƒ ์˜์—ญ์ด ์ž‘์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • ํ™ˆ ํ™”๋ฉด์€ ๋ฌธ์ œํ’€์ด, ์˜ค๋‹ต/๋ณต์Šต, ๊ฐœ๋… ์ •๋ฆฌ ๊ฐ™์€ ํ•™์Šต ๊ธฐ๋Šฅ์„ ๋จผ์ € ๋ณด์—ฌ์ค€๋‹ค.
  • PDF ์—…๋กœ๋“œ, ์ฒ˜๋ฆฌ ํ˜„ํ™ฉ, AI ์ƒ‰์ธ์€ ์—…๋กœ๋“œ/๊ด€๋ฆฌ ์˜์—ญ์œผ๋กœ ๋ฌถ๋Š”๋‹ค.
  • ๋‹ต์•ˆ ์„ ํƒ UI๋Š” ์ตœ์†Œ 44px ์ด์ƒ์˜ ํ„ฐ์น˜ ์˜์—ญ์„ ์œ ์ง€ํ•œ๋‹ค.
  • ๋ฌธ์ œ ์œ ํ˜•๋ณ„๋กœ radio, checkbox, selectbox, Yes/No matrix๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

Chroma ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์ด์ƒํ•  ๋•Œ

์ฆ์ƒ

์œ ์‚ฌ ๋ฌธ์ œ๊ฐ€ ์ž˜ ๋‚˜์˜ค์ง€ ์•Š๊ฑฐ๋‚˜, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

  • ๋ฌธ์ œ๊ฐ€ Chroma์— ์ƒ‰์ธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์‚ฌ์šฉ ์ค‘์ธ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์ด ์ƒ‰์ธํ•  ๋•Œ์˜ ๋ชจ๋ธ๊ณผ ๊ฐ™์€์ง€ ํ™•์ธํ•œ๋‹ค.
  • chroma_db ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์œ ์ง€๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • ๊ฐ™์€ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ๋กœ ๋‹ค์‹œ ์ƒ‰์ธํ•œ๋‹ค.
  • ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ๋ณ„๋กœ ์ปฌ๋ ‰์…˜์„ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • PostgreSQL์—๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ Chroma์—๋งŒ ์—†๋‹ค๋ฉด ์ƒ‰์ธ ์ž‘์—…์„ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.

AI ์งˆ๋ฌธ ๊ธฐ๋Šฅ์—์„œ ํ™”๋ฉด์ด ๊นจ์งˆ ๋•Œ (2026-07-04 ์ถ”๊ฐ€)

์ฆ์ƒ

๋ฌธ์ œ ํ’€์ด ์ค‘ "์งˆ๋ฌธํ•˜๊ธฐ" ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํŽ˜์ด์ง€ ์ „์ฒด๊ฐ€ ์—๋Ÿฌ๋กœ ๊นจ์ง‘๋‹ˆ๋‹ค.

์›์ธ๊ณผ ํ™•์ธ

โ‘  ๋ฌธ์ œ ์ƒ‰์ธ(ChromaDB)์ด ๋น„์–ด ์žˆ์„ ๋•Œ

ํ•œ ๋ฒˆ๋„ AI ์ƒ‰์ธ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ๊ฒ€์ƒ‰ํ•˜๋ฉด n_results > n_documents ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.

โ‘ก Ollama๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์„ ๋•Œ

๋ชจ๋ธ ๋ฏธ์„ค์น˜ ๋˜๋Š” ์„œ๋ฒ„ ์ค‘์ง€ ์ƒํƒœ์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.

curl http://localhost:11434/api/tags

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • AI ์ƒ‰์ธ ๋ฉ”๋‰ด์—์„œ ๋จผ์ € ์ƒ‰์ธ์„ ์‹คํ–‰ํ•œ๋‹ค.
  • Ollama ์‹คํ–‰ ์ƒํƒœ์™€ ๋ชจ๋ธ ์„ค์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค.
  • ์•ฑ์ด ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋ฉด ํ™”๋ฉด์—์„œ URLยท๋ชจ๋ธ๋ช… ํžŒํŠธ๋ฅผ ํ™•์ธํ•œ๋‹ค.

2026-07-04 ์ˆ˜์ •: ์ด์ œ ๋นˆ ์ปฌ๋ ‰์…˜์ด๊ฑฐ๋‚˜ Ollama ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋„ ํŽ˜์ด์ง€๊ฐ€ ๊นจ์ง€์ง€ ์•Š๊ณ  ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Ollama ๋˜๋Š” LLM ๊ด€๋ จ ์˜ค๋ฅ˜

์ฆ์ƒ

LLM ํŒŒ์‹ฑ, ์„ค๋ช… ์ƒ์„ฑ, ์ด๋ฏธ์ง€ ๋ถ„์„ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธํ•  ๊ฒƒ

ollama list

ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

  • ํ•„์š”ํ•œ ๋ชจ๋ธ์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ ‘๊ทผํ•˜๋Š” OLLAMA_BASE_URL์ด ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • LLM์„ ๋„๊ณ  ๊ทœ์น™ ๊ธฐ๋ฐ˜ ํŒŒ์‹ฑ๋งŒ์œผ๋กœ ๋จผ์ € ์‹คํ–‰ํ•ด ๋ณธ๋‹ค.

Git์— ์˜ฌ๋ฆฌ๋ฉด ์•ˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ

๋‹ค์Œ ๋ฐ์ดํ„ฐ๋Š” ์‹คํ–‰ ์ค‘ ์ƒ์„ฑ๋˜๋Š” ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ๋ณดํ†ต Git์— ์˜ฌ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์—…๋กœ๋“œ PDF
  • ํŒŒ์‹ฑ ๊ฒฐ๊ณผ JSON
  • Chroma ์ธ๋ฑ์Šค
  • PostgreSQL ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ
  • Airflow ๋กœ๊ทธ
  • Airflow DB
  • ๊ฐœ์ธ .env ํŒŒ์ผ

GitHub์—๋Š” ์ฝ”๋“œ์™€ ๋ฌธ์„œ, ์„ค์ • ์˜ˆ์‹œ ์ค‘์‹ฌ์œผ๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.