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

milvus-logo
LFAI
Beranda
  • Model

Jina AI

Model penyematan Jina AI adalah model penyematan teks berkinerja tinggi yang dapat menerjemahkan input tekstual ke dalam representasi numerik, menangkap semantik teks. Model-model ini unggul dalam aplikasi seperti pengambilan data yang padat, kesamaan teks semantik, dan pemahaman multibahasa.

Milvus terintegrasi dengan model penyematan Jina AI melalui kelas JinaEmbeddingFunction. Kelas ini menyediakan metode untuk mengkodekan dokumen dan kueri menggunakan model penyematan Jina AI dan mengembalikan penyematan sebagai vektor padat yang kompatibel dengan pengindeksan Milvus. Untuk memanfaatkan fungsionalitas ini, dapatkan kunci API dari Jina AI.

Untuk menggunakan fitur ini, instal dependensi yang diperlukan:

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

Kemudian, instal JinaEmbeddingFunction:

from pymilvus.model.dense import JinaEmbeddingFunction

jina_ef = JinaEmbeddingFunction(
    model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
    api_key=JINAAI_API_KEY, # Provide your Jina AI API key
    task="retrieval.passage", # Specify the task
    dimensions=1024, # Defaults to 1024
)

Parameter:

  • model_name (string)

    Nama model penyematan Jina AI yang akan digunakan untuk penyandian. Anda dapat menentukan salah satu nama model penyematan Jina AI yang tersedia, misalnya, jina-embeddings-v3, jina-embeddings-v2-base-en, dll. Jika Anda membiarkan parameter ini tidak ditentukan, jina-embeddings-v3 akan digunakan. Untuk daftar model yang tersedia, lihat Penyematan Jina.

  • api_key (string)

    Kunci API untuk mengakses API Jina AI.

  • task (string)

    Jenis input yang diteruskan ke model. Diperlukan untuk model penyematan v3 dan yang lebih tinggi.

    • "retrieval.passage": Digunakan untuk menyandikan dokumen besar dalam tugas pengambilan pada waktu pengindeksan.
    • "retrieval.query": Digunakan untuk menyandikan kueri atau pertanyaan pengguna dalam tugas pengambilan.
    • "classification": Digunakan untuk menyandikan teks untuk tugas klasifikasi teks.
    • "text-matching": Digunakan untuk menyandikan teks untuk pencocokan kemiripan, seperti mengukur kemiripan antara dua kalimat.
    • "clustering": Digunakan untuk tugas pengelompokan atau pemeringkatan.
  • dimensions (int)

    Jumlah dimensi yang harus dimiliki oleh penyematan keluaran yang dihasilkan. Nilai default adalah 1024. Hanya didukung untuk model penyematan v3 dan yang lebih tinggi.

  • late_chunking (bool)

    Parameter ini mengontrol apakah akan menggunakan metode chunking baru yang diperkenalkan Jina AI bulan lalu untuk menyandikan sekumpulan kalimat. Defaultnya adalah False. Jika disetel ke True, Jina AI API akan menggabungkan semua kalimat di bidang input dan mengumpankannya sebagai string tunggal ke model. Secara internal, model menyematkan string panjang yang digabungkan ini dan kemudian melakukan pemotongan akhir, mengembalikan daftar penyematan yang sesuai dengan ukuran daftar masukan.

Untuk membuat penyematan dokumen, gunakan metode encode_documents(). Metode ini dirancang untuk penyematan dokumen dalam tugas pengambilan asimetris, seperti mengindeks dokumen untuk tugas pencarian atau rekomendasi. Metode ini menggunakan retrieval.passage sebagai tugas.


```python
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 = jina_ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", jina_ef.dim, docs_embeddings[0].shape)

Hasil yang diharapkan adalah seperti berikut ini:

Embeddings: [array([9.80641991e-02, -8.51697400e-02,  7.36531913e-02,  1.42558888e-02,
       -2.23589484e-02,  1.68494112e-03, -3.50753777e-02, -3.11530549e-02,
       -3.26012149e-02,  5.04568312e-03,  3.69836427e-02,  3.48948985e-02,
        8.19722563e-03,  5.88679723e-02, -6.71099266e-03, -1.82369724e-02,
...
        2.48654783e-02,  3.43279652e-02, -1.66154150e-02, -9.90478322e-03,
       -2.96043139e-03, -8.57473817e-03, -7.39028037e-04,  6.25024503e-03,
       -1.08831357e-02, -4.00776342e-02,  3.25369164e-02, -1.42691191e-03])]
Dim: 1024 (1024,)

Untuk membuat sematan untuk kueri, gunakan metode encode_queries(). Metode ini dirancang untuk penyematan kueri dalam tugas pengambilan asimetris, seperti kueri penelusuran atau pertanyaan. Metode ini menggunakan retrieval.query sebagai tugas.

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

query_embeddings = jina_ef.encode_queries(queries)

print("Embeddings:", query_embeddings)
print("Dim", jina_ef.dim, query_embeddings[0].shape)

Keluaran yang diharapkan mirip dengan yang berikut ini:

Embeddings: [array([8.79201014e-03,  1.47551354e-02,  4.02722731e-02, -2.52991207e-02,
        1.12719582e-02,  3.75947170e-02,  3.97946090e-02, -7.36681819e-02,
       -2.17952449e-02, -1.16298944e-02, -6.83426252e-03, -5.12507409e-02,
        5.26071340e-02,  6.75181448e-02,  3.92445624e-02, -1.40817231e-02,
...
        8.81703943e-03,  4.24629413e-02, -2.32944116e-02, -2.05193572e-02,
       -3.22035812e-02,  2.81896023e-03,  3.85326855e-02,  3.64372656e-02,
       -1.65050142e-02, -4.26847413e-02,  2.02664156e-02, -1.72684863e-02])]
Dim 1024 (1024,)

Untuk membuat penyematan input untuk pencocokan kesamaan (seperti tugas STS atau pengambilan simetris), klasifikasi teks, pengelompokan, atau tugas pemeringkatan, gunakan nilai parameter task yang sesuai saat menginstansiasi kelas JinaEmbeddingFunction.

from pymilvus.model.dense import JinaEmbeddingFunction

jina_ef = JinaEmbeddingFunction(
    model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
    api_key=JINA_API_KEY, # Provide your Jina AI API key
    task="text-matching",
    dimensions=1024, # Defaults to 1024
)

texts = [
    "Follow the white rabbit.",  # English
    "Sigue al conejo blanco.",  # Spanish
    "Suis le lapin blanc.",  # French
    "跟着白兔走。",  # Chinese
    "اتبع الأرنب الأبيض.",  # Arabic
    "Folge dem weiĂźen Kaninchen.",  # German
]

embeddings = jina_ef(texts)

# Compute similarities
print(embeddings[0] @ embeddings[1].T)
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?