← Semua pembelajaran / AWS untuk AI Engineer
Fase 4 · RAG & Knowledge Bases

Reranker

Reranker menilai relevansi tiap potongan terhadap pertanyaan dan mengurutkannya ulang. Hasilnya: potongan lebih sedikit tapi lebih tepat, sehingga jawaban membaik dan biaya turun.

Intisari

  • Reranker menghitung skor relevansi potongan terhadap query, lalu mengurutkan ulang.
  • Hasil rerank menimpa urutan bawaan Knowledge Bases.
  • Dua cara pakai: operasi Rerank langsung, atau disisipkan di Retrieve/RetrieveAndGenerate.
  • Karena potongan yang dikirim jadi lebih sedikit, biaya dan latensi generasi turun.
  • Hanya untuk data teks.

Masalah yang diperbaiki

Pencarian vektor cepat tapi kasar: ia membandingkan satu vektor pertanyaan dengan satu vektor potongan. Reranker membaca pasangan pertanyaan dan potongan bersamaan, sehingga bisa menilai relevansi jauh lebih akurat — dengan biaya komputasi yang lebih besar.

Karena itu polanya dua tahap:

Pencarian vektor  ──▶ 25 kandidat  (cepat, kasar)
Reranker          ──▶ 5 terbaik    (lambat, akurat)
Model generasi    ──▶ jawaban      (hanya 5 potongan → murah)

Disisipkan ke Knowledge Bases

hasil = agen.retrieve(
    knowledgeBaseId=KB_ID,
    retrievalQuery={"text": pertanyaan},
    retrievalConfiguration={"vectorSearchConfiguration": {
        "numberOfResults": 25,                    # ambil banyak
        "rerankingConfiguration": {
            "type": "BEDROCK_RERANKING_MODEL",
            "bedrockRerankingConfiguration": {
                "modelConfiguration": {"modelArn": RERANK_MODEL_ARN},
                "numberOfRerankedResults": 5,     # kirim sedikit
            },
        },
    }},
)

Dipakai langsung

Operasi Rerank berdiri sendiri, jadi kamu bisa mengurutkan ulang dokumen dari sumber mana pun — tidak harus dari knowledge base:

agen = boto3.client("bedrock-agent-runtime")

resp = agen.rerank(
    queries=[{"type": "TEXT", "textQuery": {"text": pertanyaan}}],
    sources=[
        {"type": "INLINE",
         "inlineDocumentSource": {"type": "TEXT", "textDocument": {"text": d}}}
        for d in dokumen
    ],
    rerankingConfiguration={
        "type": "BEDROCK_RERANKING_MODEL",
        "bedrockRerankingConfiguration": {
            "modelConfiguration": {"modelArn": RERANK_MODEL_ARN},
            "numberOfResults": 5,
        },
    },
)

for r in resp["results"]:
    print(f"{r['relevanceScore']:.3f}  {dokumen[r['index']][:70]}")

Ini berguna untuk menggabungkan beberapa sumber: hasil knowledge base, hasil pencarian internal, dan hasil API pihak ketiga bisa diurutkan bersama dalam satu skala relevansi.

Reranker menambah biaya dan latensi per permintaan, tapi sering menurunkan total biaya. Mengambil 25 lalu mengirim 5 potongan ke model biasanya lebih murah daripada mengirim 20 potongan mentah — karena token generasi jauh lebih mahal daripada satu panggilan rerank. Ukur keduanya sebelum memutuskan.

Kapan dipakai dan kapan tidak

SituasiReranker menolong?
Korpus besar dengan banyak dokumen miripSangat
Pertanyaan panjang dan bernuansaSangat
Jawaban benar sering di peringkat 6–15Ya — ini gejala klasiknya
Korpus kecil, potongan sudah jelas berbedaKurang berarti
Masalahnya potongan yang benar tidak ikut terambilTidak — perbaiki chunking dan filter dulu
Data non-teksTidak didukung

Baris kelima itu penting sebagai alat diagnosis. Reranker hanya bisa mengurutkan ulang apa yang sudah terambil. Kalau potongan yang benar tidak pernah masuk ke 25 kandidat, akar masalahnya di chunking, embedding, atau filter — dan reranker tidak akan menolong sama sekali.

Latihan: ambil sepuluh pertanyaan uji dari latihan chunking. Jalankan dengan numberOfResults=5 tanpa reranker, lalu dengan 25 kandidat + rerank ke 5. Bandingkan berapa kali potongan yang benar ada di posisi teratas, dan hitung selisih total token yang dikirim ke model generasi.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.