1 of 31

효율적인 RAG 구축 공략

: 과학지식 편

(The Goal of Building an Efficient RAG: Scientific Knowledge)

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

GBE-SK

가상민, 김다운, 김도연, 서상혁, 신동혁, 이소영, 장호준

2 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

Content

01. 팀원 소개

02. 대회 소개

03. Strategy

05. Result

04. 5-aspects

06. 경진대회 진행 소감

07. Q&A

3 of 31

01

팀원 소개

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

팀원 소개

1

2

3

가상민

김다운

김도연

4

5

6

7

서상혁

신동혁

이소영

장호준

5 of 31

02

대회 소개

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

6 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

대회 개요

  1. 과학 상식에 대한 질문 의도인지 그렇지 않은 지 판단.
  2. 과학 상식 질문이라면 검색엔진으로부터 적합한 문서들을 추출하고 이를 기반으로 답변을 생성.
  3. 만일 과학 상식 이외의 질문이라면 검색엔진을 활용할 필요 없이 적절한 대답 바로 생성.

과학 상식을 질문하는 시나리오를 가정

과학 상식 문서 4200여개를 미리 검색엔진에 색인

대화 메시지, 질문

7 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

평가 지표

MAP(Mean Average Precision)

  1. 질의 N개에 대한 Average Precision의 평균 값 계산.
  2. Average Precision은 Precision-recall curve에서 아래의 면적을 의미.

8 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

제출 파일

9 of 31

03

Strategy

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

10 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

데이터 설명

과학 상식 정보로 색인 대상 문서 4200여개.

* 'doc_id' : uuid로 문서별 id가 부여

* 'src' : 출처를 나타내는 필드

* 'content' : 실제 RAG에서 레퍼런스로 참고할 지식 정보

11 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

평가 데이터

eval.jsonl

  • 총 220개의 메시지. 이 중 20개는 멀티턴 대화, 또 다른 20개는 일반 대화를 포함.
  • 대화 메시지의 경우 LLM이 받는 입력 포맷으로 구성.

{"eval_id": 243, "msg": [ {"role": "user", "content": "사람이나 물체가 지구 위에서 땅속으로 꺼지거나 바깥으로 튕겨나가지 않고 가만히 서 있을 수 있잖아?"}, {"role": "assistant", "content": "네 맞습니다."}, {"role": "user", "content": "그 이유를 힘의 원리로 설명해줘."}] }

멀티턴 대화

일반적인 대화 메시지

{"eval_id": 32, "msg": [{"role": "user", "content": "오늘 너무 즐거웠다!"}]}

멀티턴 대화

일반 대화

12 of 31

04

5-aspects

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

13 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4. 효율적인 성능 5가지 측면

4-1. 프롬프트 측면

4-2. 모델의 임베딩 측면

4-3. 역색인과 임베딩의 혼합 측면

4-4. 역색인 측면

4-5. Hyde기반의 문서 검색

14 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-1. 프롬프트 측면

📕 프롬프트 역할

질의 의도 분석 & 일반 대화 메시지 대응

1. 지식과 관련된 메시지에 대해 search 함수를 호출하고 적절한 standalone query를 추출해야 한다.

2. 지식과 관련 없는 일반 대화에 대해 search 함수를 호출하지 않고 적절한 대답을 생성해야 한다.

📕 목표(GOAL)

15 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-1. 프롬프트 측면

❓ 질의 분석 Instruction

1. “과학 지식에 관한” → “지식에 관해”

: 다양한 주제의 지식 관련 질문을 모두 처리하도록

2. “반드시” : 지식 관련 메시지임에도 search 함수가

호출되지 않는 문제 해결

3. “함수 호출 없이” : search 함수 호출하지 않아야 하는 메시지(일반 대화 메시지)임에도 함수 호출되는 문제 해결

- 🆔 최대한 많은 키워드를 포함하도록 수정

"description"

: "User's question. Full message if the user message is single-turn."

⇒ 싱글턴 메시지의 경우, user의 메시지를 그대로 쿼리로 추출하도록

- parameter 이름 : “standalone_query” → “question”

⇒ 단어의 나열보다는 질문 형식 그대로 추출하도록

📕 Persona_function_calling

📕 Function calling - Standalone_query 정의

16 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-2. 모델의 임베딩 측면

  • 문장간에 tag가 일치하는 경향이 주요 score임.

# 어미, 조사, 구분자, 줄임표, 지정사, 보조 용언 등을 제거된 내용.

"stop tags": ["E", "J", "SC", "SE", "SF", "VCN", "VCP", "VX"]

  • 의미가 비슷한 것이 추론되는 경향이 주요 score임.

📕 L2 Norm

📕 Cosine Similarity

17 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-2. 모델의 임베딩 측면

Baseline

