소식

차세대 RAG에서는 지연된 상호작용 모델이 표준인 이유는 무엇입니까?

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



AIxiv 칼럼은 Machine Heart가 학술 및 기술 콘텐츠를 게재하는 칼럼입니다. 지난 몇 년 동안 Heart of the Machine AIxiv 칼럼은 전 세계 주요 대학 및 기업의 최고 연구실을 대상으로 2,000개 이상의 보고서를 접수하여 학술 교류 및 보급을 효과적으로 촉진했습니다. 공유하고 싶은 훌륭한 작품이 있다면 자유롭게 기여하거나 보고를 위해 연락주시기 바랍니다. 제출 이메일: [email protected] [email protected]

Zhang Yingfeng: Infra의 공동 창립자로서 검색, AI 및 인프라 인프라 개발 분야에서 다년간의 경험을 갖고 있으며 현재 차세대 RAG 핵심 제품 구축을 위해 노력하고 있습니다.

RAG 시스템 개발에 있어서 좋은 Reranker 모델은 없어서는 안 될 링크이며 항상 다양한 평가에 사용됩니다. 이는 벡터 검색으로 표현되는 쿼리는 적중률이 낮은 문제에 직면하게 되므로 이를 개선하기 위한 고급 Reranker 모델이 필요합니다. 이는 벡터 검색을 대략적인 선별로 사용하고 Reranker 모델을 미세 정렬로 사용하는 2단계 정렬 아키텍처를 형성합니다.

현재 순위 모델에는 두 가지 주요 유형의 아키텍처가 있습니다.

1. 듀얼 인코더. BERT 모델을 예로 들면 쿼리와 문서를 별도로 인코딩한 후 최종적으로 풀링 레이어를 통과하여 출력에 하나의 벡터만 포함됩니다. 쿼리의 Ranking 단계에서는 아래 그림과 같이 두 벡터의 유사성만 계산하면 됩니다. 듀얼 인코더는 Ranking 및 Reranking 단계 모두에 사용될 수 있으며 벡터 검색이 실제로 이 순위 모델입니다. 듀얼 인코더는 쿼리와 문서를 별도로 인코딩하기 때문에 쿼리와 문서의 토큰 사이의 복잡한 상호작용 관계를 포착할 수 없으며, 정렬과 문서의 토큰만 완료하려면 벡터 검색만 필요하므로 의미상 손실이 많이 발생합니다. 점수 계산, 실행 효율성이 매우 높게 향상됩니다.



2. 크로스 인코더. Cross-Encoder는 단일 인코더 모델을 사용하여 쿼리와 문서 간의 복잡한 상호 작용을 캡처할 수 있으므로 보다 정확한 검색 순위 결과를 제공할 수 있습니다. Cross-Encoder는 쿼리와 문서의 Token에 해당하는 벡터를 출력하지 않고, 분류기를 추가하여 쿼리와 문서의 유사도 점수를 직접 출력합니다. 단점은 쿼리 시 각 문서와 쿼리를 함께 인코딩해야 하므로 정렬 속도가 매우 느리기 때문에 Cross-Encoder는 최종 결과를 재정렬하는 데만 사용할 수 있다는 것입니다. 예를 들어, 예비 심사 결과의 상위 10개 항목을 재정렬하는 데에도 몇 초가 걸립니다.



올해부터 ColBERT로 대표되는 또 다른 유형의 작업이 RAG 개발 커뮤니티에서 큰 관심을 끌었습니다. 아래 그림에서 볼 수 있듯이 위의 두 가지 유형의 순위 모델과 크게 다른 몇 가지 특징이 있습니다.

하나는 Cross Encoder와 비교하여 ColBERT는 여전히 독립 인코더를 사용하여 쿼리와 문서를 인코딩하는 이중 인코더 전략을 사용하므로 인코딩 중에 쿼리 토큰과 문서 토큰이 서로 영향을 미치지 않는다는 점입니다. 오프라인으로 처리할 수 있으며 쿼리 시 쿼리만 인코딩되므로 처리 속도가 Cross Encoder보다 훨씬 빠릅니다.

