Jina AI

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

Um modelo de incorporação multilingue que compreende o inglês e 30 linguagens de programação populares; pode processar até 8192 tokens por sequência.

Introdução aos modelos Jina Embedding v2

Os modelos Jina Embeddings v2 foram concebidos para lidar com documentos longos com um tamanho máximo de entrada alargado de 8.192 tokens. A partir de outubro de 2024, o Jina AI Embedding V2 tem as seguintes variantes, cada uma atendendo a diferentes necessidades de embedding.

O que é jina-embeddings-v2-base-code

O jina-embeddings-v2-base-code é um modelo de embedding multilingue que compreende inglês e 30 linguagens de programação populares, suportando sequências até 8192 tokens. Utiliza uma arquitetura baseada em BERT, especificamente JinaBERT, que inclui uma variante bidirecional simétrica de ALiBi para gerir sequências mais longas. Inicialmente pré-treinado no conjunto de dados de código do GitHub, este modelo foi melhorado com a extensa coleção da Jina AI de mais de 150 milhões de pares de perguntas e respostas de codificação e pares de código-fonte de docstring de vários domínios.

Comparação do jina-embeddings-v2-base-code com outros modelos de embedding da Jina.

ModeloTamanho do parâmetroDimensão de incorporaçãoTexto
jina-embeddings-v3570Mtamanho de incorporação flexível (Predefinição: 1024)incorporação de texto multilingue; 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 usando jina-embeddings-v2-base-code

Existem duas formas principais de gerar embeddings vectoriais:

  1. PyMilvus: o SDK Python para Milvus que integra perfeitamente o modelo jina-embeddings-v2-base-code.
  2. Biblioteca SentenceTransformer: a biblioteca Python sentence-transformer.

Uma vez criados os embeddings vectoriais, estes podem ser armazenados numa base de dados vetorial como a Zilliz Cloud (uma base de dados vetorial totalmente gerida pela Milvus) e utilizada para pesquisa de similaridade semântica.

Aqui estão quatro etapas principais:

  • Inscrever-se](https://cloud.zilliz.com/signup) para uma 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-v2-base-code", 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):
    client.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 obter detalhes, consulte a nossa [PyMilvus Embedding Model documentation](Para obter mais informações, consulte a nossa PyMilvus Embedding Model documentation.).

Criar embeddings através da biblioteca SentenceTransformer e inseri-los no Zilliz Cloud para pesquisa semântica

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("jinaai/jina-embeddings-v2-base-code", 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):
    cliente.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=768,
    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"])