본문 바로가기

ML/인공지능

[논문 리뷰] T-RAG: LESSONS FROM THE LLM TRENCHES

https://arxiv.org/pdf/2402.07483.pdf

 

요약

해당 문서에는 전반적인 RAG설명과 함께 Tree를 이용한 계층적 엔티티를 사용하면 기존 RAG보자 성능을 향상 시킬수 있습니다.
단 기존 RAG와 마찬가지로 리트리버 쿼리의 질문이 중요하며, Tree 구조를 쓸 수 있을때에만 효과를 발휘할수 있습니다. ( 엔티티의 데이터가 필요 없는 질문에 사용하면 오히려 데이터의 정답율이 하락합니다)

 

Abstract

대규모 언어 모델(LLM)은 놀라운 언어 기능을 보여주며 다양한 영역의 애플리케이션에 통합하려 시도하고 있습니다. 검색 증강 세대(RAG)는 LLM 기반 애플리케이션을 구축하기 접합한 프레임워크로 부상했습니다. RAG를 구축하는 것은 비교적 간단하지만, 견고하고 안정적인 애플리케이션을 만들려면 광범위한 사용자 정의와 애플리케이션 도메인에 대한 비교적 깊은 지식이 필요합니다.

tree-RAG(T-RAG) 시스템은 트리 구조를 사용하여 조직 내 엔티티 계층을 표현합니다. 이는 계층 구조의 엔티티와 관련된 사용자 쿼리에 응답할 때 맥락을 보강하는 텍스트 설명을 생성하는 데 사용됩니다. 트리 검색+ 벡터검색  조합은 RAG or fine tuning 보다 더 나은 성능을 발휘하는 것으로 나타났습니다.

 

 

Introduction

LLM의 지원 분야는 거버넌스/정책 매뉴얼과 같은 조직 문서에 대한 질의응답입니다. 이러한 문서는 조직 내 일상적인 운영과 의사 결정에 지침이 되기 때문에 자주 참조하는 경우가 많습니다. 조직 문서를 기반으로 다양한 사용자 쿼리에 응답할 수 있는 애플리케이션을 사용하면 효율성을 높일 수 있습니다.

우려 사항은 문서의 기밀 보안 위험입니다. 데이터 유출 위험 때문에 외부 API를 통한 LLM 모델을 사용할 수 없습니다.

 

 

2. Related Work

검색 증강 생성(RAG)

https://docs.llamaindex.ai/en/latest/getting_started/concepts/


LLM은 잘못된 정보나 '환각'을 생성할 수 있습니다. RAG는 외부 데이터 소스에서 정보를 검색한 다음 문맥 정보를 LLM 모델에 전달하여 응답을 생성함으로써 잘못된 정보나 환각의 한계를 해결합니다. 그 결과 RAG에서  생성된 응답은 기존 LLM의 응답보다 사실 정확도와 관련성이 향상됩니다.
RAG는 사전 학습 중에도 사용할 수 있지만, 실용적이고 상대적으로 사용하기 쉽기 때문에 추론에 널리 사용됩니다. 하지만 RAG는 컨텍스트를 만드는 데 사용되는 검색된 문서의 구성에 민감하므로 효과적인 검색 파이프라인을 구축하려면 광범위한 사용자 정의가 필요합니다. RAG는 미세 조정과 같은 다른 접근 방식과 결합할 수도 있습니다.

 

 

지식 그래프

https://realkm.com/2023/05/22/introduction-to-knowledge-graphs-section-4-2-semantics-and-entailment/
https://realkm.com/2023/05/22/introduction-to-knowledge-graphs-section-4-2-semantics-and-entailment/


RAG 애플리케이션은 일반적으로 사용자 쿼리를 기반으로 관련 문서를 가져오기 위해 리트리버에 의존하지만, 관련 컨텍스트를 검색하는 다른 접근 방식도 있습니다. 접근 방식 중 하나는 지식 그래프를 사용하여 입력 쿼리를 기반으로 컨텍스트를 생성하는 것입니다. 지식 그래프는 실제 사실에 대한 상징적 지식을 엔티티 쌍(그래프의 노드)과 그 관계(그래프의 에지)를 나타내는 삼각형으로 표현합니다. 사용자의 쿼리에 언급된 엔티티를 기반으로 지식 그래프에서 관련 정보를 추출하여 원시 데이터를 제공하거나 텍스트 문장으로 다시 작성하여 컨텍스트로 제공할 수 있습니다.

 

 

 

