구조화된 출력에서 환각 현상을 줄이기 위한 RAG (feat. ServiceNow)

구조화된 출력에서 환각 현상을 줄이기 위한 RAG (feat. ServiceNow)

들어가며 :pytorch::kr:

이번에 살펴볼 논문은 LLM을 사용하여 사용자의 자연어 입력을 기반으로 JSON과 같은 구조화된 출력을 제공할 때 RAG를 사용하여 환각(Hallucination) 현상을 감소시키는 방법에 대한 연구입니다. 이 연구는 디지털 워크플로우 자동화 및 클라우드 기반 서비스 관리 솔루션을 제공하는 ServiceNow에서 진행 및 공개하였습니다.

이러한 접근 방식을 통해 워크플로우 생성 시품질을 향상시킬 뿐만 아니라 성능을 저하시키지 않으면서 더 작고 자원이 적게 소모되는 모델을 배포할 수 있게 되는데요, 아마도 ServiceNow 내부에 적용이 되었거나 적용되지 않을까 싶습니다. 다른 곳들에서도 참고할만한 연구인 것 같아 가져와봤습니다. :smiley:

논문 소개

대규모 언어 모델(LLM, Large Language Model)은 자연어를 코드나 SQL 쿼리 같은 구조화된 출력으로 변환하는 다양한 응용 프로그램에서 혁신을 가져왔습니다. 그러나 이러한 모델은 종종 환각 문제를 겪으며, 부정확하거나 존재하지 않는 출력을 생성합니다. 이 논문은 RAG를 통합하여 이 문제를 완화하고 자연어 입력에서 워크플로우를 생성하는 시스템을 소개합니다. 주요 기여로는 구조화된 작업에 대한 RAG 적용, 성능 저하 없이 모델 크기 감소, 그리고 도메인 외 설정에 대한 일반화 향상이 있습니다.

하지만 자연어 입력에서 워크플로우와 같은 구조화된 출력을 생성할 때 주로 발생하는 문제는 바로 LLM의 환각(Hallucination) 현상입니다. 환각은 특히 정확성이 중요한 기업용 애플리케이션에서 신뢰할 수 없고 사용하기 어려운 결과를 초래할 수 있습니다. 이 문제를 해결하는 것은 복잡한 작업의 신뢰할 수 있고 효율적인 자동화를 보장하여 생성형 AI를 기업 현장에 적용할 수 있도록 합니다.

즉, 이러한 문제는 대규모 언어 모델을 사용한 기업의 생산성 향상과 직결되며, 이를 위해 기존에는 LLM을 미세조정(파인튜닝, Finetuning)하거나, 문맥 내 학습(ICL, In-Context Learning)과 같은 방식을 사용하였습니다. 하지만 미세조정은 성능 향상 대비 필요한 리소스가 많으며, 미세조정 시 사용한 데이터가 포함된 도메인 외의 환각에는 별다른 효과가 없을 수 있습니다. 문맥 내 학습 기법은 정확성을 향상시킬 수는 있지만, 문맥의 길이 제한 및 제공하는 예시에 따라 품질의 변화가 크다는 단점이 있습니다.

이 외에도 쿼리와 문서를 동일한 의미 공간(Multidimensional Semantic Space)로 매핑하는 방식과 같은 밀집 검색(Dense Retrieval)과 같은 방식도 제안되었습니다. 이는 RAG 기법에서는 필수적이지만 일반적으로 구조화되지 않은 데이터들을 중심으로 하고 있다는 점에서 이번 주제와는 다르다고 할 수 있습니다.

제안하는 방법

이 논문에서는 LLM 사용하여 구조화된 출력을 생성할 때, RAG 기법을 사용하여 환각 현상을 줄이는 방법에 대해 초점을 맞추고 있습니다. 이를 위해 제안하는 대략적인 구조는 아래와 같습니다.

즉, 사용자의 입력(Query)에 대해 검색기(Retriever)를 사용하여 적절한 데이터를 가져온 뒤, JSON과 같은 구조화된 출력을 만들어내고자 합니다.

조금 더 자세히 살펴보면, 시스템은 RAG 기법을 활용하여 인덱스화된 데이터베이스에서 관련 워크플로우 단계와 데이터베이스 테이블 이름을 검색합니다. 이러한 검색 결과는 사용자 쿼리에 추가되고 LLM에 입력되어 정확한 구조화된 JSON 출력을 생성하는데 사용됩니다. 이 방법은 환각을 줄이고 성능 손실 없이 더 작고 효율적인 모델 배포를 가능하게 합니다.