두 번째는 듀얼 인코더에 비해 ColBERT는 Transformer의 마지막 출력 레이어에서 직접 얻은 단일 벡터가 아닌 여러 벡터를 출력하는 반면, 듀얼 인코더는 풀링 레이어를 통해 여러 벡터를 하나의 벡터로 변환합니다. 따라서 일부 의미가 손실됩니다.

정렬 계산에서 ColBERT는 지연된 대화형 계산 유사성 함수를 도입하고 이를 최대 유사성(MaxSim)이라고 명명합니다. 계산 방법은 다음과 같습니다. 각 쿼리 토큰 벡터에 대해 모든 문서 토큰에 해당하는 벡터를 사용하여 유사성을 계산합니다. 각 쿼리 토큰의 최대 점수를 추적합니다. 쿼리와 문서의 총 점수는 이러한 최대 코사인 점수의 합계입니다. 예를 들어, 32개의 토큰 벡터(최대 쿼리 길이는 32개)를 포함하는 쿼리와 128개의 토큰을 포함하는 문서의 경우 아래 그림과 같이 32*128 유사성 연산을 수행해야 합니다.

따라서 이에 비해 Cross Encoder를 호출할 수 있습니다.초기 상호작용 모델, ColBERT로 대표되는 작업은 다음과 같이 호출될 수 있습니다.후기 상호작용 모델.



다음 그림은 위의 정렬 모델을 성능과 정렬 품질 측면에서 비교합니다. 지연된 상호작용 모델은 정렬 과정에서 질의와 문서 사이의 복잡한 상호작용을 포착하는 능력을 만족시키고, 문서 토큰 인코딩의 오버헤드도 피하므로, 좋은 정렬 효과를 보장할 수 있을 뿐만 아니라, 더 빠른 정렬 성능을 달성할 수 있습니다. 동일한 데이터 규모에서 ColBERT의 효율성은 Cross Encoder의 100배 이상일 수 있습니다. 따라서 지연된 상호 작용 모델은 매우 유망한 정렬 모델입니다. 자연스러운 아이디어는 다음과 같습니다.벡터 검색 + 미세 정렬의 2단계 정렬 아키텍처를 대체하기 위해 지연된 상호 작용 모델을 RAG에서 직접 사용할 수 있습니까?



이를 위해 ColBERT 엔지니어링에서 몇 가지 문제를 고려해야 합니다.

1. ColBERT의 MaxSim 지연 대화형 유사성 함수는 Cross Encoder보다 계산 효율성이 훨씬 높지만 일반 벡터 검색에 비해 계산 오버헤드가 여전히 매우 높습니다. 쿼리와 문서 간의 유사성은 다중 벡터 계산이기 때문에 MaxSim의 오버헤드는 일반 벡터 유사성 계산의 M * N 배입니다(M은 쿼리의 토큰 수, N은 문서의 토큰 수). 이에 대해 ColBERT 작성자는 2021년에 ColBERT v2를 출시했습니다 [참고 2]. 이는 Cross Encoder 및 모델 증류를 통해 생성된 Embedding의 품질을 향상시키고 압축 기술을 사용하여 생성된 문서 벡터를 양자화하여 계산을 향상시킵니다. MaxSim 성능. ColBERT v2 패키징을 기반으로 하는 프로젝트 RAGatouille [참조 3]는 고품질 RAG 정렬을 위한 솔루션이 됩니다. 그러나 ColBERT v2는 단지 알고리즘 라이브러리일 뿐 기업 수준의 RAG 시스템에서는 여전히 end-to-end로 사용하기 어렵습니다.

2. ColBERT는 사전 훈련된 모델이고 훈련 데이터는 검색 엔진 쿼리 및 반환 결과에서 나오므로 이러한 텍스트 데이터는 크지 않습니다. 예를 들어 쿼리 토큰 수는 32개이고 문서 토큰 수는 128개입니다. , 이는 일반적인 길이 제한입니다. 따라서 실제 데이터에 대해 ColBERT를 사용할 경우 제한을 초과하는 길이가 잘려 긴 문서 검색에 적합하지 않습니다.

