
업데이트: 2024년 8월 31일, 향상된 성능, 89개 언어에 대한 다국어 지원 및 유연한 출력 차원을 갖춘 Jina-ColBERT의 2번째 버전을 출시했습니다. 자세한 내용은 출시 게시물을 확인하세요.
지난 금요일, Hugging Face에서 Jina AI의 ColBERT 모델 출시는 특히 Twitter/X에서 AI 커뮤니티 전반에 걸쳐 상당한 관심을 불러일으켰습니다. 많은 사람들이 혁신적인 BERT 모델에 익숙하지만, ColBERT에 대한 관심은 일부 사람들에게 의문을 남겼습니다: 정보 검색 기술 분야에서 ColBERT가 두드러지는 점은 무엇일까요? AI 커뮤니티가 8192 길이의 ColBERT에 대해 왜 흥분하고 있을까요? 이 글에서는 ColBERT와 ColBERTv2의 세부사항을 살펴보고, 그들의 설계, 개선사항, 그리고 ColBERT의 후기 상호작용의 놀라운 효과성을 조명합니다.

tagColBERT란 무엇인가?
"ColBERT"는 Contextualized Late Interaction over BERT의 약자로, 스탠포드 대학교에서 시작된 모델로, BERT의 깊은 언어 이해력을 활용하면서 새로운 상호작용 메커니즘을 도입했습니다. "후기 상호작용"으로 알려진 이 메커니즘은 검색 프로세스의 최종 단계까지 쿼리와 문서를 별도로 처리함으로써 효율적이고 정확한 검색을 가능하게 합니다. 구체적으로 두 가지 버전의 모델이 있습니다:
- ColBERT: 초기 모델은 Omar Khattab와 Matei Zaharia의 작품으로, "ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT" 논문을 통해 정보 검색에 대한 새로운 접근 방식을 제시했습니다. 이 연구는 SIGIR 2020에서 발표되었습니다.

"후기 상호작용"을 소개하는 원본 ColBERT 논문.
- ColBERTv2: 기초 작업을 바탕으로, Omar Khattab는 Barlas Oguz, Matei Zaharia, Michael S. Bernstein과 협력하여 SIGIR 2021에서 "ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction"을 발표했습니다. ColBERT의 이 다음 반복 버전은 이전의 한계를 해결하고 노이즈 제거 감독과 잔차 압축과 같은 주요 개선사항을 도입하여 모델의 검색 효과성과 저장 효율성을 향상시켰습니다.

