Langkau ke kandungan
Kembali ke senarai artikel
AI/AGI14分

Strategi Pengambilan Semula Berkualiti untuk RAG: Panduan Peningkatan Prestasi

Raising RAG Retrieval Quality in 2026: Hybrid, Rerankers, HyDE, and Late Chunking

石川 大地AI Solutions Architect
2026-04-2314分
RAGRetrievalRerankerHyDEChunkingEvaluation

Retrieval Menentukan Had Atas Kualiti RAG

Pada 2026, kes di mana "RAG tiba-tiba menjadi lebih bijak selepas menukar model penjanaan dari GPT-4 ke Claude Opus 4.7" adalah jarang. Kebanyakan masalah adalah sama ada maklumat yang diperlukan tidak dapat diambil pada peringkat Retrieval, atau bunyi bising diambil dan mengelirukan LLM. Apabila menyemak kembali projek RAG yang dibantu oleh KGA selama 18 bulan lepas, skor pengalaman pengguna meningkat 30–60% hanya dengan penambahbaikan Retrieval, sementara pertukaran model LLM menghasilkan purata peningkatan sekitar 8%.

Artikel ini menyusun amalan terbaik Retrieval RAG pada 2026 dalam lima lapisan: (1) carian hibrid, (2) penarafan semula, (3) penulisan semula pertanyaan, (4) strategi pemotongan, dan (5) metrik penilaian.

Lapisan 1: Hybrid Search (BM25 + Dense)

Carian dense tunggal kerap gagal untuk nombor model ("ZX-450B"), singkatan ("TLS1.3"), nama individu, dan syarat nilai angka khusus. BM25 pula lemah terhadap parafrasa semantik. Menggabungkan kedua-duanya dengan Reciprocal Rank Fusion (RRF) telah menjadi standard industri.

RRF sangat mudah: tukar kedudukan setiap hasil carian kepada `1 / (k + rank)` dan jumlahkan (k=60 adalah lalai). Ia berkesan secara menyeluruh untuk gabungan antara model yang berbeza tanpa perlu mengambil kira perbezaan skala skor.

```python from collections import defaultdict

def rrf_fusion(ranked_lists: list[list[str]], k: int = 60) -> list[tuple[str, float]]: scores = defaultdict(float) for results in ranked_lists: for rank, doc_id in enumerate(results, start=1): scores[doc_id] += 1.0 / (k + rank) return sorted(scores.items(), key=lambda x: -x[1])

bm25_top = bm25_index.search(query, k=50) dense_top = vector_db.search(query_embed, k=50) fused = rrf_fusion([bm25_top, dense_top])[:20] ```

Dalam projek carian perundangan KGA, BM25 bersendirian nDCG@10=0.52, Dense bersendirian 0.61, dan hibrid RRF meningkat kepada 0.73. Mudah tetapi berkuasa.

Lapisan 2: Reranker (Cohere Rerank-3, Voyage Rerank-2)

Reka bentuk dua peringkat yang mengambil 50–200 teratas dengan carian hibrid kemudian memberikan skor dengan tepat menggunakan penarafan semula jenis cross-encoder adalah standard de facto 2026. Carian dense menggunakan struktur bi-encoder yang memvektorkan pertanyaan dan dokumen secara bebas — ia kehilangan interaksi antara pertanyaan dan dokumen. Penarafan semula memasukkan kedua-duanya secara serentak ke dalam Transformer untuk mendapatkan kaitan sebenar.

  • Cohere Rerank-3 (dilancarkan September 2025): Menyokong 100 bahasa, konteks 128k, $2/1k pertanyaan
  • Voyage Rerank-2: Konteks 32k, kedudukan teratas dalam MTEB Reranking, $0.5/1k pertanyaan
  • Jina Reranker v2: Pilihan lebih berorientasi OSS, prestasi bahasa Jepun sedikit lebih rendah daripada Cohere
  • BGE-Reranker-v2-m3: OSS lesen MIT, pilihan pertama untuk operasi sendiri

```python import cohere

co = cohere.Client() results = co.rerank( model="rerank-3", query="Keperluan pemindahan merentas sempadan di bawah undang-undang perlindungan data", documents=[d.text for d in top50], top_n=10, ) reranked = [top50[r.index] for r in results.results] ```

Kesan penarafan semula adalah dramatik — dalam purata KGA, nDCG@10 meningkat sekitar 0.65 → 0.82. Walau bagaimanapun, latensi bertambah 200–400ms untuk top 50, menjadikan reka bentuk asyncron atau respons pantas hanya peringkat pertama diperlukan dalam UX carian.

Lapisan 3: Penulisan Semula Pertanyaan (HyDE, Query2Doc, Multi-Query)

Pertanyaan pengguna sering pendek dan samar ("penamatan kontrak", "kadar penggunaan memori"). Teknik menggunakan LLM untuk mengembangkan pertanyaan sebelum mencari telah diintegrasikan ke dalam reka bentuk Retrieval 2026.

  • HyDE (Hypothetical Document Embeddings): Meminta LLM menulis dokumen jawapan hipotetikal dan menggunakannya sebagai kunci embedding untuk carian
  • Query2Doc: Menggabungkan pertanyaan dan dokumen pseudo untuk mendapatkan embedding (varian HyDE, lebih stabil dalam banyak kes)
  • Multi-Query: Meminta LLM menjana 3–5 ungkapan berbeza dengan maksud yang sama, carian selari dan digabungkan dengan RRF

```python def hyde_search(query: str, vector_db, llm): hypothetical = llm.generate( f"Tulis jawapan hipotetikal dalam 3 ayat untuk soalan berikut: {query}" ) combined = query + " " + hypothetical # Jadikan Query2Doc embed = embedding_model.encode(combined) return vector_db.search(embed, k=50) ```

