Jina AI

Jina AI / jina-embeddings-v2-base-zh

시퀀스당 최대 8192개의 토큰을 처리할 수 있는 이중 언어(중국어/영어) 텍스트 임베딩 툴입니다.

Jina 임베딩 v2 모델 소개

Jina 임베딩 v2 모델은 최대 입력 크기가 8,192토큰으로 확장된 긴 문서를 처리하도록 설계되었습니다. 2024년 10월 현재, Jina AI 임베딩 V2에는 다음과 같은 변형이 있으며, 각 변형은 서로 다른 임베딩 요구 사항을 충족합니다.

jina-embeddings-v2-base-zh란?

jina-embeddings-v2-base-zh는 시퀀스당 최대 8192개의 토큰을 처리할 수 있는 이중 언어(중국어/영어) 텍스트 임베딩 툴입니다. 이 도구는 단일 언어 및 다국어 애플리케이션을 위한 특수 BERT 아키텍처(JinaBERT라고 함)를 기반으로 구축되었습니다.

'jina-embeddings-v2-base-zh'와 다른 Jina 임베딩 모델 비교.

모델파라미터 크기임베딩 치수텍스트
jina-embeddings-v3570M유연한 임베딩 크기(기본값: 1024)다국어 텍스트 임베딩, 총 94개 언어 지원
jina-embeddings-v2-small-en33M512영어 단일 언어 임베딩
jina-embeddings-v2-base-en137M768영어 단일 언어 임베딩
jina-embeddings-v2-base-zh161M768중국어-영어 이중 언어 임베딩
jina-embeddings-v2-base-de161M768독일어-영어 이중 언어 임베딩
jina-embeddings-v2-base-code161M768영어 및 프로그래밍 언어

jina-embeddings-v2-base-zh를 사용하여 임베딩을 만드는 방법

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

  1. **PyMilvus: jina-embeddings-v2-base-zh 모델을 원활하게 통합하는 Milvus 용 Python SDK.
  2. 센텐스 트랜스포머 라이브러리: 파이썬 라이브러리 '센텐스 트랜스포머'.

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

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

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

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

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

ef = SentenceTransformerEmbeddingFunction("jinaai/jina-embeddings-v2-base-zh", trust_remote_code=True)

docs = [
   "人工智能于1956年作为一门学术学科成立。",
   "艾伦-图灵是第一位在人工智能领域进行实质性研究的人。",
   "图灵出生于伦敦的梅达韦尔,在英格兰南部长大。"
]
# 문서에 대한 임베딩 생성
docs_embeddings = 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"])

자세한 내용은 파이밀버스 임베딩 모델 문서(자세한 내용은 파이밀버스 임베딩 모델 문서(https://milvus.io/docs/embeddings.md))를 참조하세요.

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

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

model = SentenceTransformer("jinaai/jina-embeddings-v2-base-zh", trust_remote_code=True)

docs = [
   "人工智能于1956年作为一门学术学科成立。",
   "艾伦-图灵是第一位在人工智能领域进行实质性研究的人。",
   "图灵出生于伦敦的梅达韦尔,在英格兰南部长大。"
]
# 문서에 대한 임베딩 생성
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=512,
    auto_id=True)

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