← 포트폴리오

DAEMON-KP

ARCH

소스 수집부터 출처 기반 답변까지, 지식 플랫폼 제품을 위해 설계한 Django 아키텍처 템플릿입니다. RAG 파이프라인 전 단계를 단일 PostgreSQL에서 처리합니다.

비공개 저장소 · 요청 시 공유

Type 아키텍처 템플릿
Role 설계 및 단독 개발
Repository 비공개 · 요청 시 공유
Built on it SportsIQ
DjangoHTMXpgvectorpg_searchGemini APIPydantic AITaskiqDockerCoolify

왜 만들었는가

지식 제품은 모두 같은 구조적 문제를 가집니다. 원시 소스에서 신뢰할 수 있는 답변까지 도달하는 파이프라인이 필요한데, 실패 지점이 사방에 있습니다 — 환각된 출처, 시맨틱 의도를 놓치는 키워드 검색, 정확한 용어를 놓치는 벡터 검색. DAEMON-KP는 그 문제를 해결하기 위해 직접 설계한 Django 아키텍처 템플릿입니다. 답변 품질 자체가 제품인 지식 집약형 서비스를 위해 만들었습니다.

파이프라인

Source Document Chunk Search Answer Citation

각 단계는 타입이 명시된 Pydantic 경계입니다. 품질 기준을 충족하지 못한 청크는 검색 인덱스에 도달하지 않습니다. 검색 컨텍스트로 뒷받침할 수 없는 답변은 생성되지 않습니다.

단계상태
청킹 (heading-aware, 1200자 / 150자 overlap) 완료
어휘 검색 (Django FTS) 완료
Hybrid Search (어휘 45% + 시맨틱 55%) 완료
AI 답변 + Citation (Gemini 2.5-flash) 완료
시맨틱 검색 (pgvector HNSW) 60% — 임베딩 생성 태스크 스텁
소스 수집 (URL/파일 파서) 30% — parsers.py 스텁

청킹 → 어휘 검색 → AI 답변 흐름은 즉시 동작합니다.

상세 흐름

Source
URL · 파일 · API
↓ parse (parsers.py)
Document
제목 · 본문 · slug · 요약
↓ 저장 시 자동 청킹 (1200자, 150자 overlap)
Chunk
heading-aware · content_hash 중복 제거
↓ 임베딩 → pgvector HNSW · 인덱싱 → pg_search BM25
Search Index
BM25 (45%) + 코사인 유사도 (55%) → 점수 결합
↓ 상위 K 청크를 LLM에 전달
Answer
Gemini 2.5-flash · grounded 생성 · 구조화 출력
↓ 응답에 source_ids 포함
Citation
Chunk → Document · 항상 추적 가능

도메인 맵

지식 코어

sources documents chunks topics

인텔리전스

search answers entities

인터랙션

discussions workspace

파이프라인

ingestion

기반

core accounts

핵심 결정

  • Hybrid Search (BM25 + 벡터 유사도)

    pg_search(BM25 랭킹) + pgvector(시맨틱 유사도)를 쿼리 시점에 45/55 비율로 결합합니다. "X가 뭔가요"와 "Y가 언급된 문서 찾아줘" — 둘 다 처리합니다. 어느 하나만으론 충분하지 않습니다.

  • Citation-First 답변

    검색된 청크만을 기반으로 답변을 생성합니다. Gemini는 청크 ID를 직접 전달받고, 답변 텍스트와 함께 source_ids를 구조화된 출력으로 반환합니다. 사후 귀속 없음, 환각된 출처 없음. 컨텍스트가 뒷받침되지 않으면 그대로 알립니다.

  • PostgreSQL 단일 DB

    pgvector + pg_search가 나머지 애플리케이션과 같은 PostgreSQL 인스턴스에서 실행됩니다. Pinecone 없음, Elasticsearch 없음, 동기화 오버헤드 없음. 검색 인덱스는 문서 스토어와 항상 일관성을 유지합니다.

  • DAEMON-ONE 위에 구축

    DAEMON-KP는 DAEMON-ONE의 도메인 레이어 확장입니다. 12개 도메인 — documents, chunks, search, answers, sources, topics, discussions, entities, ingestion, workspace, accounts, core — 모두 동일한 Vertical Slicing과 interface.py 경계 규칙을 따릅니다. knowledge/ 도메인 폴더를 삭제하면 RAG 시스템 전체가 깔끔하게 사라집니다.

적합한 제품 유형

  • 스포츠 과학 플랫폼 · 대학 위키 · 리서치 익스플로러 · 레시피 아카이브
  • 문서가 데이터 모델이고, 답변이 출처를 인용해야 하는 모든 제품에 적합합니다.

관련 글

DAEMON-KP 기반 프로젝트

  • SportsIQ — Sports knowledge platform, 개발 중

상태

비공개 저장소. SportsIQ를 검증 환경으로 삼아 파이프라인이 발전합니다. 요청 시 공유 가능합니다.