Microsoft

Microsoft / multilingual-e5-large

다국어 문서에 맞춤화되어 100개 이상의 언어를 지원하며 다국어 정보 검색 및 시맨틱 검색 작업에 이상적입니다.

다국어-e5-대형 임베딩 모델 소개 ## 다국어 임베딩 모델 소개

  • 다국어 문서에 맞춤화되어 100개 이상의 언어를 지원하며, 다국어 정보 검색 및 시맨틱 검색 작업에 이상적입니다.

'multilingual-e5-large' 모델은 XLM-RoBERTa-large 아키텍처를 기반으로 Microsoft에서 개발한 최첨단 텍스트 임베딩 모델입니다. 24계층 구조와 5억 6천만 개의 파라미터로 구성된 multilingual-e5-large 모델은 1024차원 임베딩을 생성하고 100개 언어를 지원하여 다국어 컨텍스트에서도 강력한 성능을 제공합니다.

10억 개의 약하게 감독된 텍스트 쌍을 학습하고 특정 데이터 세트에 대해 미세 조정된 이 모델은 다국어 정보 검색 및 의미론적 검색 작업에 탁월한 성능을 발휘합니다. '쿼리:' 또는 '구절:'이 접두사로 붙은 텍스트 입력을 처리하여 의미론적 콘텐츠를 정확하게 반영하는 임베딩을 생성합니다. 이 모델은 다국어 벤치마크에서 소규모 모델과 기존 방식을 능가하는 우수한 성능을 보여 주므로 다국어 텍스트 분석, 클러스터링 및 유사도 비교에 이상적입니다.

다국어-e5-large 모델을 사용하여 벡터 임베딩을 만드는 방법

'multilingual-e5-large' 모델로 벡터 임베딩을 만드는 방법은 크게 두 가지가 있습니다:

  1. PyMilvus: multilingual-e5-large 모델과 원활하게 통합되는 Milvus 용 Python SDK.
  2. SentenceTransformer 라이브러리: sentence-transformer의 Python 라이브러리.

벡터 임베딩이 생성되면, 밀버스에서 제공하는 완전 관리형 벡터 데이터베이스 서비스인 질리즈 클라우드에 저장하여 의미적 유사도 검색에 사용할 수 있습니다. 다음은 네 가지 주요 단계입니다:

  1. 질리즈 클라우드 계정을 무료로 가입합니다.
  2. 서버리스 클러스터 설정](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster) 및 퍼블릭 엔드포인트 및 API 키를 발급받습니다.
  3. 벡터 컬렉션을 생성하고 벡터 임베딩을 삽입합니다.
  4. 저장된 임베딩에 대해 시맨틱 검색을 실행합니다.

파이밀버스를 통해 벡터 임베딩을 생성하고 질리즈 클라우드에 삽입하여 시맨틱 검색을 진행합니다.

pymilvus.model.dense에서 SentenceTransformerEmbeddingFunction을 가져옵니다.
파이밀버스에서 밀버스클라이언트를 가져옵니다.

ef = SentenceTransformerEmbeddingFunction("intfloat/multilingual-e5-large")
    
docs = [
   "통과: 인공 지능은 1956 년에 학문 분야로 설립되었습니다.",
   "passage: 앨런 튜링은 인공 지능 분야에서 포괄적 인 연구를 수행 한 최초의 사람이었습니다.",
   "통과: 图灵出生在伦敦的梅达维尔,他在英格兰南部长。"
]
    
# 문서에 대한 임베딩 생성
docs_embeddings = ef(docs)
    
queries = ["쿼리: 인공 지능은 언제 설립되었나요?"
           "query: 앨런 튜링은 언제 태어났나요?"]
               
# 쿼리에 대한 임베딩 생성하기
쿼리_임베딩 = ef(쿼리)

# 퍼블릭 엔드포인트와 API 키로 질리즈 클라우드에 연결하기
client = 밀버스클라이언트(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

컬렉션 = "문서"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

문서의 경우 zip(docs, docs_embeddings)에 임베딩합니다:
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data = 쿼리_임베딩,
    일관성_레벨="강함",
    output_fields=["text"])

자세한 내용은 파이밀버스 임베딩 모델 문서를 참조하세요.

센텐스 트랜스포머를 통해 벡터 임베딩을 생성하고 시맨틱 검색을 위해 질리즈 클라우드에 삽입합니다.

sentence_transformers에서 SentenceTransformer를 가져옵니다.
pymilvus에서 MilvusClient를 가져옵니다.

model = SentenceTransformer("intfloat/multilingual-e5-large")

docs = [
   "passage: 인공 지능은 1956 년에 학문 분야로 설립되었습니다.",
   "passage: 앨런 튜링은 인공 지능 분야에서 포괄적 인 연구를 수행 한 최초의 사람이었습니다.",
   "통과: 图灵出生在伦敦的梅达维尔,他在英格兰南部长。"
]
# 문서에 대한 임베딩 생성
docs_embeddings = model.encode(docs, normalize_embeddings=True)

queries = ["쿼리: 인공 지능은 언제 설립되었나요?"
           "query: 앨런 튜링은 언제 태어났나요?" ]
# 쿼리에 대한 임베딩 생성하기
query_embeddings = model.encode(queries, normalize_embeddings=True)

# 퍼블릭 엔드포인트와 API 키로 질리즈 클라우드에 연결하기
client = 밀버스클라이언트(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

컬렉션 = "문서"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=1024,
    auto_id=True)

문서의 경우 zip(docs, docs_embeddings)에 임베딩합니다:
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data = 쿼리_임베딩,
    일관성_레벨="강함",
    output_fields=["text"])

자세한 내용은 SentenceTransformer 문서를 참조하세요.