milvus-logo
LFAI
Home
  • Modelos

BGE M3

O nomeBGE-M3 deve-se às suas capacidades de multilinguismo, multifuncionalidade e multigranularidade. Capaz de suportar mais de 100 línguas, a BGE-M3 estabelece novos padrões de referência em tarefas de recuperação multilingue e multilíngue. A sua capacidade única de efetuar a recuperação densa, a recuperação multi-vetorial e a recuperação esparsa numa única estrutura torna-a a escolha ideal para uma vasta gama de aplicações de recuperação de informação (RI).

Milvus integra-se com o modelo BGE M3 usando a classe BGEM3EmbeddingFunction. Esta classe trata do cálculo de embeddings e devolve-os num formato compatível com o Milvus para indexação e pesquisa. Para utilizar esta funcionalidade, é necessário instalar FlagEmbedding.

Para utilizar esta funcionalidade, instale as dependências necessárias:

pip install --upgrade pymilvus
pip install "pymilvus[model]"

De seguida, instanciar a função BGEM3EmbeddingFunction:

from pymilvus.model.hybrid import BGEM3EmbeddingFunction

bge_m3_ef = BGEM3EmbeddingFunction(
    model_name='BAAI/bge-m3', # Specify the model name
    device='cpu', # Specify the device to use, e.g., 'cpu' or 'cuda:0'
    use_fp16=False # Specify whether to use fp16. Set to `False` if `device` is `cpu`.
)

Parâmetros:

  • nome_do_modelo(string)

    O nome do modelo a utilizar para a codificação. O valor por defeito é BAAI/bge-m3.

  • device(string)

    O dispositivo a ser usado, com cpu para a CPU e cuda:n para o enésimo dispositivo GPU.

  • use_fp16(bool)

    Se deve utilizar precisão de ponto flutuante de 16 bits (fp16). Especifique False quando o dispositivo for cpu.

Para criar embeddings para documentos, use o método encode_documents():

docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]

docs_embeddings = bge_m3_ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension of dense embeddings
print("Dense document dim:", bge_m3_ef.dim["dense"], docs_embeddings["dense"][0].shape)
# Since the sparse embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse document dim:", bge_m3_ef.dim["sparse"], list(docs_embeddings["sparse"])[0].shape)

O resultado esperado é semelhante ao seguinte:

Embeddings: {'dense': [array([-0.02505937, -0.00142193,  0.04015467, ..., -0.02094924,
        0.02623661,  0.00324098], dtype=float32), array([ 0.00118463,  0.00649292, -0.00735763, ..., -0.01446293,
        0.04243685, -0.01794822], dtype=float32), array([ 0.00415287, -0.0101492 ,  0.0009811 , ..., -0.02559666,
        0.08084674,  0.00141647], dtype=float32)], 'sparse': <3x250002 sparse array of type '<class 'numpy.float32'>'
        with 43 stored elements in Compressed Sparse Row format>}
Dense document dim: 1024 (1024,)
Sparse document dim: 250002 (1, 250002)

Para criar embeddings para consultas, utilize o método encode_queries():

queries = ["When was artificial intelligence founded", 
           "Where was Alan Turing born?"]

query_embeddings = bge_m3_ef.encode_queries(queries)

# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension of dense embeddings
print("Dense query dim:", bge_m3_ef.dim["dense"], query_embeddings["dense"][0].shape)
# Since the sparse embeddings are in a 2D csr_array format, we convert them to a list for easier manipulation.
print("Sparse query dim:", bge_m3_ef.dim["sparse"], list(query_embeddings["sparse"])[0].shape)

O resultado esperado é semelhante ao seguinte:

Embeddings: {'dense': [array([-0.02024024, -0.01514386,  0.02380808, ...,  0.00234648,
       -0.00264978, -0.04317448], dtype=float32), array([ 0.00648045, -0.0081542 , -0.02717067, ..., -0.00380103,
        0.04200587, -0.01274772], dtype=float32)], 'sparse': <2x250002 sparse array of type '<class 'numpy.float32'>'
        with 14 stored elements in Compressed Sparse Row format>}
Dense query dim: 1024 (1024,)
Sparse query dim: 250002 (1, 250002)

Traduzido porDeepLogo

Tabela de conteúdos

Try Zilliz Cloud for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?