Jina AI

Jina AI / jina-embeddings-v3

Um modelo de incorporação de texto multilingue; suporta 89 línguas no total; pode processar até 8192 tokens por sequência.

Visão geral de jina-embeddings-v3

O modelo jina-embeddings-v3 é a ferramenta de incorporação de texto multilingue recentemente lançada pela JinaAI com 570 milhões de parâmetros e um comprimento máximo de entrada de 8192 tokens. Pode lidar com o processamento de dados multilingues e tarefas de recuperação de textos longos, alcançando um desempenho topo de gama (SOTA) em 94 línguas. Este modelo cria incorporações adequadas a uma série de tarefas, incluindo a recuperação de documentos de consulta, agrupamento, [classificação] (https://zilliz.com/glossary/classification) e correspondência de texto.

O Jina-embeddings-v3 também suporta Matryoshka Embeddings, que lhe permite personalizar o tamanho do embedding de saída com base nas suas necessidades. Embora a dimensão de saída predefinida seja 1024, pode reduzi-la para 32, 64, 128, 256, 512 ou 768 sem perder muito desempenho, tornando-a adaptável a várias aplicações.

Compare jina-embeddings-v3 com os modelos Jina v2:

ModeloTamanho do parâmetroDimensão de incorporaçãoTexto
jina-embeddings-v3570Mtamanho de incorporação flexível (Padrão: 1024)incorporação de texto multilíngue; suporta 94 idiomas no total
jina-embeddings-v2-small-en33M512embeddings monolingues em inglês
jina-embeddings-v2-base-en137M768Embeddings monolingues em inglês
jina-embeddings-v2-base-zh161M768Embeddings bilingues chinês-inglês
jina-embeddings-v2-base-de161M768Embeddings bilingues alemão-inglês
jina-embeddings-v2-base-code161M768Inglês e linguagens de programação

Como criar embeddings com jina-embeddings-v3

Existem duas formas principais de gerar embeddings vectoriais:

  • PyMilvus: o SDK Python para Milvus que integra perfeitamente o modelo jina-embeddings-v3.
  • Biblioteca SentenceTransformer: a biblioteca Python sentence-transformer.

Uma vez gerados os embeddings vectoriais, estes podem ser armazenados em Zilliz Cloud (um serviço de base de dados vetorial totalmente gerido por Milvus) e utilizados para pesquisa de similaridade semântica. Eis quatro passos fundamentais:

  • Inscrever-se](https://cloud.zilliz.com/signup) numa conta Zilliz Cloud gratuitamente.
  • Configurar um cluster sem servidor](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster) e obter o Ponto de extremidade público e chave de API.
  • Crie uma coleção de vectores e insira os seus embeddings vectoriais.
  • Execute uma pesquisa semântica nos embeddings armazenados.

Crie embeddings via PyMilvus e insira-os no Zilliz Cloud para pesquisa semântica

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction
from pymilvus import MilvusClient

ef = SentenceTransformerEmbeddingFunction("jinaai/jina-embeddings-v3", trust_remote_code=True)

docs = [
   "A inteligência artificial foi fundada como disciplina académica em 1956",
   "Alan Turing foi a primeira pessoa a efetuar investigação substancial em IA",
   "Nascido em Maida Vale, Londres, Turing foi criado no sul de Inglaterra."
]
# Gerar embeddings para os documentos
docs_embeddings = ef(docs)

consultas = ["Quando foi fundada a inteligência artificial",
          "Onde nasceu Alan Turing?"]
# Gerar incorporações para consultas
consultas_embeddings = ef(consultas)

# Ligar ao Zilliz Cloud com o ponto de extremidade público e a chave da API
cliente = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents" (coleção)
if client.has_collection(nome_da_colecção=COLLECTION):
    cliente.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vetor": embedding})
    
resultados = cliente.search(
    nome_da_colecção=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Para mais detalhes, veja esta página de documentação do Jina AI.

Crie embeddings via Sentence Transformer e insira-os no Zilliz Cloud para pesquisa semântica

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("jinaai/jina-embeddings-v3", trust_remote_code=True)

docs = [
   "A inteligência artificial foi fundada como disciplina académica em 1956",
   "Alan Turing foi a primeira pessoa a efetuar investigação substancial em IA",
   "Nascido em Maida Vale, Londres, Turing foi criado no sul de Inglaterra."
]
# Gerar embeddings para documentos
docs_embeddings = model.encode(docs, normalize_embeddings=True)

consultas = ["consulta: Quando é que a inteligência artificial foi fundada",
           "consulta: Wo wurde Alan Turing geboren?" ]
# Gerar embeddings para as consultas
consultas_embeddings = model.encode(consultas, normalize_embeddings=True)

# Ligar ao Zilliz Cloud com o ponto final público e a chave API
cliente = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents" (coleção)
if client.has_collection(nome_da_colecção=COLLECTION):
    client.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=512,
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vetor": embedding})
    
resultados = cliente.search(
    nome_da_colecção=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Leitura adicional