ColBERTv2는 훈련 데이터의 품질을 개선하고 공간 점유율을 줄이기 위해 노이즈 제거 감독과 잔차 압축을 추가했습니다.
tagColBERT의 설계 이해하기
ColBERTv2의 아키텍처가 원래 ColBERT와 매우 유사하고, 주요 혁신이 훈련 기법과 압축 메커니즘을 중심으로 이루어졌기 때문에, 먼저 원래 ColBERT의 기초적인 측면을 살펴보겠습니다.
tagColBERT의 후기 상호작용이란 무엇인가?
"상호작용"은 쿼리와 문서의 표현을 비교하여 관련성을 평가하는 프로세스를 의미합니다.
"후기 상호작용"은 ColBERT의 핵심입니다. 이 용어는 쿼리와 문서 표현 간의 상호작용이 둘 다 독립적으로 인코딩된 후, 프로세스의 후반부에서 발생하는 모델의 아키텍처와 처리 전략에서 유래했습니다. 이는 쿼리와 문서 임베딩이 더 이른 단계, 일반적으로 모델에 의한 인코딩 전이나 도중에 상호작용하는 "조기 상호작용" 모델과 대조됩니다.
Interaction Type | Models |
---|---|
Early Interaction | BERT, ANCE, DPR, Sentence-BERT, DRMM, KNRM, Conv-KNRM, etc. |
Late Interaction | ColBERT, ColBERTv2 |
조기 상호작용은 모든 가능한 쿼리-문서 쌍을 고려해야 하므로 계산 복잡성을 증가시킬 수 있어 대규모 애플리케이션에는 덜 효율적입니다.
ColBERT와 같은 후기 상호작용 모델은 문서 표현의 사전 계산을 허용하고 마지막에 더 가벼운 상호작용 단계를 사용함으로써 효율성과 확장성을 최적화합니다. 이 설계 선택은 더 빠른 검색 시간과 감소된 계산 요구사항을 가능하게 하여 대규모 문서 컬렉션 처리에 더 적합하게 만듭니다.
tag상호작용 없음: 문서와 질의 임베딩의 코사인 유사도
많은 실용적인 벡터 데이터베이스와 뉴럴 검색 솔루션들은 문서와 질의 임베딩 간의 빠른 코사인 유사도 매칭에 의존합니다. 단순성과 계산 효율성 측면에서 매력적이지만, "상호작용 없음" 또는 "상호작용 기반이 아님"이라고 불리는 이 방법은 질의와 문서 간의 일종의 상호작용을 포함하는 모델들과 비교했을 때 성능이 떨어지는 것으로 나타났습니다.
"상호작용 없음" 접근 방식의 핵심적인 한계는 질의와 문서 용어 사이의 복잡한 뉘앙스와 관계를 포착하지 못한다는 점입니다. 정보 검색은 본질적으로 질의 뒤의 의도와 문서 내의 내용을 이해하고 매칭하는 것입니다. 이 과정은 종종 관련된 용어들의 깊은 문맥적 이해를 필요로 하는데, 이는 문서와 질의에 대한 단일의 집계된 임베딩으로는 제공하기 어려운 것입니다.
tagColBERT의 질의 및 문서 인코더
ColBERT의 인코딩 전략은 언어의 깊은 문맥적 이해로 알려진 BERT 모델에 기반을 두고 있습니다. 이 모델은 질의나 문서의 각 토큰에 대해 밀집 벡터 표현을 생성하여, 질의에 대한 문맥화된 임베딩 집합과 문서에 대한 임베딩 집합을 각각 생성합니다. 이는 후기 상호작용 단계에서 임베딩들의 세밀한 비교를 가능하게 합니다.
tagColBERT의 질의 인코더
토큰 를 가진 질의 에 대해, 과정은 를 BERT 기반 WordPiece 토큰으로 토큰화하고 특수 [Q]
토큰을 앞에 붙이는 것으로 시작됩니다. BERT의 [CLS]
토큰 바로 뒤에 위치하는 이 [Q]
토큰은 질의의 시작을 알립니다.
질의가 미리 정의된 토큰 수 보다 짧으면 [mask]
토큰으로 까지 패딩되고, 그렇지 않으면 처음 토큰으로 잘립니다. 패딩된 시퀀스는 BERT를 통과한 후 CNN(합성곱 신경망)과 정규화를 거칩니다. 출력은 아래와 같이 로 표시되는 임베딩 벡터 집합입니다:
tagColBERT의 문서 인코더
마찬가지로, 토큰 을 가진 문서 에 대해, 문서의 시작을 나타내는 [D]
토큰이 앞에 붙습니다. 패딩이 필요 없는 이 시퀀스는 동일한 과정을 거쳐 아래와 같이 로 표시되는 임베딩 벡터 집합이 됩니다:
질의 패딩에 [mask]
토큰을 사용하는 것(논문에서 질의 증강이라고 명명됨)은 모든 질의에 대해 균일한 길이를 보장하여 배치 처리를 용이하게 합니다. [Q]
와 [D]
토큰은 각각 질의와 문서의 시작을 명시적으로 표시하여 모델이 두 종류의 입력을 구분하는 데 도움을 줍니다.
tagColBERT와 교차 인코더 비교
교차 인코더는 질의와 문서 쌍을 함께 처리하여 매우 정확하지만, 가능한 모든 쌍을 평가하는 데 필요한 계산 비용으로 인해 대규모 작업에는 덜 효율적입니다. 그들은 의미적 유사도 작업이나 상세한 내용 비교와 같이 문장 쌍의 정확한 점수 매기기가 필요한 특정 시나리오에서 뛰어납니다. 하지만 이 설계는 사전 계산된 임베딩과 효율적인 유사도 계산이 중요한 대규모 데이터셋에서의 빠른 검색이 필요한 상황에서는 적용 가능성이 제한됩니다.
반면에 ColBERT의 후기 상호작용 모델은 문서 임베딩의 사전 계산을 허용하여 의미 분석의 깊이를 손상시키지 않으면서 검색 과정을 크게 가속화합니다. 교차 인코더의 직접적인 접근 방식과 비교했을 때 직관적이지 않아 보일 수 있지만, 이 방법은 실시간 및 대규모 정보 검색 작업을 위한 확장 가능한 솔루션을 제공합니다. 이는 계산 효율성과 상호작용 모델링의 품질 사이의 전략적 타협을 나타냅니다.
tagColBERT를 사용한 상위 K개 문서 찾기
질의와 문서에 대한 임베딩이 있으면 가장 관련성 높은 상위 K개 문서를 찾는 것은 간단해집니다(하지만 두 벡터의 코사인을 계산하는 것만큼 간단하지는 않습니다).
주요 작업에는 용어별 유사도를 계산하기 위한 배치 내적 연산, 질의 용어별 최고 유사도를 찾기 위한 문서 용어에 대한 최대 풀링, 총 문서 점수를 도출하기 위한 질의 용어에 대한 합산, 그리고 이러한 점수를 기반으로 문서를 정렬하는 것이 포함됩니다. PyTorch 의사 코드는 아래와 같습니다:
import torch
def compute_relevance_scores(query_embeddings, document_embeddings, k):
"""
Compute relevance scores for top-k documents given a query.
:param query_embeddings: Tensor representing the query embeddings, shape: [num_query_terms, embedding_dim]
:param document_embeddings: Tensor representing embeddings for k documents, shape: [k, max_doc_length, embedding_dim]
:param k: Number of top documents to re-rank
:return: Sorted document indices based on their relevance scores
"""
# Ensure document_embeddings is a 3D tensor: [k, max_doc_length, embedding_dim]
# Pad the k documents to their maximum length for batch operations
# Note: Assuming document_embeddings is already padded and moved to GPU
# Compute batch dot-product of Eq (query embeddings) and D (document embeddings)
# Resulting shape: [k, num_query_terms, max_doc_length]
scores = torch.matmul(query_embeddings.unsqueeze(0), document_embeddings.transpose(1, 2))
# Apply max-pooling across document terms (dim=2) to find the max similarity per query term
# Shape after max-pool: [k, num_query_terms]
max_scores_per_query_term = scores.max(dim=2).values
# Sum the scores across query terms to get the total score for each document
# Shape after sum: [k]
total_scores = max_scores_per_query_term.sum(dim=1)
# Sort the documents based on their total scores
sorted_indices = total_scores.argsort(descending=True)
return sorted_indices
이 절차는 훈련과 추론 시의 재순위화 모두에서 사용됩니다. ColBERT 모델은 쌍별 랭킹 손실을 사용하여 훈련되며, 훈련 데이터는 질의를 나타내는 , 질의와 관련된(긍정) 문서 , 관련 없는(부정) 문서 로 구성된 삼중항 으로 구성됩니다. 모델은 와 사이의 유사도 점수가 와 사이의 점수보다 높도록 표현을 학습하는 것을 목표로 합니다.
훈련 목적 함수는 수학적으로 다음과 같은 손실 함수를 최소화하는 것으로 표현할 수 있습니다:
, 여기서 는 질의 와 문서 사이에 ColBERT가 계산한 유사도 점수를 나타냅니다. 이 점수는 모델 아키텍처에서 설명한 후기 상호작용 패턴에 따라 질의와 문서 사이의 가장 잘 매칭되는 임베딩의 최대 유사도 점수를 집계하여 얻습니다. 이 접근 방식은 모델이 주어진 질의에 대해 관련 있는 문서와 관련 없는 문서를 구분하도록 훈련되어, 긍정 및 부정 문서 쌍의 유사도 점수에서 더 큰 마진을 장려합니다.
tagColBERTv2의 잡음 제거 감독
ColBERTv2의 잡음 제거 감독은 도전적인 부정 예제를 선택하고 교차 인코더를 활용하여 지식 증류를 수행함으로써 원래의 훈련 과정을 개선합니다. 훈련 데이터 품질을 향상시키는 이 정교한 방법은 다음과 같은 여러 단계를 포함합니다:
- 초기 훈련: 질의, 관련 문서, 관련 없는 문서로 구성된 MS MARCO 데이터셋의 공식 삼중항을 활용합니다.
- 인덱싱 및 검색: ColBERTv2의 압축을 사용하여 훈련 패시지를 인덱싱하고, 각 질의에 대해 상위 k개 패시지를 검색합니다.
- 교차 인코더 재순위화: MiniLM 교차 인코더를 통한 재순위화로 패시지 선택을 향상시키고, 그 점수를 ColBERTv2로 증류합니다.
- 훈련 튜플 형성: 도전적인 예제를 만들기 위해 높은 순위와 낮은 순위의 패시지를 모두 포함하는 w-way 튜플을 생성합니다.
- 반복적 개선: 어려운 부정 예제의 선택을 지속적으로 개선하여 모델 성능을 향상시키는 과정을 반복합니다.
이 과정은 ColBERT 아키텍처의 근본적인 변화가 아닌 훈련 체계의 정교한 개선을 나타냅니다.
tagColBERT의 하이퍼파라미터
ColBERT의 하이퍼파라미터는 다음과 같이 요약됩니다:
하이퍼파라미터 | 최적 선택 | 이유 |
---|---|---|
Learning Rate | 3 x 10^{-6} | 안정적이고 효과적인 모델 업데이트를 위해 미세조정용으로 선택. |
Batch Size | 32 | 연산 효율성과 업데이트당 충분한 정보 캡처 능력의 균형을 맞춤. |
Number of Embeddings per Query (Nq) | 32 | 쿼리 간 일관된 표현 크기를 보장하여 효율적인 처리를 지원하도록 고정됨. |
Embedding Dimension (m) | 128 | 표현력과 연산 효율성 사이의 좋은 균형을 제공하는 것으로 입증됨. |
Training Iterations | 200k (MS MARCO), 125k (TREC CAR) | 과적합을 피하면서 충분한 학습을 보장하기 위해 선택되었으며, 데이터셋 특성에 따라 조정됨. |
Bytes per Dimension in Embeddings | 4 (re-ranking), 2 (end-to-end ranking) | 적용 맥락(re-ranking vs. end-to-end)을 고려한 정밀도와 공간 효율성 간의 절충안. |
Vector-Similarity Function | Cosine (re-ranking), (Squared) L2 (end-to-end) | 각각의 검색 맥락에서의 성능과 효율성을 기반으로 선택됨. |
FAISS Index Partitions (P) | 2000 | 검색 공간 분할의 세분성을 결정하여 검색 효율성에 영향을 미침. |
Nearest Partitions Searched (p) | 10 | 검색의 범위와 연산 효율성 간의 균형을 맞춤. |
Sub-vectors per Embedding (s) | 16 | 양자화의 세분성에 영향을 미치며, 검색 속도와 메모리 사용량에 영향을 줌. |
Index Representation per Dimension | 16-bit values | end-to-end 검색의 두 번째 단계에서 정확도와 공간의 절충을 위해 선택됨. |
Number of Layers in Encoders | 12-layer BERT | 맥락 이해의 깊이와 연산 효율성 사이의 최적 균형. |
Max Query Length | 128 | 쿼리 인코더가 처리하는 최대 토큰 수. Jina-ColBERT 모델에서는 확장됨. |
Max Document Length | 512 | 문서 인코더가 처리하는 최대 토큰 수. Jina-ColBERT 모델에서는 8192로 확장됨. |
tagColBERT의 인덱싱 전략
각 문서를 하나의 임베딩 벡터로 인코딩하는 표현 기반 접근 방식과 달리, ColBERT는 문서(및 쿼리)를 임베딩 집합으로 인코딩하며, 문서의 각 토큰마다 고유한 임베딩을 가집니다. 이 접근 방식은 본질적으로 더 긴 문서의 경우 더 많은 임베딩이 저장됨을 의미하며, 이는 원래 ColBERT의 문제점이었고, 후에 ColBERTv2에서 해결되었습니다.
이를 효율적으로 관리하는 핵심은 ColBERT가 인덱싱과 검색을 위해 벡터 데이터베이스(예: FAISS)를 사용하는 것과 대량의 데이터를 효율적으로 처리하도록 설계된 상세한 인덱싱 프로세스에 있습니다. 원래 ColBERT 논문은 인덱싱과 검색의 효율성을 높이기 위한 여러 전략을 언급합니다:
- 오프라인 인덱싱: 문서 표현은 오프라인에서 계산되어 문서 임베딩의 사전 계산과 저장이 가능합니다. 이 프로세스는 배치 처리와 GPU 가속을 활용하여 대규모 문서 컬렉션을 효율적으로 처리합니다.
- 임베딩 저장: 문서 임베딩은 각 차원에 대해 32비트 또는 16비트 값을 사용하여 저장될 수 있으며, 정밀도와 저장 요구사항 사이의 절충안을 제공합니다. 이러한 유연성은 ColBERT가 효과성(검색 성능 측면)과 효율성(저장 및 계산 비용 측면) 사이의 균형을 유지할 수 있게 합니다.
원래 ColBERT에는 없었던 ColBERTv2의 residual compression 도입은 품질을 유지하면서 모델의 공간 점유율을 6-10배 줄이는 데 핵심적인 역할을 합니다. 이 기술은 고정된 참조 중심점들로부터의 차이만을 효과적으로 캡처하고 저장함으로써 임베딩을 더욱 압축합니다.
tagColBERT의 효과성과 효율성
처음에는 검색에 BERT의 심층 맥락 이해를 통합하는 것이 본질적으로 상당한 컴퓨팅 리소스를 필요로 하여, 높은 지연 시간과 계산 비용으로 인해 실시간 애플리케이션에 적합하지 않을 것이라고 가정할 수 있습니다. 하지만 ColBERT는 후기 상호작용 메커니즘의 혁신적인 사용을 통해 이러한 가정에 도전하고 이를 뒤집습니다. 주목할 만한 점은 다음과 같습니다:
- 큰 폭의 효율성 향상: ColBERT는 전통적인 BERT 기반 랭킹 모델에 비해 계산 비용(FLOPs)과 지연 시간을 대폭 감소시킵니다. 특히, 주어진 모델 크기(예: 12-layer "base" transformer encoder)에서 ColBERT는 BERT 기반 모델의 성능을 매칭하거나 일부 경우에는 훨씬 적은 계산 요구사항으로 초과합니다. 예를 들어, 재랭킹 깊이 k=10에서 BERT는 ColBERT보다 거의 180배 더 많은 FLOPs를 필요로 합니다; 이 차이는 k가 증가함에 따라 더 벌어져서 k=1000에서는 13900배, k=2000에서는 23000배에 이릅니다.
- End-to-End 검색에서의 향상된 Recall과 MRR@10: 쿼리와 문서 표현 간의 더 깊은 상호작용(초기 상호작용 모델에서 볼 수 있는)이 높은 검색 성능에 필요할 것이라는 초기 직관과는 달리, ColBERT의 end-to-end 검색 설정은 우수한 효과성을 보여줍니다. 예를 들어, Recall@50은 공식 BM25의 Recall@1000과 거의 모든 다른 모델의 Recall@200을 초과하여, 각 쿼리-문서 쌍의 직접 비교 없이도 방대한 컬렉션에서 관련 문서를 검색하는 모델의 주목할 만한 능력을 강조합니다.
- 실제 애플리케이션에 대한 실용성: 실험 결과는 ColBERT의 실제 시나리오 적용 가능성을 강조합니다. 인덱싱 처리량과 메모리 효율성으로 인해 MS MARCO와 같은 대규모 문서 컬렉션을 몇 시간 내에 인덱싱할 수 있으며, 관리 가능한 공간 점유율로 높은 효과성을 유지합니다. 이러한 특성은 성능과 계산 효율성이 모두 중요한 프로덕션 환경에서 ColBERT의 적합성을 강조합니다.
- 문서 컬렉션 크기에 대한 확장성: 아마도 가장 놀라운 결론은 ColBERT의 대규모 문서 컬렉션 처리에 대한 확장성과 효율성일 것입니다. 이 아키텍처는 문서 임베딩의 사전 계산을 허용하고 쿼리-문서 상호작용을 위한 효율적인 배치 처리를 활용하여 시스템이 문서 컬렉션의 크기에 따라 효과적으로 확장될 수 있게 합니다. 이러한 확장성은 효과적인 문서 검색에 필요한 복잡성과 이해의 깊이를 고려할 때 직관적이지 않으며, 계산 효율성과 검색 효과성의 균형을 맞추는 ColBERT의 혁신적인 접근 방식을 보여줍니다.
tagjina-colbert-v1-en 사용하기: 8192 길이의 ColBERTv2 모델
Jina-ColBERT는 빠르고 정확한 검색을 위해 설계되었으며, 아키텍처 개선으로 더 긴 시퀀스 처리가 가능한 JinaBERT의 발전을 활용하여 최대 8192의 더 긴 컨텍스트 길이를 지원합니다.
[D],[CLS]
로 패딩됨을 기억하세요.
tag원래 ColBERT에 대한 Jina의 개선사항
Jina-ColBERT의 주요 발전은 그 백본인 jina-bert-v2-base-en
으로, bert-base-uncased
를 사용하는 원래 ColBERT와 비교하여 훨씬 더 긴 컨텍스트(최대 8192 토큰)를 처리할 수 있습니다. 이 기능은 광범위한 콘텐츠를 가진 문서를 처리하는 데 중요하며, 더 자세하고 맥락적인 검색 결과를 제공합니다.
tagjina-colbert-v1-en의 ColBERTv2 대비 성능 비교
우리는 BEIR 데이터셋과 긴 컨텍스트를 선호하는 새로운 LoCo 벤치마크에서 jina-colbert-v1-en을 평가하여 원래 ColBERTv2 구현과 비상호작용 기반jina-embeddings-v2-base-en 모델.
Dataset | ColBERTv2 | jina-colbert-v1-en | jina-embeddings-v2-base-en |
---|---|---|---|
Arguana | 46.5 | 49.4 | 44.0 |
Climate-Fever | 18.1 | 19.6 | 23.5 |
DBPedia | 45.2 | 41.3 | 35.1 |
FEVER | 78.8 | 79.5 | 72.3 |
FiQA | 35.4 | 36.8 | 41.6 |
HotpotQA | 67.5 | 65.9 | 61.4 |
NFCorpus | 33.7 | 33.8 | 32.5 |
NQ | 56.1 | 54.9 | 60.4 |
Quora | 85.5 | 82.3 | 88.2 |
SCIDOCS | 15.4 | 16.9 | 19.9 |
SciFact | 68.9 | 70.1 | 66.7 |
TREC-COVID | 72.6 | 75.0 | 65.9 |
Webis-touch2020 | 26.0 | 27.0 | 26.2 |
LoCo | 74.3 | 83.7 | 85.4 |
Average | 51.7 | 52.6 | 51.6 |
이 표는 jina-colbert-v1-en의 우수한 성능을 보여주며, 특히 기존 ColBERTv2와 비교하여 긴 컨텍스트 길이가 필요한 시나리오에서 더욱 두드러집니다. jina-embeddings-v2-base-en은 더 많은 학습 데이터를 사용하는 반면, jina-colbert-v1-en은 MSMARCO만 사용하는데, 이는 일부 작업에서 jina-embeddings-v2-base-en의 좋은 성능을 설명할 수 있습니다.
tagjina-colbert-v1-en 사용 예시
이 코드 스니펫은 Jina-ColBERT의 인덱싱 프로세스를 보여주며, 긴 문서에 대한 지원을 보여줍니다.
from colbert import Indexer
from colbert.infra import Run, RunConfig, ColBERTConfig
n_gpu: int = 1 # Set your number of available GPUs
experiment: str = "" # Name of the folder where the logs and created indices will be stored
index_name: str = "" # The name of your index, i.e. the name of your vector database
if __name__ == "__main__":
with Run().context(RunConfig(nranks=n_gpu, experiment=experiment)):
config = ColBERTConfig(
doc_maxlen=8192 # Our model supports 8k context length for indexing long documents
)
indexer = Indexer(
checkpoint="jinaai/jina-colbert-v1-en",
config=config,
)
documents = [
"ColBERT is an efficient and effective passage retrieval model.",
"Jina-ColBERT is a ColBERT-style model but based on JinaBERT so it can support both 8k context length.",
"JinaBERT is a BERT architecture that supports the symmetric bidirectional variant of ALiBi to allow longer sequence length.",
"Jina-ColBERT model is trained on MSMARCO passage ranking dataset, following a very similar training procedure with ColBERTv2.",
"Jina-ColBERT achieves the competitive retrieval performance with ColBERTv2.",
"Jina is an easier way to build neural search systems.",
"You can use Jina-ColBERT to build neural search systems with ease.",
# Add more documents here to ensure the clustering work correctly
]
indexer.index(name=index_name, collection=documents)
tagRAGatouille에서 jina-colbert-v1-en 사용하기
RAGatouille는 RAG 파이프라인 내에서 고급 검색 방법의 사용을 용이하게 하는 새로운 Python 라이브러리입니다. 모듈성과 쉬운 통합을 위해 설계되었으며, 사용자가 최신 연구 결과를 원활하게 활용할 수 있게 해줍니다. RAGatouille의 주요 목표는 ColBERT와 같은 복잡한 모델을 RAG 파이프라인에 적용하는 것을 단순화하여, 개발자들이 기본 연구에 대한 깊은 전문 지식 없이도 이러한 방법을 활용할 수 있게 하는 것입니다. Benjamin Clavié 덕분에 이제 jina-colbert-v1-en을 쉽게 사용할 수 있습니다:
from ragatouille import RAGPretrainedModel
# Get your model & collection of big documents ready
RAG = RAGPretrainedModel.from_pretrained("jinaai/jina-colbert-v1-en")
my_documents = [
"very long document1",
"very long document2",
# ... more documents
]
# And create an index with them at full length!
RAG.index(collection=my_documents,
index_name="the_biggest_index",
max_document_length=8190,)
# or encode them in-memory with no truncation, up to your model's max length
RAG.encode(my_documents)
Jina-ColBERT에 대한 더 자세한 정보와 추가 탐색을 위해 Hugging Face 페이지를 방문할 수 있습니다.
tag결론
ColBERT는 정보 검색 분야에서 중요한 진전을 나타냅니다. Jina-ColBERT로 더 긴 컨텍스트 길이를 가능하게 하고 후기 상호작용에 대한 ColBERT 접근 방식과의 호환성을 유지함으로써, 최첨단 검색 기능을 구현하고자 하는 개발자들에게 강력한 대안을 제공합니다.
복잡한 검색 모델을 RAG 파이프라인에 통합하는 것을 단순화하는 RAGatouille 라이브러리와 결합하여, 개발자들은 이제 고급 검색 기능을 쉽게 활용할 수 있으며, 워크플로우를 간소화하고 애플리케이션을 향상시킬 수 있습니다. Jina-ColBERT와 RAGatouille의 시너지는 고급 AI 검색 모델을 실용적인 사용을 위해 접근 가능하고 효율적으로 만드는 데 있어 주목할 만한 진전을 보여줍니다.