위의 문제점을 바탕으로 오픈소스 AI 네이티브 데이터베이스인 Infinity는 최신 버전의 Tensor 데이터 타입을 제공하며, End-to-End ColBERT 솔루션을 네이티브로 제공합니다. Tensor를 데이터 유형으로 사용하는 경우 ColBERT 인코딩으로 출력된 여러 벡터를 하나의 Tensor에 직접 저장할 수 있으므로 Tensor 간의 유사도를 통해 MaxSim 점수를 직접 도출할 수 있습니다. MaxSim의 많은 양의 계산 문제에 대응하여 Infinity는 최적화를 위한 두 가지 솔루션을 제공했습니다. 하나는 원래 Tensor의 공간을 원래 크기의 1/32로 만들 수 있지만 상대적 순서는 변경하지 않는 이진 양자화입니다. MaxSim 계산 결과. 이 솔루션은 이전 단계의 Coarse Screening 결과를 기반으로 해당 Tensor를 추출해야 하기 때문에 Reranker에 주로 사용됩니다. 다른 하나는 Tensor Index입니다. ColBERTv2는 실제로 ColBERT 작성자가 출시한 Tensor Index 구현입니다. Infinity는 주로 양자화 및 사전 필터링 기술을 통해 ColBERT v2의 개선이라고 볼 수 있는 EMVB[참조 4]를 사용합니다. 구현 속도를 높이기 위해 주요 작업에 대한 지침이 도입되었습니다. Tensor Index는 Reranker가 아닌 Ranker를 제공하는 데에만 사용할 수 있습니다. 또한 토큰 제한을 초과하는 긴 텍스트의 경우 Infinity는 Tensor Array 유형을 도입합니다.



ColBERT의 한도를 초과하는 문서는 여러 단락으로 나누어 각각 Tensor를 인코딩하고 생성한 후 원본 문서와 같은 줄에 저장됩니다. MaxSim을 계산할 때 쿼리와 이러한 단락을 별도로 계산한 후 최대값을 전체 문서의 점수로 간주합니다. 아래 그림과 같이:



따라서 Infinity를 사용하면 지연된 상호 작용 모델을 엔드 투 엔드로 도입하여 RAG를 고품질로 제공할 수 있습니다. 그렇다면 ColBERT를 Ranker로 사용해야 할까요, 아니면 Reranker로 사용해야 할까요? 아래에서는 Infinity를 사용하여 실제 데이터 세트에 대한 평가를 수행합니다. Infinity의 최신 버전은 역사상 가장 포괄적인 하이브리드 검색 솔루션을 구현하므로 재현 방법에는 벡터 검색, 전체 텍스트 검색, 희소 벡터 검색, 위에서 언급한 Tensor 및 이러한 방법의 조합이 포함되며 다양한 Reranker 방법을 제공합니다. , RRF, ColBERT Reranker 등이 있으므로 하이브리드 검색과 Reranker의 다양한 조합을 검토에 포함합니다.

우리는 평가를 위해 MLDR 데이터 세트를 사용합니다. MLDR은 MTEB[Reference 5]에서 Embedding 모델의 품질을 평가하기 위해 사용하는 벤치마크 세트입니다. MLDR은 Multi Long Document Retrieval이라고 불리는 데이터 세트 중 하나이며 총 200,000개의 긴 텍스트 데이터를 포함합니다. 평가는 Embedding 모델로 BGE-M3 [참조 6], Tensor 생성을 위해 Jina-ColBERT [참조 7]를 사용하며, 평가 스크립트도 Infinity Warehouse [참조 8]에 배치됩니다.

평가 1: ColBERT는 Reranker로서 효과적인가? BGE-M3을 사용하여 200,000개의 MLDR 데이터에서 밀집된 벡터와 희소 벡터를 생성하고 이를 Infinity 데이터베이스에 삽입합니다. 데이터베이스에는 원본 텍스트, 벡터, 희소 벡터 및 Tensor를 저장하고 해당 전체 텍스트 인덱스를 구축하는 4개의 열이 포함되어 있습니다. 및 벡터. 각각 인덱스, 희소 벡터 인덱스입니다. 평가에는 다음과 같이 단일 방향 회상, 이중 방향 회상 및 삼방향 회상을 포함한 모든 회상 조합이 포함됩니다.