주요 구성 요소

  • 시스템 아키텍처: 시스템의 아키텍처는 검색기와 LLM으로 구성되어 워크플로우를 생성합니다. 사용자가 자연어 요구사항을 제출하면 검색기가 인덱스화된 데이터베이스에서 관련 단계와 테이블 이름을 검색합니다. 이러한 제안은 사용자 쿼리에 추가되어 LLM에 입력되며, 이를 통해 구조화된 JSON 출력이 생성됩니다.

  • 검색기 학습: 검색기는 대조 손실을 사용하여 자연어 쿼리를 기존 JSON 객체, 예를 들어 워크플로우 단계 및 테이블 이름에 매핑하도록 학습합니다. 이는 쿼리와 JSON 객체의 긍정 및 부정 쌍을 생성하여 모델이 관련 정보를 정확하게 검색할 수 있도록 미세 조정하는 과정을 포함합니다.

  • LLM 학습: LLM은 검색기가 생성한 증강 데이터 세트를 사용하여 미세 조정됩니다. 학습 과정에서 LLM은 검색된 단계와 테이블 이름을 출력에 통합하는 방법을 학습하여 존재하지 않는 요소를 환각할 가능성을 줄입니다.

다음은 LLM 학습에 사용한 예시 데이터입니다. 밑줄친 텍스트는 검색기로부터 가져온 데이터로, 이를 System 프롬프트로 제공하고, 여기에 사용자의 질의(Query)를 함께 입력하여 LLM으로부터 데이터를 생성하도록 합니다.

빨간색으로 된 부분이 예상 출력으로, 위와 같은 방식을 사용하여 LLM이 구조화된 출력을 생성할 수 있도록 학습합니다.

성능 평가

분석 지표

논문에서 성능 평가를 위해 다음의 3가지 지표를 사용하고 있습니다:

  • Trigger Exact Match (EM): 생성된 JSON 트리거가 정답 JSON 트리거와 완전히 일치하는 비율. 여기서 트리거는 워크플로우의 시작 조건을 의미하며, 트리거에 포함된 데이터베이스 테이블 이름도 정확히 일치해야 합니다. 이 지표는 생성된 JSON 트리거와 실제 정답 JSON 트리거의 완전한 일치를 평가합니다. 예를 들어, 정답 JSON 트리거가 특정 이벤트나 조건에 따라 작동하도록 설정되어 있다면, 생성된 JSON 트리거도 동일한 조건과 이벤트를 포함해야 합니다.

  • Bag of Steps (BofS): 생성된 JSON 단계들이 정답 단계들과 순서에 상관없이 일치하는 정도. 이는 일종의 단어 백(Bag-of-Words) 접근 방식을 단계에 적용한 것입니다. 즉, 각 단계가 포함된 정도를 측정하는 것으로, 순서가 중요한 것이 아니라 포함된 단계의 정확성이 중요합니다. 예를 들어, 워크플로우에 "단계 A", "단계 B", "단계 C"가 필요한 경우, 생성된 JSON이 이 세 가지 단계를 모두 포함하고 있는지를 평가합니다. 단계의 순서는 중요하지 않습니다.

  • Hallucinated Tables/Steps (HT/HS): 생성된 JSON에 존재하지 않는 테이블이나 단계가 포함된 비율. **Hallucinated Tables (HT)**와 **Hallucinated Steps (HS)**는 생성된 JSON에 존재하지 않는 테이블이나 단계가 포함되었는지를 측정하는 지표입니다. 이 지표는 환각 문제를 직접적으로 평가하며, 환각된 테이블과 단계의 비율을 나타냅니다. 여기서 낮은 비율이 더 좋은 성능을 의미합니다. 예를 들어, 모델이 생성한 JSON에 실제로 존재하지 않는 데이터베이스 테이블 이름이나 워크플로우 단계가 포함된 경우, 이는 환각으로 간주되며, 해당 지표의 값이 증가합니다.

Retriever Encoder 성능


다양한 모델 유형 및 크기별 성능 평가 결과: 환각 지표는 낮을수록 좋음 (굵은 글씨: 최고 점수와 0.005% 이내의 결과)

Retrieval 성능 관점에서, 'Human Eval' 데이터셋에서 단계 및 테이블 검색 성능을 평가한 결과, 검색 엔진의 크기를 키워도 성능 향상은 미미했습니다. 특히, GTR-T5와 같은 대형 오픈 소스 인코더를 사용해도 큰 차이가 없었습니다.

하지만 미세 조정된 인코더는 검색 성능을 크게 향상시킬 수 있음을 확인하였습니다. 다양한 네거티브 샘플링 전략을 사용한 결과, 'all-mpnet-base-v2' 모델이 가장 우수한 성능을 보였습니다.

즉, 이를 통해 대형 모델을 사용하는 것보다 도메인에 특화된 데이터로 미세 조정하는 것이 더 효과적이라는 것을 보여줍니다. 이는 검색 엔진의 성능 향상을 위해 도메인 특화 미세 조정이 중요함을 시사합니다.

이는 더 작은 모델도 미세 조정을 통해 충분히 좋은 성능을 낼 수 있어, 리소스 절약 측면에서도 유리함을 나타내며, 모델 크기와 성능의 균형이 중요함을 보여줍니다.

RAG 성능

검색기(Retriever)를 사용하지 않고 LLM만 미세 조정했을 때의 'Human Eval' 데이터셋에서 환각된 단계와 테이블의 비율이 최대 21%에 달했습니다. 그러나 검색기를 사용하면 단계 환각은 7.5% 이하, 테이블 환각은 4.5% 이하로 감소했습니다.

