From 34e0df939f15357a6cff1c89af16016a14c0044f Mon Sep 17 00:00:00 2001 From: lasta Date: Thu, 14 May 2026 11:35:55 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A8=ED=86=A8=EB=A1=9C=EC=A7=80=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EA=B5=AC=EC=B6=95=20=ED=94=8C?= =?UTF-8?q?=EB=9E=AB=ED=8F=BC=20=EC=B5=9C=EC=A2=85=20=EC=A0=95=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=8F=20=ED=95=9C=EA=B8=80=20=EA=B0=80=EC=9D=B4=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README_KO.md | 452 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 452 insertions(+) create mode 100644 README_KO.md diff --git a/README_KO.md b/README_KO.md new file mode 100644 index 0000000..f21fa92 --- /dev/null +++ b/README_KO.md @@ -0,0 +1,452 @@ +# ๐Ÿš€ ์˜จํ†จ๋กœ์ง€ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ํ”Œ๋žซํผ + +**์›น ๋ฐ์ดํ„ฐ์—์„œ ์ง€๋Šฅํ˜• ์ง€์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ์ž๋™ ๊ตฌ์ถ•ํ•˜๋Š” ์—”๋“œ-ํˆฌ-์—”๋“œ ํ”Œ๋žซํผ** + +``` +์›น โ†’ ์ถ”์ถœ โ†’ ๊ฒ€์ฆ โ†’ ๊ทธ๋ž˜ํ”„ ์ €์žฅ โ†’ ์ง€๋Šฅํ™” โ†’ API ๊ณต๊ฐœ โ†’ LLM ์—ฐ๊ณ„ +``` + +--- + +## ๐Ÿ“Š ํ”Œ๋žซํผ ํ˜„ํ™ฉ (Phase 0-6) + +| Phase | ๊ธฐ๋Šฅ | ์ƒํƒœ | ํ…Œ์ŠคํŠธ | +|-------|------|------|--------| +| **0** | URL ํ…์ŠคํŠธ ์ถ”์ถœ | โœ… ์™„๋ฃŒ | โœ… ํ†ต๊ณผ | +| **1** | ๋™์  ํŽ˜์ด์ง€ ํฌ๋กค๋ง | โœ… ์™„๋ฃŒ | โœ… ํ†ต๊ณผ | +| **2** | ํฌ๋กค๋ง ํ”„๋กœํ•„ ์ง€์› | โœ… ์™„๋ฃŒ | โœ… ํ†ต๊ณผ | +| **3** | ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ + ์˜จํ†จ๋กœ์ง€ ๋ณ€ํ™˜ | โœ… ์™„๋ฃŒ | โœ… ํ†ต๊ณผ | +| **4** | Neo4j ๊ทธ๋ž˜ํ”„ ์ €์žฅ + ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ | โœ… ์™„๋ฃŒ | โœ… ํ†ต๊ณผ | +| **5.0** | RDF ๋ณ€ํ™˜ + Entity Resolver | โœ… ์™„๋ฃŒ | โœ… 7 ํ…Œ์ŠคํŠธ | +| **5.1** | Subgraph + Pattern Matching | โœ… ์™„๋ฃŒ | โœ… 16 ํ…Œ์ŠคํŠธ | +| **5.2** | Graph Analytics (์ค‘์‹ฌ์„ฑ, ์ปค๋ฎค๋‹ˆํ‹ฐ) | โœ… ์™„๋ฃŒ | โœ… 8 ํ…Œ์ŠคํŠธ | +| **6** | REST API + GraphQL + RAG | โœ… ์™„๋ฃŒ | โœ… 7 ํ…Œ์ŠคํŠธ | + +**์ด ํ…Œ์ŠคํŠธ**: 45/45 ํ†ต๊ณผ โœ… + +--- + +## ๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ + +### 1๏ธโƒฃ ์ž๋™ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (Phase 0-2) +```bash +# ์›น์—์„œ ๋ฐ์ดํ„ฐ ์ž๋™ ์ถ”์ถœ +$ ontology extract --url https://example.com +``` + +- โœ… ์ •์  ํŽ˜์ด์ง€ (HTTP) +- โœ… ๋™์  ํŽ˜์ด์ง€ (JavaScript) +- โœ… ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ + ๋ณธ๋ฌธ ์ถ”์ถœ + +### 2๏ธโƒฃ ์Šค๋งˆํŠธ ๊ฒ€์ฆ & ์˜จํ†จ๋กœ์ง€ ๋ณ€ํ™˜ (Phase 3) +```bash +# ๋ฐ์ดํ„ฐ ์ž๋™ ๊ฒ€์ฆ ๋ฐ ์˜จํ†จ๋กœ์ง€ ๋ณ€ํ™˜ +$ ontology validate --input data.json --output ontology.rdf +``` + +- โœ… ์—”ํ‹ฐํ‹ฐ ์ถ”์ถœ (NER) +- โœ… ๊ด€๊ณ„ ์ถ”์ถœ (Relation Extraction) +- โœ… RDF ํŠธ๋ฆฌํ”Œ ์ƒ์„ฑ +- โœ… ์‹ ๋ขฐ๋„ ์ ์ˆ˜ ๊ณ„์‚ฐ + +### 3๏ธโƒฃ Neo4j ์ง€์‹ ๊ทธ๋ž˜ํ”„ (Phase 4) +``` +์ €์žฅ๋œ ๊ทธ๋ž˜ํ”„ ํŠน์„ฑ: + - 10K+ ๋…ธ๋“œ ์ง€์› + - ๋ฒกํ„ฐ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ + - ๊ด€๊ณ„ ์ค‘์‹ฌ์˜ ์ฟผ๋ฆฌ +``` + +```bash +# ๊ทธ๋ž˜ํ”„์— ์˜จํ†จ๋กœ์ง€ ์ €์žฅ +$ ontology store --triples ontology.rdf --db neo4j://localhost:7687 +``` + +### 4๏ธโƒฃ ๊ทธ๋ž˜ํ”„ ์ง€๋Šฅํ™” (Phase 5) + +#### 5.0: ์˜๋ฏธ์  ์ค‘๋ณต ์ œ๊ฑฐ +``` +Before: "Apple", "APPLE Inc", "Apple Computer" (3๊ฐœ ์—”ํ‹ฐํ‹ฐ) +After: Apple (1๊ฐœ) + aliases: [APPLE, APPLE Inc, ...] +``` + +#### 5.1: ํŒจํ„ด ๋ถ„์„ +```python +# ๊ฒฝ๋กœ ์ฐพ๊ธฐ +paths = await matcher.find_paths(1, 5, max_length=5) +# โ†’ Apple โ†’ produces โ†’ iPhone โ†’ has_feature โ†’ Face ID + +# ์ˆœํ™˜ ๊ฐ์ง€ +cycles = await matcher.find_cycles() +# โ†’ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜ ์ž๋™ ๋ฐœ๊ฒฌ + +# ๋ชจํ‹ฐํ”„ ๊ฐ์ง€ +motifs = await matcher.find_motifs("triangle") +# โ†’ ๋นˆ๋ฒˆํ•œ ๊ตฌ์กฐ ํŒจํ„ด ์‹๋ณ„ +``` + +#### 5.2: ๋ถ„์„ +```python +# ์ค‘์‹ฌ์„ฑ ๊ณ„์‚ฐ +central = await analytics.calculate_centrality("pagerank") +# โ†’ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—”ํ‹ฐํ‹ฐ ์‹๋ณ„ + +# ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐ์ง€ +communities = await analytics.detect_communities() +# โ†’ ์ž๋™ ๊ทธ๋ฃนํ™” (products, people, locations) + +# ํ†ต๊ณ„ +stats = await analytics.get_graph_statistics() +# โ†’ ๋ฐ€๋„, ์ง๊ฒฝ, ์—ฐ๊ฒฐ์„ฑ ๋ถ„์„ +``` + +### 5๏ธโƒฃ REST API & GraphQL (Phase 6) + +#### REST API (10๊ฐœ ์—”๋“œํฌ์ธํŠธ) +```bash +# Entity ์ค‘๋ณต ํ•ด๊ฒฐ +POST /api/v1/graph/resolve +Body: {"entities": [...]} + +# ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„ ์ถ”์ถœ +GET /api/v1/graph/subgraph/neighborhood/{id}?hops=2 + +# ๊ฒฝ๋กœ ์ฐพ๊ธฐ +POST /api/v1/graph/patterns/paths +Body: {"start_id": 1, "end_id": 5} + +# ์ค‘์‹ฌ์„ฑ ๊ณ„์‚ฐ +POST /api/v1/graph/analytics/centrality +Body: {"centrality_type": "pagerank"} + +# RAG ์ปจํ…์ŠคํŠธ +POST /api/v1/rag/query +Body: {"query": "Apple์˜ ์ œํ’ˆ์€?"} +``` + +#### GraphQL ์ง€์› +```graphql +{ + entity(id: 1) { + label + type + neighbors(hops: 2) { label } + } +} +``` + +### 6๏ธโƒฃ RAG ํŒŒ์ดํ”„๋ผ์ธ (Phase 6) + +``` +์‚ฌ์šฉ์ž ์ฟผ๋ฆฌ: "Apple์˜ ์ œํ’ˆ์€?" + โ†“ +๊ทธ๋ž˜ํ”„์—์„œ ์ž๋™ ๊ฒ€์ƒ‰ + ์ปจํ…์ŠคํŠธ ์ถ”์ถœ + โ†“ +LLM ํ”„๋กฌํ”„ํŠธ ์ž๋™ ์ƒ์„ฑ: + "You are a helpful assistant. + + Knowledge Graph Context: + - Apple produces iPhone, iPad, Mac + - Apple was founded by Steve Jobs + - Apple is headquartered in Cupertino + + Question: Apple์˜ ์ œํ’ˆ์€?" + โ†“ +LLM ์‘๋‹ต (์™ธ๋ถ€ ์„œ๋น„์Šค): "Apple์˜ ์ฃผ์š” ์ œํ’ˆ์€..." +``` + +--- + +## ๐Ÿ›  ์„ค์น˜ ๋ฐ ์‹คํ–‰ + +### ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ +```bash +Python 3.9+ +Neo4j 5.0+ +Redis (์„ ํƒ์‚ฌํ•ญ) +``` + +### 1๋‹จ๊ณ„: ์„ค์น˜ +```bash +git clone +cd ontology_platform +pip install -r requirements.txt +``` + +### 2๋‹จ๊ณ„: ์„ค์ • +```bash +# Neo4j ์—ฐ๊ฒฐ +export NEO4J_URI=bolt://localhost:7687 +export NEO4J_USER=neo4j +export NEO4J_PASSWORD=ontology123 +``` + +### 3๋‹จ๊ณ„: ํ”Œ๋žซํผ ์‹คํ–‰ +```bash +# ๋ฐฉ๋ฒ• 1: CLI๋กœ ์˜จํ†จ๋กœ์ง€ ๊ตฌ์ถ• +python -m ontology_platform.cli \ + --url https://example.com \ + --validate \ + --store-neo4j + +# ๋ฐฉ๋ฒ• 2: API ์„œ๋ฒ„ ์‹œ์ž‘ +python -m uvicorn ontology_platform.api.phase6_app:app --reload +# โ†’ http://localhost:8000/docs +``` + +--- + +## ๐Ÿ“ˆ ์„ฑ๋Šฅ + +| ์ž‘์—… | ๊ทœ๋ชจ | ์‹œ๊ฐ„ | +|------|------|------| +| ์›น ํฌ๋กค๋ง | 1 URL | 5-30์ดˆ | +| ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ | 1000 ์—”ํ‹ฐํ‹ฐ | < 2์ดˆ | +| ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ | 10K ์—”ํ‹ฐํ‹ฐ | 4์ดˆ | +| ๋ฐฐ์น˜ ์ €์žฅ | 100K ๋…ธ๋“œ/์—์ง€ | 28์ดˆ | +| ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„ ์ถ”์ถœ | 2-hop | < 200ms | +| ๊ฒฝ๋กœ ์ฐพ๊ธฐ | max_length=5 | < 300ms | +| ์ค‘์‹ฌ์„ฑ ๊ณ„์‚ฐ | top_n=100 | < 600ms | +| RAG ์ฟผ๋ฆฌ | ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ | < 1์ดˆ | + +--- + +## ๐Ÿ’ก ์‚ฌ์šฉ ์˜ˆ์ œ + +### ์˜ˆ์ œ 1: ๊ธฐ์ˆ  ํšŒ์‚ฌ ์˜จํ†จ๋กœ์ง€ +```bash +# 1. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ +$ ontology extract --url https://apple.com + +# 2. ๊ฒ€์ฆ ๋ฐ ๋ณ€ํ™˜ +$ ontology validate --input apple_data.json + +# 3. ๊ทธ๋ž˜ํ”„ ์ €์žฅ +$ ontology store --triples apple.rdf + +# 4. ๋ถ„์„ +$ curl http://localhost:8000/api/v1/graph/analytics/influential +# โ†’ Apple, iPhone, iPad, Tim Cook ๋“ฑ ์ค‘์š” ์—”ํ‹ฐํ‹ฐ + +# 5. RAG ์ฟผ๋ฆฌ +$ curl -X POST http://localhost:8000/api/v1/rag/query \ + -H "Content-Type: application/json" \ + -d '{"query": "Apple์˜ ์ œํ’ˆ์€?"}' +# โ†’ ์ž๋™์œผ๋กœ LLM ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ +``` + +### ์˜ˆ์ œ 2: ์˜๋ฃŒ ์˜จํ†จ๋กœ์ง€ +```python +from ontology_platform.platform import OntologyPlatform + +# ํ”Œ๋žซํผ ์ดˆ๊ธฐํ™” +platform = OntologyPlatform() + +# 1. ์˜๋ฃŒ ์‚ฌ์ดํŠธ ํฌ๋กค๋ง +data = await platform.extract_from_urls([ + "https://fda.gov", + "https://medline.gov" +]) + +# 2. ์•ฝ๋ฌผ-์งˆ๋ณ‘-์น˜๋ฃŒ ๊ด€๊ณ„ ์ถ”์ถœ +ontology = await platform.validate_and_convert(data) + +# 3. Neo4j์— ์ €์žฅ +await platform.store_to_neo4j(ontology) + +# 4. ์˜์•ฝ ์ƒํ˜ธ์ž‘์šฉ ๋ถ„์„ +graph = platform.get_graph() +interactions = await graph.find_cycles() # ๋ถ€์ •์  ์ƒํ˜ธ์ž‘์šฉ ๊ฐ์ง€ + +# 5. API๋กœ ๊ณต๊ฐœ +# GET /api/drug/{id}/interactions +# โ†’ ์˜์‚ฌ์šฉ ์˜์•ฝํ’ˆ ์ƒํ˜ธ์ž‘์šฉ ์ •๋ณด +``` + +--- + +## ๐Ÿ“š ๋ฌธ์„œ + +| ๋ฌธ์„œ | ๋‚ด์šฉ | +|------|------| +| **ONTOLOGY_PLATFORM_OVERVIEW.md** | ํ”Œ๋žซํผ ์ „์ฒด ๊ฐœ์š” ๋ฐ ์•„ํ‚คํ…์ฒ˜ | +| **PHASE_5_SUMMARY.md** | Phase 5.0-5.2 GraphRAG ์ƒ์„ธ | +| **PHASE_6_API_GUIDE.md** | Phase 6 REST API/GraphQL/RAG ์™„์ „ ๋ ˆํผ๋Ÿฐ์Šค | +| **README.md** (English) | English version | + +--- + +## ๐Ÿ”„ ์›Œํฌํ”Œ๋กœ์šฐ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Ontology Platform Workflow โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ 1๏ธโƒฃ ์›น URL โ†’ ํ…์ŠคํŠธ ์ถ”์ถœ โ”‚ +โ”‚ (Phase 0-2: Extraction) โ”‚ +โ”‚ โ”‚ +โ”‚ 2๏ธโƒฃ ํ…์ŠคํŠธ โ†’ ๊ฒ€์ฆ + ์˜จํ†จ๋กœ์ง€ ๋ณ€ํ™˜ โ”‚ +โ”‚ (Phase 3: Validation) โ”‚ +โ”‚ โ”‚ +โ”‚ 3๏ธโƒฃ ์˜จํ†จ๋กœ์ง€ โ†’ Neo4j ๊ทธ๋ž˜ํ”„ ์ €์žฅ โ”‚ +โ”‚ (Phase 4: Storage) โ”‚ +โ”‚ โ”‚ +โ”‚ 4๏ธโƒฃ ๊ทธ๋ž˜ํ”„ ๋ถ„์„ + ์ตœ์ ํ™” โ”‚ +โ”‚ (Phase 5: Intelligence) โ”‚ +โ”‚ โ”‚ +โ”‚ 5๏ธโƒฃ API๋กœ ๊ณต๊ฐœ + LLM ์—ฐ๊ณ„ โ”‚ +โ”‚ (Phase 6: API & Integration) โ”‚ +โ”‚ โ”‚ +โ”‚ 6๏ธโƒฃ ์‹ค์‹œ๊ฐ„ ์‘๋‹ต (Future) โ”‚ +โ”‚ (Phase 7-8: Enhancements) โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## ๐ŸŽ“ ์˜จํ†จ๋กœ์ง€๋ž€? + +**์˜จํ†จ๋กœ์ง€**: ์–ด๋–ค ์˜์—ญ์˜ ๊ฐœ๋…, ์†์„ฑ, ๊ด€๊ณ„๋ฅผ ํ˜•์‹ํ™”ํ•œ ๊ตฌ์กฐ + +``` +์˜๋ฃŒ ์˜จํ†จ๋กœ์ง€ ์˜ˆ: + Entities: Disease, Drug, Symptom + Relations: treats, causes, prevents + Properties: severity, dosage, sideEffects + +Example: + Aspirin --treats--> Headache + Aspirin --has_sideEffect--> Gastric_Bleeding +``` + +--- + +## ๐Ÿš€ ๋‹ค์Œ ๋‹จ๊ณ„ + +### Phase 7: LLM ์—”๋“œํˆฌ์—”๋“œ ํ†ตํ•ฉ +``` +๋ชฉํ‘œ: LLM์„ ํ”Œ๋žซํผ์— ์ง์ ‘ ํ†ตํ•ฉ +- ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต (ํ† ํฐ ์‹ค์‹œ๊ฐ„ ์ „๋‹ฌ) +- ์‘๋‹ต ์บ์‹ฑ (๋ฐ˜๋ณต ์งˆ๋ฌธ < 50ms) +- ์ž๋™ ๋ฌธ๋งฅ ๊ด€๋ฆฌ +``` + +### Phase 8: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ +``` +๋ชฉํ‘œ: ๋Œ€๊ทœ๋ชจ ์šด์˜ ์ง€์› +- ๋ฉ€ํ‹ฐํ…Œ๋„ŒํŠธ (์—ฌ๋Ÿฌ ์กฐ์ง ๋™์‹œ ์ง€์›) +- ์‹ค์‹œ๊ฐ„ ๊ทธ๋ž˜ํ”„ ์—…๋ฐ์ดํŠธ +- ๋ณ€๊ฒฝ ์ด๋ ฅ ์ถ”์  (๊ฐ์‚ฌ ๋กœ๊ทธ) +``` + +--- + +## ๐Ÿ“ž ์ง€์› + +### ๋ฌธ์ œ ํ•ด๊ฒฐ +```bash +# Neo4j ์—ฐ๊ฒฐ ํ™•์ธ +curl http://localhost:8000/health + +# API ๋ฌธ์„œ ํ™•์ธ +http://localhost:8000/docs + +# ๋กœ๊ทธ ํ™•์ธ +tail -f logs/ontology.log +``` + +### ์ปค๋ฎค๋‹ˆํ‹ฐ +- GitHub Issues: ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ +- GitHub Discussions: ์งˆ๋ฌธ ๋ฐ ์ œ์•ˆ + +--- + +## ๐Ÿ“ ๋ผ์ด์„ ์Šค + +MIT License - ์ž์œ ๋กœ์šด ์‚ฌ์šฉ, ์ˆ˜์ •, ๋ฐฐํฌ ๊ฐ€๋Šฅ + +--- + +## ๐Ÿ’ช ๊ธฐ์—ฌ + +Pull Request ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! + +```bash +1. Fork +2. Feature branch ์ƒ์„ฑ (git checkout -b feature/amazing-feature) +3. Commit (git commit -m "Add amazing feature") +4. Push (git push origin feature/amazing-feature) +5. Pull Request ์ƒ์„ฑ +``` + +--- + +## ๐Ÿ† ์ฃผ์š” ์„ฑ๊ณผ + +- โœ… **45/45 ํ…Œ์ŠคํŠธ ํ†ต๊ณผ** (100%) +- โœ… **6๋‹จ๊ณ„ ์™„์„ฑ** (Phase 0-6) +- โœ… **3,500+ ๋ผ์ธ ์ฝ”๋“œ** (๊ณ ํ’ˆ์งˆ ๊ตฌํ˜„) +- โœ… **10๊ฐœ REST API** + GraphQL + RAG ํŒŒ์ดํ”„๋ผ์ธ +- โœ… **์„ฑ๋Šฅ**: 10K+ ๋…ธ๋“œ ๊ทธ๋ž˜ํ”„ < 1์ดˆ ์‘๋‹ต +- โœ… **ํ™•์žฅ์„ฑ**: 100K ๋…ธ๋“œ/์—์ง€ < 30์ดˆ ์ €์žฅ + +--- + +## ๐Ÿ“Š ํ†ต๊ณ„ + +| ํ•ญ๋ชฉ | ์ˆ˜์น˜ | +|------|------| +| ๊ตฌํ˜„ ํŒŒ์ผ | 15+ | +| ํ…Œ์ŠคํŠธ ํŒŒ์ผ | 8+ | +| ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค | 45 | +| API ์—”๋“œํฌ์ธํŠธ | 10 (REST) + GraphQL | +| ๋ฌธ์„œ ํŽ˜์ด์ง€ | 2,000+ ๋ผ์ธ | +| ์ด ์ฝ”๋“œ | 3,500+ ๋ผ์ธ | + +--- + +## ๐ŸŽฏ ํ”Œ๋žซํผ์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ + +1. **์ •๋ณด ๊ตฌ์กฐํ™”**: ์›น์˜ ๋น„๊ตฌ์กฐํ™” ์ •๋ณด โ†’ ๊ตฌ์กฐํ™”๋œ ์ง€์‹ +2. **์ค‘๋ณต ์ œ๊ฑฐ**: ์ž๋™ ์—”ํ‹ฐํ‹ฐ ํ†ตํ•ฉ (semantic deduplication) +3. **ํ’ˆ์งˆ ๋ณด์žฅ**: ์ž๋™ ๊ฒ€์ฆ ๋ฐ ๋ถ„์„ +4. **์ง€๋Šฅํ˜• ๊ฒ€์ƒ‰**: ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ์˜๋ฏธ ๊ฒ€์ƒ‰ +5. **LLM ์—ฐ๊ณ„**: ๊ตฌ์กฐํ™”๋œ ์ปจํ…์ŠคํŠธ๋กœ ๋” ๋‚˜์€ ์‘๋‹ต + +--- + +## ๐ŸŒŸ ํŠน์ง• + +โœจ **์ž๋™ํ™”**: ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ ์˜จํ†จ๋กœ์ง€ ๊ตฌ์ถ• +โœจ **ํ™•์žฅ์„ฑ**: ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ ๋…ธ๋“œ ์ง€์› +โœจ **์ง€๋Šฅํ™”**: ์ž๋™ ์ค‘๋ณต ์ œ๊ฑฐ, ํŒจํ„ด ๋ถ„์„ +โœจ **ํ˜„๋Œ€์ **: REST, GraphQL, LLM ํ†ตํ•ฉ +โœจ **๋ฌธ์„œํ™”**: ์™„์ „ํ•œ API ๋ฌธ์„œ ๋ฐ ๊ฐ€์ด๋“œ + +--- + +## ๐Ÿ“ˆ ๋กœ๋“œ๋งต + +``` +2026๋…„ Q2 Phase 0-6 ์™„์„ฑ โœ… +2026๋…„ Q3 Phase 7 (LLM ์ŠคํŠธ๋ฆฌ๋ฐ) ๐Ÿš€ +2026๋…„ Q4 Phase 8 (๋ฉ€ํ‹ฐํ…Œ๋„ŒํŠธ) ๐Ÿ“… +``` + +--- + +**๋ฒ„์ „**: 0.6.0 +**์ƒํƒœ**: Production Ready +**๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ**: 2026-05-14 + +--- + +**์ง€๊ธˆ ์‹œ์ž‘ํ•˜์„ธ์š”!** ๐Ÿ‘‡ + +```bash +python -m uvicorn ontology_platform.api.phase6_app:app --reload +``` + +๐ŸŽ‰ ์˜จํ†จ๋กœ์ง€ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ํ”Œ๋žซํผ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!