비전공자가 설계한 AI 대화 로그 구조화 프로젝트, 의견 부탁드립니다
안녕하세요.
현재 취업을 준비 중인 비전공자 풀스택 개발자 지망생입니다.
이 프로젝트는 처음에는 포트폴리오 용도로 시작했지만, 구현 과정에서 발생한 문제를 해결하다 보니 현재 구조까지 확장되었습니다.
개발 과정에서는 AI 도구(Cursor 등)를 적극 활용했으며, 설계와 검증은 직접 진행하고 있습니다.
현재 프로젝트는 대화 로그를 단순 저장하는 것이 아니라, 로그 내부의 의미 정보를 계층적으로 구조화하여 검색·복원하는 방향으로 실험하고 있습니다.
주요 관심사는 다음과 같습니다.
대화 로그의 의미 단위 분해
컨텍스트 압축 및 복원
비용 최적화를 위한 LLM 의존도 감소
비전공자이다 보니까 실무적인 개념이 많이 부족하다고 느끼고있어서
경험이 많으신 전문가의 의견이 어떤지 여쭙고 싶습니다.
포트폴리오로써 괜찮을지 프로젝트에 결함이 있는지 피드백 해주시면 감사하겠습니다 ..
LLM 호출은 피쳐 데이터 ( 주 토픽 , 서브 토픽 , 태그 , 에비던스 원문 스팬) 추출
및 컨텍스트 서머리 (요약문) 생성에 사용했고
로컬 모델 qwen3:8b 단일 모델로 구현했습니다.
아래 이미지는 현재 앱의 화면입니다 .

제가 놓치고 있는 기술적 문제나 설계상 위험 요소가 있는지 의견을 듣고 싶습니다.
본문 추가 수정
0. 구조 (Ingestion → Feature)
단위 | 정의 |
|---|---|
Turn | 사용자 발화와 어시스턴트 발화가 한 쌍으로 묶인 대화의 최소 처리 단위 |
Unit / Line | PDF·채팅 로그에서 분해한 물리적 텍스트 조각; 근거(evidence) 링크의 원천 |
Exchange | 한 턴의 |
1. 어휘 라벨 (Feature Engineering)
단위 | 정의 |
|---|---|
topics | 턴 전체를 대표하는 상위 주제; grounding gate를 통과한 grounded lexical label |
subTopics | topics를 세분화한 하위 주제; 동일 턴 내 부분적 소재·논점 |
tags | 턴을 태깅하는 짧은 키워드 집합; 검색·클러스터 시드로 사용 |
각 라벨은 value, confidence, grounded, source(근거 텍스트·unit 참조)를 가짐.
2. 의도 (Intent)
단위 | 정의 |
|---|---|
User intent ( | 사용자 발화의 말행위 분류; |
LLM intent ( | 어시스턴트 발화의 응답 말행위 분류; 구조는 user intent와 대칭 |
3. 턴 컨텍스트 (Context)
TurnContextProfile: 한 턴에서 사용자·어시스턴트 dyad(쌍) 가 놓인 상황의 통합 프로필.
단위 | 정의 |
|---|---|
summary | dyad 상황을 1~2문장으로 서술한 dyadic context 요약 |
facets.situation | 턴의 소재·상황을 나타내는 짧은 명사구 |
facets.milieu | 대화 참여자·관계·국면을 나타내는 담화 환경 |
facets.discourse | 사람이 읽는 형태의 담화 국면·화행 맥락 (한국어 명사구) |
facets.environment | 논의가 일어나는 주제·도메인·작업 맥락 |
facets.conditions | 상황을 제약·특징짓는 조건·전제의 문자열 목록 |
evidenceQuotes | summary·facets의 근거가 되는, 턴 로그에서 quote gate를 통과한 verbatim 구절 |
sourceRefs | 위 필드들의 출처 unit·턴 참조 |
dataSummary | L1 Meta prototype용 활동 digest ( |
4. Meta Type (L1)
단위 | 정의 |
|---|---|
L1 Meta Type | 턴의 활동 축을 나타내는 8값 enum: |
SessionMetaSlot | 턴에 부여된 primary 또는 secondary Meta Type 슬롯 하나 |
| 턴 단위 세션 분류 메타; Meta Type(primary/secondary)과 L2 ref를 분리된 축으로 보관 |
5. L2 (embed-normalize)
단위 | 정의 |
|---|---|
L2 bucket / registry | 세션 전체에서 embed·merge로 정규화된 주제·도메인 버킷 집합 |
TurnL2Ref | 특정 턴이 속하는 L2 버킷 참조; |
L2 reconcile | intent embed 이후 턴 신호를 registry에 할당·병합하는 post-turn 단계 |
6. 그룹 (topic clustering)
단위 | 정의 |
|---|---|
KnowledgeGroupBundle | seed topic 응집도( |
semanticGroup.theme | 클러스터 전체의 담화·주제를 1~2문장으로 서술한 group-level semantic profile |
semanticGroup.evidenceTopics | theme을 뒷받침하는 grounded topic 문자열 |
GroupDecisionEntry | 클러스터 내 각 턴의 decision을 group index로 모은 항목 |
7. 세션 (문서 전체 overlay)
SessionContextProfile: 문서(세션) 전체의 복원·검색용 overlay.
단위 | 정의 |
|---|---|
summary | 전체 대화 흐름의 복원 요약 |
phases | 시간·논점상 구간화된 국면; label, turnIndexes, optional summary |
keyDecisions | 세션 수준에서 중요한 결정; summary, 귀속 turnIndex, optional evidenceQuote |
openThreads | 아직 해소되지 않은 논의·과제 |
constraints | 세션 전체에 걸린 제약·전제 |
evidenceQuotes | session summary·decision의 근거 인용 |