🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Model

BGE M3

BGE-M3 dinamakan demikian karena kemampuannya dalam Multi-Bahasa, Multi-Fungsi, dan Multi-Granularitas. Mampu mendukung lebih dari 100 bahasa, BGE-M3 menetapkan tolok ukur baru dalam tugas pengambilan multi-bahasa dan lintas-bahasa. Kemampuannya yang unik untuk melakukan pencarian padat, pencarian multi-vektor, dan pencarian jarang dalam satu kerangka kerja membuatnya menjadi pilihan ideal untuk berbagai aplikasi pencarian informasi (IR).

Milvus terintegrasi dengan model BGE M3 menggunakan kelas BGEM3EmbeddingFunction. Kelas ini menangani komputasi embedding dan mengembalikannya dalam format yang kompatibel dengan Milvus untuk pengindeksan dan pencarian. Untuk menggunakan fitur ini, FlagEmbedding harus diinstal.

Untuk menggunakan fitur ini, instal dependensi yang diperlukan:

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

Kemudian, instal 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`.
)

Parameter:

  • model_name(string)

    Nama model yang akan digunakan untuk pengkodean. Nilai defaultnya adalah BAAI/bge-m3.

  • device(string)

    Perangkat yang akan digunakan, dengan cpu untuk CPU dan cuda:n untuk perangkat GPU ke-n.

  • use_fp16(bool)

    Apakah akan menggunakan presisi floating-point 16-bit (fp16). Tentukan False bila perangkat adalah cpu.

Untuk membuat penyematan untuk dokumen, gunakan metode 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)

Keluaran yang diharapkan mirip dengan yang berikut ini:

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)

Untuk membuat sematan untuk kueri, gunakan metode 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)

Keluaran yang diharapkan mirip dengan yang berikut ini:

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)
Daftar isi

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?