Microsoft

Microsoft / e5-large-v2

오픈 소스 및 최소한의 하드웨어 요구 사항을 유지하면서 우수한 성능을 발휘하는 데 이상적입니다. 지저분한 데이터에서 잘 작동합니다. 중간 길이의 텍스트 구절(1~2단락)을 반환할 것으로 예상되는 짧은 쿼리에 적합합니다.

e5-large-v2 임베딩 모델 소개

e5-large-v2는e5-base-v2` 모델의 향상된 버전으로, 시맨틱 검색, 검색 증강 생성(RAG), 클러스터링 등 다양한 자연어 처리(NLP) 작업에서 뛰어난 성능을 제공합니다. 또한 약하게 감독되는 대조적 사전 학습을 기반으로 하며 중간 길이의 텍스트를 반환하는 지저분한 데이터와 짧은 쿼리를 처리하는 데 특히 효과적입니다.

이 모델을 사용하려면 입력 텍스트 앞에 '쿼리: ', 쿼리의 경우 'passage: ' 접두사를 붙여야 합니다. 이 모델은 허깅 페이스의 트랜스포머 및 문장 트랜스포머와 같은 라이브러리를 통해 활용할 수 있으므로 애플리케이션에 쉽게 통합할 수 있습니다.

**'e5-large-v2'와 'e5-base-v2' 비교:

기능/성능e5-base-v2e5-large-v2
레이어1224
임베딩 크기7681024
최대 토큰 수512512
성능**일반 텍스트 임베딩 작업에 적합BEIR 및 MTEB와 같은 벤치마크에서 강력한 성능, 종종 더 작은 모델보다 성능이 뛰어남
입력 접두사 요구 사항**쿼리의 경우 "query: " 쿼리의 경우, "passage: " 구절의 경우"query: " 쿼리의 경우, "passage: " 구절의 경우

e5-large-v2 모델로 벡터 임베딩을 만드는 방법

벡터 임베딩을 만드는 방법에는 크게 두 가지가 있습니다:

  1. 파이밀버스: e5-large-v2 모델을 원활하게 통합하는 밀버스용 Python SDK.
  2. SentenceTransformer 라이브러리: 파이썬 라이브러리 sentence-transformer.

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

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

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

pymilvus.model.dense에서 SentenceTransformerEmbeddingFunction을 가져옵니다.
pymilvus에서 MilvusClient를 가져옵니다.

ef = SentenceTransformerEmbeddingFunction("intfloat/e5-large-v2")
docs = [
   "인공 지능은 1956 년에 학문 분야로 설립되었습니다.",
   "앨런 튜링은 AI 분야에서 실질적인 연구를 수행 한 최초의 사람이었습니다.",
   "런던의 메이다 베일에서 태어난 튜링은 잉글랜드 남부에서 자랐습니다."
]
# 문서에 대한 임베딩 생성
docs_embedings = ef(docs)

queries = ["인공 지능은 언제 설립되었나요",
          "앨런 튜링은 어디에서 태어났나요?"]]
# 쿼리에 대한 임베딩 생성하기
쿼리_임베딩 = 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에서 밀버스 클라이언트 가져오기

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

docs = [
   "인공 지능은 1956년에 학문 분야로 설립되었습니다.",
   "앨런 튜링은 AI에서 실질적인 연구를 수행 한 최초의 사람이었습니다.",
   "런던의 메이다 베일에서 태어난 튜링은 영국 남부에서 자랐습니다."
]
# 문서에 대한 임베딩 생성
docs_embeddings = model.encode(docs, normalize_embeddings=True)

queries = ["인공 지능은 언제 설립되었나요",
          "앨런 튜링은 어디에서 태어났나요?"]
# 쿼리에 대한 임베딩 생성하기
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 문서를 참조하세요.