Cara Menjalankan Model Embedding dan Reranker Qwen3 Secara Lokal dengan Ollama

Mark Ponomarev

Mark Ponomarev

25 June 2025

Cara Menjalankan Model Embedding dan Reranker Qwen3 Secara Lokal dengan Ollama

Dunia model bahasa besar (LLM) berkembang dengan kecepatan yang luar biasa, namun untuk waktu yang lama, mengakses kemampuan canggih berarti harus bergantung pada API berbasis cloud. Ketergantungan ini sering kali menimbulkan kekhawatiran tentang privasi, biaya, dan penyesuaian. Namun, keadaan mulai berubah, berkat model sumber terbuka yang kuat dan alat seperti Ollama yang membuat menjalankannya di mesin lokal Anda lebih mudah dari sebelumnya.

Di antara perkembangan terbaru yang paling menarik adalah perilisan keluarga model Qwen3 oleh Alibaba Cloud. Model-model ini, khususnya versi embedding dan reranker yang terspesialisasi, menetapkan tolok ukur baru dalam kinerja. Ketika dipasangkan dengan Ollama, keduanya menyediakan perangkat yang ampuh bagi pengembang dan peneliti yang ingin membangun aplikasi AI canggih, seperti mesin pencari tingkat lanjut dan sistem Retrieval-Augmented Generation (RAG), semuanya dari kenyamanan perangkat keras mereka sendiri.

Artikel ini adalah panduan komprehensif langkah demi langkah Anda untuk memanfaatkan kekuatan ini. Kami akan menjelaskan apa itu model embedding dan reranker, memandu Anda melalui pengaturan Ollama, dan menyediakan kode Python praktis untuk menjalankan model embedding dan reranker Qwen3 untuk alur kerja RAG yang lengkap dan menyeluruh.

💡
Ingin alat Pengujian API hebat yang menghasilkan Dokumentasi API yang indah?

Ingin platform All-in-One terintegrasi untuk Tim Pengembang Anda agar dapat bekerja sama dengan produktivitas maksimum?

Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!
tombol

Duo Kuat: Memahami Model Embedding dan Reranker

Sebelum kita menyelami "bagaimana," mari kita pahami "apa." Dalam konteks sistem RAG, model embedding dan reranker memainkan peran yang berbeda namun saling melengkapi.

1. Pustakawan: Model Embedding

Bayangkan sebuah perpustakaan besar dengan jutaan buku tetapi tanpa sistem katalog. Mencari informasi akan menjadi mimpi buruk. Model embedding seperti pustakawan yang sangat cerdas yang membaca setiap dokumen dan menetapkannya lokasi tertentu dalam "ruang konsep" yang luas dan multi-dimensi.

Secara teknis, embedding teks adalah proses yang mengubah sepotong teks (kata, kalimat, atau seluruh dokumen) menjadi vektor angka padat. Vektor ini menangkap makna semantik teks. Dokumen dengan makna yang serupa akan memiliki vektor yang "dekat" satu sama lain dalam ruang ini.

Ketika Anda memiliki kueri, model embedding mengubah pertanyaan Anda menjadi vektor dan kemudian mencari di perpustakaan untuk vektor dokumen yang paling dekat dengannya. Pencarian awal ini sangat efisien dan mengambil serangkaian dokumen yang berpotensi relevan secara luas.

2. Konsultan Ahli: Model Reranker

Pengambilan awal dari model embedding cepat, tetapi tidak selalu sempurna. Ini mungkin menarik dokumen yang secara tematik terkait tetapi tidak secara tepat menjawab kueri pengguna. Di sinilah reranker berperan.

Jika model embedding adalah pustakawan generalis, reranker adalah ahli materi pelajaran. Ini mengambil hasil teratas dari pencarian awal dan melakukan analisis yang lebih bernuansa dan intensif secara komputasi. Alih-alih membandingkan vektor kueri dengan vektor dokumen secara independen, model reranker (biasanya cross-encoder) melihat kueri dan setiap dokumen sebagai pasangan.

Perbandingan langsung ini memungkinkan reranker menghitung skor relevansi yang jauh lebih akurat. Kemudian, ia menyusun ulang dokumen berdasarkan skor ini, mendorong hasil yang paling relevan ke atas. Proses dua tahap ini—pengambilan awal yang cepat diikuti oleh reranking yang tepat—adalah rahasia kinerja RAG yang canggih.

Mengenal Model Qwen3: Standar Baru dalam AI Sumber Terbuka

Seri Qwen3 dari Alibaba Cloud bukan hanya sekumpulan model lain; ini merupakan lompatan signifikan dalam NLP sumber terbuka. Berikut adalah hal-hal yang membuat model embedding dan reranker ini menonjol:

Menyiapkan Lingkungan AI Lokal Anda

Sekarang, mari kita mulai. Langkah pertama adalah menyiapkan Ollama dan mengunduh model Qwen3.

Langkah 1: Instal Ollama

Ollama menyediakan perintah instalasi satu baris yang sederhana untuk macOS dan Linux. Buka terminal Anda dan jalankan:

curl -fsSL https://ollama.com/install.sh | sh

Untuk Windows, unduh penginstal resmi dari situs web Ollama.

Setelah terinstal, Anda dapat memverifikasi bahwa itu berfungsi dengan menjalankan:

ollama --version

Langkah 2: Unduh Model Qwen3

Dengan Ollama berjalan, Anda dapat menarik model dari pustaka Ollama. Model Qwen3 di-host di bawah namespace dengcao. Kami akan menarik versi model embedding dan reranker yang direkomendasikan. Tag :Q5_K_M menandakan tingkat kuantisasi spesifik yang menawarkan keseimbangan hebat antara kinerja dan penggunaan sumber daya.

Di terminal Anda, jalankan perintah berikut:

# Unduh model embedding parameter 8B
ollama pull dengcao/Qwen3-Embedding-8B:Q5_K_M

# Unduh model reranker parameter 4B
ollama pull dengcao/Qwen3-Reranker-4B:Q5_K_M

Unduhan ini mungkin membutuhkan waktu, tergantung pada koneksi internet Anda. Setelah selesai, Anda dapat melihat model yang tersedia secara lokal dengan menjalankan ollama list.

Bagian 1: Membuat Embedding dengan Qwen3

Setelah model embedding diunduh, mari kita buat beberapa vektor. Kita akan menggunakan pustaka Python ollama resmi. Jika Anda belum menginstalnya, jalankan pip install ollama.

Berikut adalah skrip Python sederhana untuk membuat embedding untuk sepotong teks:

import ollama

# Definisikan nama model seperti yang diunduh
EMBEDDING_MODEL = 'dengcao/Qwen3-Embedding-8B:Q5_K_M'

def get_embedding(text: str):
    """Menghasilkan embedding untuk teks tertentu."""
    try:
        response = ollama.embeddings(
            model=EMBEDDING_MODEL,
            prompt=text
        )
        return response['embedding']
    except Exception as e:
        print(f"Terjadi kesalahan: {e}")
        return None

# --- Contoh Penggunaan ---
sentence = "Ollama memudahkan untuk menjalankan LLM secara lokal."
embedding = get_embedding(sentence)

if embedding:
    print(f"Embedding untuk: '{sentence}'")
    # Cetak beberapa dimensi pertama untuk singkatnya
    print(f"5 dimensi pertama: {embedding[:5]}")
    print(f"Total dimensi: {len(embedding)}")

Skrip ini akan menampilkan lima nilai pertama dari vektor yang dihasilkan dan ukuran totalnya (yaitu 4096 untuk model 8B). Vektor ini adalah representasi numerik dari kalimat kita, siap untuk disimpan dan dibandingkan.

Bagian 2: Memperbaiki Hasil dengan Reranker Qwen3

Menggunakan reranker sedikit berbeda. Alih-alih endpoint rerank khusus, kita menggunakan endpoint chat standar. Kita membuat prompt spesifik yang meminta model untuk bertindak sebagai reranker, mengambil kueri dan dokumen sebagai input dan mengeluarkan skor relevansi.

Mari kita buat fungsi Python untuk menangani ini. Kita akan meminta model untuk mengembalikan "Ya" atau "Tidak" sederhana untuk menunjukkan relevansi, yang dapat kita ubah dengan mudah menjadi skor.

import ollama

# Definisikan nama model seperti yang diunduh
RERANKER_MODEL = 'dengcao/Qwen3-Reranker-4B:Q5_K_M'

def rerank_document(query: str, document: str) -> float:
    """
    Menggunakan Reranker Qwen3 untuk menilai relevansi dokumen terhadap kueri.
    Mengembalikan skor 1.0 untuk 'Ya' dan 0.0 untuk 'Tidak'.
    """
    prompt = f"""
    Anda adalah penilai relevansi ahli. Tugas Anda adalah mengevaluasi apakah
    dokumen berikut relevan dengan kueri pengguna.
    Harap jawab dengan 'Ya' atau 'Tidak' sederhana.

    Kueri: {query}
    Dokumen: {document}
    """
    try:
        response = ollama.chat(
            model=RERANKER_MODEL,
            messages=[{'role': 'user', 'content': prompt}],
            options={'temperature': 0.0} # Untuk keluaran deterministik
        )
        answer = response['message']['content'].strip().lower()
        if 'yes' in answer:
            return 1.0
        return 0.0
    except Exception as e:
        print(f"Terjadi kesalahan selama reranking: {e}")
        return 0.0

# --- Contoh Penggunaan ---
user_query = "Bagaimana cara menjalankan model secara lokal?"
doc1 = "Ollama adalah alat untuk menjalankan model bahasa besar di komputer Anda sendiri."
doc2 = "Ibu kota Prancis adalah Paris."

score1 = rerank_document(user_query, doc1)
score2 = rerank_document(user_query, doc2)

print(f"Relevansi Dokumen 1: {'Relevan' if score1 > 0.5 else 'Tidak Relevan'} (Skor: {score1})")
print(f"Relevansi Dokumen 2: {'Relevan' if score2 > 0.5 else 'Tidak Relevan'} (Skor: {score2})")

Fungsi ini menunjukkan cara berinteraksi dengan reranker. Ini dengan benar mengidentifikasi bahwa doc1 sangat relevan dengan kueri sementara doc2 tidak.

Menyatukan Semuanya: Implementasi RAG Sederhana

Sekarang untuk acara utama. Mari kita bangun pipeline mini-RAG yang menggunakan kedua model kita untuk menjawab kueri dari basis pengetahuan kecil. Untuk pencarian kesamaan, kita akan menggunakan numpy. Instal dengan pip install numpy.

import ollama
import numpy as np

# --- Definisi Model ---
EMBEDDING_MODEL = 'dengcao/Qwen3-Embedding-8B:Q5_K_M'
RERANKER_MODEL = 'dengcao/Qwen3-Reranker-4B:Q5_K_M'

# --- 1. Korpus dan Pembuatan Embedding Offline ---
documents = [
    "Seri model Qwen3 dikembangkan oleh Alibaba Cloud.",
    "Ollama menyediakan antarmuka baris perintah sederhana untuk menjalankan LLM.",
    "Model reranker menyaring hasil pencarian dengan menghitung skor relevansi yang tepat.",
    "Untuk menginstal Ollama di Linux, Anda dapat menggunakan perintah curl.",
    "Model embedding mengubah teks menjadi vektor numerik untuk pencarian semantik.",
]

# Dalam aplikasi nyata, Anda akan menyimpan embedding ini di database vektor
corpus_embeddings = []
print("Membuat embedding untuk korpus dokumen...")
for doc in documents:
    response = ollama.embeddings(model=EMBEDDING_MODEL, prompt=doc)
    corpus_embeddings.append(response['embedding'])
print("Embedding dibuat.")

def cosine_similarity(v1, v2):
    """Menghitung kesamaan kosinus antara dua vektor."""
    return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))

# --- 2. Pengambilan dan Reranking Online ---
user_query = "Bagaimana cara menginstal Ollama?"

# Embedding kueri pengguna
query_embedding = ollama.embeddings(model=EMBEDDING_MODEL, prompt=user_query)['embedding']

# Lakukan pengambilan awal (pencarian semantik)
retrieval_scores = [cosine_similarity(query_embedding, emb) for emb in corpus_embeddings]
top_k_indices = np.argsort(retrieval_scores)[::-1][:3] # Dapatkan 3 hasil teratas

print("\n--- Hasil Pengambilan Awal (sebelum reranking) ---")
for i in top_k_indices:
    print(f"Skor: {retrieval_scores[i]:.4f} - Dokumen: {documents[i]}")

# --- 3. Rerank hasil teratas ---
retrieved_docs = [documents[i] for i in top_k_indices]

print("\n--- Reranking hasil teratas ---")
reranked_scores = [rerank_document(user_query, doc) for doc in retrieved_docs]

# Gabungkan dokumen dengan skor baru mereka dan urutkan
reranked_results = sorted(zip(retrieved_docs, reranked_scores), key=lambda x: x[1], reverse=True)

print("\n--- Hasil Akhir (setelah reranking) ---")
for doc, score in reranked_results:
    print(f"Skor Relevansi: {score:.2f} - Dokumen: {doc}")

Saat Anda menjalankan skrip ini, Anda akan melihat kekuatan proses dua tahap. Pengambilan awal dengan benar menemukan dokumen yang terkait dengan "Ollama" dan "menginstal." Namun, reranker kemudian secara tepat mengidentifikasi dokumen tentang penggunaan curl sebagai yang paling relevan, mendorongnya ke atas dengan skor sempurna.

Kesimpulan

Anda kini telah berhasil menyiapkan dan menggunakan salah satu tandem AI sumber terbuka paling kuat yang tersedia saat ini, langsung di mesin lokal Anda. Dengan menggabungkan jangkauan luas model embedding Qwen3 dengan presisi tajam reranker Qwen3, Anda dapat membangun aplikasi yang memahami dan memproses bahasa dengan tingkat nuansa yang sebelumnya merupakan domain eksklusif sistem proprietary besar.

Perjalanan tidak berakhir di sini. Anda dapat bereksperimen dengan berbagai ukuran model, mencoba berbagai tingkat kuantisasi, dan mengintegrasikan pipeline ini ke dalam aplikasi yang lebih kompleks. Kemampuan untuk menjalankan alat ini secara lokal membuka dunia kemungkinan, memberdayakan Anda untuk berkreasi, berinovasi, dan menjelajah tanpa mengorbankan privasi atau kinerja. Selamat datang di era baru AI lokal, sumber terbuka.

💡
Ingin alat Pengujian API hebat yang menghasilkan Dokumentasi API yang indah?

Ingin platform All-in-One terintegrasi untuk Tim Pengembang Anda agar dapat bekerja sama dengan produktivitas maksimum?

Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!
tombol

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.