즉, RAG 시스템을 도입함으로써 LLM 단독 사용에 비해 환각을 크게 줄일 수 있음을 보여줍니다. 이는 검색기를 통한 보강이 LLM의 출력 품질을 크게 향상시킬 수 있음을 시사합니다.

또한, 더 큰 LLM을 사용할수록 단계와 트리거 정확 매칭 지표가 개선되었습니다. 특히, RAG를 사용한 경우, 모델 크기가 클수록 더 일관된 성능 향상이 나타났습니다.

하지만 1B 모델은 다른 모델보다 환각이 더 많았지만, 3B 모델은 7B 모델과 비슷한 성능을 보였으며, 15.5B 모델과의 성능 차이도 크지 않았습니다. 이러한 결과는 효율성과 성능의 균형을 맞추는 것이 필요함을 의미합니다.

도메인 외(OOD, Out-of-Domain) 평가

RAG 파인튜닝된 StarCoderBase-7B의 OOD 성능

도메인 외(OOD; Out-of-Domain) 평가에서도 'Human Eval' 데이터셋과 유사한 성능을 보였습니다. 제안된 단계와 테이블 이름 없이 평가한 결과, 모든 지표가 크게 악화되었습니다. 이는 검색기를 통한 보강(RAG)이 도메인 외의 시나리오에서도 성능을 유지하게 함을 보여줍니다. 즉, 시스템이 다양한 도메인에서 일관되게 동작할 수 있음을 의미합니다.

또한, 별다른 제안이 없는 경우, 모델은 학습 데이터에 포함된 단계만 생성하려는 경향, 즉, 단계 생성에 있어서의 보수적인 경향을 보였습니다. 그러나 테이블 이름 생성에서는 더 창의적이었습니다. 이러한 점은 제안된 단계와 테이블 이름이 모델 성능에 중요한 영향을 미치며, 이를 통해 모델이 더 다양한 출력을 생성할 수 있음을 시사합니다.

오류 분석 (Error Analysis)

자주 사용하지 않는 단계가 검색 결과로 포함되지 않으면 LLM이 유효한 워크플로우 생성을 하는 것에 어려움을 겪는 것을 확인하였습니다. 이는 검색기의 정확도가 전체 시스템의 성능에 큰 영향을 미침을 볼 수 있었으며, 이러한 검색 성능을 향상시키기 위한 방법으로 쿼리를 더 짧은 텍스트로 분할하는 것 등을 고려해볼 수 있을 것입니다.

또한, Try나 If, ForEach와 같은 논리적 단계를 포함하는, 복잡한 흐름을 갖는 경우에도 LLM은 제대로된 구조를 생성하는데 어려움을 겪었습니다. 이를 통해 LLM의 구조적 이해에 대한 능력을 향상시키기 위해 추가적인 학습 데이터 생성 및 미세조정이 필요할 수 있음을 시사합니다.

엔지니어링 관련 영향 (Impact on Engineering)

전반적으로 7B 모델이 가장 좋은 성능을 보여주었으며, 이는 더 큰 배치 크기를 처리하여 시스템 처리량을 증가시킬 수 있기 떄문으로 보입니다. 따라서 모델은 더 큰 모델을 사용하여 시스템 처리량을 증가시키면서, 검색기는 작은 것을 사용하여 자원 효율성을 최적화할 수 있을 것으로 보입니다.

특히, 검색기를 매우 작은 인코더로 학습하여 LLM과 같은 GPU에 배포하거나 CPU에서 실행이 가능하도록 하여, 응답시간을 최적화하는 결과를 확인할 수 있었습니다.

이처럼 검색기와 LLM을 독립적으로 최적화하여 각 역할을 담당하는 팀들 간의 역할을 명확히 분담하고 최적화 작업을 독립적으로 수행하면서도 전반적인 성능을 끌어올릴 수 있을 것으로 기대합니다.

결론

이 논문의 결과는 검색-강화 생성(RAG) 시스템이 구조화된 출력 작업에서 환각을 효과적으로 줄일 수 있음을 보여줍니다. 작은 검색기 모델과 LLM을 결합하여 성능을 유지하면서도 리소스 요구량을 줄여 확장성과 실용성을 높입니다. 향후 작업으로는 검색기와 LLM 간의 시너지를 개선하는 방안을 포함합니다.

하지만 이러한 시스템 또한 환각을 줄일 수는 있지만, 그 위험을 완전히 제거할 수는 없음을 밝히고 있습니다. 저자는 사용자가 생성된 워크플로우의 정확성을 검토하고 수정할 수 있도록 후처리 및 사용자 검증의 중요성을 강조합니다. 이는 AI 응용 프로그램에서 인간의 감독이 지속적으로 필요함을 보여줍니다.

논문: Reducing hallucination in structured outputs via Retrieval-Augmented Generation

소개 트윗

https://twitter.com/rohanpaul_ai/status/1793794286456127825




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: