2.3 KiB
2.3 KiB
RAG 검색 응답 키 불일치 수정 (chunk_text vs content)
날짜: 2025-11-22 작성자: Claude 관련 파일:
rb8001/app/services/ir_analyzer.pyskill-rag-file/app/models/requests.pyskill-rag-file/app/api/search.py
관련 문서:
251122_happybell80_chromadb_dimension_mismatch.md251122_coldmail_extraction_improvement_tdd.md
문제 상황
차원 불일치(384→768) 해결 및 재인덱싱 완료 후에도 IR 분석 결과 모든 필드 N/A.
실제 파일 테스트: 650c305b-e45a-4ff4-8bcb-87096f804605 (team 79441171-3951-4870-beb8-916d07fe8be5)
- ChromaDB 컬렉션: 731개 청크 존재
- RAG 검색 시 결과 0건
- LLM에 빈 입력 전달 → N/A
원인 분석
1. skill-rag-file API 응답 형식
- requests.py:25:
SearchResult.chunk_text필드 정의 - search.py:55:
chunk_text=doc로 텍스트 반환 - 응답:
{"results": [{"chunk_text": "내용", ...}], ...}
2. ir_analyzer 파싱 로직
- ir_analyzer.py:47:
r.get("content", "")로 읽기 시도 chunk_text≠content→ 빈 문자열 반환raw_results = {}→ LLM에{}전달 → N/A
해결 방안
ir_analyzer.py:47: content → chunk_text 키 수정
# 변경 전
return "\n".join([r.get("content", "") for r in results])
# 변경 후
return "\n".join([r.get("chunk_text", "") for r in results])
구현 완료
커밋: 8feea8b - fix: read chunk_text from rag search results
수정 파일: rb8001/app/services/ir_analyzer.py:47
검증 필요: 재인덱싱 완료 후 실제 파일 테스트
docker exec -i rb8001 python3 /code/scripts/test_ir_extraction_real_file.py \
650c305b-e45a-4ff4-8bcb-87096f804605 79441171-3951-4870-beb8-916d07fe8be5
교훈
API 스펙 확인 부족
- skill-rag-file 통합 시 응답 형식 추측으로 구현 (
content키 사용) - 실제 스펙:
SearchResult모델의chunk_text필드 - 교훈: 스킬 통합 전 Pydantic 모델 또는 API 문서 직접 확인 필수
연쇄 문제 해결 시 중간 검증
- 차원 불일치 해결 → 재인덱싱 → 여전히 N/A
- 각 단계마다 실제 API 응답 확인 필요 (ChromaDB 로그, API 응답 출력)
- 교훈: 문제 해결 후 실제 데이터 흐름 검증으로 숨은 문제 조기 발견