포옹하는 얼굴

포옹하는 얼굴 / all-mpnet-base-v2

문장 및 짧은 단락 인코더로, 768차원 벡터를 생성합니다.

모델 개요

"all-mpnet-base-v2"는 입력 텍스트를 768차원 벡터로 변환하는 문장 및 짧은 단락 인코더입니다. 이는 대조 학습 목표를 사용하여 10억 개의 문장 쌍으로 구성된 데이터 세트에 대해 미세 조정된 Microsoft/MPNET-BASE 모델의 개선된 버전입니다. 'all-mpnet-base-v2'는 정보 검색, 클러스터링, 문장 유사도와 같은 작업에 적합합니다.

자세한 내용은 이 포스팅을 참조하세요: All-Mpnet-Base-V2: AI로 문장 임베딩 향상하기

all-mpnet-base-v2를 사용하여 임베딩을 만드는 방법

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

  1. 'all-mpnet-base-v2' 모델을 원활하게 통합하는 Milvus용 Python SDK인 PyMilvus를 사용합니다.
  2. 센텐스 트랜스포머 라이브러리: 파이썬 라이브러리 '센텐스-트랜스포머'.

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

다음은 네 가지 주요 단계입니다:

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

파이밀버스를 통해 임베딩을 생성하고 질리즈 클라우드에 삽입하여 시맨틱 검색하기

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

ef = SentenceTransformerEmbeddingFunction("sentence-transformers/all-mpnet-base-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"])

파이밀버스와 all-mpnet-base-v2의 통합]에 대한 자세한 내용은 이 문서(https://milvus.io/docs/embed-with-sentence-transform.md)를 확인하세요.

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

sentence_transformers에서 SentenceTransformer를 가져옵니다.
pymilvus에서 밀버스 클라이언트 가져오기

model = SentenceTransformer("sentence-transformers/all-mpnet-base-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=768,
    auto_id=True)

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

추가 읽기

  • 데이터에 적합한 임베딩 모델 선택하기](https://zilliz.com/blog/choosing-the-right-embedding-model-for-your-data)
  • 임베딩 모델 평가하기](https://zilliz.com/learn/evaluating-your-embedding-model)
  • 나만의 텍스트 임베딩 모델 훈련하기](https://zilliz.com/learn/training-your-own-text-embedding-model)
  • RAG 애플리케이션을 위한 웹사이트 청킹 및 임베딩 초보자 가이드](https://zilliz.com/learn/beginner-guide-to-website-chunking-and-embedding-for-your-genai-applications)
  • RAG란 무엇인가요?