RAGTruth: A Hallucination Corpus for Developing Trustworthy Retrieval-Augmented Language Models
RAG를 써도 LLM이 검색 컨텍스트와 충돌하거나 근거 없는 내용을 만드는 현상을 정량화하기 위해, 3개 태스크·6개 LLM의 자연발생 응답 18,000개에 word/span-level로 4종 hallucination을 이중 주석한 RAGTruth 코퍼스를 만들었고, 이를 학습한 소형 파인튜닝 탐지기가 GPT-4 프롬프팅보다 더 잘 hallucination을 잡아냈다.
ACL 2024에 실린 RAGTruth 논문을 읽고 정리했다. RAG는 hallucination을 줄이는 대표적인 방법으로 꼽힌다. 그런데 검색한 문서를 프롬프트에 넣어 줘도 모델은 그 문서와 다른 말을 하거나 문서에 없는 내용을 덧붙인다. 이 논문은 그런 현상을 제대로 재 볼 데이터가 없다는 데서 출발한다. 앞서 정리한 semantic entropy 논문은 일부러 문맥을 빼고 실험했는데, 이 논문은 정반대로 문맥이 주어진 상황의 hallucination만 다룬다. 그래서 같이 읽어 보면 비교가 잘 된다.
- 저자: Cheng Niu, Yuanhao Wu, Juno Zhu, Siliang Xu, KaShun Shum, Randy Zhong, Juntong Song (NewsBreak), Tong Zhang (University of Illinois Urbana-Champaign)
- 게재: ACL 2024 (Volume 1: Long Papers), pp.10862–10878
- arXiv: 2401.00396
- 데이터: ParticleMedia/RAGTruth
0. 한 줄 요약
RAG 응답 18,000개 가까이에 사람이 단어와 구간 단위로 hallucination을 표시한 코퍼스를 만들었다. 이 데이터로 Llama-2-13B를 파인튜닝했더니 GPT-4-turbo에 프롬프트로 물어보는 것보다 hallucination 탐지 F1이 높았다는 논문이다.
1. 문제 정의
논문 Table 1의 예시를 보면 문제가 바로 이해된다. 초음파 검사에 대해 묻는 질문에 레퍼런스 패시지는 사진이 가장 잘 나오는 시기를 24–30주라고 적고 있다. 그런데 이 패시지를 받아서 답한 LLM은 20–32주가 최적이라고 말한다. 근거 문서를 손에 쥐고도 그 문서와 어긋나는 답을 낸 것이다. 응답 전체를 읽으면 문장이 매끄러워서 숫자 몇 개가 틀린 걸 놓치기 쉽다.
저자들이 짚는 점은 두 가지다. RAG는 Bard나 BingChat 같은 실제 서비스에서 hallucination을 줄이려고 쓰이지만, RAG를 써도 hallucination은 사라지지 않는다. 그리고 이걸 정량적으로 잴 수 있는 대규모 고품질 데이터셋이 없어서 탐지나 완화 기법을 만들기가 어렵다. 그래서 이 논문의 중심은 탐지 방법이 아니라 데이터셋이다.
2. 기존 방법들의 한계
논문이 정리하는 기존 연구는 세 갈래로 볼 수 있다.
첫째는 hallucination을 일부러 일으키는 데이터셋이다. memotrap처럼 상식과 어긋나는 프롬프트를 만들어서 모델이 틀리도록 유도한다. 효율적이긴 하지만 저자들은 이렇게 만든 hallucination이 모델이 자연스럽게 내는 hallucination과 상당히 다를 수 있다고 본다. 다만 얼마나 다른지 수치로 비교하지는 않았고, 논증 수준의 주장이다.
둘째는 모델이 자연스럽게 생성한 응답에 사람이 직접 주석을 단 데이터셋이다. FELM이나 RefChecker가 여기에 속한다. 저자들은 이쪽은 규모가 작고 RAG 상황을 겨냥해 만든 게 아니라고 지적한다. 이것도 구체적인 규모 비교 없이 서술로만 나온다.
셋째는 탐지 알고리즘이다. 토큰 확률이나 엔트로피를 쓰는 방법, NLI로 일관성을 검사하는 방법, SelfCheckGPT처럼 같은 모델의 여러 샘플이 서로 맞는지 보는 방법이 있다. 이 중 프롬프트 방식, SelfCheckGPT, 두 LM이 서로 질문하는 LMvLM은 저자들이 RAGTruth에서 직접 돌려 봤다. 베이스라인 중 가장 좋은 GPT-4-turbo 프롬프팅도 응답 단위 F1이 63.4%, 구간 단위 F1은 28.3%에 그쳤다. 토큰 확률이나 NLI 기반 방법은 실험에 포함되지 않았다.
3. 방법
개인적으로는 이 논문의 핵심 기여를 데이터셋 하나로 본다. 뒤에 나오는 탐지 알고리즘 벤치마크와 파인튜닝 실험은 이 데이터가 쓸모 있다는 걸 보여 주기 위한 실험으로 읽었다.
데이터는 세 가지 태스크에서 모았다. QA는 MS MARCO의 일상적인 질문에 패시지 3개를 붙였다. Data-to-text 글쓰기는 Yelp 비즈니스 정보를 담은 JSON과 리뷰를 최대 3개까지 주고 소개글을 쓰게 했다. 요약은 CNN/DailyMail과 최근 뉴스 기사를 썼다. 이 입력을 GPT-3.5-turbo-0613, GPT-4-0613, Mistral-7B-Instruct, Llama-2-7B/13B/70B-chat(70B는 4bit) 여섯 모델에 넣어서 샘플 하나당 응답 6개를 받았다.