평가지표는 nDCG@10을 채용하고 있습니다. 기타 매개변수: RRF Reranker를 사용할 때 대략적 선별로 반환된 Top N = 1000, 총 쿼리 수는 800개, 평균 쿼리 길이는 약 10개 토큰입니다.



그림에서 볼 수 있듯이 모든 리콜 솔루션은 ColBERT Reranker를 사용한 후 결과가 크게 향상되었습니다. 지연된 상호작용 모델인 ColBERT는 MTEB의 Reranker 순위 상위에 있는 것과 유사한 순위 품질을 제공할 수 있지만 성능이 100배 더 높기 때문에 더 큰 규모로 reranking을 수행할 수 있습니다. 그림에 표시된 결과는 Top 100 Reranker에 대한 것이며, Top 1000은 ColBERT reordering에 사용되며 값이 크게 변하지 않고 성능도 크게 떨어지므로 권장하지 않습니다. 전통적으로 Cross Encoder 기반의 외부 Reranker를 사용하면 Top 10에 2단계 지연이 발생합니다. 그러나 Infinity는 고성능 ColBERT Reranker를 내부적으로 구현합니다. 경험치에는 영향을 미치지 않습니다. 하지만 리콜 범위가 대폭 늘어나 최종 순위 효과가 크게 향상될 수 있습니다. 또한 이 ColBERT Reranker 계산은 순수 CPU 아키텍처에서만 실행하면 되므로 배포 비용도 크게 절감됩니다.

평가 2: 비교는 ColBERT를 Reranker가 아닌 Ranker로 기반으로 합니다. 따라서 Tensor 컬럼 데이터에 대한 Tensor Index를 구축하는 것이 필요합니다. 동시에 Tensor Index로 인한 정확도 손실을 평가하기 위해 무차별 대입 검색도 수행되었습니다.



Reranker와 비교하면 정확도 손실 없이 무차별 검색을 사용해도 큰 개선이 없으며 Tensor Index를 기반으로 한 정렬 품질이 Reranker를 사용한 것보다 훨씬 낮다는 것을 알 수 있습니다. 그러나 Ranker로서의 쿼리 시간은 훨씬 느립니다. MLDR 데이터 세트에는 200,000개의 문서 데이터가 포함되어 있으며 이는 약 2GB입니다. Jina-ColBERT를 사용하여 Tensor 데이터로 변환하면 320G에 달합니다. Tensor 데이터 유형은 문서의 각 Token에 해당하는 벡터를 저장해야 합니다. ColBERT 모델의 차원은 128차원이므로 Tensor Index를 구축하더라도 기본 데이터 볼륨은 2배로 확장됩니다. , 너무 많은 데이터를 쿼리하는 데 평균 7초가 소요됩니다. 쿼리를 반환하지만 더 나은 결과를 얻지 못합니다.

따라서 ColBERT는 Ranker보다 Reranker로서 훨씬 더 수익성이 높다는 것은 명백합니다. 현재 최고의 RAG 검색 솔루션은 3방향 하이브리드 검색(전체 텍스트 검색 + 벡터 + 희소 벡터)을 기반으로 ColBERT Reranker를 추가하는 것입니다. 일부 파트너는 ColBERT Reranker를 사용하려면 별도의 Tensor 열을 추가해야 하며 해당 열은 원래 데이터 세트에 비해 2배 정도 확장될 것이라고 요청할 수 있습니다. 우선 Infinity는 Tensor에 대한 Binary 양자화 방법을 제공하므로 정렬 결과에 큰 영향을 미치지 않지만 최종 데이터를 원래 Tensor 크기의 1/32로 만들 수 있습니다. 둘째, 그럼에도 불구하고 일부 사람들은 이 오버헤드가 너무 높다고 생각할 것입니다. 그러나 사용자의 관점에서는 더 높은 정렬 품질과 더 저렴한 비용(정렬 프로세스에는 GPU가 필요하지 않음)을 대가로 더 많은 스토리지를 사용하는 것이 여전히 매우 가치가 있습니다. 마지막으로, 성능은 약간 저하되지만 스토리지 오버헤드는 대폭 감소된 Late Interaction 모델이 곧 출시될 것이라고 믿습니다. 데이터 인프라 인프라로서 이러한 변화를 투명하게 보여주며 이러한 Trade Off를 사용자에게 넘겨주는 것이 현명한 선택입니다.