Multi-Query mempunyai nisbah kos-prestasi terbaik — dalam RAG Soalan Lazim dalaman KGA, Recall@20 bertambah baik sebanyak 12% berbanding carian pertanyaan tunggal. Kos ialah tambahan satu panggilan LLM setiap pertanyaan, tetapi dengan Claude Haiku/GPT-4.1-mini, kos di bawah 0.10 yen.

Lapisan 4: Strategi Pemotongan

RAG yang beroperasi dengan hanya "dibahagi kepada 1,000 aksara" sudah ketinggalan zaman pada 2026. Kaedah pemotongan menentukan kualiti Retrieval secara langsung.

  • Fixed-size: Pembahagian N aksara klasik. Bertindih 10–20%
  • Recursive Character Splitting: Membahagi secara rekursif dalam susunan perenggan → ayat → perkataan. Lalai `RecursiveCharacterTextSplitter` LangChain
  • Semantic Chunking: Embed ayat berturutan dan bahagi di titik perubahan mendadak kesamaan kosinus. Menghasilkan potongan yang pekat secara semantik
  • Late Chunking (Jina 2024/2025): Memasukkan keseluruhan teks panjang ke model embedding terlebih dahulu, mendapatkan embedding per token, kemudian membuat purata untuk membuat potongan. Potongan mengekalkan konteks sekeliling, tidak kehilangan kata ganti dan rujukan
  • Hierarchical / Parent-Child: Mencari dengan potongan kecil, menghantar ke penjanaan dengan potongan induk. Mengimbangi ketepatan dan jumlah konteks

Contoh pelaksanaan Late Chunking:

```python from transformers import AutoModel, AutoTokenizer import torch

model = AutoModel.from_pretrained("jinaai/jina-embeddings-v3", trust_remote_code=True) tokenizer = AutoTokenizer.from_pretrained("jinaai/jina-embeddings-v3")

def late_chunking(long_text: str, chunk_boundaries: list[tuple[int, int]]): inputs = tokenizer(long_text, return_tensors="pt", truncation=True, max_length=8192) with torch.no_grad(): token_embeds = model(**inputs).last_hidden_state[0] chunk_embeds = [] for start, end in chunk_boundaries: chunk_embeds.append(token_embeds[start:end].mean(dim=0)) return torch.stack(chunk_embeds) ```

Apabila Late Chunking dilaksanakan dalam RAG kontrak KGA, Recall@10 bertambah baik dari 71% kepada 88% untuk dokumen dengan banyak rujukan silang seperti "yang ditetapkan dalam Fasal 3".

Lapisan 5: Metrik Penilaian dan Penilaian Luar Talian

Retrieval tidak boleh dinilai dengan "ia berjalan". Metrik kuantitatif dan ujian regresi adalah wajib.

  • Recall@k: Nisbah di mana dokumen yang betul termasuk dalam k teratas. Metrik terpenting yang menentukan had atas RAG
  • nDCG@10 (Normalized Discounted Cumulative Gain): Mengambil kira kualiti kedudukan juga. Standard de facto carian komersial
  • MRR (Mean Reciprocal Rank): Purata songsang kedudukan sehingga jawapan pertama yang betul. Hampir dengan pengalaman pengguna
  • Hit Rate@k: Nilai binari mudah "adakah jawapan betul dalam k teratas"

Set penilaian dibuat dengan sekurang-kurangnya 100 pertanyaan, idealnya 500 pertanyaan. Simpan pasangan ID pertanyaan dan dokumen jawapan dalam CSV dan jalankan ujian regresi dalam CI.

```python import numpy as np

def ndcg_at_k(ranked_ids: list[str], relevance: dict[str, int], k: int = 10) -> float: gains = [relevance.get(doc_id, 0) for doc_id in ranked_ids[:k]] dcg = sum((2 g - 1) / np.log2(idx + 2) for idx, g in enumerate(gains)) ideal_gains = sorted(relevance.values(), reverse=True)[:k] idcg = sum((2 g - 1) / np.log2(idx + 2) for idx, g in enumerate(ideal_gains)) return dcg / idcg if idcg > 0 else 0.0 ```

Rangka kerja seperti `RetrieverEvaluator` LlamaIndex, RAGAS, dan Trulens telah menstandardkan pengiraan ini — memasang RAGAS terlebih dahulu berbanding membina sendiri adalah amalan standard 2026.

Konfigurasi Rujukan Pengeluaran

Berikut adalah konfigurasi standard RAG pengeluaran yang dicadangkan oleh KGA pada 2026.

  • Ingest: Dokumen → Late Chunking (Jina v3) → Simpan parent/child
  • Index: Simpan kedua-dua dense + sparse dalam pgvector atau Qdrant
  • Query: Multi-Query (jana 3 variasi dengan LLM)
  • Peringkat pertama: Hibrid BM25 + Dense → Gabungan RRF untuk top 100
  • Peringkat kedua: Mampat kepada top 10 dengan Cohere Rerank-3
  • Penjanaan: Hantar top 10 kepada Claude Opus 4.7 untuk jawapan akhir
  • Eval: Jalankan ujian regresi 500 pertanyaan dalam CI setiap minggu, dan sekat pelanggaran ambang nDCG@10 / MRR / Recall@20

Apabila konfigurasi ini dibina dengan teliti, pengalaman "RAG menjadi lebih bijak tanpa menukar LLM" benar-benar muncul. Retrieval adalah teras RAG, dan ia adalah lapisan pelaburan keutamaan utama projek pada 2026.

Mari selesaikan cabaran teknikal anda bersama.

KGA IT Solutions mempunyai pasukan pakar AI, awan dan DevOps untuk memberikan penyelesaian optimum bagi cabaran anda.

Hubungi Kami