Fig. 1. data-to-text 태스크를 예로 든 데이터 수집 과정. 구조화된 데이터를 여러 LLM에 넣어 응답을 받고, 사람이 hallucination 구간을 표시한다. (논문 Figure 1)출처: Niu et al., ACL 2024 (CC BY 4.0)
주석은 Label Studio에서 했다. 영어, 커뮤니케이션 또는 관련 분야 학사 학위가 있는 주석자 두 명이 따로따로 응답을 읽고 hallucination이 있는 구간을 표시한다. 시급은 25달러였다고 한다. 두 사람의 판단이 크게 다르면 세 번째 검토를 거친다. 일치도는 응답 단위 91.8%, 구간 단위 78.8%로 보고돼 있다.
hallucination 유형은 두 축으로 나눈다. 하나는 문맥과 충돌하는 Conflict와 문맥에 근거가 없는 Baseless Info의 구분이다. 다른 하나는 오류가 뻔히 드러나는 Evident와 미묘한 Subtle의 구분이다. 이 둘을 조합해 Evident Conflict, Subtle Conflict, Evident Baseless Info, Subtle Baseless Info 네 가지 유형이 나온다. 앞의 초음파 예시는 Evident Conflict에 해당한다. 판단이 애매한 경우에는 태그를 따로 붙였다. 레퍼런스에는 없지만 사실일 수 있는 정보에는 implicit_true를, JSON의 null 값을 처리하다 생긴 경우에는 due_to_null을 단다. 개인적으로 이 부분이 데이터셋 논문다운 꼼꼼함이라고 생각했다. 경계 사례도 일단 hallucination으로 판정하되 태그를 따로 붙여 두었다. 그래서 나중에 쓰는 사람이 이 구간을 뺄지 말지 직접 고를 수 있다.

