DAENGS · Mentoring Decision Hub
오늘 확인할 의사결정 3건
세 안건을 병렬로 묻지 않고, 다견 컨텍스트 결정 → 오케스트레이션 계약 반영 순서로 연결합니다. Neo4j 실험은 독립 기술 검토 안건입니다.
1. 다견 컨텍스트→2. 오케스트레이션 계약
3. Neo4j 실험 · 독립
안건 1 · 먼저 결정
여러 마리를 키우는 사용자의 컨텍스트를 어떻게 나눌 것인가
멘토님께 드리는 질문
한 사용자가 강아지를 여러 마리 키우는 경우, 에이전트가 모든 강아지의 기록을 컨텍스트로 들고 가는 게 맞을까요? 아니면 강아지별로 대화를 분리해야 할까요? 마릿수가 늘어날 때 제한을 둘 필요가 있는지와 컨텍스트 관리 기준이 궁금합니다.
왜 지금 결정해야 하나
현재 팀 공통 인터페이스는 단일 dog_profile을 입력으로 받습니다. 다견 사용자를 어떻게 처리할지에 따라 이 입력을 그대로 유지할지, active_dog_id와 다견 조회 규칙을 추가할지가 달라집니다.
A. 모든 기록을 항상 전달
구현은 단순하지만 마릿수와 기록이 늘수록 토큰 비용, 지연, 개체 혼동 위험이 커집니다.
B. 강아지별 대화 완전 분리
기록 혼동은 적지만 “두 강아지의 산책량을 비교해줘” 같은 질문을 처리하기 어렵습니다.
C. 기본 분리 + 명시적 다견 조회
기본은 현재 선택된 한 마리만 사용하고, 비교 질문일 때만 필요한 강아지들의 요약을 조회합니다.
| 상황 | 컨텍스트 처리 | 예시 |
|---|---|---|
| 대상 한 마리가 명확함 | 선택된 강아지 1마리만 전달 | “네오가 오늘 밥을 안 먹었어” |
| 대상이 불명확함 | 오케스트레이터가 대상 확인 | “오늘 산책 기록 알려줘” |
| 비교 질문 | 명시된 강아지들의 요약만 조회 | “네오와 보리의 이번 주 산책량 비교해줘” |
| 전체 가구 요약 | 개별 요약을 만든 뒤 집계 | “이번 주 우리 강아지들 특이사항 정리해줘” |
확인받을 결정
① C안이 적절한지 ② 대화방 자체를 강아지별로 나눌지, 하나의 채팅에서 활성 강아지만 전환할지 ③ 마릿수 제한을 AI 컨텍스트 기준이 아니라 서비스 정책으로 분리해도 되는지
안건 2 · 팀 통합 계약
8/26 연결 테스트 전에 무엇을 더 받아야 하는가
멘토님께 드리는 질문
각 에이전트를 오케스트레이터에 연결하기 위해 함수명, 호출 예시, 추가 입력, 출력 필드, 처리 시간, 가짜 응답을 받으려고 합니다. 8/26 연결 테스트 전에 반드시 추가로 합의하거나 팀원에게 받아야 할 정보가 있을까요? 반대로 중간발표 이후로 미뤄도 되는 항목은 무엇일까요?
현재 연결 계획
8/24
팀원별 계약 양식과 가짜 응답 회신
팀원별 계약 양식과 가짜 응답 회신
→
8/26
가짜 응답 5개 + 실제 훈련비서 1개 연결
가짜 응답 5개 + 실제 훈련비서 1개 연결
→
8/27–28
불일치 수정 후 중간발표
불일치 수정 후 중간발표
이미 팀에 요청할 정보
| 항목 | 현재 요청 내용 | 목적 |
|---|---|---|
| 기능·함수명 | 영문 함수명 1개 | 동일 방식으로 호출 |
| 라우팅 예시 | 불려야 하는 질문 3개 + 아닌 질문 1개 | Supervisor 분기 테스트 |
| 입력 | question, dog_profile, 추가 입력값 | 호출 인자 통일 |
| 출력 | answer, evidence, refused, reason | 응답 파싱 통일 |
| 처리 유형 | 10초 이내 동기 / 초과 시 job_id | 대기 흐름 분리 |
| 가짜 응답 | 완성됐다고 가정한 JSON 1개 | 구현 전 통합 테스트 |
추가 확인 후보
연결 테스트 전 확정을 권하는 항목
- 대상 강아지 식별:
active_dog_id또는 단일dog_profile - 거절·입력 부족·내부 오류를 구분하는 상태값
need_input일 때 부족한 필드명 반환- 동기 응답과 비동기 접수 응답의 구분 규칙
- 공통 JSON 스키마 검증용 contract test
멘토에게 우선순위를 물을 항목
request_id,schema_version- 타임아웃과 재시도 횟수
- 중복 요청 방지(idempotency)
- 비동기 작업 취소·만료
- 트레이싱·비용·지연시간 메타데이터
현재 v1에서 의미가 섞이는 지점
refused: true가 정책상 거절, 자료 부족, 입력 부족, 내부 오류를 모두 표현합니다. 사용자 요청을 거절한 것과 시스템이 실패한 것은 다른 상태이므로, 최소한 status 또는 missing_fields가 필요한지 확인받고 싶습니다.
현재 AI 기능 연결 규칙 v1 보기
공통 함수
def feature_name(question: str, dog_profile: dict) -> dict:
...
return result
공통 출력
{
"answer": "사용자에게 그대로 보여줄 한국어 답변",
"evidence": [
{"title": "자료 제목", "url": "https://..."}
],
"refused": false,
"reason": null
}
reason은 no_data, medical, need_input, error 중 하나입니다. 정보가 부족할 때 도구가 직접 되묻지 않고, 오케스트레이터가 후속 질문을 담당합니다.
안전 규칙
- 단정적인 진단, 약 이름·용량 추천 금지
- 자료 기반 답변은
evidence에 출처 포함 - 10초 초과 작업은
{"job_id":"abc123","status":"pending"}반환 - 추가 필드는 기능별 자유, 공통 필드는 이름과 철자 고정
팀원별 회신 양식
### 기능 이름:
### 담당:
### 함수 이름 (영문):
**언제 불려야 하나요? — 사용자 질문 예시 3개**
1.
2.
3.
**내 도구가 아닌 질문 예시 1개**
1.
**추가로 필요한 입력값**
-
**추가로 넣을 출력 필드**
-
**유형**: 바로 답함 / 오래 걸림
**가짜 응답 예시 1개 (필수)**
{
"answer": "",
"evidence": [],
"refused": false,
"reason": null
}
확인받을 결정
① 8/26 전 필수 계약의 범위 ② 현재
refused/reason 구조 유지 여부 ③ 다견 결정에 따른 입력 변경 ④ contract test를 구현 전 게이트로 둘지
안건 3 · 독립 기술 검토
그래프가 감별 질문에 필요한가 — 시드 매칭 약점과 개선 방향 확인
실험 목적
견주 질문 20건을 설계해 그래프 기반 추론이 의료 감별 질문에 필요한지 검증했습니다. 현재 하이브리드 구조(벡터+그래프)는 시드 매칭이 약한 단계에서 벡터를 백업으로 두는 과도기이며, 이 실험으로 시드 매칭 개선이 최우선 과제임을 확인했습니다.
20건4개 범주의 견주 질문
6건부족한 근거 문서 추가
2건완전 답변 가능으로 전환
설계 구조
| 질문 성격 | 건수 | 기대 경로 | 예시 |
|---|---|---|---|
| 단일 절차·훈련법 | 5 | VECTOR | 켄넬 적응의 단계별 순서 |
| 문제행동 원인 추론 | 5 | GRAPH | 짖음 원인 구분 후 훈련법 제안 |
| 증상·질환 감별 | 6 | GRAPH + STRONG GUARD | 노령견 야간 헛짖음 감별 |
| 처방 요청·범위 밖 | 4 | REFUSE | 약이나 처방식 추천 요청 |
벡터 검색
유사 청크 Top-5
유사 청크 Top-5
→
조건부 그래프 확장
엔티티 매칭·2-hop·원문 회수
엔티티 매칭·2-hop·원문 회수
→
LLM 답변
병합 근거 + 의료·거절 가드
병합 근거 + 의료·거절 가드
정성 개선 사례 — Q13
질문: “12살 노령견인데 밤마다 서성거리며 벽을 보고 헛짖음을 시작했어요. 분리불안 훈련이 효과가 있을까요?”
| 비교 | 벡터 검색만 사용 | 하이브리드 검색 |
|---|---|---|
| 검색 근거 | Top-5 모두 분리불안 훈련 문서 | 벡터 5건 + 그래프 후보 13건 |
| 답변 방향 | 분리불안 훈련 방법 제시 | 인지기능장애 가능성 안내 및 수의사 상담 권고 |
| 차이 | 치매·관절통증 감별 근거 누락 | ‘밤에 짖는 강아지’ 문서를 찾아 실제 답변에 인용 |
해석
Q13은 완전 답변 가능 판정까지 도달하지 않았습니다. 그래프가 정답을 결정한 것도 아닙니다. 그래프는 벡터가 놓친 감별 문서를 후보로 추가했고, LLM이 그 근거를 사용해 답변 방향을 바꾼 정성적 개선 사례입니다.
한계와 멘토 질문
실패를 네 가지 검색 단계로 분석했습니다. 그래프 추가 자체만으로는 모든 문제가 해결되지 않으며, 각 단계별 개선이 필요합니다.
| 단계 | 문제 | 대표 사례 |
|---|---|---|
| 코퍼스 | 필요한 근거 문서 자체가 없음 | Q12: '서열 훈련' 개념을 설명할 근거 부족 |
| 시드 매칭 | 표현이 다르면 그래프 시작점을 찾지 못함 | Q14: 매칭 시드 0개, 그래프 후보 0건 |
| 실행 게이트 | 임계값이 질문을 구분하지 못함 | score_gap 게이트가 20건 모두 PASS |
| 벡터 순위 | 관련 문서가 Top-5 밖으로 밀림 | Q15: 목표 문서가 경계에서 제외 |
추가 한계
그래프 편향 — 엣지 102개 중 감별필요가 60개(59%) · 절차 미표현 — '다음 단계' 관계 부재로 켄넬 STEP 1→6 순서 미표현 · 금기 실패 — 금기 관계 엣지 1개뿐 · 재현성 미확보 — 같은 입력에서 분리불안 경로 수가 27→22로 변동
멘토님께 드리는 질문
① 검색 개선 순서 — 코퍼스·시드·게이트·순위 문제가 각각 있을 때, 리랭커·쿼리 확장·게이트 교체 중 무엇부터 검증하는 것이 적절할까요?
② 그래프 스키마 — 훈련 절차와 금지 행동을 제대로 표현하려면 관계 타입 확장으로 충분한가요, 아니면 현재 그래프 스키마를 다시 설계해야 할까요?
③ 추출 재현성 — LLM 기반 추출의 비결정성을 실무에서는 증분 추출, 다중 추출 합의, 결과 버전 관리 중 어떤 방식으로 통제하나요?
② 그래프 스키마 — 훈련 절차와 금지 행동을 제대로 표현하려면 관계 타입 확장으로 충분한가요, 아니면 현재 그래프 스키마를 다시 설계해야 할까요?
③ 추출 재현성 — LLM 기반 추출의 비결정성을 실무에서는 증분 추출, 다중 추출 합의, 결과 버전 관리 중 어떤 방식으로 통제하나요?
Neo4j 기술 근거 보기
- 통합 코퍼스 83청크 → 노드 284개, 엣지 102개
- Q13 매칭 시드 7개 → 그래프 후보 13건, ‘밤에 짖는 강아지’ 청크가 최종 답변에서 실제 인용
graph_search()가 노드·엣지의source_chunks를 회수하고,hybrid_merge()가 벡터 Top-5와 병합- 시드 매칭은 리터럴 포함 방식이라 동의어·표현 변형에 취약
score_gap ≥ 0.024가 견주 질문 20건을 모두 PASS시켜 게이트 판별력 상실- 현재 관계 타입: 완화한다, 악화시킨다, 선행조건, 금기, 감별필요
- 켄넬 STEP 문서의 단계별 엔티티는 추출됐지만 청크 간 연결 엣지는 0건
- 동결 파일:
frozen_stage2_0820.jsonl,frozen_entity_aliases_0820.json
피드백 우선순위
시간이 제한된다면 ① 검색 개선 순서 ② 그래프 스키마 ③ 추출 재현성 순서로 확인받고 싶습니다.