|
Download Task.md from Hyungseoky/QQ: direct link, hf CLI and curl.
- Browser
- Download file 3.68 kB
-
https://huggingface.co/Hyungseoky/QQ/resolve/main/Task.md
- Command line
-
hf download hf://Hyungseoky/QQ/Task.md
-
curl -L -o Task.md https://huggingface.co/Hyungseoky/QQ/resolve/main/Task.md
3.68 kB
| # QP Search System | |
| ๋ฐ๋์ฒด ์ ์กฐ ๊ณต์ ๋ฌธ์(QP) ๊ฒ์์ ์ํ ๋ฉํฐ๋ชจ๋ฌ RAG ํ์ดํ๋ผ์ธ. LangGraph ๊ธฐ๋ฐ StateGraph๋ก ๊ตฌํ๋๋ฉฐ, ๋ณต์ก๋ ๊ธฐ๋ฐ ์ ๋ต ๋ถ๊ธฐ โ ๋ฉํฐ์ฟผ๋ฆฌ ์์ฑ โ ํ ์คํธ/๋น์ ๋ณ๋ ฌ ๊ฒ์ โ ๋์ ๊ฐ์ค์น ์ตํฉ โ Answerability ํ๊ฐ โ ์กฐ๊ฑด๋ถ ์ฌ์ฒ๋ฆฌ์ ํ์ดํ๋ผ์ธ์ ๋ฐ๋ฅธ๋ค. | |
| ## ์ธํ๋ผ | |
| | ์ญํ | ์ฃผ์ | ๋น๊ณ | | |
| |------|------|------| | |
| | Search API (ํ ์คํธ) | `10.150.6.47:4275/search/text` | collection: `page` | | |
| | Search API (์ด๋ฏธ์ง/ColQwen3.5) | `10.150.6.47:4275/search/text/colqwen35` | collection: `colqwen35` | | |
| | Search API (์ด๋ฏธ์ง/Tomoro) | `10.150.6.47:4275/search/text/tomoro` | collection: `tomoro` | | |
| | ๋จ์ด์ฌ์ API | `10.150.6.47:4276/search` | ๋๋ฉ์ธ ์ฝ์ด/์ฉ์ด ๊ฒ์ | | |
| | Qwen3-VL-235B | `10.150.6.160:8000` | ๋ฉํฐ๋ชจ๋ฌ LLM | | |
| ๊ฒ์ API ๊ณตํต ํ๋ผ๋ฏธํฐ: `query` (string), `top_k` (int). ํํฐ ํ๋(์ ํ): `apply_region`, `apply_product`, `document_type`, `dept_name` โ `filters` ๊ฐ์ฒด๋ก ์ ๋ฌ, AND ์กฐ๊ฑด. | |
| > ๋ชจ๋ ์๋ฒ๋ Air-gapped ํ์๋ง ํ๊ฒฝ์ด๋ฉฐ ์ธ๋ถ ์ธํฐ๋ท ์ ๊ทผ ๋ถ๊ฐ. | |
| ## ํต์ฌ ํ์ผ | |
| - `qp_rag_pipeline.py` โ LangGraph StateGraph ๋ฉ์ธ ํ์ดํ๋ผ์ธ (797์ค) | |
| - Jupyter ๊ฒ์ฆ ๋ ธํธ๋ถ (31์ ) โ ํ์ดํ๋ผ์ธ ๋จ๊ณ๋ณ ํ ์คํธ์ฉ | |
| ## ๋๋ฉ์ธ ์ปจํ ์คํธ | |
| ๋ฐ๋์ฒด ๊ณต์ ์ฝ์ด๋ ์ฟผ๋ฆฌ ์ดํด์ ํต์ฌ์ ์ด๋ค: DSP, DSG, EPI, LAP, CMP, STI. ์ด ์ฝ์ด๋ค์ด ํฌํจ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋จ์ด์ฌ์ API(`4276/search`)๋ฅผ ๋ฐ๋์ ๋จผ์ ํธ์ถํ ๊ฒ. | |
| ## ์ํคํ ์ฒ ๊ท์น | |
| ### ํ์ดํ๋ผ์ธ ํ๋ฆ | |
| ์ฟผ๋ฆฌ ์ ๋ ฅ โ ์ฟผ๋ฆฌ ๋ถ์ โ ์ฟผ๋ฆฌ ์์ฑ โ ๊ฒ์(ํ ์คํธ/๋น์ ๋ณ๋ ฌ) โ ๊ฒฐ๊ณผ ์ตํฉ ๋ฐ ํ๊ฐ โ (์ฌ์ฒ๋ฆฌ or ์ถ๋ ฅ) | |
| ### 1. ์ฟผ๋ฆฌ ๋ถ์ | |
| - ๋ณต์ก๋(High/Medium/Low)์ ์ฟผ๋ฆฌ ์ ํ(Text/Vision/Hybrid)์ ๋ถ๋ฅ | |
| - ๋ณต์ก๋์ ๋ฐ๋ผ ์ฟผ๋ฆฌ ์์ฑ ์ ๋ต์ด ๋ฌ๋ผ์ง | |
| - ์ฟผ๋ฆฌ ์ ํ์ ๋ฐ๋ผ ์ตํฉ ๊ฐ์ค์น `alpha` ๊ฒฐ์ : Text=0.8, Vision=0.4, Hybrid=0.6 | |
| ### 2. ์ฟผ๋ฆฌ ์์ฑ | |
| - ๋ณต์ก๋๋ณ ์ ๋ต: High โ ์๋ณธ+ํ์ฅ+์ฌํด์+Text-HyDE / Medium โ ์๋ณธ+ํ์ฅ+์ฌํด์ / Low โ ์๋ณธ+๊ฒฝ๋ ์ฌํด์ | |
| - ์ฝ์ด ํฌํจ ์ฟผ๋ฆฌ๋ ๋จ์ด์ฌ์ API(`4276`)๋ก ์ฝ์ด ํ์ด์ฐ๊ธฐ ํ ๋ฆฌ๋ผ์ดํธ | |
| - ์์ฑ๋ `query_set`๊ณผ `alpha`๋ฅผ ๊ฒ์ ๋ชจ๋์ ์ ๋ฌ | |
| ### 3. ๊ฒ์ | |
| - Track 1 (ํ ์คํธ): BGE-M3 ํ์ด๋ธ๋ฆฌ๋ โ Top-50 โ Cross-Encoder ๋ฆฌ๋ญํน โ Top-30 | |
| - Track 2 (๋น์ ): VLM ๊ธฐ๋ฐ VRAG โ Top-30 (๋ฆฌ๋ญํน ์๋ต) | |
| - ๋ ํธ๋์ ๋ณ๋ ฌ ์คํ | |
| ### 4. ๊ฒฐ๊ณผ ์ตํฉ ๋ฐ ํ๊ฐ | |
| - ๋์ ๊ฐ์ค์น ์ ํ ๊ฒฐํฉ: `S_final = alpha * S_text + (1 - alpha) * S_vision` | |
| - ์ตํฉ ๊ฒฐ๊ณผ ์์ 10๊ฐ ์ด๋ฏธ์ง์ ๋ํด VLM์ผ๋ก Answerability Score ์ฐ์ถ | |
| - `S_avg < threshold` ์ด๊ณ `retry_count < 1`์ด๋ฉด ์ฌ์ฒ๋ฆฌ ๋ฐ๋ | |
| - ์ฌ์ฒ๋ฆฌ: Top-K ์ด๋ฏธ์ง VLM ๋ถ์ โ Vision-HyDE ์ฟผ๋ฆฌ ์์ฑ โ ์ฟผ๋ฆฌ ์์ฑ ๋ชจ๋๋ก ํ๊ท | |
| - ์ฌ์ฒ๋ฆฌ๋ ์ต๋ 1ํ๋ก ์ ํ โ reducer ๊ฒฐ๊ณผ ๋์ ๋ฒ๊ทธ ์ฃผ์, ๊ฐ iteration๋ง๋ค ์ด๊ธฐํํ ๊ฒ | |
| ### ๋ชจ๋ ๊ฐ ๋ฐ์ดํฐ ํ๋ฆ | |
| - ์ฟผ๋ฆฌ ๋ถ์ โ ์ฟผ๋ฆฌ ์์ฑ: `complexity`, `query_type`, `alpha` | |
| - ์ฟผ๋ฆฌ ์์ฑ โ ๊ฒ์: `query_set`, `alpha` | |
| - ๊ฒ์ โ ์ตํฉ/ํ๊ฐ: `text_results`, `vision_results`, `alpha` | |
| - ์ตํฉ/ํ๊ฐ โ ์ฟผ๋ฆฌ ์์ฑ (์ฌ์ฒ๋ฆฌ): `enhanced_query`, `alpha`, `retry_count + 1` | |
| - ์ตํฉ/ํ๊ฐ โ ์ถ๋ ฅ: `fused_results`, `S_avg`, `retrieval_retried` | |
| ## ์ฝ๋ ์คํ์ผ | |
| - Python 3.10+, type hint ํ์ | |
| - async/await ํจํด ์ฌ์ฉ (FastAPI ์ฐ๋) | |
| - ๋ก๊น ์ `loguru` ์ฌ์ฉ, print ๊ธ์ง | |
| - ํ๊ธ ์ฃผ์ ํ์ฉ, docstring๋ ํ๊ธ๋ก ์์ฑ | |
| ## ํ ์คํธ & ๊ฒ์ฆ | |
| - Milvus ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ `relevance_score >= 0.7` ๊ธฐ์ค์ผ๋ก ํํฐ๋ง | |