Retrieval-Augmented Generation 개요

검색 증강 생성(RAG)은 모델에 외부 정보 소스를 제공함으로써 도메인별 작업에서 LLM의 성능을 향상시킵니다. 다양한 변형이 있지만 일반적인 RAG 애플리케이션에 대한 개요를 제공합니다. 이는 일반적으로 애플리케이션을 시작할 때 한 번 수행되는 인덱스 프로세스와 들어오는 쿼리에 대한 응답으로 매번 수행되는 쿼리 프로세스의 두 가지 프로세스로 구성됩니다

 

1. 인덱스 프로세스는 다음과 같이 진행됩니다. 입력 문서 D는 개별 청크 {c1, c2, ..., cn}로 분할됩니다.

2. 인코더 모델을 사용하여 분할된 청크 ci를 임베딩 벡터를 생성한 다음 벡터 데이터베이스에 저장합니다

3. 사용자 쿼리에 대한 응답으로 주어진 쿼리 q에 대해 인코딩 모델은 쿼리의 벡터 임베딩을 생성하는 데 사용됩니다.

4. 임베딩  {d1, d2, ... dk} 중 쿼리 임베딩과 유사한 청크 임베딩을 데이터베이스를 검색하여 상위 k 청크를 찾습니다.

5. 쿼리와 함께 데이터베이스에서 검색된 상위 k개의 청크 {c1, c2, ..., ck}가 프롬프트 템플릿으로 전달됩니다.
6. 제공된 정보를 기반으로 출력을 생성하는 LLM 모델에 입력 후 응답을 사용자에게 반환합니다.

 

usecase

다음은 조직의 거버넌스 매뉴얼을 기반으로 한 질문 답변입니다. 
(i) 조직의 관리 원칙, 다양한 조직 기관의 의무 및 책임에 대한 설명
(ii) 조직 산하 엔티티의 전체 계층 구조 및 분류에 대한 세부 정보

이 문서를 기반으로 질문에 대하여 다양한 조직 기구와 그 책임에 대한 설명, 조직 내 단체와 그 단체가 속한 카테고리의 나열 등 다양한 질문에 답할 수 있어야 합니다. 다음은 UN 조직에 대한 문서를 기반으로 사용자가 질문할 수 있는 몇 가지 유형의 예시입니다:

- Giga3는 유니세프와 ITU 대응 기관을 전략에 어떻게 참여시킬 계획인가요?
- HR 관리 대상 기관의 예를 들어주세요.
- 2023년 Giga3가 타겟으로 삼을 세 가지 광범위한 고객층은 누구인가요?


