Spaces:
Running
04. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ
๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์
์ด ํ๋ก์ ํธ๋ PostgreSQL๊ณผ Chroma๋ฅผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
๋ ์ ์ฅ์๋ ๋ชฉ์ ์ด ๋ค๋ฆ ๋๋ค.
| ์ ์ฅ์ | ์ญํ |
|---|---|
| PostgreSQL | ๋ฌธ์ , ์ ๋ต, ํด์ค, ํ์ด ๊ธฐ๋ก์ฒ๋ผ ์ ํํ ๋ณด๊ดํด์ผ ํ๋ ๋ฐ์ดํฐ ์ ์ฅ |
| Chroma | ์ ์ฌ ๋ฌธ์ ๊ฒ์์ ์ํ ๋ฒกํฐ ๋ฐ์ดํฐ ์ ์ฅ |
PostgreSQL์ ์ฐ๋ ์ด์
PostgreSQL์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์ ํด์ง ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ฒ ์กฐํํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
์ด ํ๋ก์ ํธ์์๋ ์๋ ๋ฐ์ดํฐ๋ฅผ PostgreSQL์ ์ ์ฅํฉ๋๋ค.
- ๋ฌธ์ ๋ณธ๋ฌธ
- ๋ณด๊ธฐ
- ์ ๋ต
- ํด์ค
- ๋ฌธ์ ์ ํ
- ์ํ๋ช ๋๋ ์ถ์ฒ
- ํ์ด ๊ธฐ๋ก
- ๊ฐ๋ ์ ๋ฆฌ
- PDF ์ฒ๋ฆฌ ์์ ์ํ
๋ฌธ์ ํ์ด ์น์์๋ โ์ ๋ต์ด ๋ฌด์์ธ์งโ, โ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ํ๋ ธ๋์งโ ๊ฐ์ ์ ๋ณด๊ฐ ์ ํํด์ผ ํฉ๋๋ค. ์ด๋ฐ ๋ฐ์ดํฐ๋ Chroma๋ณด๋ค PostgreSQL์ ์ ์ฅํ๋ ๊ฒ์ด ์ ํฉํฉ๋๋ค.
์ฃผ์ ํ ์ด๋ธ
ํ์ฌ ๋ชจ๋ธ์ cert_study_app/models.py์ ์ ์๋์ด ์์ต๋๋ค.
questions
๋ฌธ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํต์ฌ ํ ์ด๋ธ์ ๋๋ค.
์ฃผ์ ์ปฌ๋ผ:
stem: ๋ฌธ์ ๋ณธ๋ฌธanswer: ์ ๋ตexplanation: ํด์คquestion_type: ๋ฌธ์ ์ ํquestion_number: ๋ฌธ์ ๋ฒํธsource: ์ํ๋ช ๋๋ ํ์ผ ์ถ์ฒraw_text: ์๋ณธ ํ์ฑ ํ ์คํธoptions_json: ๋ณด๊ธฐ ๋ฐ์ดํฐquality_score: ํ์ฑ ํ์ง ์ ์quality_status: ํ์ฑ ํ์ง ์ํchunk_key: ์ฒญํน ์๋ณ์
PDF ํ์ฑ ๊ฒฐ๊ณผ๊ฐ ๋ฌธ์ ๋จ์๋ก ์ ๋ฆฌ๋๋ฉด ์ด ํ ์ด๋ธ์ ์ ์ฅ๋ฉ๋๋ค.
attempts
์ฌ์ฉ์์ ํ์ด ๊ธฐ๋ก์ ์ ์ฅํฉ๋๋ค.
์ฃผ์ ์ปฌ๋ผ:
user_id: ์ฌ์ฉ์ ์๋ณ์question_id: ์ด๋ค ๋ฌธ์ ๋ฅผ ํ์๋์งchosen: ์ฌ์ฉ์๊ฐ ๊ณ ๋ฅธ ๋ตcorrect: ์ ๋ต ์ฌ๋ถnote_type: ์ค๋ต๋ ธํธ ๋ฑ ๋ณต์ต ์ํ
ํ์ฌ๋ ๊ฐ์ธ ํ๋ก์ ํธ์ด๋ฏ๋ก ๊ธฐ๋ณธ ์ฌ์ฉ์ ํ๋ฆ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
concept_notes
๊ฐ๋ ์ ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
์ฃผ์ ์ปฌ๋ผ:
concept_name: ๊ฐ๋ ์ด๋ฆsummary: ๊ฐ๋ ์์ฝexam_point: ์ํ์์ ์ค์ํ ํฌ์ธํธtrap_point: ํท๊ฐ๋ฆฌ๊ธฐ ์ฌ์ด ํฌ์ธํธkeywords: ๊ด๋ จ ํค์๋source_question_id: ์ด๋ค ๋ฌธ์ ์์ ๋์จ ๊ฐ๋ ์ธ์ง
ingestion_jobs
PDF ์ฒ๋ฆฌ ์์ ์ํ๋ฅผ ์ ์ฅํฉ๋๋ค.
์ฃผ์ ์ปฌ๋ผ:
exam_name: ์ํ๋ชpdf_path: PDF ๊ฒฝ๋กstatus: ์์ ์ํstage: ํ์ฌ ์ฒ๋ฆฌ ๋จ๊ณcurrent,total: ์งํ๋ฅ ๊ณ์ฐ์ฉ ๊ฐinserted: ์ ์ฅ๋ ๋ฌธ์ ์quality_score: ํ์ง ์ ์quality_report_json: ํ์ง ๋ฆฌํฌํธ ๊ฒฝ๋กquality_gate_json: ํ์ง ๊ฒ์ดํธ ๊ฒฐ๊ณผ ๊ฒฝ๋กerror_message: ์ค๋ฅ ๋ฉ์์ง
์ด ํ ์ด๋ธ ๋๋ถ์ PDF ์ฒ๋ฆฌ ํํฉ ํ๋ฉด์ ๋ง๋ค ์ ์์ต๋๋ค.
azure_docs_syncs
์ธ๋ถ ๋ฌธ์ ์์ธ ์ํ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํ ํ ์ด๋ธ์ ๋๋ค.
์ฃผ์ ์ปฌ๋ผ:
embedding_modelstatusurls_checkeddocuments_indexedchunks_indexed
Chroma๋ฅผ ์ฐ๋ ์ด์
Chroma๋ ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ํ ์คํธ๋ฅผ ์ซ์ ๋ฒกํฐ๋ก ๋ฐ๊พผ ๋ค, ์๋ฏธ๊ฐ ๋น์ทํ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ํ๊ณ ์์ ๋, Chroma๋ฅผ ์ด์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ํ์ฌ ๋ฌธ์ ์ ๋น์ทํ ๋ฌธ์ ์ฐพ๊ธฐ
- ๊ฐ์ ๊ฐ๋ ์ ๋ฌป๋ ๋ฌธ์ ์ฐพ๊ธฐ
- ๊ณต์ ๋ฌธ์๋ ์ค๋ช ์๋ฃ์์ ๊ด๋ จ ๋ด์ฉ ์ฐพ๊ธฐ
PostgreSQL๊ณผ Chroma๋ฅผ ํจ๊ป ์ฐ๋ ์ด์
PostgreSQL์ ์ ํํ ์ ์ฅ๊ณผ ์กฐํ์ ๊ฐํ๊ณ , Chroma๋ ์๋ฏธ ๊ธฐ๋ฐ ๊ฒ์์ ๊ฐํฉ๋๋ค.
๋ฐ๋ผ์ ๋ ์ ์ฅ์๋ฅผ ์ด๋ ๊ฒ ๋๋ ์ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- PostgreSQL: ์๋ณธ ๋ฐ์ดํฐ์ ๊ธฐ์ค ์ ์ฅ์
- Chroma: ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ ๋ณด์กฐ ์์ธ
์ฆ, Chroma๋ PostgreSQL์ ๋์ฒดํ๋ ์ ์ฅ์๊ฐ ์๋๋๋ค. Chroma ๊ฒ์ ๊ฒฐ๊ณผ๋ ๋ค์ PostgreSQL์ ๋ฌธ์ ID์ ์ฐ๊ฒฐ๋์ด ์ค์ ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด ์ข์ต๋๋ค.
SQLite์ ๋ํ ์ ๋ฆฌ
ํ์ฌ ํ๋ก์ ํธ๋ PostgreSQL ์ฌ์ฉ์ ๊ธฐ๋ณธ์ผ๋ก ํฉ๋๋ค.
SQLite๋ ๊ฐ๋ฐ ์ด๊ธฐ์ ๊ฐ๋จํ ํ ์คํธํ๊ธฐ ์ข์ง๋ง, Docker Compose์ Airflow๊น์ง ํจ๊ป ์ฐ๋ ๊ตฌ์กฐ์์๋ PostgreSQL์ ๊ธฐ์ค์ผ๋ก ๋ง์ถ๋ ํธ์ด ๋ ์์ ์ ์ ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ์๋ง CERT_STUDY_DB_FALLBACK=1๋ก SQLite fallback์ ํ์ฉํ๋ ๋ฐฉํฅ์ด ์ ํฉํฉ๋๋ค.