- SBERT 기반 모델 8개 - baseline 모델 보다 높은 성능

- hunkim/sentence-transformer-klue

- jhgan/ko-sbert-sts

- sentence-transformers/LaBSE

- sentence-transformers/sentence-t5-large

- bespin-global/klue-sroberta-base-continue-learning-by-mnr

- bongsoo/moco-sentencedistilbertV2.1

- sentence-transformers/distiluse-base-multilingual-cased-v2

- sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

- RoBERTa 기반 모델 3개 - 의미론적 유사도 성능이 SBERT보다 높음*

- ddobokki/klue-roberta-base-nli-sts

- jhgan/ko-sroberta-multitask - 가장 높은 성능

- jhgan/ko-sroberta-sts

📕 다양한 임베딩 모델(vector encoder) 11개 실험

18 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-2. 모델의 임베딩 측면

📕 임베딩 모델 파인튜닝

: LLM으로 각 document에 대해 가상의 질문 3개씩 생성하여 학습 데이터를 구축한 뒤 파인 튜닝하는 방식

Step 1. Question Generation

  • gpt-3.5-turbo-1106 모델 사

Step 2. query + document pair 생성

& 학습 데이터 구축

Step 3. 모델 파인튜닝

  • jhgan/ko-sbert-sts
  • jhgan/ko-sroberta-multitask

domain을 사용해

1 Positive Pair + 15 Negative Pair (10 Hard, 5 Soft) 생성하여

학습 데이터 구축

  • 12816 x 16개

question/document/domain으로 구성된 json 데이터 생성

  • 4272 x 3 = 12816개

19 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-3. 역색인과 임베딩의 혼합 측면

Model

Sparse

Dense

E.T.C(기타)

1

0.0005

1

boost

2

0.1

1.5

boost

3

0.002

1

boost

4

0.02

1.5

boost

5

0.03

0.7

boost

6

0.01

1

boost

7

0.001

1

boost

💎 역색인 + Vector 유사도 혼합

body =

{ "query":

{

"match":

{ "content":

{ "query": query_str,

"boost": 0.002 }

}

},

"knn": { "field": "embeddings",

"query_vector": query_embedding.tolist(),

"k": 5,

"num_candidates": 50,

"boost": 1 },

"size": 3

}

es.search(index="test", body=body)

* score = 0.0025 * match_score + 1 * knn_score

📕 hybrid(sparse retrieve + dense retrieve)

20 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-4. 역색인 측면

📕 확률 모델 (BM25) → 언어 모델 (LM Jelinek-Mercer)

BM25 (Best Matching 25)

  1. 확률적 정보 검색 모델
  2. 검색 쿼리와 문서 간의 일치하는 단어의 수를 기반으로 점수를 계산
  3. 쿼리와 문서 간의 유사성을 측정할 때 단어의 출현 빈도(frequency)와 문서의 길이(length)를 고려
  4. 단어가 문서에 자주 나타나거나 문서의 길이가 긴 경우에는 가중치를 줄이고, 쿼리와 문서 간의 일치하는 단어가 적거나 문서의 길이가 짧은 경우에는 가중치를 높이는 방식으로 동작

21 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-4. 역색인 측면

📕 확률 모델 (BM25) → 언어 모델 (LM Jelinek-Mercer)

💎 LM Jelinek-Mercer

  1. 언어 모델 기반의 유사도 모델
  2. 쿼리와 문서 간의 유사성을 측정할 때 언어 모델을 사용하여 단어의 확률을 고려
  3. 일반적으로 문서 내에서 각 단어의 확률은 문서의 일치성을 반영하는데 사용됨
  4. Jelinek-Mercer 스무딩은 많은 문서에 존재하지 않는 단어들에 대해 보다 적절한 가중치를 할당

BM25와는 달리 단어의 출현 빈도나 문서의 길이보다는 언어 모델을 기반으로 유사성을 측정하는 특징이 있음

22 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-4. 역색인 측면

📕 nori analyzer에 동의어 filter 추가

💎 “다음 세대”와 “후손”이 동의어로 등록되어 있다면

“다음 세대”로 검색한 결과에 “후손”이 포함된 문서도 검색 결과로 반환됨

"synonyms_filter": {

"type": "synonym",

"lenient": True,

"synonyms": [

"Dmitri, 드미트리",

"traffic, 트래픽",

*

*

*

"결혼 전, 혼전",

"숨, 호흡"

]

}

23 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

4-5. HyDE 기반 문서 검색

📕 Hypothetical Document Embeddings(HyDE)

🔱 HyDE Prompt 🔱

  • hyde_qa =

  • ## Role: 과학 상식 전문가
  • ## Instruction- 사용자의 질문에 대해 한국어로 한 문장으로 요약하여 답변한다.

12.55% 향상

기존 한계 :

