Mengintegrasikan Milvus dengan Jina AI
Panduan ini mendemonstrasikan cara menggunakan penyematan Jina AI dan Milvus untuk melakukan tugas pencarian dan pengambilan kemiripan.
Siapa itu Jina AI
Jina AI, yang didirikan pada tahun 2020 di Berlin, adalah perusahaan AI perintis yang berfokus pada revolusi masa depan kecerdasan buatan melalui fondasi pencariannya. Mengkhususkan diri dalam AI multimodal, Jina AI bertujuan untuk memberdayakan bisnis dan pengembang untuk memanfaatkan kekuatan data multimodal untuk penciptaan nilai dan penghematan biaya melalui rangkaian komponen terintegrasi, termasuk penyematan, pemeringkatan, operasi cepat, dan infrastruktur inti. Penyematan Jina AI yang canggih membanggakan kinerja tingkat atas, yang menampilkan model dengan panjang token 8192 yang ideal untuk representasi data yang komprehensif. Menawarkan dukungan multibahasa dan integrasi tanpa batas dengan platform terkemuka seperti OpenAI, penyematan ini memfasilitasi aplikasi lintas bahasa.
Penyematan Milvus dan Jina AI
Untuk menyimpan dan mencari embedding ini secara efisien demi kecepatan dan skala, diperlukan infrastruktur khusus yang dirancang untuk tujuan ini. Milvus adalah basis data vektor sumber terbuka canggih yang dikenal luas yang mampu menangani data vektor berskala besar. Milvus memungkinkan pencarian vektor (embedding) yang cepat dan akurat sesuai dengan banyak metrik. Skalabilitasnya memungkinkan penanganan data gambar dalam jumlah besar tanpa hambatan, memastikan operasi pencarian berkinerja tinggi bahkan ketika kumpulan data terus bertambah.
Contoh
Penyematan Jina telah diintegrasikan ke dalam pustaka model PyMilvus. Sekarang, kami akan mendemonstrasikan contoh kode untuk menunjukkan cara menggunakan embedding Jina.
Sebelum kita mulai, kita perlu menginstal pustaka model untuk PyMilvus.
$ pip install -U pymilvus
$ pip install "pymilvus[model]"
Jika Anda menggunakan Google Colab, untuk mengaktifkan dependensi yang baru saja terinstal, Anda mungkin perlu memulai ulang runtime. (Klik pada menu "Runtime" di bagian atas layar, dan pilih "Restart session" dari menu dropdown).
Penyematan Tujuan Umum
Model penyematan inti Jina AI, unggul dalam memahami teks yang mendetail, sehingga ideal untuk pencarian semantik, klasifikasi konten sehingga mendukung analisis sentimen tingkat lanjut, ringkasan teks, dan sistem rekomendasi yang dipersonalisasi.
from pymilvus.model.dense import JinaEmbeddingFunction
jina_api_key = "<YOUR_JINA_API_KEY>"
ef = JinaEmbeddingFunction(
"jina-embeddings-v3",
jina_api_key,
task="retrieval.passage",
dimensions=1024
)
query = "what is information retrieval?"
doc = "Information retrieval is the process of finding relevant information from a large collection of data or documents."
qvecs = ef.encode_queries([query]) # This method uses `retrieval.query` as the task
dvecs = ef.encode_documents([doc]) # This method uses `retrieval.passage` as the task
Penyematan Bilingual
Model dwibahasa Jina AI meningkatkan platform multibahasa, dukungan global, dan penemuan konten lintas bahasa. Dirancang untuk terjemahan bahasa Jerman-Inggris dan bahasa Mandarin-Inggris, model ini mendorong pemahaman di antara kelompok bahasa yang beragam, sehingga menyederhanakan interaksi lintas bahasa.
from pymilvus.model.dense import JinaEmbeddingFunction
jina_api_key = "<YOUR_JINA_API_KEY>"
ef = JinaEmbeddingFunction("jina-embeddings-v2-base-de", jina_api_key)
query = "what is information retrieval?"
doc = "Information Retrieval ist der Prozess, relevante Informationen aus einer groĂźen Sammlung von Daten oder Dokumenten zu finden."
qvecs = ef.encode_queries([query])
dvecs = ef.encode_documents([doc])
Penyematan Kode
Model penyematan kode Jina AI menyediakan kemampuan pencarian melalui kode dan dokumentasi. Model ini mendukung bahasa Inggris dan 30 bahasa pemrograman populer yang dapat digunakan untuk meningkatkan navigasi kode, tinjauan kode yang efisien, dan bantuan dokumentasi otomatis.
from pymilvus.model.dense import JinaEmbeddingFunction
jina_api_key = "<YOUR_JINA_API_KEY>"
ef = JinaEmbeddingFunction("jina-embeddings-v2-base-code", jina_api_key)
# Case1: Enhanced Code Navigation
# query: text description of the functionality
# document: relevant code snippet
query = "function to calculate average in Python."
doc = """
def calculate_average(numbers):
total = sum(numbers)
count = len(numbers)
return total / count
"""
# Case2: Streamlined Code Review
# query: text description of the programming concept
# document: relevante code snippet or PR
query = "pull quest related to Collection"
doc = "fix:[restful v2] parameters of create collection ..."
# Case3: Automatic Documentation Assistance
# query: code snippet you need explanation
# document: relevante document or DocsString
query = "What is Collection in Milvus"
doc = """
In Milvus, you store your vector embeddings in collections. All vector embeddings within a collection share the same dimensionality and distance metric for measuring similarity.
Milvus collections support dynamic fields (i.e., fields not pre-defined in the schema) and automatic incrementation of primary keys.
"""
qvecs = ef.encode_queries([query])
dvecs = ef.encode_documents([doc])
Pencarian Semantik dengan Jina & Milvus
Dengan fungsi penyematan vektor yang kuat, kita dapat menggabungkan penyematan yang diambil dengan memanfaatkan model AI Jina dengan basis data vektor Milvus Lite untuk melakukan pencarian semantik.
from pymilvus.model.dense import JinaEmbeddingFunction
from pymilvus import MilvusClient
jina_api_key = "<YOUR_JINA_API_KEY>"
DIMENSION = 1024 # `jina-embeddings-v3` supports flexible embedding sizes (32, 64, 128, 256, 512, 768, 1024), allowing for truncating embeddings to fit your application.
ef = JinaEmbeddingFunction(
"jina-embeddings-v3",
jina_api_key,
task="retrieval.passage",
dimensions=DIMENSION,
)
doc = [
"In 1950, Alan Turing published his seminal paper, 'Computing Machinery and Intelligence,' proposing the Turing Test as a criterion of intelligence, a foundational concept in the philosophy and development of artificial intelligence.",
"The Dartmouth Conference in 1956 is considered the birthplace of artificial intelligence as a field; here, John McCarthy and others coined the term 'artificial intelligence' and laid out its basic goals.",
"In 1951, British mathematician and computer scientist Alan Turing also developed the first program designed to play chess, demonstrating an early example of AI in game strategy.",
"The invention of the Logic Theorist by Allen Newell, Herbert A. Simon, and Cliff Shaw in 1955 marked the creation of the first true AI program, which was capable of solving logic problems, akin to proving mathematical theorems.",
]
dvecs = ef.encode_documents(doc) # This method uses `retrieval.passage` as the task
data = [
{"id": i, "vector": dvecs[i], "text": doc[i], "subject": "history"}
for i in range(len(dvecs))
]
milvus_client = MilvusClient("./milvus_jina_demo.db")
COLLECTION_NAME = "demo_collection" # Milvus collection name
if milvus_client.has_collection(collection_name=COLLECTION_NAME):
milvus_client.drop_collection(collection_name=COLLECTION_NAME)
milvus_client.create_collection(collection_name=COLLECTION_NAME, dimension=DIMENSION)
res = milvus_client.insert(collection_name=COLLECTION_NAME, data=data)
print(res["insert_count"])
Adapun argumen dari MilvusClient
:
- Menetapkan
uri
sebagai file lokal, misalnya./milvus.db
, adalah metode yang paling mudah, karena secara otomatis menggunakan Milvus Lite untuk menyimpan semua data dalam file ini. - Jika Anda memiliki data dalam skala besar, Anda dapat mengatur server Milvus yang lebih berkinerja pada docker atau kubernetes. Dalam pengaturan ini, silakan gunakan uri server, misalnya
http://localhost:19530
, sebagaiuri
. - Jika Anda ingin menggunakan Zilliz Cloud, layanan cloud yang dikelola sepenuhnya untuk Milvus, sesuaikan
uri
dantoken
, yang sesuai dengan kunci Public Endpoint dan Api di Zilliz Cloud.
Dengan semua data dalam basis data vektor Milvus, kita sekarang dapat melakukan pencarian semantik dengan membuat penyematan vektor untuk kueri dan melakukan pencarian vektor.
queries = "What event in 1956 marked the official birth of artificial intelligence as a discipline?"
qvecs = ef.encode_queries([queries]) # This method uses `retrieval.query` as the task
res = milvus_client.search(
collection_name=COLLECTION_NAME, # target collection
data=[qvecs[0]], # query vectors
limit=3, # number of returned entities
output_fields=["text", "subject"], # specifies fields to be returned
)[0]
for result in res:
print(result)
{'id': 1, 'distance': 0.8802614808082581, 'entity': {'text': "The Dartmouth Conference in 1956 is considered the birthplace of artificial intelligence as a field; here, John McCarthy and others coined the term 'artificial intelligence' and laid out its basic goals.", 'subject': 'history'}}
Jina Reranker
Jina Ai juga menyediakan perangking ulang untuk lebih meningkatkan kualitas pencarian setelah melakukan pencarian menggunakan penyematan.
from pymilvus.model.reranker import JinaRerankFunction
jina_api_key = "<YOUR_JINA_API_KEY>"
rf = JinaRerankFunction("jina-reranker-v1-base-en", jina_api_key)
query = "What event in 1956 marked the official birth of artificial intelligence as a discipline?"
documents = [
"In 1950, Alan Turing published his seminal paper, 'Computing Machinery and Intelligence,' proposing the Turing Test as a criterion of intelligence, a foundational concept in the philosophy and development of artificial intelligence.",
"The Dartmouth Conference in 1956 is considered the birthplace of artificial intelligence as a field; here, John McCarthy and others coined the term 'artificial intelligence' and laid out its basic goals.",
"In 1951, British mathematician and computer scientist Alan Turing also developed the first program designed to play chess, demonstrating an early example of AI in game strategy.",
"The invention of the Logic Theorist by Allen Newell, Herbert A. Simon, and Cliff Shaw in 1955 marked the creation of the first true AI program, which was capable of solving logic problems, akin to proving mathematical theorems.",
]
rf(query, documents)
[RerankResult(text="The Dartmouth Conference in 1956 is considered the birthplace of artificial intelligence as a field; here, John McCarthy and others coined the term 'artificial intelligence' and laid out its basic goals.", score=0.9370958209037781, index=1),
RerankResult(text='The invention of the Logic Theorist by Allen Newell, Herbert A. Simon, and Cliff Shaw in 1955 marked the creation of the first true AI program, which was capable of solving logic problems, akin to proving mathematical theorems.', score=0.35420963168144226, index=3),
RerankResult(text="In 1950, Alan Turing published his seminal paper, 'Computing Machinery and Intelligence,' proposing the Turing Test as a criterion of intelligence, a foundational concept in the philosophy and development of artificial intelligence.", score=0.3498658835887909, index=0),
RerankResult(text='In 1951, British mathematician and computer scientist Alan Turing also developed the first program designed to play chess, demonstrating an early example of AI in game strategy.', score=0.2728956639766693, index=2)]