통합된 방식으로 다양한 RAG Reranker 모델 추론 | 전체 링크 RAG Reranker 모델 미세 조정 실험 결과 |
RAG-Retrieval은 전체 링크 RAG 검색 미세 조정(트레인), 추론(infer) 및 증류(distill) 코드를 제공합니다.
WeChat 그룹 채팅에 참여하세요
2024년 10월 21일: RAG-Retrieval은 LLM을 기반으로 Reranker 작업을 수행하는 두 가지 방법과 이를 bert로 증류하는 방법을 출시했습니다. Reranker 작업에 대한 LLM의 모범 사례는 무엇입니까? 간단한 실험 보고서(코드 포함)
2024년 6월 5일: RAG-Retrieval 임베딩 모델의 MRL 손실 구현. RAG 검색: MRL 손실을 교육 벡터(임베딩) 모델의 표준 구성으로 만듭니다.
2024년 6월 2일: RAG-Retrieval은 LLM 기본 설정을 기반으로 감독된 RAG 검색기 미세 조정을 구현합니다. RAG-Retrieval은 LLM 선호 감독을 기반으로 RAG 검색기의 미세 조정을 구현합니다.
2024년 5월 5일: 경량 Python 라이브러리 RAG-Retrieval 출시: RAG 애플리케이션에는 더 나은 정렬 추론 프레임워크가 필요합니다.
2024년 3월 18일: RAG-Retrieval 출시 RAG-Retrieval Zhihu 소개
순위 모델은 모든 검색 아키텍처의 중요한 부분이자 RAG의 중요한 부분이지만 현재 상태는 다음과 같습니다.
따라서 RAG-Retrieval은 다양한 RAG 정렬 모델을 호출할 수 있는 통합된 방법을 제공하는 경량 Python 라이브러리 rag-retrieval을 개발했습니다. 이는 다음과 같은 특징을 갖습니다.
다중 정렬 모델 지원: 일반적인 오픈 소스 정렬 모델 지원(Cross Encoder Reranker, Decoder-Only LLM Reranker)
긴 문서 친화적: 긴 문서에 대해 두 가지 다른 처리 논리(최대 길이 잘림, 분할 및 최대 점수)를 지원합니다.
확장 용이성: 새로운 순위 모델이 있는 경우 사용자는 basereranker를 상속하고 순위 및 계산_점수 기능만 구현하면 됩니다.
#为了避免自动安装的torch与本地的cuda不兼容,建议进行下一步之前先手动安装本地cuda版本兼容的torch。
pip install rag-retrieval
Cross Encoder Reranker의 경우 변환기의 AutoModelForSequenceClassification을 사용하는 한 추론을 위해 rag_retrieval의 Reranker를 사용할 수 있습니다. 예는 다음과 같습니다.
(BAAI/bge-reranker-base, BAAI/bge-reranker-large, BAAI/bge-reranker-v2-m3)과 같은 bge 시리즈의 크로스 인코더 모델
bce의 크로스 인코더 모델(예:maidalun1020/bce-reranker-base_v1)
LLM Reranker의 경우 rag_retrieval의 Reranker는 다양하고 강력한 LLM 순위 모델을 지원합니다. 또한 제로 샷 정렬을 위해 LLM 채팅 모델 사용을 지원합니다. 예는 다음과 같습니다.
(BAAI/bge-reranker-v2-gemma, BAAI/bge-reranker-v2-minicpm-layerwise, BAAI/bge-reranker-v2-m3)과 같은 bge 시리즈의 LLM Reranker 모델
또한 제로 샷 정렬을 위해 LLM 채팅 모델 사용을 지원합니다.
rag-retrieval 패키지의 자세한 사용법과 주의사항은 Tutorial을 참고하세요.
아래의 원래 추론 프레임워크에 맞추기 위해 많은 테스트를 수행했습니다. 자세한 내용은 테스트를 참조하세요. 실행하려면 다른 모듈이 필요하며 rag_retrieval은 통합 인터페이스를 사용합니다.
FlagEmbedding의 FlagReranker, FlagLLMReranker, LayerWiseFlagLLMReranker 등이 있습니다.
BCEmbedding의 RerankerModel과 같은
conda create -n rag-retrieval python=3.8 && conda activate rag-retrieval
#为了避免自动安装的torch与本地的cuda不兼容,建议进行下一步之前先手动安装本地cuda版本兼容的torch。
pip install -r requirements.txt
모든 오픈 소스 임베딩 모델(bge, m3e 등)의 미세 조정 지원
두 가지 유형의 데이터에 대한 미세 조정을 지원합니다.
임베딩 모델 프로세스를 미세 조정하세요. 자세한 프로세스는 모델 디렉터리의 Tutorial을 참조하세요.
cd ./rag_retrieval/train/embedding
bash train_embedding.sh
Colbert 모델 프로세스를 미세 조정하세요. 자세한 프로세스는 모델 디렉터리의 Tutorial을 참조하세요.
cd ./rag_retrieval/train/colbert
bash train_colbert.sh
reranker 모델 프로세스를 미세 조정하세요. 자세한 프로세스는 모델 디렉터리의 Tutorial을 참조하세요.
cd ./rag_retrieval/train/reranker
bash train_reranker.sh
모델 | 모델 크기(GB) | T2랭킹 재지정 | MMarco재순위 | CMedQAv1 | CMedQAv2 | 평균 |
---|---|---|---|---|---|---|
bge-재순위-기반 | 1.11 | 67.28 | 35.46 | 81.27 | 84.10 | 67.03 |
bce-reranker-base_v1 | 1.11 | 70.25 | 13.34 | 79.64 | 81.31 | 66.33 |
걸레 검색-재순위 지정 | 0.41 | 67.33 | 31.57 | 83.54 | 86.03 | 67.12 |
그 중 rag-retrieval-reranker는 hfl/chinese-roberta-wwm-ext 모델을 훈련하기 위해 RAG-Retrieval 코드를 사용하는 것이며, 훈련 데이터는 bge-rerank 모델의 훈련 데이터를 사용합니다.
모델 | 모델 크기(GB) | 어둑한 | T2랭킹 재지정 | MMarco재순위 | CMedQAv1 | CMedQAv2 | 평균 |
---|---|---|---|---|---|---|---|
bge-m3-콜버트 | 2.24 | 1024 | 66.82 | 26.71 | 75.88 | 76.83 | 61.56 |
걸레 회수 콜버트 | 0.41 | 1024 | 66.85 | 31.46 | 81.05 | 84.22 | 65.90 |
그 중 rag-retrieval-colbert는 hfl/chinese-roberta-wwm-ext 모델을 훈련하기 위해 RAG-Retrieval 코드를 사용하는 것이며, 훈련 데이터는 bge-rerank 모델의 훈련 데이터를 사용합니다.
모델 | T2랭킹 | |
---|---|---|
bge-v1.5-임베딩 | 66.49 | |
bge-v1.5-임베딩 미세 조정 | 67.15 | +0.66 |
bge-m3-콜버트 | 66.82 | |
bge-m3-colbert 미세 조정 | 67.22 | +0.40 |
bge-재순위-기반 | 67.28 | |
bge-reranker-base 미세 조정 | 67.57 | +0.29 |
마지막에 미세 조정이 있는 것은 RAG-Retrieval을 사용하여 해당 오픈 소스 모델을 기반으로 결과를 계속해서 미세 조정한다는 의미입니다. 훈련 데이터는 T2-Reranking 훈련 세트를 사용합니다.
bge의 세 가지 오픈 소스 모델에는 이미 훈련 세트에 T2-Reranking이 포함되어 있고 데이터가 비교적 일반적이므로 이 데이터를 사용하여 미세 조정을 계속하는 경우 성능 개선 효과는 크지 않습니다. 수직 도메인 데이터 세트를 사용하여 오픈 소스 모델을 계속해서 미세 조정하면 성능 향상이 더 커집니다.
RAG-Retrieval은 MIT 라이선스에 따라 라이선스가 부여됩니다.