기존 문서 검색시 사용자의 기본 쿼리를 검색으로 한 색인화 작업으로 인한 관련된 결과가 없을경우 생성시에 어려움이 존재함.

해결책 :

사용자의 기본 쿼리보다, 문서 검색을 수행할 때 가설적인 답변을

생성하고, 생성된 결과를 색인에 사용하면 질문 자체인 기존 사용자의 기본 쿼리를 직접적으로 사용하는 것보다 우수한 결과가 입증 됨.

측면 :

향상된 신뢰성, 효율성 및 생산성

24 of 31

05

Result

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

25 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

결과(Public)

26 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

결과(Private)

27 of 31

06

경진 대회 진행 소감

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

28 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

Feedback

대회 평가

데이터 탐색 및 분석

대회 관련 Solution

대회 진행 방향

* 대회가 answer를 내는 end to end 가 아닌 적합한 reference를 얼마나 잘 추출했는지에 대한 평가를 진행하기 때문에 그 부분에 집중하여 진행하는 것이 좋을 것이다.

* 차별점을 얻기 위해 fine tuning을 한다면 그 과정을 진행하는 ‘이유’ 에 대해서 생각하는 습관을 만드는 것이 좋다.

* 과학 상식인지 과학 상식이 아닌지에 대한 하나의 모듈을 더 생성해서 진행 하는 것이 좋을 것이다.

* RAG 로만 해결한다고 했을 경우 유사도나 score를 가지고 threshold를 구성하지만, 단순히 threshold 를 지정해서 모델 학습을 시키는 것이 위험할 수 있다.

* QA의 경우 2가지로 나눌 수 있다.

  1. Question 자체가 단순해서 document가 그대로 드러나는 경우가 있다 : 키워드 중심으로 후보를 선정하는 것이 효과적
  2. Question이 추론이 필요한 질문이어서 해당 답변을 유추할 수 있는 형태의 문제가 있다 : 딥러닝 쪽으로 진행하는 것이 효과적

* 데이터를 분석하는 과정이 가장 먼저 진행되어야 할 Task 이다.

* train 데이터 탐색 시 과학 질문인지 아닌지 판단했을 때 정확도에 얼마나 영향을 미치는지 분석해 볼 필요가 있다.

* 데이터를 파악한 후 어느 쪽에 힘을 줘야 할지 판단하는 것이 중요하다.

29 of 31

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

진행 소감

* 검색 엔진을 활용하여 과학 지식에 기반한 질의 응답 시스템을 구축하고, 적절한 답변을 생성하는 과정을 이해할 수 있다.

의 의

차기 아이디어

아쉬운 점

배운점

* Scientific Knowledge Question Answering에 초점을 맞춘 Information Retrieval 시스템을 구축하는 경험을 할 수 있다.

* Elasticsearch, 역색인 기법, 벡터 유사도 기법에 대해 학습해보고 심층적으로 연구해볼 수 있는 시간을 가질 수 있었다.

* 대회에서 사용된 Retrieval techniques와 Generation 모델의 통합에 대해 학습할 수 있었다.

* Information Retrieval 대회의 참여 기간이 짧아서 다양한 검색 모델과 생성 모델의 조합을 테스트 해보지 못한 것이 아쉬웠다.

* 제한된 데이터와 자원 내에서 최적의 검색 결과를 추출하기 위한 인덱싱 및 쿼리 전략을 개발하는 것이 도전적이었다.

* 임베딩된 문서 벡터를 잘 반영할 수 있는 LLM 모델을 선정하는 것.

* Elasticsearch에 대한 심도있는 공부를 통해 좀 더 효율적으로 사용하기 위한 방법 모색

* MAP(Mean Average Precision) 지표를 사용하여 검색 결과의 정확도를 평가하는 방법을 배웠다.

* 작은 규모의 데이터셋으로 초기 실험을 수행하고 이를 전체 데이터셋으로 확장하는 전략의 중요성을 깨달았다.

* RAG 시스템의 개발에 중점을 두어, 검색된 문서가 질문에 얼마나 잘 매칭되는지 평가하는 새로운 접근 방식을 경험할 수 있다.

* 생성된 답변이 사용하는 API에 따라서도 달라지는 경향을 보이므로, 앙상블을 적용할 방법을 모색할 것.

* Elasticsearch를 효율적으로 활용하지 못하여 아쉬웠다.

* 추론된 Data들을 활용하여 model 과 model 사이의 장단점을 구분하는 방법을 늦게 알게 되어 아쉬웠다.

* HyDE 기반 문서 색인 방법을 적용한 모델 학습 방법을 모색할 것.

30 of 31

Q&A

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지

31 of 31

감사합니다.

www.fastcampus.co.kr

Copyright ⓒ FAST CAMPUS Corp. All Rights Reserved. 무단전재 및 재배포 금지