(Giga는 모든 학교를 인터넷에 연결하는 것을 목표로 하는 유니세프와 ITU의 기관 // ITU는 국제전기통신연합 )

 

 

 

Tree-RAG(T-RAG)의 워크플로. 

1. 주어진 사용자 쿼리에 대해 벡터 데이터베이스에서 컨텍스트로 사용할 관련 문서를 청크를 검색합니다.

2. 쿼리가 조직의 엔티티를 언급하는 경우 엔티티 트리에서 해당 엔티티에 대한 정보를 추출하여 컨텍스트에 추가합니다.

3. 조직의 문서에서 생성된 명령어 데이터 세트에 대해 Llama-2 7B 모델을 fine tuning 했습니다.

4. fine tuning된 모델을 응답 생성에 사용합니다.

 

 

T-RAG의 특징은 컨텍스트 검색을 위해 벡터 데이터베이스외에 엔티티 트리를 포함한다는 점입니다. 엔티티 트리는 조직의 엔티티와 계층 구조 내에서의 위치에 대한 정보를 담고 있습니다. 이 트리의 각 노드는 엔터티를 나타내며, 상위 노드는 해당 엔터티가 속한 그룹을 나타냅니다.

 

검색하는 동안 엔티티 트리를 사용하여 벡터 데이터베이스에서 검색한 컨텍스트를 더욱 보강합니다. 엔티티 트리 검색 및 컨텍스트 생성은 다음과 같이 이루어집니다. 

1. 파서 모듈이 사용자 쿼리에서 조직 내 엔티티 이름과 일치하는 키워드를 검색합니다.

2. 하나 이상의 일치하는 항목이 발견되면 트리에서 일치하는 각 항목에 대한 정보를 추출하여 해당 항목과 조직의 계층 구조 내에서 해당 항목의 위치에 대한 정보를 제공하는 텍스트 문장으로 변환합니다.

3. 정보를 벡터 데이터베이스에서 검색된 문서 청크와 결합하여 컨텍스트를 형성합니다.

이를 통해 모델은 엔티티와 조직의 계층 구조 내에서 엔티티의 위치에 대한 정보에 액세스할 수 있습니다.

 

 

LLM finetuning

LLM의 Full finetuning은 많은 수의 파라미터를 고려할 때 계산 비용이 많이 듭니다. 파라미터 효율적 미세 조정(PEFT)은 LLM을 효율적으로 fine tuning하기 위한 기술입니다. 이러한 기법 중 하나는 모델 가중치의 4비트 양자화(Quantization)와 저순위 적응(LoRA)[Hu et al.(2021)]을 조합하여 사용하는 QLoRA[Dettmers et al.(2023)]기법입니다. LoRA 방법은 LLM 모델의 모델 가중치가 내재적 순위가 낮아 낮은 순위 행렬로 근사화할 수 있다는 가설에서 착안하여 훈련 중에 업데이트해야 하는 파라미터의 수를 크게 줄입니다.

 

 

 

컨텍스트 생성을 위한 검색 프로세스

여기서는 UNHCR 조직도의 예시를 통해 트리 검색 및 검색이 어떻게 수행되는지 보여드리겠습니다. 

1. 컨텍스트 문서를 검색하는 것 외에도 사용자 정의 규칙이 포함된 spaCy 라이브러리를 사용하여 조직에서 명명된 엔티티를 감지합니다. 2. 쿼리에 그러한 엔티티가 하나 이상 포함되어 있으면 계층 구조 내에서 해당 엔티티의 위치에 대한 정보가 트리에서 검색되어 텍스트 문장으로 형식이 지정된 다음 검색된 문서와 함께 컨텍스트에 추가됩니다.

3. 사용자의 쿼리에 언급된 엔터티가 없는 경우 트리 검색은 건너뛰고 검색된 문서의 컨텍스트만 사용됩니다.

 

 

Tree Graph for Entities

조직 계층 구조와 그 안의 모든 엔터티는 트리 형태로 인코딩되며, 각 노드는 조직 내의 일부 엔터티를 나타냅니다. 각 노드의 부모는 해당 노드가 속한 바로 위 카테고리를 나타냅니다. (위의 그림에서는 UNHCR6 조직도의 일부를 보여주는 예시입니다. 표시된 예에서 부다페스트의 글로벌 서비스 센터는 고등판무관 사무소 산하에 있는 부고등판무관 산하의 조직입니다.) 이러한 방식으로 트리는 각 엔티티에 대한 조직 내 전체 계층 구조를 인코딩하며, 엔티티에서 해당 엔티티가 속한 상위 카테고리와 그 아래에 속할 수 있는 다른 엔티티까지 전체 경로를 추적하는 데 사용할 수 있습니다.

이 정보는 검색 단계에서 추출하여 텍스트 문장으로 변환할 수 있습니다. 그런 다음 이러한 문장은 벡터 데이터베이스에서 검색된 문서 청크와 함께 컨텍스트에 포함됩니다.

 

 

 

 

6. Results

실험을 위해 RAG / fine tuning된 모델 / T-RAG 사용

Performance Evaluation

질문에 따른 답변이 올바른지(C) / 답변이 질문과 관련 있지만, 정답은 아닌경우(CV) / 답변이 관련성이 없는지(N) 에 대한 라벨링을 사람이 체점

T = C +CV (정답 갯수 총합) / T-RAG가 전반적으로 더 나은 성과를 달성했지만, 장황한 답변이 더 많았습니다.

 

RAG에서 문서 청크를 사용하여 생성한 질문 및 답변 예시(트리 없는 컨텍스트 없음)를 사용하여 UNHCR 엔티티를 기반으로 생성된 예시입니다. 굵은 빨간색으로 표시된 기관은 실제로는 고등판무관실 소속이지만 부 고등판무관 아래에 잘못 나열되어 있습니다

 

 

구축시 고려사항들

* 초기 RAG 애플리케이션을 구축하는 것은 쉽지만, 이를 견고하게 만드는 것은 간단하지 않으며, 도메인 지식에 대한 전문 지식이 필요하고시스템의 다양한 구성 요소를 최적화하기 위한 많은 선택이 필요합니다.

* 미세 조정된 모델은 질문의 문구에 민감할 수 있습니다. 예를 들어, 미세 조정된 모델에게 "~를 포함하는 모든 목록"과 "모든 ...의 목록"을 제공하도록 요청했을 때, 전자의 질문에 대한 모델의 응답에는 이름을 지어낸 환각이 포함된 반면 후자의 질문에는 정답을 맞혔습니다.
이를 질문 문구의 다른 변형과 함께 관찰하고 훈련 데이터 세트의 문구 차이가 한 가지 설명이 될 수 있다는 가설을 세웠습니다.

* 미세 조정된 모델은 모델 파라미터에 정보를 통합하여 필요한 컨텍스트 양을 줄임으로써 LLM의 제한된 컨텍스트 창에서 공간을 절약할 수 있습니다. 

 

 

 

7. RAG vs. Finetuning

 

fine tuning은 모델을 훈련 시 많은 리소스가 필요합니다. 소규모 애플리케이션의 경우, RAG의 계산 요구 사항은 사용된 검색 기술 이상으로 최소화될 가능성이 높습니다. RAG에 비해 fine tuning을 사용하면 조직의 문서에 맞게 모델의 글쓰기 스타일과 어조를 조정할 수 있습니다. 그러나 모델의 매개 변수(하이퍼 파라미터)를 업데이트하면 전반적인 언어 능력이 저하될 수 있으므로 fine tuning은 신중하게 수행해야 합니다.

 

fine tuning에는 고품질의 학습 데이터 세트를 큐레이팅하고 하이퍼 파라미터를 조정하는 노력이 필요하지만 RAG 역시 많은 최적화가 필요합니다.

위에서 제시된 RAG 알고리즘을 살펴보면 각 단계에서 살펴볼 수 있는 설정이 많이 있습니다. 소스 문서, 임베딩 모델 및 검색 알고리즘 선택 등 각 단계에서 탐색할 수 있는 설정이 많습니다.

 

정보 갱신

LLM 애플리케이션을 유지 관리하려면 시간이 지남에 따라 기본 문서가 변경됨에 따라 지식 베이스를 업데이트해야 합니다.
RAG의 경우 검색 데이터베이스를 업데이트하면 이 작업을 쉽게 수행할 수 있으므로 동적이고 빈번한 업데이트에 더 적합합니다.

fine tuning된 모델 업데이트는 학습 데이터세트를 준비하고 모델을 다시 학습시켜야 하므로 기본 문서가 자주 변경되지 않는 애플리케이션에 더 적합합니다.


RAG를 사용하면 주어진 맥락에서 모델의 응답을 근거로 삼아 환각을 상당히 줄일 수 있습니다[Zhang et al.(2023)]. 
그러나 RAG는 파이프라인 전반에 걸쳐 많은 한계를 가지고 있으며 잡음이 많거나 불완전한 컨텍스트에 민감하여 환각과 불완전한 답변을 초래할 수 있습니다.

 

LLM 환각을 줄이는 것은 여전히 미해결 연구 과제이며, 향후 프레임워크가 시간이 지남에 따라 성숙해짐에 따라 시스템을 더욱 견고하게 만드는 데 도움이 될 수 있습니다[Ye et al.(2023)].

 

 

 

 

 

 

뭐 이런걸 시킨다냐..

이럴거면 aiml팀으로 보내주던가..

 

참고

 

https://cobusgreyling.medium.com/t-rag-rag-fine-tuning-entity-detection-9a5aaa01e437

https://velog.io/@aeolian83/%EB%85%BC%EB%AC%B8%EB%B2%88%EC%97%AD-T-RAG-LESSONS-FROM-THE-LLM-TRENCHES