Fig. 2. 태스크별 hallucination 유형 비율. (논문 Figure 2)출처: Niu et al., ACL 2024 (CC BY 4.0)
태스크마다 유형 분포가 꽤 다르다. QA에서는 문맥에 근거가 없는 Baseless Info가 80% 넘게 차지한다. 반면 data-to-text에서는 문맥과 대놓고 충돌하는 Evident Conflict가 절반 가까이 된다. JSON에 적힌 값을 잘못 옮기는 실수가 많다는 뜻으로 읽힌다.
이렇게 만든 코퍼스는 instance 2,965개, 응답 17,790개, hallucination 구간 14,289개 규모다. 모델끼리 비교할 때는 hallucination density라는 지표를 쓴다. 응답 100단어당 hallucination 구간이 평균 몇 개인지 센 값이다. 저자들은 모델 사이를 더 분명하게 비교하려고 이 지표를 썼다고만 하는데, 내 해석으로는 응답 길이 차이를 보정하려는 것이다.
탐지 쪽에서는 네 가지 방법을 비교한다. 첫 번째는 GPT-3.5-turbo나 GPT-4-turbo에 직접 만든 프롬프트를 주고 hallucination 구간을 찾게 하는 방식이다. 호출 한 번으로 끝나고 모델 능력에 전적으로 기댄다. 두 번째인 SelfCheckGPT는 같은 모델로 응답을 3개 더 뽑고, GPT-3.5로 문장마다 일관성을 확인해서 결과를 모은다. 세 번째인 LMvLM은 두 LM이 여러 턴 동안 서로 질문하면서 불일치를 찾는다. 마지막은 RAGTruth 학습셋으로 Llama-2-13B를 파인튜닝해서 문맥과 응답을 입력받아 hallucination 구간을 바로 출력하게 만든 모델이다. 앞의 세 방법이 프롬프트나 호출 절차를 설계하는 데 공을 들였다면, 마지막 방법은 모델 자체를 다시 학습시킨다.
4. 실험 결과
테스트셋은 태스크별 150개씩 총 450개 instance다. 나머지 데이터로 Llama-2-13B를 full fine-tuning했다(learning rate 2e-5, 1 epoch, A100 4장). 정답은 사람 주석자 두 명의 판단이고 LLM-as-judge는 쓰지 않았다.
응답 단위로 hallucination이 있는지만 맞히는 Table 5에서 파인튜닝한 Llama-2-13B의 전체 F1은 78.7이었다. 가장 강한 베이스라인인 GPT-4-turbo 프롬프팅은 63.4라서 15.3%p 차이가 난다. 어느 구간이 hallucination인지까지 맞혀야 하는 Table 6에서는 차이가 더 벌어진다. 파인튜닝 모델이 52.7, GPT-4-turbo가 28.3으로 거의 두 배다. 저자들은 결론에서 RAGTruth 같은 고품질 데이터로 학습한 전용 탐지 모델이 GPT-4 같은 범용 모델에 프롬프트로 묻는 방식보다 효과적일 수 있다고 정리한다. 개인적으로는 데이터 품질이 모델 크기를 어느 정도 메울 수 있다는 결과로 읽었다.
GPT-4-turbo가 구간 단위에서 왜 그렇게 낮은지도 논문에 나온다. hallucination이 아닌 내용까지 hallucination이라고 판정하는 일이 많아서 precision이 18.4%밖에 안 됐다. 유형별로 보면 Evident hallucination이 Subtle보다 잡기 쉬웠다고 한다. 직관과 맞는 결과다.

