Jina AI

Jina AI / jina-embeddings-v2-small-en

최대 8192개 토큰의 시퀀스 길이를 위한 영어 단일 언어 임베딩 모델로, Jina 임베딩 v2 제품군에서 가장 작은 변형입니다.

Jina 임베딩 v2 모델 소개

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

jina-embeddings-v2-small-en 소개

jina-embeddings-v2-small-en은 최대 8192 토큰의 시퀀스 길이를 위해 설계된 영어 단일 언어 임베딩 모델입니다. 3,300만 개의 파라미터로 학습되어 512차원 임베딩을 생성하는 Jina Embeddings v2 제품군 중 가장 작은 변형입니다.

jina-embeddings-v2-small-en을 다른 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-small-en로 임베딩을 만드는 방법

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

  • PyMilvus](https://github.com/milvus-io/pymilvus): jina-embeddings-v2-small-en 모델을 원활하게 통합하는 Milvus 용 Python SDK.
  • SentenceTransformer 라이브러리: 파이썬 라이브러리 sentence-transformer.

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

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

파이밀버스를 통해 임베딩 생성하기

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

ef = SentenceTransformerEmbeddingFunction("jinaai/jina-embeddings-v2-small-en", trust_remote_code=True)

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"])

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

문장 변환기를 통해 임베딩 생성하기

에서 문장 트랜스포머 임포트 문장 트랜스포머
pymilvus에서 MilvusClient를 가져옵니다.

model = SentenceTransformer("jinaai/jina-embeddings-v2-small-en", trust_remote_code=True)

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

queries = ["query: 인공 지능은 언제 설립되었나요?"
           "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=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"])

자세한 내용은 허깅 페이스 문서를 참조하세요.