위 내용은 MLDR 데이터 세트에 대한 Infinity의 다중 채널 리콜 평가를 기반으로 합니다. 다른 데이터 세트에 대한 평가 결과는 다를 수 있지만 전체적인 결론은 변하지 않습니다. - 3방향 하이브리드 검색 + Tensor 기반 재정렬이 현재 리콜입니다. 최고 품질의 검색 결과를 제공하는 방법입니다.

ColBERT와 지연된 상호 작용 모델은 RAG 시나리오에서 큰 응용 가치를 가지고 있음을 알 수 있습니다. 위의 내용은 텍스트 대화 콘텐츠 생성과 관련된 작업입니다. 최근 지연된 상호 작용 모델도 다중 모드 시나리오 결과에서 인정을 받았습니다. 이는 다음 그림과 같이 RAG의 작업 흐름을 변경하는 ColPali [참조 9]입니다.



RAG가 복잡한 형식의 문서에 직면할 때 현재 SOTA는 문서 인식 모델을 사용하여 문서의 레이아웃을 식별한 다음 식별된 차트, 그림 등 부분 구조에 대해 해당 모델을 호출하여 해당 모델을 해당 문서로 변환합니다. 그런 다음 텍스트는 다양한 형식으로 RAG 지원 데이터베이스에 저장됩니다. ColPali는 이러한 단계를 제거하고 다중 모드 모델을 직접 사용하여 임베딩 콘텐츠를 생성합니다. 질문 시 문서의 차트를 기반으로 직접 답변할 수 있습니다.



ColPali 모델의 훈련은 ColBERT와 유사합니다. 또한 쿼리-문서 페이지 쌍의 형태를 사용하여 쿼리와 문서 다중 모드 데이터 간의 의미론적 연관성을 캡처하지만 PaliGemma [참조 10]를 사용하여 다중 모드 임베딩을 생성합니다. Late Interaction 메커니즘을 사용하지 않지만 PaliGemma를 사용하여 Embedding을 생성하는 BiPali와 비교하면 nDCG@5의 평가 지수 비교는 81.3 대 58.8입니다. 이 차이는 "우수"와 "전혀 작동하지 않음"의 차이입니다.



따라서 ColBERT가 등장한 지 4년이 지났지만 RAG의 Late Interaction 모델 적용은 확실히 RAG의 사용 시나리오를 확장하고 다중 양식을 포함한 복잡한 RAG 장면에서 고품질 의미 재현을 제공할 것입니다. Infinity는 이미 엔드투엔드 애플리케이션을 위한 준비가 되어 있습니다. Star Infinity(https://github.com/infiniflow/infinity)를 팔로우하신 것을 환영하며 최고의 AI 기본 데이터베이스가 되기 위해 최선을 다하고 있습니다!

참고자료

1. 콜버트: 버트에 대한 문맥화된 늦은 상호작용을 통한 효율적이고 효과적인 구절 검색, SIGIR 2020.

2. Colbertv2: 가벼운 후기 상호작용을 통한 효과적이고 효율적인 검색, arXiv:2112.01488, 2021.

3. 라가투이 https://github.com/bclavie/RAGatouille

4. 비트 벡터를 이용한 효율적인 다중 벡터 밀집 검색, ECIR 2024.

5. https://huggingface.co/mteb

6. https://huggingface.co/BAAI/bge-m3

7. https://huggingface.co/jinaai/jina-colbert-v1-en

8. https://github.com/infiniflow/infinity/tree/main/python/benchmark/mldr_benchmark

9. ColPali: 비전 언어 모델을 사용한 효율적인 문서 검색, arXiv:2407.01449, 2024.

10. https://github.com/google-research/big_vision/tree/main/big_vision/configs/proj/paligemma