Fig. 3. 모델별·유형별 구간 단위 recall (논문 Figure 4).출처: Niu et al., ACL 2024 (CC BY 4.0)
이 그림에서 눈에 띄는 점이 하나 있다. recall만 보면 GPT-4-turbo가 Subtle Baseless Info(GPT-4-turbo 49.8, 파인튜닝 모델 52.9)를 뺀 세 유형에서 파인튜닝한 Llama-2-13B보다 높고, 전체 recall도 60.9 대 50.2로 높다(Table 6). 특히 파인튜닝 모델은 Subtle Conflict recall이 2.5%밖에 안 된다. 그러니 파인튜닝 모델이 F1에서 이긴 건 hallucination을 덜 놓쳐서가 아니라 멀쩡한 내용을 덜 잘못 짚어서, 즉 precision 덕분이라고 보는 게 맞을 것 같다. 파인튜닝 전 모델과의 비교는 없어서 학습으로 얼마나 나아졌는지는 알 수 없지만, 데이터로 학습해도 미묘한 충돌은 여전히 어려운 문제로 보인다.
Table 7은 탐지기를 실제로 쓰면 얼마나 도움이 되는지 보여 준다. 같은 질의에 대해 두 모델의 응답 후보가 있을 때, 그냥 아무거나 고르지 않고 탐지기 결과를 보고 고르는 방식이고, 전략은 두 가지다. 탐지된 구간이 더 적은 응답을 고르는 첫 번째 전략은 Llama-2-7B/Mistral 그룹에서 hallucination 비율을 21.6%, GPT-3.5/GPT-4 그룹에서 42.9% 줄였다. 탐지된 구간이 없는 응답만 고르는 두 번째 전략은 조건에 맞는 응답이 있는 instance에서만 평가했다(Llama-2-7B/Mistral 그룹 328개, GPT 그룹 448개). Llama-2-7B/Mistral 그룹은 무작위 선택(450개 전체)의 52.4%와 비교해 19.3%로 63.2% 낮고, GPT 그룹은 9.8%(450개)에서 4.8%(448개)로 51.0% 낮다. 두 번째 전략은 무작위 선택과 평가한 instance 집합이 달라서 감소율을 그대로 받아들이기는 조심스럽다. 그룹끼리 상대 감소율로 보면 두 번째 전략에서는 hallucination이 많은 Llama-2-7B/Mistral 그룹의 감소폭이 더 컸지만, 450개를 모두 쓴 첫 번째 전략에서는 반대로 GPT 그룹이 더 많이 줄었다. 그리고 이 방식은 후보 응답이 이미 여러 개 있다고 가정한다. 저자들은 조건을 만족하는 후보가 없는 경우를 후보 수를 늘려 해결할 수 있다고 쓴다. 개인적으로는 그만큼 생성 비용과 API 호출이 늘어난다는 점은 따로 따져 봐야 한다고 생각한다.
Table 5와 6의 F1 차이는 TP, FP, FN 개수가 보고되지 않아서 몇 개를 더 맞혔는지로 풀어 볼 수는 없었다. 별도의 ablation 섹션도 없다. 탐지기를 썼을 때와 안 썼을 때를 비교하는 Table 7이 그 역할을 어느 정도 대신한다.
5. 읽으면서 든 의문
첫 번째는 구간 단위 평가의 세부 사항이다. §5.3에는 "We calculate the overlap between the detected span and human-labeled span and report the precision, recall, and f1 score at the char-level"이라고 나온다. 문자 단위로 겹침을 센다는 것까지는 나오지만, 이 값을 응답마다 계산해 평균했는지 전체 문자로 합산했는지는 나와 있지 않다. Table 6의 52.7과 28.3이 집계 방식에 따라 달라질 수 있어서, 다른 논문의 수치와 나란히 놓고 비교할 때는 조심해야 한다.
두 번째는 실험을 몇 번 돌렸는지다. 파인튜닝은 1 epoch만 했고, Table 5와 6의 수치가 한 번 돌린 결과인지 여러 시드의 평균인지 나와 있지 않다. 구간 단위에서 베이스라인의 거의 두 배라는 큰 차이가 나는데, 분산을 모르니 이 차이가 얼마나 안정적인지 판단하기 어렵다.
세 번째는 방법마다 드는 비용이 다르다는 점이다. 프롬프트 방식은 호출 한 번이다. SelfCheckGPT는 응답을 3개 더 뽑고 GPT-3.5로 판별까지 하고, LMvLM은 여러 턴 대화를 주고받는다. 파인튜닝 모델은 A100 4장으로 학습한 전용 모델이다. 추론에 드는 호출 수나 토큰 수가 방법마다 다른데 이를 맞추거나 따로 비교하지 않았다. 그래서 표에서 가장 높은 점수가 같은 예산 안에서 이긴 건지는 알 수 없다. 이 논문에서 가장 아쉬운 부분이었다.
네 번째는 적용 범위다. 실험한 여섯 모델(GPT-3.5/4-0613, Llama-2, Mistral-7B)이 모두 2023년에 나온 모델이다. 지금 모델에도 같은 경향이 나올지는 논문만으로는 알 수 없다. 저자들은 주석 난이도를 낮추려고 QA를 일상생활 질문으로 한정했다. 그래서 의료처럼 전문 지식이 필요한 도메인의 RAG hallucination을 겨냥한 데이터는 아니다. 태스크도 QA, data-to-text, 요약 세 가지뿐이어서 멀티턴 대화나 코드 생성 RAG는 범위 밖이다. 저자들이 Limitations에 쓴 내용은 연구 분야가 빠르게 바뀌어서 다루지 못한 상황이 있을 수 있다는 일반론뿐이다. 위의 구체적인 한계를 Limitations 절에서 따로 짚지는 않는다.
마지막으로 기여를 세는 방식이 조금 부풀려져 있다고 느꼈다. 서론에는 기여가 네 가지로 적혀 있지만, 나머지 세 개는 결국 첫 번째 기여인 데이터셋이 쓸모 있다는 걸 보여 주는 실험이다. 데이터셋 논문에서 흔한 구성이라 큰 문제는 아니다.
그래도 데이터를 만든 과정은 투명하다. 주석자 두 명이 따로 표시하고, 판단이 다르면 세 번째 검토를 거치고, 일치도를 응답 단위와 구간 단위로 나눠서 숫자로 밝혔다. 데이터셋 논문에서 가장 중요한 부분은 탄탄하게 해 놓았다.
6. 정리
주석자 두 명이 따로 표시한 1만 8천 개 가까운 RAG 응답과 네 가지 유형 체계는 다른 연구자가 바로 가져다 쓸 수 있는 인프라라서 기여가 분명하다. 하지만 구간 단위 점수의 집계 방식이나 반복 실행 여부처럼 재현에 필요한 세부 사항이 빠져 있다. 그래서 탐지 알고리즘 벤치마크의 숫자는 조심해서 보고, 데이터셋 자체의 가치에 더 무게를 두게 된다.
개인적으로 이 논문에서 하나 가져간다면, 같은 hallucination이라도 문맥이 있는 상황과 없는 상황은 전혀 다른 문제라는 점이다. semantic entropy가 샘플마다 답이 흔들리는 경우를 잡는다면, RAGTruth가 보여 주는 오류는 문서를 잘못 읽거나 문서에 없는 말을 덧붙이는 경우다. 이런 오류를 잡으려면 응답을 문서와 직접 대조해야 한다. 그리고 이 논문에서는 RAGTruth로 파인튜닝한 13B 모델이 GPT-4-turbo 프롬프팅보다 F1이 높았다.
7. 같이 읽어볼 논문
- Manakul, Liusie, Gales (2023), SelfCheckGPT. 이 논문의 베이스라인으로, 외부 자원 없이 샘플링만으로 hallucination을 찾는 방식이다. 이걸 알아야 §5의 비교를 제대로 읽을 수 있다.
- Chen et al. (2023), FELM. 자연스럽게 생성된 LLM 응답에 사람이 주석을 단 선행 데이터셋이다. RAGTruth가 규모와 RAG 특화를 내세워 차별점을 주장하는 직접 비교 대상이다.
- Lewis et al. (NeurIPS 2020), Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. RAG라는 이름과 학습 구조를 정리한 논문이다.
- Tang, Laban, Durrett (EMNLP 2024), MiniCheck: Efficient Fact-Checking of LLMs on Grounding Documents. 근거 문서 기반 사실 검증 데이터를 모은 LLM-AggreFact 벤치마크를 만들고, 훨씬 싼 소형 모델로 GPT-4 수준의 성능을 노린 후속 연구다.