흔한 오해
"RAG만 붙이면 된다"는 말이 LLM 환각에 대한 기본 답처럼 자리 잡았습니다. 모델을 자체 문서에 근거시키면 더 이상 말을 지어내지 않을 거라는 생각이죠. 검색 증강 생성은 분명 도움이 되지만, 대부분의 팀이 기대하는 일을 해주지는 않습니다. 그 간극은 정확히 가장 중요한 순간, 즉 법률 인용, 재무 수치, 의료 주장처럼 사용자가 실제로 행동에 옮길 수 있는 지점에서 드러납니다.
RAG는 질의와 유사한 텍스트를 검색해 모델에 맥락으로 넘겨줍니다. 그 텍스트가 사실인지, 최신인지, 심지어 모델이 지금 만들려는 특정 주장과 관련이 있는지에 대해서는 아무것도 말해주지 않습니다.
RAG가 실제로 해결하는 것
먼저 진짜 이점부터 분명히 하자면, RAG는 LLM의 지식을 학습 시점 이후로 확장하고 모델의 파라미터 기억 대신 특정 코퍼스에 답을 근거시키는 데 확실히 효과적입니다. 그것만으로도 큰 부류의 환각, 즉 모델이 애초에 정보를 갖고 있지 않아 생기는 환각은 줄어듭니다.
검색만으로는 여전히 환각이 나는 이유
남아 있는 실패 양상들은 청크 크기나 임베딩 모델을 튜닝하는 문제가 아니라 구조적인 문제입니다. 실제 운영 RAG 시스템에서 반복적으로 나타나는 세 가지는 다음과 같습니다:
- ●유사도는 관련성이 아닙니다. 벡터 검색은 질의와 주제적으로 가까운 청크를 반환할 뿐, 지금 만들려는 주장에 법적으로나 사실적으로 맞는 청크를 반환하는 것이 아닙니다. 법률 리서치 과제를 놓고 진행한 정면 비교에서, 적용 가능한 근거가 없을 때 기존 RAG 시스템은 주제만 비슷하고 법적으로는 무관한 문서를 자주 반환했습니다. 솔직한 '해당 없음' 대신 그럴듯하게 들리는 잘못된 정보를 내놓을 위험이 있는 것이죠.
- ●시간 근거가 없습니다. 검색된 청크에는 그것이 언제 참이었는지, 지금도 참인지에 대한 개념이 없습니다. 1년 전에 정확했던 문서와 오늘 정확한 문서가 유사도 검색에는 똑같이 보이므로, 낡은 수치가 최신 수치와 같은 확신을 가지고 노출됩니다.
- ●판정이 없습니다. RAG는 판단이 아니라 텍스트를 반환합니다. 검색된 구절이 만들려는 주장을 실제로 뒷받침하는지는 여전히 모델이 스스로 판단해야 하는데, 그 판단 단계가 바로 환각을 만들어내는 그 단계입니다.
검증 계층이 더해주는 것
이것이 바로 RAG에는 없는 계층이며, Factagora API가 그 위에 설계된 부분입니다. 흩어진 문서 청크가 아니라 사실을 시점이 기록된 인과적으로 연결된 FactBlock으로 저장하는 시계열 지식 그래프(Temporal Knowledge Graph, TKG)죠. 이 설계에서 두 가지 특성이 곧바로 따라옵니다.
- ●시점 기준 답변. 사실은 이중 시간(bi-temporal) 속성을 가집니다. 각 사실은 사건이 발생한 시점과 그것이 유효했던 기간을 함께 기록합니다. 질의는 물어본 그 시점에 참이었던 것만 반환하므로, 이후 정보가 과거 답변으로 새어 들어가지 않습니다.
- ●구절이 아니라 판정. Fact Checker 엔드포인트는 주장을 받아 근거에 기반한 TRUE / FALSE / UNCERTAIN 판정을 반환합니다. 모델이 검색된 텍스트에서 참·거짓을 추론하도록 떠넘기지 않죠. Evidence Finder 엔드포인트는 한 걸음 더 나아가, 신뢰도 점수가 매겨지고 입장(지지·반박·중립)으로 태깅된 출처를 반환합니다. 그래서 주장은 단순히 '근거가 붙는' 데 그치지 않고, 그 주장에 반대하는 출처와도 능동적으로 대조됩니다.
내 스택에서 이 문제를 해결하는 법
해결책은 RAG 파이프라인을 교체하는 것이 아닙니다. 생성 앞단의 검색만이 아니라, 생성 뒤에 검증 단계를 하나 더하는 것입니다:
- ●기존 벡터 DB와 RAG 파이프라인은 맥락 검색과 초안 작성에 그대로 사용합니다. 그 부분은 잘 동작합니다.
- ●모델이 답변 초안을 만든 뒤, 그 안의 사실 주장들을 추출합니다.
- ●각 주장을 Fact Checker 호출에 넣어 근거와 함께 TRUE / FALSE / UNCERTAIN 판정을 받습니다.
- ●통과한 주장에는 Evidence Finder로 신뢰도 점수와 입장이 태깅된 인용을 붙이고, 통과하지 못한 주장은 표시하거나 걸러냅니다.
그 결과는 여전히 RAG 스택이 생성한 답변이지만, 언제 참이었는지 그리고 지금도 이견이 없는지를 말해줄 수 있는 출처와 대조되기 전에는 아무것도 사용자에게 닿지 않습니다. 가장 빠른 방법은 무료 API 키 발급 후, 이미 여러분의 RAG 파이프라인이 생성한 주장에 Fact Checker를 호출해 보는 것입니다.