milvus-logo
LFAI
Casa
  • Modelli

BGE M3

BGE-M3 si chiama così per le sue capacità di multilinguismo, multifunzionalità e multigranularità. In grado di supportare oltre 100 lingue, BGE-M3 stabilisce nuovi parametri di riferimento per le attività di reperimento multilingue e interlingue. La sua capacità unica di eseguire il reperimento denso, il reperimento multivettoriale e il reperimento rado all'interno di un unico framework lo rende la scelta ideale per un'ampia gamma di applicazioni di information retrieval (IR).

Milvus si integra con il modello BGE M3 utilizzando la classe BGEM3EmbeddingFunction. Questa classe gestisce il calcolo delle incorporazioni e le restituisce in un formato compatibile con Milvus per l'indicizzazione e la ricerca. Per utilizzare questa funzione, è necessario installare FlagEmbedding.

Per utilizzare questa funzione, installare le dipendenze necessarie:

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

Quindi, istanziare la 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`.
)

Parametri:

  • nome_modello(stringa)

    Il nome del modello da utilizzare per la codifica. Il valore predefinito è BAAI/bge-m3.

  • dispositivo(stringa)

    Il dispositivo da usare, con cpu per la CPU e cuda:n per l'ennesimo dispositivo GPU.

  • use_fp16(bool)

    Se utilizzare la precisione in virgola mobile a 16 bit (fp16). Specificare False se il dispositivo è cpu.

Per creare le incorporazioni per i documenti, utilizzare il metodo 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)

Il risultato atteso è simile al seguente:

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)

Per creare embeddings per le query, utilizzare il metodo 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)

Il risultato atteso è simile al seguente:

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)

Tradotto daDeepL

Tabella dei contenuti

Try Managed Milvus for Free

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

Get Started
Feedback

Questa pagina è stata utile?