Pilih Penganalisis yang Tepat untuk Kasus Penggunaan Anda
Panduan ini berfokus pada pengambilan keputusan praktis untuk pemilihan penganalisis. Untuk detail teknis mengenai komponen penganalisis dan cara menambahkan parameter penganalisis, lihat Ikhtisar Penganalisis.
Memahami penganalisis dalam 2 menit
Di Milvus, penganalisis memproses teks yang disimpan di bidang ini untuk membuatnya dapat dicari dengan fitur seperti pencarian teks lengkap (BM25), pencocokan frasa, atau pencocokan teks. Anggap saja sebagai pengolah teks yang mengubah konten mentah Anda menjadi token yang dapat dicari.
Penganalisis bekerja dalam pipa dua tahap yang sederhana:
Alur Kerja Penganalisis
Tokenisasi (wajib): Tahap awal ini menerapkan tokenizer untuk memecah string teks yang berkelanjutan menjadi unit-unit diskrit dan bermakna yang disebut token. Metode tokenisasi dapat sangat bervariasi, tergantung pada bahasa dan jenis konten.
Penyaringan token (opsional): Setelah tokenisasi, filter diterapkan untuk memodifikasi, menghapus, atau menyaring token. Operasi ini dapat mencakup mengubah semua token menjadi huruf kecil, menghapus kata-kata umum yang tidak berarti (seperti stopwords), atau mengurangi kata-kata ke bentuk dasarnya (stemming).
Contoh:
Input: "Hello World!"
1. Tokenization → ["Hello", "World", "!"]
2. Lowercase & Punctuation Filtering → ["hello", "world"]
Mengapa pilihan alat analisis penting
Memilih penganalisis yang salah dapat membuat dokumen yang relevan tidak dapat dicari atau mengembalikan hasil yang tidak relevan.
Tabel berikut ini merangkum masalah umum yang disebabkan oleh pemilihan alat analisis yang tidak tepat dan memberikan solusi yang dapat ditindaklanjuti untuk mendiagnosis masalah pencarian.
Masalah |
Gejala |
Contoh (Masukan & Keluaran) |
Penyebab (Penganalisis Buruk) |
Solusi (Penganalisis yang Baik) |
|---|---|---|---|---|
Tokenisasi berlebihan |
Kueri teks untuk istilah teknis, pengidentifikasi, atau URL gagal menemukan dokumen yang relevan. |
|
|
Gunakan sebuah |
Tokenisasi kurang |
Pencarian komponen dari frasa multi-kata gagal mengembalikan dokumen yang berisi frasa lengkap. |
|
Penganalisis dengan |
Gunakan |
Ketidakcocokan Bahasa |
Hasil pencarian untuk bahasa tertentu tidak masuk akal atau tidak ada. |
Teks bahasa Mandarin: |
|
Gunakan penganalisis khusus bahasa, seperti |
Pertanyaan pertama: Apakah Anda perlu memilih penganalisis?
Untuk banyak kasus penggunaan, Anda tidak perlu melakukan sesuatu yang khusus. Mari kita tentukan apakah Anda termasuk salah satunya.
Perilaku default: standard analyzer
Jika Anda tidak menentukan penganalisis ketika menggunakan fitur pengambilan teks seperti pencarian teks lengkap, Milvus secara otomatis menggunakan fitur standard analyzer.
Penganalisis standard:
Memisahkan teks berdasarkan spasi dan tanda baca
Mengubah semua token menjadi huruf kecil
Menghapus sekumpulan kata henti bahasa Inggris yang umum dan sebagian besar tanda baca
Contoh transformasi:
Input: "The Milvus vector database is built for scale!"
Output: ['the', 'milvus', 'vector', 'database', 'is', 'built', 'scale']
Kriteria keputusan: Pemeriksaan cepat
Gunakan tabel ini untuk menentukan dengan cepat apakah penganalisis standard default memenuhi kebutuhan Anda. Jika tidak, Anda harus memilih jalur yang berbeda.
Konten Anda |
Penganalisis Standar OK? |
Mengapa |
Apa yang Anda Butuhkan |
|---|---|---|---|
Posting blog berbahasa Inggris |
✅ Ya |
Perilaku default sudah cukup. |
Gunakan default (tidak perlu konfigurasi). |
Dokumen berbahasa Mandarin |
❌ Tidak |
Kata-kata dalam bahasa Mandarin tidak memiliki spasi dan akan diperlakukan sebagai satu token. |
Gunakan penganalisis bawaan |
Dokumentasi teknis |
❌ Tidak |
Tanda baca dihilangkan dari istilah seperti |
Buat penganalisis khusus dengan |
Bahasa yang dipisahkan oleh spasi seperti teks bahasa Prancis/Spanyol |
⚠️ Mungkin |
Karakter beraksen ( |
Penganalisis khusus dengan fitur |
Bahasa multibahasa atau bahasa yang tidak dikenal |
❌ Tidak |
Penganalisis |
Gunakan penganalisis khusus dengan Atau, pertimbangkan untuk mengonfigurasi penganalisis multibahasa atau pengidentifikasi bahasa untuk penanganan konten multibahasa yang lebih tepat. |
Jika penganalisis standard default tidak dapat memenuhi kebutuhan Anda, Anda perlu menerapkan penganalisis yang berbeda. Anda memiliki dua jalur:
Jalur A: Menggunakan penganalisis bawaan
Penganalisis bawaan adalah solusi yang sudah dikonfigurasi sebelumnya untuk bahasa yang umum. Penganalisis bawaan adalah cara termudah untuk memulai ketika penganalisis standar bawaan tidak cocok.
Penganalisis bawaan yang tersedia
Penganalisis |
Dukungan Bahasa |
Komponen |
Catatan |
|---|---|---|---|
Sebagian besar bahasa yang dipisahkan oleh ruang (Inggris, Prancis, Jerman, Spanyol, dll.) |
|
Penganalisis tujuan umum untuk pemrosesan teks awal. Untuk skenario monolingual, penganalisis khusus bahasa (seperti |
|
Didedikasikan untuk bahasa Inggris, yang menerapkan stemming dan penghilangan kata untuk pencocokan semantik bahasa Inggris yang lebih baik |
|
Direkomendasikan untuk konten hanya dalam bahasa Inggris melalui |
|
Bahasa Mandarin |
|
Saat ini menggunakan kamus bahasa Mandarin Sederhana secara default. |
Contoh implementasi
Untuk menggunakan penganalisis bawaan, cukup tentukan jenisnya di analyzer_params saat mendefinisikan skema bidang Anda.
# Using built-in English analyzer
analyzer_params = {
"type": "english"
}
# Applying analyzer config to target VARCHAR field in your collection schema
schema.add_field(
field_name='text',
datatype=DataType.VARCHAR,
max_length=200,
enable_analyzer=True,
analyzer_params=analyzer_params,
)
Untuk penggunaan terperinci, lihat Pencarian Teks Lengkap, Pencocokan Teks, atau Pencocokan Frasa.
Jalur B: Membuat penganalisis khusus
Jika opsi bawaan tidak memenuhi kebutuhan Anda, Anda dapat membuat penganalisis khusus dengan menggabungkan tokenizer dengan seperangkat filter. Hal ini memberikan Anda kendali penuh atas pipeline pemrosesan teks.
Langkah 1: Pilih tokenizer berdasarkan bahasa
Pilih tokenizer berdasarkan bahasa utama konten Anda:
Bahasa-bahasa Barat
Untuk bahasa yang dipisahkan oleh spasi, Anda memiliki opsi berikut:
Tokenizer |
Bagaimana cara kerjanya |
Paling cocok untuk |
Contoh |
|---|---|---|---|
Memisahkan teks berdasarkan spasi dan tanda baca |
Teks umum, tanda baca campuran |
|
|
Memisahkan hanya pada karakter spasi |
Konten yang telah diproses sebelumnya, teks yang diformat pengguna |
|
Bahasa-bahasa Asia Timur
Bahasa berbasis kamus memerlukan tokenizer khusus untuk segmentasi kata yang tepat:
Bahasa Mandarin
Tokenizer |
Bagaimana cara kerjanya |
Paling cocok untuk |
Contoh |
|---|---|---|---|
Segmentasi berbasis kamus bahasa Mandarin dengan algoritme cerdas |
Direkomendasikan untuk konten berbahasa Mandarin - menggabungkan kamus dengan algoritme cerdas, yang dirancang khusus untuk bahasa Mandarin |
|
|
Analisis morfologi berbasis kamus murni dengan kamus bahasa Mandarin(cc-cedict) |
Dibandingkan dengan |
|
Bahasa Jepang dan Korea
Bahasa |
Tokenizer |
Opsi Kamus |
Terbaik untuk |
Contoh |
|---|---|---|---|---|
Bahasa Jepang |
ipadic (tujuan umum), ipadic-neologd (istilah modern), unidic (akademis) |
Analisis morfologi dengan penanganan kata benda yang tepat |
|
|
Bahasa Korea |
Analisis morfologi bahasa Korea |
|
Bahasa multibahasa atau bahasa yang tidak dikenal
Untuk konten yang bahasanya tidak dapat diprediksi atau tercampur di dalam dokumen:
Tokenizer |
Bagaimana cara kerjanya |
Paling cocok untuk |
Contoh |
|---|---|---|---|
Tokenisasi yang sadar Unicode (Komponen Internasional untuk Unicode) |
Skrip campuran, bahasa yang tidak dikenal, atau ketika tokenisasi sederhana sudah cukup |
|
Kapan menggunakan icu:
Bahasa campuran di mana identifikasi bahasa tidak praktis.
Anda tidak menginginkan biaya tambahan untuk penganalisis multi-bahasa atau pengidentifikasi bahasa.
Konten memiliki bahasa utama dengan sesekali kata-kata asing yang tidak banyak berkontribusi pada makna keseluruhan (misalnya, teks bahasa Inggris dengan nama merek sporadis atau istilah teknis dalam bahasa Jepang atau Prancis).
Pendekatan alternatif: Untuk penanganan yang lebih tepat terhadap konten multibahasa, pertimbangkan untuk menggunakan penganalisis multibahasa atau pengidentifikasi bahasa. Untuk detailnya, lihat Penganalisis Multi-bahasa atau Pengidentifikasi Bahasa.
Langkah 2: Menambahkan filter untuk ketepatan
Setelah memilih tokenizer, terapkan filter berdasarkan persyaratan pencarian spesifik dan karakteristik konten.
Filter yang umum digunakan
Filter ini penting untuk sebagian besar konfigurasi bahasa yang dipisahkan oleh ruang (Inggris, Prancis, Jerman, Spanyol, dll.) dan secara signifikan meningkatkan kualitas pencarian:
Filter |
Bagaimana cara kerjanya |
Kapan Digunakan |
Contoh |
|---|---|---|---|
Mengubah semua token menjadi huruf kecil |
Universal - berlaku untuk semua bahasa dengan perbedaan huruf besar/kecil |
|
|
Mengurangi kata-kata ke bentuk dasarnya |
Bahasa dengan infleksi kata (Inggris, Prancis, Jerman, dll.) |
Untuk bahasa Inggris:
|
|
Menghapus kata-kata umum yang tidak bermakna |
Sebagian besar bahasa - terutama efektif untuk bahasa yang dipisahkan oleh spasi |
|
Untuk bahasa Asia Timur (Cina, Jepang, Korea, dll.), fokuslah pada penyaringan khusus bahasa. Bahasa-bahasa ini biasanya menggunakan pendekatan yang berbeda untuk pemrosesan teks dan mungkin tidak mendapatkan manfaat yang signifikan dari stemming.
Filter normalisasi teks
Filter ini menstandarkan variasi teks untuk meningkatkan konsistensi pencocokan:
Filter |
Bagaimana cara kerjanya |
Kapan Digunakan |
Contoh |
|---|---|---|---|
Mengonversi karakter beraksen ke karakter yang setara dengan ASCII |
Konten internasional, konten buatan pengguna |
|
Pemfilteran token
Mengontrol token mana yang dipertahankan berdasarkan konten atau panjang karakter:
Menyaring |
Bagaimana cara kerjanya |
Kapan Digunakan |
Contoh |
|---|---|---|---|
Menghapus token tanda baca yang berdiri sendiri |
Keluaran bersih dari |
|
|
Simpan hanya huruf dan angka |
Konten teknis, pemrosesan teks yang bersih |
|
|
Menghapus token di luar rentang panjang yang ditentukan |
Menyaring noise (token yang terlalu panjang) |
|
|
Pemfilteran berbasis pola khusus |
Persyaratan token khusus domain |
|
Penyaring khusus bahasa
Filter ini menangani karakteristik bahasa tertentu:
Filter |
Bahasa |
Bagaimana cara kerjanya |
Contoh |
|---|---|---|---|
Bahasa Jerman |
Memisahkan kata majemuk menjadi komponen yang dapat dicari |
|
|
Bahasa Mandarin |
Menyimpan karakter bahasa Mandarin + alfanumerik |
|
|
Bahasa Mandarin |
Hanya menyimpan karakter bahasa Mandarin |
|
Langkah 3: Gabungkan dan terapkan
Untuk membuat penganalisis khusus, Anda menentukan tokenizer dan daftar filter dalam kamus analyzer_params. Filter-filter diterapkan sesuai dengan urutan yang tercantum.
# Example: A custom analyzer for technical content
analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase", "alphanumonly"]
}
# Applying analyzer config to target VARCHAR field in your collection schema
schema.add_field(
field_name='text',
datatype=DataType.VARCHAR,
max_length=200,
enable_analyzer=True,
analyzer_params=analyzer_params,
)
Akhir: Uji dengan run_analyzer
Selalu validasi konfigurasi Anda sebelum menerapkannya ke koleksi:
# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"
# Run analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Analyzer output:", result)
Masalah umum yang harus diperiksa:
Tokenisasi berlebihan: Istilah teknis yang dibagi secara tidak benar
Tokenisasi kurang: Frasa tidak dipisahkan dengan benar
Token yang hilang: Istilah-istilah penting yang disaring
Untuk penggunaan terperinci, lihat run_analyzer.
Konfigurasi yang disarankan berdasarkan kasus penggunaan
Bagian ini menyediakan konfigurasi tokenizer dan filter yang direkomendasikan untuk kasus penggunaan umum ketika bekerja dengan penganalisis di Milvus. Pilih kombinasi yang paling sesuai dengan jenis konten dan persyaratan pencarian Anda.
Sebelum menerapkan penganalisis ke koleksi Anda, kami sarankan Anda menggunakan run_analyzer untuk menguji dan memvalidasi kinerja analisis teks.
Bahasa dengan tanda aksen (Prancis, Spanyol, Jerman, dll.)
Gunakan tokenizer standard dengan konversi huruf kecil, stemming khusus bahasa, dan penghilangan kata henti. Konfigurasi ini juga dapat digunakan untuk bahasa-bahasa Eropa lainnya dengan memodifikasi parameter language dan stop_words.
# French example
analyzer_params = {
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding", # Handle accent marks
{
"type": "stemmer",
"language": "french"
},
{
"type": "stop",
"stop_words": ["_french_"]
}
]
}
# For other languages, modify the language parameter:
# "language": "spanish" for Spanish
# "language": "german" for German
# "stop_words": ["_spanish_"] or ["_german_"] accordingly
Konten bahasa Inggris
Untuk pemrosesan teks bahasa Inggris dengan pemfilteran komprehensif. Anda juga dapat menggunakan fitur english penganalisis bawaan:
analyzer_params = {
"tokenizer": "standard",
"filter": [
"lowercase",
{
"type": "stemmer",
"language": "english"
},
{
"type": "stop",
"stop_words": ["_english_"]
}
]
}
# Equivalent built-in shortcut:
analyzer_params = {
"type": "english"
}
Konten bahasa Mandarin
Gunakan tokenizer jieba dan terapkan filter karakter untuk mempertahankan hanya karakter bahasa Mandarin, huruf Latin, dan angka.
analyzer_params = {
"tokenizer": "jieba",
"filter": ["cnalphanumonly"]
}
# Equivalent built-in shortcut:
analyzer_params = {
"type": "chinese"
}
Untuk bahasa Mandarin Sederhana, cnalphanumonly menghapus semua token kecuali karakter Mandarin, teks alfanumerik, dan angka. Hal ini untuk mencegah tanda baca mempengaruhi kualitas pencarian.
Konten bahasa Jepang
Gunakan tokenizer lindera dengan kamus dan filter bahasa Jepang untuk membersihkan tanda baca dan mengontrol panjang token:
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict": "ipadic" # Options: ipadic, ipadic-neologd, unidic
},
"filter": [
"removepunct", # Remove standalone punctuation
{
"type": "length",
"min": 1,
"max": 20
}
]
}
Konten Korea
Mirip dengan bahasa Jepang, menggunakan lindera tokenizer dengan kamus bahasa Korea:
analyzer_params = {
"tokenizer": {
"type": "lindera",
"dict": "ko-dic"
},
"filter": [
"removepunct",
{
"type": "length",
"min": 1,
"max": 20
}
]
}
Konten campuran atau multibahasa
Ketika bekerja dengan konten yang menggunakan beberapa bahasa atau menggunakan skrip yang tidak dapat diprediksi, mulailah dengan penganalisis icu. Penganalisis yang sadar Unicode ini menangani skrip dan simbol campuran secara efektif.
Konfigurasi multibahasa dasar (tanpa stemming):
analyzer_params = {
"tokenizer": "icu",
"filter": ["lowercase", "asciifolding"]
}
Pemrosesan multibahasa tingkat lanjut:
Untuk kontrol yang lebih baik atas perilaku token di berbagai bahasa:
Gunakan konfigurasi penganalisis multibahasa. Untuk detailnya, lihat Penganalisis Multi-bahasa.
Menerapkan pengidentifikasi bahasa pada konten Anda. Untuk detailnya, lihat Pengidentifikasi Bahasa.
Mengintegrasikan dengan fitur pengambilan teks
Setelah memilih penganalisis Anda, Anda dapat mengintegrasikannya dengan fitur pengambilan teks yang disediakan oleh Milvus.
Pencarian teks lengkap
Penganalisis secara langsung memengaruhi pencarian teks lengkap berbasis BM25 melalui pembuatan vektor yang jarang. Gunakan penganalisis yang sama untuk pengindeksan dan kueri untuk memastikan tokenisasi yang konsisten. Penganalisis khusus bahasa umumnya memberikan penilaian BM25 yang lebih baik daripada yang umum. Untuk detail implementasi, lihat Pencarian Teks Lengkap.
Pencocokan teks
Operasi pencocokan teks melakukan pencocokan token yang tepat antara kueri dan konten yang diindeks berdasarkan keluaran penganalisis Anda. Untuk detail implementasi, lihat Pencocokan Teks.
Pencocokan frasa
Pencocokan frasa memerlukan tokenisasi yang konsisten di seluruh ekspresi multi-kata untuk mempertahankan batasan dan makna frasa. Untuk detail implementasi, lihat Pencocokan Frasa.