이 문서를 통해 아래 질문들에 답할 수 있게 됩니다.
- hallucination은 왜 발생하고 백엔드에서는 어떻게 다뤄야 하는가?
- RAG와 citation은 hallucination을 어떻게 줄이는가?
- 근거 없는 답변을 제품 실패로 다루려면 어떤 장치가 필요한가?
개요
Hallucination은 모델이 근거 없는 내용을 그럴듯하게 생성하는 문제다. LLM은 다음 token을 생성하는 모델이므로, 데이터베이스처럼 “모르는 것은 모른다”고 항상 행동하지 않는다.
백엔드 개발자는 hallucination을 모델의 성격으로만 보지 말고 제품 실패 모드로 다뤄야 한다.
핵심 원리
hallucination을 줄이는 방법:
- RAG로 근거 context 제공
- source id와 citation 표시
- 모르는 경우의 응답 규칙
- structured output과 schema
- retrieval eval과 answer eval
- human review
- 후처리 rule check
이 방법들은 위험을 줄이지만 완전히 제거하지 않는다.
RAG의 역할과 한계
RAG는 모델에게 외부 문서를 제공해 근거 기반 답변을 유도한다. 하지만 RAG도 실패한다.
- 검색 결과가 틀릴 수 있다.
- 최신 문서가 누락될 수 있다.
- 권한 없는 문서가 섞일 수 있다.
- chunk가 문맥을 잃을 수 있다.
- 모델이 source를 잘못 해석할 수 있다.
따라서 RAG는 hallucination 방지책이지만 완전한 보증은 아니다.
코드로 이해하기
답변에 source를 강제하고 없으면 실패로 처리한다.
from pydantic import BaseModel, Field
class GroundedAnswer(BaseModel):
answer: str
source_ids: list[str] = Field(min_length=1)
confidence: str
def validate_grounding(result: dict) -> GroundedAnswer:
parsed = GroundedAnswer.model_validate(result)
if parsed.confidence == "high" and not parsed.source_ids:
raise ValueError("high confidence answer requires sources")
return parsedsource가 있다고 항상 정답은 아니지만, source가 없으면 추적조차 어렵다.
백엔드 설계 판단
- 답변에 source를 보여줄 것인가?
- 근거 없는 질문에는 어떤 UX를 줄 것인가?
- 사용자가 답변 오류를 신고할 수 있는가?
- CS가 trace와 source를 확인할 수 있는가?
- 고위험 답변은 human review를 거치는가?
장애 상황과 대응
hallucination 장애는 다음처럼 온다.
- 사용자가 잘못된 답변을 신고한다.
- source는 맞지만 답변이 다르게 해석됐다.
- source가 오래된 문서였다.
- 모델이 source에 없는 내용을 추가했다.
대응:
- trace에서 source id를 확인한다.
- 검색 실패인지 생성 실패인지 분리한다.
- eval case를 추가한다.
- prompt와 context 조립을 수정한다.
인프라 협업 포인트
근거성을 높이려면 source trace를 저장해야 한다. 그러나 source 전문을 로그에 넣으면 보안과 비용 문제가 생긴다. 인프라팀과 source id, document version, trace sampling을 합의한다.
실전 팁
- “모르면 모른다고 답하라”만으로 충분하지 않다. 근거 없는 답변을 검출할 구조가 필요하다.
- source를 사용자에게 보여주면 신뢰와 디버깅이 좋아진다.
- 답변 오류 신고를 eval dataset으로 연결한다.
- 고위험 분야는 모델 답변을 최종 판단으로 쓰지 않는다.
위험 신호!
- RAG 답변에 source가 없다.
- 모델이 DB 변경이나 결정을 단독 수행한다.
- 답변 오류 신고를 추적할 trace가 없다.
- 검색 결과와 최종 답변을 분리해 평가하지 않는다.
확인 질문
확인 질문
- hallucination을 백엔드 관점에서 어떻게 다뤄야 하는가?
- 근거 없는 답변이라는 제품 실패로 보고 source, eval, validation, human review로 완화해야 한다.
- RAG를 써도 hallucination이 남는 이유는 무엇인가?
- 검색, context 조립, 문서 최신성, 모델 해석이 모두 실패할 수 있기 때문이다.