DOCS/journey/troubleshooting/251122_rag_search_chunk_text_key_fix.md

2.3 KiB

RAG 검색 응답 키 불일치 수정 (chunk_text vs content)

날짜: 2025-11-22 작성자: Claude 관련 파일:

  • rb8001/app/services/ir_analyzer.py
  • skill-rag-file/app/models/requests.py
  • skill-rag-file/app/api/search.py

관련 문서:

  • 251122_happybell80_chromadb_dimension_mismatch.md
  • 251122_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_textcontent → 빈 문자열 반환
  • raw_results = {} → LLM에 {} 전달 → N/A

해결 방안

ir_analyzer.py:47: contentchunk_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 응답 출력)
  • 교훈: 문제 해결 후 실제 데이터 흐름 검증으로 숨은 문제 조기 발견