Memperkenalkan Fungsi Penyematan: Bagaimana Milvus 2.6 Menyederhanakan Vektorisasi dan Pencarian Semantik
Jika Anda pernah membuat aplikasi pencarian vektor, Anda pasti sudah mengetahui alur kerjanya dengan baik. Sebelum data apa pun dapat disimpan, data tersebut harus terlebih dahulu diubah menjadi vektor menggunakan model penyematan, dibersihkan dan diformat, dan akhirnya dimasukkan ke dalam basis data vektor Anda. Setiap kueri juga melalui proses yang sama: menyematkan input, menjalankan pencarian kemiripan, lalu memetakan ID yang dihasilkan kembali ke dokumen atau catatan asli Anda. Cara ini berhasil - tetapi menciptakan jalinan skrip prapemrosesan yang terdistribusi, pipeline penyematan, dan kode lem yang harus Anda pelihara.
Milvus, database vektor sumber terbuka berkinerja tinggi, kini mengambil langkah besar untuk menyederhanakan semua itu. Milvus 2.6 memperkenalkan fitur Data-in, Data-out (juga dikenal sebagai Fungsi Embedding), sebuah kemampuan embedding bawaan yang terhubung langsung ke penyedia model utama seperti OpenAI, AWS Bedrock, Google Vertex AI, dan Hugging Face. Alih-alih mengelola infrastruktur embedding Anda sendiri, Milvus sekarang dapat memanggil model-model ini untuk Anda. Anda juga dapat menyisipkan dan melakukan kueri menggunakan teks mentah - dan segera tipe data lainnya - sementara Milvus secara otomatis menangani vektorisasi pada waktu penulisan dan kueri.
Dalam sisa tulisan ini, kita akan melihat lebih dekat bagaimana Data-in, Data-out bekerja di bawah tenda, cara mengonfigurasi penyedia dan fungsi penyematan, dan bagaimana Anda dapat menggunakannya untuk merampingkan alur kerja pencarian vektor Anda dari ujung ke ujung.
Apa itu Data-in, Data-out?
Data-in, Data-out di Milvus 2.6 dibangun di atas modul Function yang baru - sebuah kerangka kerja yang memungkinkan Milvus menangani transformasi data dan pembuatan embedding secara internal, tanpa layanan prapemrosesan eksternal. (Anda dapat mengikuti proposal desain di GitHub edisi #35856.) Dengan modul ini, Milvus dapat mengambil data input mentah, memanggil penyedia embedding secara langsung, dan secara otomatis menulis vektor yang dihasilkan ke dalam koleksi Anda.
Pada tingkat yang tinggi, modul Function mengubah pembuatan embedding menjadi kemampuan basis data asli. Alih-alih menjalankan pipeline embedding terpisah, pekerja latar belakang, atau layanan reranker, Milvus sekarang mengirimkan permintaan ke penyedia yang Anda konfigurasikan, mengambil embedding, dan menyimpannya di samping data Anda - semuanya di dalam jalur konsumsi. Hal ini menghilangkan biaya operasional untuk mengelola infrastruktur embedding Anda sendiri.
Data-in, Data-out memperkenalkan tiga peningkatan utama pada alur kerja Milvus:
Memasukkandata mentah secara langsung - Anda sekarang dapat memasukkan teks, gambar, atau tipe data lain yang belum diproses langsung ke Milvus. Tidak perlu mengubahnya menjadi vektor terlebih dahulu.
Mengkonfigurasisatu fungsi penyematan - Setelah Anda mengkonfigurasi model penyematan di Milvus, Milvus secara otomatis mengelola seluruh proses penyematan. Milvus terintegrasi secara mulus dengan berbagai penyedia model, termasuk OpenAI, AWS Bedrock, Google Vertex AI, Cohere, dan Hugging Face.
Kueri dengan input mentah - Anda sekarang dapat melakukan pencarian semantik menggunakan teks mentah atau kueri berbasis konten lainnya. Milvus menggunakan model yang dikonfigurasi sama untuk menghasilkan sematan dengan cepat, melakukan pencarian kemiripan, dan mengembalikan hasil yang relevan.
Singkatnya, Milvus sekarang secara otomatis menyematkan - dan secara opsional memberi peringkat - data Anda. Vektorisasi menjadi fungsi basis data bawaan, sehingga tidak memerlukan layanan penyematan eksternal atau logika prapemrosesan khusus.
Bagaimana Data-in, Data-out Bekerja
Diagram di bawah ini mengilustrasikan bagaimana Data-in, Data-out beroperasi di dalam Milvus.
Alur kerja Data-in, Data-out dapat dibagi menjadi enam langkah utama:
Input Data - Pengguna memasukkan data mentah - seperti teks, gambar, atau jenis konten lainnya - langsung ke dalam Milvus tanpa melakukan pemrosesan awal eksternal.
MenghasilkanEmbeddings - Modul Function secara otomatis memanggil model embedding yang dikonfigurasi melalui API pihak ketiga, mengubah input mentah menjadi embedding vektor secara real time.
Menyimpan Embeddings - Milvus menulis embeddings yang dihasilkan ke dalam bidang vektor yang ditentukan dalam koleksi Anda, di mana mereka tersedia untuk operasi pencarian kemiripan.
Kirim Ku eri - Pengguna mengeluarkan kueri berbasis teks mentah atau konten ke Milvus, seperti halnya tahap input.
Pencarian Semantik - Milvus menyematkan kueri menggunakan model yang dikonfigurasikan yang sama, menjalankan pencarian kemiripan pada vektor yang tersimpan, dan menentukan kecocokan semantik yang paling dekat.
MengembalikanHasil - Milvus mengembalikan hasil top-k yang paling mirip - dipetakan kembali ke data aslinya - langsung ke aplikasi.
Cara Mengonfigurasi Data-in, Data-out
Prasyarat
Instal versi terbaru Milvus 2.6.
Siapkan kunci API penyematan Anda dari penyedia yang didukung (misalnya, OpenAI, AWS Bedrock, atau Cohere). Dalam contoh ini, kita akan menggunakan Cohere sebagai penyedia penyematan.
Memodifikasi Konfigurasi milvus.yaml
Jika Anda menjalankan Milvus dengan Docker Compose, Anda perlu memodifikasi berkas milvus.yaml untuk mengaktifkan modul Function. Anda dapat merujuk ke dokumentasi resmi untuk panduan: Mengkonfigurasi Milvus dengan Docker Compose (Instruksi untuk metode penerapan lainnya juga dapat ditemukan di sini).
Pada berkas konfigurasi, cari bagian credential dan function.
Kemudian, perbarui bidang apikey1.apikey dan providers.cohere.
...
credential:
aksk1:
access_key_id: # Your access_key_id
secret_access_key: # Your secret_access_key
apikey1:
apikey: "***********************" # Edit this section
gcp1:
credential_json: # base64 based gcp credential data
# Any configuration related to functions
function:
textEmbedding:
providers:
...
cohere: # Edit the section below
credential: apikey1 # The name in the crendential configuration item
enable: true # Whether to enable cohere model service
url: "https://api.cohere.com/v2/embed" # Your cohere embedding url, Default is the official embedding url
...
...
Setelah Anda melakukan perubahan ini, mulai ulang Milvus untuk menerapkan konfigurasi yang telah diperbarui.
Cara Menggunakan Fitur Data-in, Data-out
1. Tentukan Skema untuk Koleksi
Untuk mengaktifkan fitur penyematan, skema koleksi Anda harus menyertakan setidaknya tiga bidang:
Bidang kunci utama (
id) - Mengidentifikasi secara unik setiap entitas dalam koleksi.Bidang skalar (
document) - Menyimpan data mentah asli.Bidang vektor (
dense) - Menyimpan penyematan vektor yang dihasilkan.
from pymilvus import MilvusClient, DataType, Function, FunctionType
# Initialize Milvus client
client = MilvusClient(
uri="http://localhost:19530",
)
# Create a new schema for the collection
schema = client.create_schema()
# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)
# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)
# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set `dim` to match the exact output dimension of the embedding model.
# For instance, OpenAI's text-embedding-3-small model outputs 1536-dimensional vectors.
# For dense vector, data type can be FLOAT_VECTOR or INT8_VECTOR
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1536) # Set dim according to the embedding model you use.
2. Tentukan Fungsi Penyematan
Selanjutnya, tentukan fungsi penyematan dalam skema.
name- Pengenal unik untuk fungsi tersebut.function_type- Tetapkan keFunctionType.TEXTEMBEDDINGuntuk penyematan teks. Milvus juga mendukung jenis fungsi lain sepertiFunctionType.BM25danFunctionType.RERANK. Lihat Pencarian Teks Lengkap dan Ikhtisar Pemeringkat Peluruhan untuk lebih jelasnya.input_field_names- Mendefinisikan bidang masukan untuk data mentah (document).output_field_names- Mendefinisikan bidang keluaran di mana penyematan vektor akan disimpan (dense).params- Berisi parameter konfigurasi untuk fungsi penyematan. Nilai untukproviderdanmodel_nameharus sesuai dengan entri yang sesuai dalam file konfigurasimilvus.yamlAnda.
Catatan: Setiap fungsi harus memiliki name dan output_field_names yang unik untuk membedakan logika transformasi yang berbeda dan mencegah konflik.
# Define embedding function (example: OpenAI provider)
text_embedding_function = Function(
name="cohere_embedding", # Unique identifier for this embedding function
function_type=FunctionType.TEXTEMBEDDING, # Type of embedding function
input_field_names=["document"], # Scalar field to embed
output_field_names=["dense"], # Vector field to store embeddings
params={ # Provider-specific configuration (highest priority)
"provider": "cohere", # Embedding model provider
"model_name": "embed-v4.0", # Embedding model
# "credential": "apikey1", # Optional: Credential label
# Optional parameters:
# "dim": "1536", # Optionally shorten the vector dimension
# "user": "user123" # Optional: identifier for API tracking
}
)
# Add the embedding function to your schema
schema.add_function(text_embedding_function)
3. Mengkonfigurasi Indeks
Setelah field dan fungsi didefinisikan, buatlah indeks untuk koleksi. Untuk mempermudah, kami menggunakan tipe AUTOINDEX di sini sebagai contoh.
# Prepare index parameters
index_params = client.prepare_index_params()
# Add AUTOINDEX to automatically select optimal indexing method
index_params.add_index(
field_name="dense",
index_type="AUTOINDEX",
metric_type="COSINE"
)
4. Membuat Koleksi
Gunakan skema dan indeks yang telah ditentukan untuk membuat koleksi baru. Pada contoh ini, kita akan membuat koleksi bernama Demo.
# Create collection named "demo"
client.create_collection(
collection_name='demo',
schema=schema,
index_params=index_params
)
5. Menyisipkan Data
Sekarang Anda dapat menyisipkan data mentah secara langsung ke dalam Milvus - tidak perlu lagi membuat penyisipan secara manual.
# Insert sample documents
client.insert('demo', [
{'id': 1, 'document': 'Milvus simplifies semantic search through embeddings.'},
{'id': 2, 'document': 'Vector embeddings convert text into searchable numeric data.'},
{'id': 3, 'document': 'Semantic search helps users find relevant information quickly.'},
])
6. Melakukan Pencarian Vektor
Setelah memasukkan data, Anda dapat melakukan pencarian secara langsung menggunakan kueri teks mentah. Milvus secara otomatis mengubah kueri Anda menjadi embedding, melakukan pencarian kemiripan terhadap vektor yang tersimpan, dan mengembalikan kecocokan teratas.
# Perform semantic search
results = client.search(
collection_name='demo',
data=['How does Milvus handle semantic search?'], # Use text query rather than query vector
anns_field='dense', # Use the vector field that stores embeddings
limit=1,
output_fields=['document'],
)
print(results)
# Example output:
# data: ["[{'id': 1, 'distance': 0.8821347951889038, 'entity': {'document': 'Milvus simplifies semantic search through embeddings.'}}]"]
Untuk detail lebih lanjut tentang pencarian vektor, lihat: Pencarian Vektor Dasar dan API Kueri.
Memulai dengan Milvus 2.6
Dengan Data-in, Data-out, Milvus 2.6 membawa kesederhanaan pencarian vektor ke tingkat berikutnya. Dengan mengintegrasikan fungsi penyematan dan pengurutan ulang secara langsung di dalam Milvus, Anda tidak perlu lagi mengelola prapemrosesan eksternal atau mengelola layanan penyematan yang terpisah.
Siap untuk mencobanya? Instal Milvus 2.6 hari ini dan rasakan sendiri kekuatan Data-in, Data-out.
Ada pertanyaan atau ingin mendalami fitur apa pun? Bergabunglah dengan saluran Discord kami atau ajukan pertanyaan di GitHub. Anda juga dapat memesan sesi tatap muka selama 20 menit untuk mendapatkan wawasan, panduan, dan jawaban atas pertanyaan Anda melalui Milvus Office Hours.
Pelajari Lebih Lanjut tentang Fitur Milvus 2.6
Memperkenalkan Milvus 2.6: Pencarian Vektor yang Terjangkau dalam Skala Miliaran
Penghancuran JSON di Milvus: Pemfilteran JSON 88,9x Lebih Cepat dengan Fleksibilitas
MinHash LSH di Milvus: Senjata Rahasia untuk Memerangi Duplikat dalam Data Pelatihan LLM
Kami Mengganti Kafka/Pulsar dengan Burung Pelatuk untuk Milvus
Pencarian Vektor di Dunia Nyata: Cara Memfilter Secara Efisien Tanpa Membunuh Recall
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



