Selepas empat bulan memindahkan pipeline Retrieval-Augmented Generation (RAG) daripada Jupyter notebook ke perkhidmatan langsung, penulis mengenal pasti lima pilihan konkrit yang mengubah demo persembahan menjadi sistem yang benar-benar boleh dipercayai oleh pengguna. Perbezaannya jelas dalam angka: perubahan ringkas pada cara teks dibahagikan telah meningkatkan kadar padanan (hit rate) daripada 61% kepada 83%, dan set penilaian sederhana dengan 200 pertanyaan sebenar kini dapat mengesan kebanyakan regresi sebelum ia sampai kepada pelanggan.
Mengapa ia penting
Demo RAG kelihatan mengagumkan – ia mengambil petikan dan menghasilkan jawapan yang munasabah dalam beberapa saat. Dalam pengeluaran (production), pendekatan yang sama sering mengembalikan fakta lapuk, kod ralat yang terlepas, atau ayat yang rosak, sekali gus menghakis kepercayaan pengguna. Kekangan (bottleneck) jarang sekali terletak pada model bahasa; ia adalah cara kandungan dimasukkan (ingested), diindeks, dan disajikan. Memastikan pipeline berfungsi dengan betul boleh menjadi perbezaan antara produk yang memberi nilai tambah dan produk yang menjadi liabiliti.
1. Berhenti menggunakan chunk bersaiz tetap
Banyak prototaip memotong setiap dokumen kepada blok 512-token. Ini berfungsi untuk teks pendek tetapi merosakkan manual teknikal, rantaian sokongan, dan petikan kod. Ayat terputus, tajuk hilang, dan enjin carian tidak dapat memadankan konteks yang diharapkan oleh pengguna.
Tukar kepada chunking berasaskan struktur—bahagikan pada tajuk, sempadan perbualan, atau code fences—untuk mengekalkan unit semantik. Dalam sistem penulis, langkah ini sahaja telah meningkatkan pecahan pertanyaan yang menemui petikan relevan daripada 61% kepada 83%. Penambahbaikan ini datang daripada perubahan format data; model asas kekal sama.
2. Gunakan carian hibrid
Carian vektor tulen (kesamaan berasaskan embedding) sangat baik dalam mencari petikan dengan maksud yang sama, tetapi ia tersangkut pada pengenal pasti tepat seperti kod ralat, nombor versi, atau terminologi proprietari. Pengguna yang mencari kod ralat seperti “ERR-XXXX” mungkin mendapat perenggan yang serupa secara semantik tetapi tidak mengandungi kod tersebut langsung.
Carian hibrid menggabungkan indeks vektor padat dengan indeks BM25 tradisional (berasaskan kekerapan istilah). Dengan memberikan pemberat kepada kedua-dua skor tersebut, sistem akan mengambil item yang kedua-duanya dekat secara semantik dan mengandungi istilah tepat yang ditaip oleh pengguna. Untuk pengeluaran, carian hibrid adalah keperluan asas, bukan sekadar tambahan pilihan.
3. Kendalikan data lapuk
Jadual harga, dokumen polisi, atau nota keluaran perisian tegar (firmware) yang tidak dikemas kini akan merosakkan kredibiliti dengan cepat. Tiga langkah praktikal untuk memastikan indeks sentiasa segar:
- Tandakan setiap dokumen dengan cap versi atau cap masa.
- Gunakan "recency boost" semasa pemberian skor supaya item yang lebih baharu mengatasi salinan lama.
- Jalankan pengindeksan semula secara inkremental setiap malam untuk memasukkan perubahan daripada sistem sumber.
Langkah keselamatan ini menghalang sistem daripada memberikan harga yang sah pada suku tahun lepas atau polisi yang telah digantikan.
4. Lakukan rerank berbanding menaik taraf model
Menaik taraf model embedding hanya memberikan sedikit peningkatan kualiti, manakala menambah reranker cross-encoder memberikan lonjakan yang jauh lebih besar dengan kos yang lebih rendah.
Aliran pengeluaran mengambil 20 calon murah menggunakan carian hibrid, kemudian melaluinya melalui reranker untuk memilih lima yang teratas. Pendekatan dua peringkat ini menghasilkan lonjakan kualiti yang lebih besar dengan sebahagian kecil daripada kos menaik taraf model sepenuhnya.
5. Bina set penilaian sebenar
Anda tidak boleh menambah baik apa yang tidak anda ukur. Penulis telah menyusun suite ujian dengan 200 pertanyaan pengguna yang tulen, setiap satu dipasangkan dengan jawapan yang disediakan oleh pakar. Setiap perubahan kod dijalankan terhadap suite ini; sebarang regresi akan dikesan sebelum penggunaan (deployment).
Apabila pengguna melaporkan jawapan yang salah, masukkan pertanyaan tersebut ke dalam set penilaian dengan segera, menukarkan kegagalan dunia nyata kepada langkah keselamatan masa hadapan. Log berterusan bagi setiap jawapan yang dijana akan menyumbang kepada gelung penilaian, memastikan sistem kekal selaras dengan penggunaan sebenar.
Pipeline pengeluaran dalam praktis
- Ingest: Chunking berasaskan struktur mengekalkan tajuk, blok kod, dan giliran perbualan.
- Index: Simpan kedua-dua embedding padat dan statistik istilah BM25.
- Retrieve: Carian hibrid mengembalikan 20 calon, mengimbangi kesamaan semantik dan padanan istilah tepat.
- Rerank: Cross-encoder mengecilkan senarai kepada lima petikan yang paling menjanjikan.
- Generate: LLM menerima chunk teratas ini berserta metadata untuk merangka jawapan akhir.
- Evaluate: Setiap respons dilog; kegagalan dimasukkan semula ke dalam set ujian 200-pertanyaan.
Pertaruhan dan timbal balik
Saluran paip yang ditala dengan baik mengurangkan halusinasi, meningkatkan kerelevanan jawapan, dan mengurangkan kos model yang disediakan secara berlebihan. Kelebihannya ialah kepuasan pengguna yang lebih tinggi dan beban kerja sokongan yang lebih rendah. Mengabaikan langkah-langkah ini akan menghasilkan perkhidmatan yang rapuh yang menghakis kepercayaan jenama dan memaksa usaha pemulihan kecemasan yang mahal.
Apa yang perlu diperhatikan seterusnya
Apabila embeddings sumber terbuka dan pangkalan data vektor semakin matang, garis pemisah antara pencarian "padat" (dense) dan "jarang" (sparse) akan menjadi kabur, namun prinsip menggabungkan padanan semantik dan padanan tepat tetap kekal.
Intipati: Dalam sistem RAG, model bahasa jarang sekali menjadi kekangan utama. Kerja sebenar terletak pada cara anda membahagikan, mengindeks, dan memaparkan kandungan asas tersebut. Membuat keputusan yang tepat dalam perkara tersebut akan mengubah demo yang sekadar menarik perhatian menjadi produk yang boleh dipercayai.
