3.1 KiB
3.1 KiB
Phase 5 Reference Analysis
1. 참조한 오픈소스 목록
참고/ontocast-main참고/neo4j-graphrag-python-main참고/knowledge_agent-main참고/OpenDeepResearcher-main참고/instructor-main참고/guardrails-main- Phase 1 계열 참고:
playwright-main,trafilatura-master,crawl4ai-main,firecrawl-main
2. 각 오픈소스에서 참고한 코드 구조
- ontocast: Pydantic report model, RDF triple payload, graph update/fix model, external evidence request 분리.
- neo4j-graphrag:
NodeType,RelationshipType,GraphSchema, constraint/property schema, storage/query layer 분리. - knowledge_agent: LangGraph state machine, role별 node, state에 todo/complete/report를 축적하는 loop.
- OpenDeepResearcher: query generation, source fetch, relevance evaluation, context extraction, iterative refinement loop.
- instructor: response model 중심 structured output, retry/validation exception 경계.
- guardrails: validation outcome, validator/reask/on-fail action 분리.
3. 현재 프로젝트에 직접 적용한 구조
- Ontology schema를 DB registry로 분리:
OntologyEntityType,OntologyRelationType. - Claim과 graph fact를 분리:
Claim은 provenance/evidence,OntologyTriple은 graph fact. - Schema evolution을 review 대상으로 분리:
OntologyProposal. - Ontology가 모르는 영역을 별도 객체로 관리:
KnowledgeGap. - Domain-specific relation/type alias는
crawler_platform/app/adapters로 분리. - Knowledge gap을 research queue item으로 변환하는
GapTaskPlanner추가.
4. 제외한 구조와 제외 이유
- Neo4j 전용 driver/query 구조: 현재 저장소는 SQLAlchemy/SQLite 중심이라 storage abstraction만 반영.
- LangGraph/MCP runtime: 현재 앱에 무거운 agent runtime을 넣기보다 queue/state 구조만 반영.
- OpenDeepResearcher의 외부 검색 API 호출: 네트워크/API 의존이 크므로 research task 추상화만 반영.
- Instructor/Guardrails 라이브러리 직접 의존: 현재 provider 독립 구조를 유지하기 위해 schema/retry/validation 개념만 반영.
5. 새 core architecture 방향
Crawler / Browser
→ Main Content Extraction
→ Semantic Cleaning
→ Structured Document
→ Structured Extraction
→ Validation
→ Ontology Registry
→ Claim / Evidence
→ Ontology Triple
→ Knowledge Gap
→ Gap-driven Research Queue
→ Governance Proposal
6. 기존 domain-specific hardcoding 제거 방향
relation_schema.py에서 perfume relation rule을 제거하고 perfume adapter로 이동.entity_normalizer.py에서 perfume alias를 제거하고 adapter 기반 normalization으로 변경.- Core validation은 config/registry/adapter constraint만 사용하도록 변경.
- Multi-domain test에서
academicdomain의authoredByrelation이 perfume adapter 없이 동작함을 검증.
7. 남은 Phase 6 후보
- page classifier와 content zone도 adapter 기반으로 분리.
- external search planner를 gap-driven research loop에 연결.
- schema proposal approve/reject API와 migration history 추가.
- source conflict resolver를 triple merge 단계에 더 깊게 연결.