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 keTrue
, 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)