Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
GPT를 이용한 Reranker 테스트
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2024-10-05
2024-10-05
760
# RAG는 왜 어렵나 이 글을 읽고 있다면 RAG가 무엇이고 왜 유용한지 이미 알고 있을 거라고 생각한다. RAG를 이용하면 (어느 정도는)똑똑한 언어 모델에 더 많은 맥락을 제공해서 자연어 기반의 응답을 얻을 수 있다. RAG를 이용해서 높은 품질의 응답을 얻기 위해서는 아래와 같은 고려 사항이 있다. * 데이터 품질: 신뢰 할 수 있으며 잘 정리된 데이터가 필요하다. 기업에서 사용 할 경우 신뢰 할 수 있는 데이터는 찾을 수 있을 것이다. 문제는 데이터가 JSON, 일반 텍스트, PDF, 이미지 등 다양한 형태로 저장되어 있다는 점이다. 전처리를 통해서 데이터 품질을 높이는 작업이 필요하다. * 검색엔진 최적화: RAG의 R은 Retrieval 이다. 적절한 인덱싱 방법 및 검색 전략을 사용해서 관련 문서를 효과적으로 가져올 수 있어야 한다. * 문서 선택 최적화: RAG는 검색을 기반으로 하기 때문에 관련성이 있는 여러 문서가 리턴된다. 이 중에서 가장 관련성이 높은 정보를 RAG에 전달해야 한다. * 질문 전처리: 질문을 명확하고 구체적으로 정제하여 검색 품질을 향상 시킬 수 있다. * 결과 통합: 검색 문서에서 얻은 정보를 적절하게 통합하여 자연스러운 답변을 생성해야 한다. 여기에서는 Reranker에 대해서 살펴볼 건데, "검색엔진 최적화", "문서 선택 최적화"를 통해서 RAG의 품질을 올릴 수 있다. # Reranker 란 사용자가 입력한 요청은 **입력(Input)**, LLM의 응답은 **출력(Output)** 라고 정의 하겠다. RAG에서 검색을 하게 되면 (답이 없는 경우를 제외하면) 적어도 하나 이상의 문서가 retrieval 된다. 여기에는 관련성이 매우 높은 문서가 있지만 그렇지 않은 문서도 있다. 이들을 **후보 문서** 라고 하자. Reranker는 이들 **후보 문서의 순서를 다시 매기는 역할을 하는 모델 혹은 알고리즘**을 의미한다. Reranker의 주요 기능은 다음과 같다. 1. 후보 문서 평가: 여러 후보 문서 중, 입력과 관련성이 높은 문서를 평가한다. 2. 순위 재조정: 후보 문서 평가를 기준으로 순위를 재조정하여 가장 정합한 "문서"를 선택한다. 3. 문맥 이해: Reranker는 문맥을 고려하여 각 응답의 의미와 적합성을 파악할 수 있어야 한다. 이를 위해서 추가적인 학습이 필요할 수 있다. 4. 모델 조합: Reranker는 다른 LLM 혹은 신경망 모델과 결합되어 사용 할 수 있다. 예를 들어 GPT-3.5 모델에게 "입력과 관련성 있는 문서들을 추출하라"라고 지시 할 수 있다. # Reranker의 작동 원리  Reranker는 보통 두 단계로 작동한다. 1. TF-IDF 및 Vector embedding 을 이용해서 검색을 한다. 보통 이때는 여러 개의 문서가 검색된다. 어떤 검색 모델을 사용하든지 "높은 가중치"를 가지는 문서를 검색하기 때문에 10개 이내로 제한 하는 경우가 대부분이다. 2. Reranker를 이용해서 입력과 후보 문서 간의 관련성을 평가하고 평가 점수에 따라서 관련성 있는 후보문서들을 선택한다. # ChatGPT를 이용한 Reranker 여기에서는 GPT를 기반으로 테스트를 하지만 OpenAI GPT, LLama 등 다른 모델로도 테스트 할 수 있다. 테스트에 사용한 모델은 **ChatGPT-4o mini** 이다. 테스트를 위해서 직접 데이터베이스에서 검색하지 않을 것이다. 검색되었다고 가정하고, 몇 개의 문서 예제로 프롬프트를 구성하여 테스트를 진행했다. 환경 경영 시스템에 대해서 알려 달라는 질문을 만들었다. 3개의 문서가 검색되었다고 가정 했다. * 관련 문서: 검색문서 - 1, 검색문서 - 3 * 관련없는 문서: 검색문서 - 2 검색문서 - 2의 경우 환경 문제를 다루고 있는 문서이지만 "환경" 키워드로 인하여 TF-IDF, 벡터임베딩에 상관 없이 검색될 수 있다. **Input prompt** ``` 당신은 환경 규제와 관련된 질문에 답변 해주는 어시스턴트입니다. 아래의 질문내용을 읽고 마크다운 형식으로 답변 해주세요. 답변은 반드시 "## 검색 문서 - 1", "## 검색 문서 - 2", "## 검색 문서 - 3"에 있는 문서들을 참고해야 합니다. 질문과 관련된 문서만 참고를 해주세요. 질문과 관련된 문서가 없다면 정중하게 모른다고 답변해주세요. 답변에 참고한 "검색 문서"와 그 이유를 적어주세요. 그리고 관련도를 1~10까지의 점수로 나타내주세요. 1은 가장 낮은 관련도, 10은 가장 높은 관련도 입니다. ### 참고한 문서 * 검색문서 {번호}: 이유. 관련도 점수 ### 참고하지 않은 문서 * 검색문서 {번호}: 이유. 관련도 점수 # 질문내용 환경 경영 시스템에 대해서 알려주세요. # 검색문서 목록 ## 검색 문서 - 1 환경 경영은 기업이 지속 가능한 발전을 추구하며 환경 보호를 고려한 경영 전략을 수립하는 과정입니다. 이를 통해 자원의 효율적 사용을 극대화하고, 폐기물과 오염 물질의 발생을 최소화하는 것을 목표로 합니다. 환경 경영 시스템(EMS)을 도입하면 기업은 환경 관련 법규 준수는 물론, 사회적 책임을 다하고, 고객의 신뢰를 얻을 수 있습니다. 지속 가능한 환경 경영은 기업의 경쟁력을 높이는 동시에, 자연 생태계를 보전하는 데 중요한 역할을 합니다. ## 검색 문서 - 2 기업 활동 중 발생할 수 있는 환경 문제는 다음과 같습니다. 첫째, 생산 과정에서의 화학 물질 사용으로 인한 수질 오염이 발생할 수 있으며, 이는 주변 생태계와 인근 주민의 건강에 악영향을 미칠 수 있습니다. 둘째, 대량 생산과 소비로 인한 폐기물의 증가가 문제로, 적절한 폐기물 관리가 이루어지지 않으면 토양과 대기 오염을 초래할 수 있습니다. 셋째, 기업의 에너지 소비가 증가함에 따라 온실가스 배출이 증가하고, 이는 기후 변화에 기여하여 지구 환경에 심각한 영향을 미칠 수 있습니다. ## 검색 문서 - 3 환경 경영을 효과적으로 수행하기 위해 필요한 시스템은 다음과 같습니다: - 환경 경영 시스템 (EMS): 환경 정책 수립, 목표 설정 및 지속적인 개선을 위한 체계적인 접근 방법. - ISO 14001 인증: 국제 표준을 통해 환경 경영의 효율성을 평가하고 개선하는 체계. - 자원 관리 시스템: 자원의 효율적인 사용과 재활용을 위한 관리 체계. - 폐기물 관리 시스템: 폐기물의 발생, 분리, 재활용 및 처리를 위한 절차 및 지침. - 환경 모니터링 시스템: 환경 영향을 지속적으로 평가하고 기록하여 문제를 조기에 발견할 수 있는 시스템. - 교육 및 훈련 프로그램: 직원들에게 환경 경영의 중요성과 실천 방법에 대한 교육 제공. - 환경 성과 보고 시스템: 기업의 환경 성과를 투명하게 보고하고 이해관계자와 소통하는 시스템. ``` **Output** ``` ``` 관련성이 높은 1, 3번 문서로 출력을 만든 것을 확인 할 수 있다. 참고한 검색 문서 정보에 "관련성 점수" 정보를 제공하도록 프롬프트를 수정해 보자. 필요없는 부분은 제외했다. **Input** ``` 응답에 참고한 "검색 문서"와 그 이유와 관련성 점수를 목록형식으로 정리해서 알려주세요. 관련성 점수는 0~10 점까지입니다. ``` **Output** ``` ## 환경 경영 시스템에 대한 답변 환경 경영 시스템(EMS)은 기업이 지속 가능한 발전을 추구하고 환경 보호를 고려한 경영 전략을 수립하는 과정입니다. EMS를 도입함으로써 기업은 자원의 효율적 사용을 극대화하고 폐기물 및 오염 물질의 발생을 최소화하는 것을 목표로 합니다. 이는 환경 관련 법규 준수뿐만 아니라, 사회적 책임을 다하고 고객의 신뢰를 얻는 데 중요한 역할을 합니다. 효과적인 EMS의 구성 요소는 다음과 같습니다: - **환경 정책 수립**: 목표 설정 및 지속적인 개선을 위한 체계적인 접근 방법입니다. - **ISO 14001 인증**: 환경 경영의 효율성을 평가하고 개선하는 국제 표준입니다. - **자원 관리 시스템**: 자원의 효율적인 사용과 재활용을 위한 관리 체계입니다. - **폐기물 관리 시스템**: 폐기물의 발생, 분리, 재활용 및 처리를 위한 절차입니다. - **환경 모니터링 시스템**: 환경 영향을 지속적으로 평가하고 기록하여 문제를 조기에 발견할 수 있는 시스템입니다. - **교육 및 훈련 프로그램**: 직원들에게 환경 경영의 중요성과 실천 방법에 대한 교육을 제공합니다. - **환경 성과 보고 시스템**: 기업의 환경 성과를 투명하게 보고하고 이해관계자와 소통하는 시스템입니다. ### 참고한 문서 - **검색 문서 - 1**: EMS의 기본 개념과 목적을 잘 설명하고 있어 관련도가 높습니다. **관련도 점수**: 10 - **검색 문서 - 3**: EMS의 구성 요소와 효과적인 환경 경영을 위한 시스템을 상세히 설명하고 있어 질문에 직접적으로 관련이 있습니다. **관련도 점수**: 10 ### 참고하지 않은 문서 - **검색 문서 - 2**: 환경 문제와 관련된 내용을 다루지만, 환경 경영 시스템에 대한 직접적인 언급이 없어 관련도가 낮습니다. **관련도 점수**: 2 ``` # LLM 기반 Reranking 최적화 이상 LLM 기반으로 Reranking 하는 개념을 살펴봤다. 이제 개념을 바탕으로하여 Reranking을 최적화 할 수 있는 방안에 대해서 추가적으로 살펴보자. LLM 기반 reranking을 할 때 사용할 수 있는 방법은 크게 3가지다. 1. Pointwise method 2. Listwise method 3. Pairwise ranking prompting ### Pointwise method 검색된 각 문서를 개별적으로 평가하여 순위를 매기는 접근 방식이다. 이 방법은 주로 분류 문제나 회귀 문제를 해결하기 위해서 사용하며, 각 문서나 항목에 대해서 독립적으로 점수를 할당하는 것이 특징이다. 예를 들어 10개의 문서가 검색되었다면, 질문과 문서의 관련성을 10번 물어보고 그 결과로 판단을 하게 된다.  1. 4개의 후보 문서가 검색됐다. 2. Rerank는 루프를 돌면서 각 문서에 대한 관련 점수를 수집한다. 3. 관련성이 높은 문서를 정렬한다. 4. LLMResponder는 관련성이 높은 문서를 LLM에 입력한다. 5. Output이 생성된다. 위의 **환경 경영 시스템 예제** 를 이용해서 테스트를 해보자. ``` # 질문내용 환경 경영 시스템에 대해서 알려주세요. # 검색문서 목록 ## 검색 문서 - 1 환경 경영은 기업이 지속 가능한 발전을 추구하며 환경 보호를 고려한 경영 전략을 수립하는 과정입니다. 이를 통해 자원의 효율적 사용을 극대화하고, 폐기물과 오염 물질의 발생을 최소화하는 것을 목표로 합니다. 환경 경영 시스템(EMS)을 도입하면 기업은 환경 관련 법규 준수는 물론, 사회적 책임을 다하고, 고객의 신뢰를 얻을 수 있습니다. 지속 가능한 환경 경영은 기업의 경쟁력을 높이는 동시에, 자연 생태계를 보전하는 데 중요한 역할을 합니다. ## 검색 문서 - 2 기업 활동 중 발생할 수 있는 환경 문제는 다음과 같습니다. 첫째, 생산 과정에서의 화학 물질 사용으로 인한 수질 오염이 발생할 수 있으며, 이는 주변 생태계와 인근 주민의 건강에 악영향을 미칠 수 있습니다. 둘째, 대량 생산과 소비로 인한 폐기물의 증가가 문제로, 적절한 폐기물 관리가 이루어지지 않으면 토양과 대기 오염을 초래할 수 있습니다. 셋째, 기업의 에너지 소비가 증가함에 따라 온실가스 배출이 증가하고, 이는 기후 변화에 기여하여 지구 환경에 심각한 영향을 미칠 수 있습니다. ## 검색 문서 - 3 환경 경영을 효과적으로 수행하기 위해 필요한 시스템은 다음과 같습니다: - 환경 경영 시스템 (EMS): 환경 정책 수립, 목표 설정 및 지속적인 개선을 위한 체계적인 접근 방법. - ISO 14001 인증: 국제 표준을 통해 환경 경영의 효율성을 평가하고 개선하는 체계. - 자원 관리 시스템: 자원의 효율적인 사용과 재활용을 위한 관리 체계. - 폐기물 관리 시스템: 폐기물의 발생, 분리, 재활용 및 처리를 위한 절차 및 지침. - 환경 모니터링 시스템: 환경 영향을 지속적으로 평가하고 기록하여 문제를 조기에 발견할 수 있는 시스템. - 교육 및 훈련 프로그램: 직원들에게 환경 경영의 중요성과 실천 방법에 대한 교육 제공. - 환경 성과 보고 시스템: 기업의 환경 성과를 투명하게 보고하고 이해관계자와 소통하는 시스템. ``` 총 3개의 후보 문서가 있으니, 3번 루프를 돌면서 관련성을 검토하면 된다. *Input* ``` 당신은 환경 규제와 관련된 질문에 응답을 해주는 어시스턴트입니다. "검색문서"가 "질문내용"과 관련있는지 아래의 형식으로 검토해 주세요. * 관련: yes or no * 관련점수: 0 ~ 10 # 질문내용 환경 경영 시스템에 대해서 알려주세요. ## 검색 문서 환경 경영은 기업이 지속 가능한 발전을 추구하며 환경 보호를 고려한 경영 전략을 수립하는 과정입니다. 이를 통해 자원의 효율적 사용을 극대화하고, 폐기물과 오염 물질의 발생을 최소화하는 것을 목표로 합니다. 환경 경영 시스템(EMS)을 도입하면 기업은 환경 관련 법규 준수는 물론, 사회적 책임을 다하고, 고객의 신뢰를 얻을 수 있습니다. 지속 가능한 환경 경영은 기업의 경쟁력을 높이는 동시에, 자연 생태계를 보전하는 데 중요한 역할을 합니다. ``` *Output* ``` - 관련: yes - 관련점수: 9 ``` 나머지 2개의 문서도 동일한 방법으로 관련도를 검사한다. 검사 결과는 아래와 같았다. | 문서 | 관련 여부 | 관련도 | | -------- | ----- | --- | | 검색문서 - 1 | yes | 9 | | 검색문서 - 2 | no | 3 | | 검색문서 - 3 | yes | 10 | 이제 2개의 문서를 LLM에 전달해서 Output을 만들면 된다. *Input* ``` 당신은 환경 규제와 관련된 질문에 응답을 해주는 어시스턴트입니다. "검색 문서"를 참고하여 질문내용에 답해주세요 # 질문내용 환경 경영 시스템에 대해서 알려주세요. ## 검색 문서 - 1 환경 경영은 기업이 지속 가능한 발전을 추구하며 환경 보호를 고려한 경영 전략을 수립하는 과정입니다. 이를 통해 자원의 효율적 사용을 극대화하고, 폐기물과 오염 물질의 발생을 최소화하는 것을 목표로 합니다. 환경 경영 시스템(EMS)을 도입하면 기업은 환경 관련 법규 준수는 물론, 사회적 책임을 다하고, 고객의 신뢰를 얻을 수 있습니다. 지속 가능한 환경 경영은 기업의 경쟁력을 높이는 동시에, 자연 생태계를 보전하는 데 중요한 역할을 합니다. ## 검색 문서 - 3 환경 경영을 효과적으로 수행하기 위해 필요한 시스템은 다음과 같습니다: - 환경 경영 시스템 (EMS): 환경 정책 수립, 목표 설정 및 지속적인 개선을 위한 체계적인 접근 방법. - ISO 14001 인증: 국제 표준을 통해 환경 경영의 효율성을 평가하고 개선하는 체계. - 자원 관리 시스템: 자원의 효율적인 사용과 재활용을 위한 관리 체계. - 폐기물 관리 시스템: 폐기물의 발생, 분리, 재활용 및 처리를 위한 절차 및 지침. - 환경 모니터링 시스템: 환경 영향을 지속적으로 평가하고 기록하여 문제를 조기에 발견할 수 있는 시스템. - 교육 및 훈련 프로그램: 직원들에게 환경 경영의 중요성과 실천 방법에 대한 교육 제공. - 환경 성과 보고 시스템: 기업의 환경 성과를 투명하게 보고하고 이해관계자와 소통하는 시스템. ``` 이 방식의 주요 특징은 아래와 같다. 1. 독립적인 평가: 다른 문서와 상관없이 각 문서를 독립적으로 평가한다. 2. 회귀 또는 분류 모델 1. 회귀 모델: 각 문서에 대한 점수를 확인하고 그 점수를 기반으로 문서를 정렬한다. 2. 분류 모델: 각 문서가 질의와 얼마나 관련 있는지에 대한 클래스를 예측하고 그 결과를 기반으로 순위를 매긴다. 3. 데이터 레이블: 각 문서와 질의 쌍에 대해 점수, 등급등의 레이블이 할당된다. 이를 통해 모델은 문서의 관련성을 예측하는데 필요한 학습을 진행 할 수 있다. **장점** * 간단한 구조: 문서마다 독립적으로 예측하므로 구조가 단순하며, 다른 문서들간의 상호 비교를 할 필요가 없다. * 확장성: 한 번 학습된 모델은 다양한 질의에 적용하기 용이하며, 각 문서에 대해 점수를 예측하는 방식이라 확장성이 뛰어나다. **단점** * 상대적 순위 고려 부족: 각 문서를 독립적으로 평가하기 때문에 다른 문서와의 상대적 순위 정보를 고려하지 못한다. 이에 따라 최적의 순위를 찾는데 한계가 있을 수 있다. * 성능 한계: 문서 간의 상호작용을 고려하지 않기 때문에 다른 Reranking 방식에 비해서 성능이 떨어질 수 있다. ### Listwise method Reranking할 후보 문서를 하나의 프롬프트에 넣고 output 하는 방식이다.  첫번째 예제에서 사용했던 방법이다. 사용자 Input과 후보문서 목록을 하나의 프롬프트로 만들어서 LLM에 전달하는 방식이다. LLM 이 바로 Output 할 수 있으며, 관련 문서를 받은 다음 새로운 프롬프트를 만들어서 Oputput 할 수도 있다. 1. 전체 리스트 평가: 문서를 개별적으로 평가하는 Pointwise 방식과 달리, Listwise는 전체 문서 리스트를 한번에 입력 받아서 순위를 매긴다. 2. 순위 최적화: 단순히 문서별 점수를 매기는 것이 아니라, 전체 목록에서 매겨지므로 좀 더 좋은 품질을 얻을 수 있다. 3. 손실 함수: Listwise 방식에서는 전체 문서 리스트의 순위에 기반한 손실 함수를 사용한다. 예를 들어 NDCG(normalized Discounted Cumulative Gain)과 같은 순위 기반 메트릭을 최대화하는 방향으로 학습 할 수 있다. **단점** * 복잡도 증가: Pointwise 방식에 대해서 좀 더 복잡하고 많은 리소스가 필요 할 수 있다. * 데이터 요구량: 전체 리스트를 전달하기 때문에 시간이 많이 걸릴 수 있다. 토큰 제한도 생각해야 한다. * 추론 비용 증가: 문서 리스트 전체를 평가하기 때문에 추론 비용이 늘어날 수 있다. ### Pairewise prompting method 이 방식은 여기에서는 자세히 설명하지 않을 것이다. 특별한 방식은 아니고 후보 문서를 2개 가지고 와서 1:1로 비교하는 방식이다. 문제는 후보 문서가 여러 개일 경우 어떻게 비교 할 것 인지에 대한 것이다. 1. All pair comparsions: 문서 전체를 다 비교하는 방식 2. Sorting-based: 정렬 알고리즘을 기반 3. Sliding window # 정리 이 문서에서는 여러 Rerank 기법 중 LLM의 추론능력을 이용하는 방법을 간단히 살펴봤다. 이외에도 다른 여러가지 Rerank 기법들이 있을 것인데, 그냥 LLM의 추론 능력을 이용하는 것을 추천한다. 1. LLM은 문서의 요약과 분류에 특화되어 있다. 이 말은 응답과 답변의 연관성을 잘 찾아낸 다는 것을 의미한다. 2. LLM은 여러분이 생각하는 것 이상으로 빠르게 발전하고 있다. 오픈소스 LLM을 커스터마이징 하는 방법도 있다. 파고드는 것이 좋아서 하는 것이라면 모르지만 상용 LLM을 사용해서 간단하게 해결 하는 방법을 권장한다. 개인적으로 LLama 3.1 - 8B 모델을 가지고 테스트를 했는데, 단일 문서의 관련도를 분석하는 것도 잘 해내지 못했다. 70B로 높이면 나아지겠지만 그 비용과 시간을 들일 거라면 그냥 LLM에 기대는게 남는 장사일 것이다.
Recent Posts
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
LLama-3.2-Vision 테스트
Vertex Gemini 기반 AI 에이전트 개발 04. 프롬프트 엔지니어링
Vertex Gemini 기반 AI 에이전트 개발 03. Vertex AI Gemini 둘러보기
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Archive Posts
Tags
AI
LLM
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags