03. EnsembleRetriever

Ensemble Retriever

EnsembleRetriever adalah fitur dari LangChain yang menggabungkan beberapa mesin pencari untuk memberikan hasil pencarian yang lebih kuat. Mesin pencari ini dapat mencapai kinerja yang lebih baik dibandingkan dengan algoritma tunggal dengan memanfaatkan kekuatan dari berbagai algoritma pencarian yang berbeda.

Fitur Utama

  1. Integrasi beberapa mesin pencari: Mengambil berbagai jenis mesin pencari sebagai input dan menggabungkan hasilnya.

  2. Re-ranking hasil: Melakukan pemeringkatan ulang hasil menggunakan algoritma Reciprocal Rank Fusion atau algoritma lainnya.

  3. Pencarian hibrida: Biasanya digunakan untuk menggabungkan pencarian berbasis keyword (misalnya BM25) dan pencarian berbasis kesamaan semantik (misalnya embedding similarity).

Keunggulan

  • Sparse retriever: Efektif untuk pencarian berbasis keyword.

  • Dense retriever: Efektif untuk pencarian berbasis kesamaan semantik.

Karakteristik yang saling melengkapi ini memungkinkan EnsembleRetriever untuk memberikan kinerja yang lebih baik dalam berbagai skenario pencarian.

Untuk informasi lebih lanjut, silakan merujuk ke dokumentasi resmi LangChain.

# Berkas konfigurasi untuk mengelola API KEY sebagai variabel lingkungan
from dotenv import load_dotenv

# Memuat informasi API KEY
load_dotenv()
  • Inisialisasi EnsembleRetriever untuk menggabungkan pencari BM25Retriever dan FAISS. Tetapkan bobot untuk setiap pencari.

Panggil metode get_relevant_documents() dari objek ensemble_retriever untuk mengambil dokumen yang relevan.

Mengubah konfigurasi runtime

Anda juga dapat mengubah properti retriever pada saat runtime. Hal ini dapat dilakukan dengan menggunakan kelas ConfigurableField. - Tetapkan parameter weights sebagai objek ConfigurableField. - Tetapkan ID field ke “ensemble_weights”.

  • Saat melakukan pencarian, tentukan config pencarian melalui parameter config.

  • Tetapkan bobot opsi ensemble_weights ke [1, 0] agar semua hasil pencarian diberi bobot lebih besar ke arah pelacak BM25.

Kali ini, kami ingin semua hasil pencarian diberi bobot yang lebih besar terhadap pelacak FAISS.

Last updated