Menjaga Agen AI Tetap Membumi: Strategi Rekayasa Konteks yang Mencegah Pembusukan Konteks Menggunakan Milvus
Jika Anda pernah bekerja dengan percakapan LLM yang sudah berjalan lama, Anda mungkin pernah mengalami saat-saat yang membuat frustasi: di tengah-tengah percakapan yang panjang, model mulai melenceng. Jawaban menjadi tidak jelas, penalaran melemah, dan detail-detail kunci menghilang secara misterius. Tetapi jika Anda memasukkan pertanyaan yang sama persis ke dalam obrolan baru, tiba-tiba model berperilaku fokus, akurat, dan beralasan.
Ini bukan karena model "lelah" - ini adalah pembusukan konteks. Seiring dengan berkembangnya percakapan, model harus menyulap lebih banyak informasi, dan kemampuannya untuk memprioritaskan secara perlahan-lahan menurun. Studi antropologi menunjukkan bahwa ketika jendela konteks membentang dari sekitar 8 ribu token hingga 128 ribu, akurasi pengambilan dapat turun 15-30%. Model ini masih memiliki ruang, tetapi kehilangan jejak apa yang penting. Jendela konteks yang lebih besar membantu menunda masalah, tetapi tidak menghilangkannya.
Di sinilah rekayasa konteks masuk. Alih-alih memberikan semua hal kepada model sekaligus, kita membentuk apa yang dilihatnya: mengambil hanya bagian yang penting, memadatkan bagian yang tidak perlu bertele-tele, dan menjaga agar petunjuk dan alat bantu tetap bersih agar model dapat berpikir. Tujuannya sederhana: membuat informasi penting tersedia pada saat yang tepat, dan mengabaikan sisanya.
Pengambilan memainkan peran utama di sini, terutama untuk agen yang sudah berjalan lama. Basis data vektor seperti Milvus menyediakan fondasi untuk menarik pengetahuan yang relevan secara efisien ke dalam konteks, sehingga sistem tetap membumi meskipun tugas-tugasnya semakin mendalam dan kompleks.
Dalam blog ini, kita akan melihat bagaimana pembusukan konteks terjadi, strategi yang digunakan tim untuk mengelolanya, dan pola arsitektur - mulai dari pengambilan hingga desain yang cepat - yang membuat agen AI tetap tajam dalam alur kerja yang panjang dan multi-langkah.
Mengapa Pembusukan Konteks Terjadi
Orang sering beranggapan bahwa memberikan lebih banyak konteks pada model AI secara alami akan menghasilkan jawaban yang lebih baik. Namun, hal tersebut tidak sepenuhnya benar. Manusia juga kesulitan dengan input yang panjang: ilmu kognitif menunjukkan bahwa memori kerja kita hanya mampu menyimpan sekitar 7±2 potongan informasi. Dorong lebih dari itu, dan kita mulai melupakan, mengaburkan, atau salah menafsirkan detail.
LLM menunjukkan perilaku yang sama-hanya saja dalam skala yang jauh lebih besar dan dengan mode kegagalan yang lebih dramatis.
Akar masalahnya berasal dari arsitektur Transformer itu sendiri. Setiap token harus membandingkan dirinya sendiri dengan setiap token lainnya, membentuk perhatian berpasangan di seluruh urutan. Itu berarti komputasi bertambah O(n²) dengan panjang konteks. Memperluas prompt Anda dari 1K token menjadi 100K tidak membuat model "bekerja lebih keras" - ini mengalikan jumlah interaksi token sebanyak 10.000×.
Lalu ada masalah dengan data pelatihan. Model melihat lebih banyak urutan pendek daripada urutan panjang. Jadi, ketika Anda meminta LLM untuk beroperasi dalam konteks yang sangat besar, Anda mendorongnya ke dalam rezim yang tidak terlatih. Dalam praktiknya, penalaran dengan konteks yang sangat panjang sering kali tidak dapat dilakukan oleh sebagian besar model.
Terlepas dari batasan-batasan ini, konteks yang panjang sekarang tidak dapat dihindari. Aplikasi LLM awal sebagian besar merupakan tugas satu putaran-klasifikasi, ringkasan, atau generasi sederhana. Saat ini, lebih dari 70% sistem AI perusahaan bergantung pada agen yang tetap aktif di banyak putaran interaksi, sering kali selama berjam-jam, mengelola percabangan, alur kerja multi-langkah. Sesi yang berumur panjang telah beralih dari pengecualian menjadi default.
Lalu pertanyaan selanjutnya adalah: bagaimana kita menjaga perhatian model tetap tajam tanpa membuatnya kewalahan?
Pendekatan Pengambilan Konteks untuk Memecahkan Pembusukan Konteks
Retrieval adalah salah satu pengungkit paling efektif yang kita miliki untuk memerangi pembusukan konteks, dan dalam praktiknya cenderung muncul dalam pola pelengkap yang menangani pembusukan konteks dari sudut yang berbeda.
1. Pengambilan Tepat Pada Waktunya (Just-in-Time Retrieval): Mengurangi Konteks yang Tidak Perlu
Salah satu penyebab utama pembusukan konteks adalah membebani model dengan informasi yang belum dibutuhkan. Claude Code - asisten pengkodean Anthropic - memecahkan masalah ini dengan pengambilan Just-in-Time (JIT), sebuah strategi di mana model mengambil informasi hanya jika informasi tersebut relevan.
Alih-alih memasukkan seluruh basis kode atau kumpulan data ke dalam konteksnya (yang sangat meningkatkan kemungkinan melenceng dan lupa), Claude Code mempertahankan indeks kecil: jalur file, perintah, dan tautan dokumentasi. Ketika model membutuhkan sebuah informasi, model akan mengambil item spesifik tersebut dan memasukkannya ke dalam konteks pada saat dibutuhkan - bukansebelumnya .
Sebagai contoh, jika Anda meminta Claude Code untuk menganalisis basis data sebesar 10GB, ia tidak akan pernah mencoba memuat semuanya. Cara kerjanya lebih mirip seorang insinyur:
Menjalankan kueri SQL untuk menarik ringkasan tingkat tinggi dari kumpulan data.
Menggunakan perintah seperti
headdantailuntuk melihat contoh data dan memahami strukturnya.Hanya menyimpan informasi yang paling penting-seperti statistik utama atau baris sampel-dalam konteksnya.
Dengan meminimalkan apa yang disimpan dalam konteks, pengambilan JIT mencegah penumpukan token yang tidak relevan yang menyebabkan pembusukan. Model ini tetap fokus karena hanya melihat informasi yang diperlukan untuk langkah penalaran saat ini.
2. Pra-pengambilan (Pencarian Vektor): Mencegah Penyimpangan Konteks Sebelum Dimulai
Terkadang model tidak dapat "meminta" informasi secara dinamis - dukungan pelanggan, sistem tanya jawab, dan alur kerja agen sering kali membutuhkan pengetahuan yang tepat yang tersedia sebelum pembuatan dimulai. Di sinilah pra-pengambilan menjadi sangat penting.
Pembusukan konteks sering terjadi karena model diberikan setumpuk besar teks mentah dan diharapkan untuk memilah mana yang penting. Pra-pengambilan membalikkan hal tersebut: basis data vektor (seperti Milvus dan Zilliz Cloud) mengidentifikasi bagian yang paling relevan sebelum inferensi, memastikan hanya konteks bernilai tinggi yang mencapai model.
Dalam pengaturan RAG yang khas:
Dokumen disematkan dan disimpan dalam basis data vektor, seperti Milvus.
Pada waktu kueri, sistem mengambil sekumpulan kecil potongan yang sangat relevan melalui pencarian kemiripan.
Hanya potongan-potongan tersebut yang masuk ke dalam konteks model.
Hal ini mencegah pembusukan dalam dua cara:
Pengurangan noise: teks yang tidak relevan atau memiliki hubungan yang lemah tidak akan pernah masuk ke dalam konteks.
Efisiensi: model memproses token yang jauh lebih sedikit, sehingga mengurangi kemungkinan kehilangan jejak detail penting.
Milvus dapat mencari jutaan dokumen dalam milidetik, membuat pendekatan ini ideal untuk sistem langsung di mana latensi menjadi penting.
3. JIT Hibrida dan Pengambilan Vektor
Pra-pengambilan berbasis pencarian vektor mengatasi sebagian besar pembusukan konteks dengan memastikan model dimulai dengan informasi bersinyal tinggi daripada teks mentah yang sangat besar. Namun, Anthropic menyoroti dua tantangan nyata yang sering diabaikan oleh tim:
Ketepatan waktu: Jika basis pengetahuan diperbarui lebih cepat daripada indeks vektor yang dibangun kembali, model dapat mengandalkan informasi yang sudah usang.
Akurasi: Sebelum tugas dimulai, sulit untuk memprediksi dengan tepat apa yang akan dibutuhkan oleh model-terutama untuk alur kerja yang terdiri dari beberapa langkah atau eksplorasi.
Jadi, dalam beban kerja di dunia nyata, appaorch hibrida adalah solusi yang optimal.
Pencarian vektor untuk pengetahuan yang stabil dan memiliki tingkat kepercayaan tinggi
Eksplorasi JIT berbasis agen untuk informasi yang berkembang atau hanya menjadi relevan di tengah-tengah tugas
Dengan memadukan kedua pendekatan ini, Anda mendapatkan kecepatan dan efisiensi pencarian vektor untuk informasi yang sudah diketahui, dan fleksibilitas bagi model untuk menemukan dan memuat data baru kapan pun menjadi relevan.
Mari kita lihat bagaimana cara kerjanya dalam sistem nyata. Ambil contoh asisten dokumentasi produksi. Sebagian besar tim pada akhirnya memilih pipeline dua tahap: Pencarian vektor yang didukung Milvus + pengambilan JIT berbasis agen.
1. Pencarian Vektor yang Didukung Milvus (Pra-pengambilan)
Ubah dokumentasi, referensi API, log perubahan, dan masalah yang diketahui menjadi embedding.
Simpan di Database Vektor Milvus dengan metadata seperti area produk, versi, dan waktu pembaruan.
Ketika pengguna mengajukan pertanyaan, jalankan pencarian semantik untuk mendapatkan segmen yang relevan dengan K teratas.
Hal ini menyelesaikan sekitar 80% kueri rutin dalam waktu kurang dari 500 ms, sehingga memberikan model titik awal yang kuat dan tahan terhadap pembusukan konteks.
2. Eksplorasi Berbasis Agen
Ketika pencarian awal tidak cukup-misalnya, ketika pengguna meminta sesuatu yang sangat spesifik atau sensitif terhadap waktu-agen dapat memanggil alat untuk mengambil informasi baru:
Gunakan
search_codeuntuk menemukan fungsi atau file tertentu dalam basis kodeGunakan
run_queryuntuk mengambil data waktu nyata dari basis dataGunakan
fetch_apiuntuk mendapatkan status sistem terbaru
Pemanggilan ini biasanya membutuhkan waktu 3-5 detik, namun memastikan model selalu bekerja dengan data yang baru, akurat, dan relevan-bahkan untuk pertanyaan yang tidak dapat diantisipasi oleh sistem sebelumnya.
Struktur hibrida ini memastikan konteks tetap tepat waktu, benar, dan sesuai dengan tugas, sehingga secara dramatis mengurangi risiko pembusukan konteks dalam alur kerja agen yang sudah berjalan lama.
Milvus sangat efektif dalam skenario hibrida ini karena mendukung:
Pencarian vektor + pemfilteran skalar, menggabungkan relevansi semantik dengan batasan terstruktur
Pembaruan inkremental, memungkinkan penyematan disegarkan tanpa waktu henti
Hal ini membuat Milvus menjadi tulang punggung yang ideal untuk sistem yang membutuhkan pemahaman semantik dan kontrol yang tepat atas apa yang diambil.
Sebagai contoh, Anda mungkin menjalankan kueri seperti:
# You can combine queries like this in Milvus
collection.search(
data=[query_embedding], # Semantic similarity
anns_field="embedding",
param={"metric_type": "COSINE", "params": {"nprobe": 10}},
expr="doc_type == 'API' and update_time > '2025-01-01'", # Structured filtering
limit=5
)
Bagaimana Memilih Pendekatan yang Tepat untuk Menangani Pembusukan Konteks
Dengan tersedianya pra-pengambilan vektor, pengambilan tepat waktu, dan pengambilan hibrida, pertanyaan yang wajar adalah: yang mana yang harus Anda gunakan?
Berikut ini adalah cara sederhana namun praktis untuk memilih-berdasarkan pada seberapa stabil pengetahuan Anda dan seberapa dapat diprediksi kebutuhan informasi model.
1. Pencarian Vektor → Terbaik untuk Domain yang Stabil
Jika domain berubah secara perlahan namun menuntut ketepatan-keuangan, pekerjaan hukum, kepatuhan, dokumentasi medis-maka basis pengetahuan yang didukung Milvus dengan pra-pengambilan biasanya sangat cocok.
Informasinya terdefinisi dengan baik, pembaruan jarang dilakukan, dan sebagian besar pertanyaan dapat dijawab dengan mengambil dokumen yang relevan secara semantik di awal.
Tugas yang dapat diprediksi + pengetahuan yang stabil → Pra-pengambilan.
2. Pengambilan Tepat Pada Waktunya → Terbaik untuk Alur Kerja yang Dinamis dan Eksploratif
Bidang-bidang seperti rekayasa perangkat lunak, debugging, analitik, dan ilmu data melibatkan lingkungan yang berubah dengan cepat: file baru, data baru, status penerapan baru. Model tidak dapat memprediksi apa yang dibutuhkan sebelum tugas dimulai.
Tugas yang tidak dapat diprediksi + pengetahuan yang berubah dengan cepat → pengambilan Tepat Pada Waktunya.
3. Pendekatan Hibrida → Ketika Kedua Kondisi tersebut Benar
Banyak sistem nyata yang tidak sepenuhnya stabil atau murni dinamis. Sebagai contoh, dokumentasi pengembang berubah secara perlahan, sedangkan kondisi lingkungan produksi berubah dari menit ke menit. Pendekatan hibrida memungkinkan Anda:
Memuat pengetahuan yang sudah diketahui dan stabil menggunakan pencarian vektor (cepat, latensi rendah)
Mengambil informasi dinamis dengan alat bantu agen sesuai permintaan (akurat, terkini)
Pengetahuan campuran + struktur tugas campuran → Pendekatan pengambilan hibrida.
Bagaimana jika Jendela Konteks Masih Belum Cukup
Rekayasa konteks membantu mengurangi kelebihan beban, namun terkadang masalahnya lebih mendasar: tugas tidak akan muat, bahkan dengan pemangkasan yang cermat.
Alur kerja tertentu-seperti memigrasi basis kode yang besar, meninjau arsitektur multi-repositori, atau membuat laporan penelitian yang mendalam-dapat melebihi 200K+ jendela konteks sebelum model mencapai akhir tugas. Bahkan dengan pencarian vektor yang melakukan pekerjaan berat, beberapa tugas membutuhkan memori yang lebih persisten dan terstruktur.
Baru-baru ini, Anthropic menawarkan tiga strategi praktis.
1. Kompresi: Pertahankan Sinyal, Hilangkan Noise
Ketika jendela konteks mendekati batasnya, model dapat memampatkan interaksi sebelumnya ke dalam rangkuman yang ringkas. Kompresi yang baik menjaga
Keputusan-keputusan kunci
Kendala dan persyaratan
Masalah-masalah yang menonjol
Sampel atau contoh yang relevan
Dan menghapus:
Keluaran alat yang tidak jelas
Log yang tidak relevan
Langkah-langkah yang berlebihan
Tantangannya adalah keseimbangan. Kompres terlalu agresif, dan model akan kehilangan informasi penting; kompres terlalu ringan, dan Anda hanya mendapatkan sedikit ruang. Kompresi yang efektif mempertahankan "mengapa" dan "apa" sambil membuang "bagaimana kita sampai di sini."
2. Pencatatan Terstruktur: Pindahkan Informasi Stabil ke Luar Konteks
Alih-alih menyimpan semua yang ada di dalam jendela model, sistem dapat menyimpan fakta-fakta penting di memori eksternal - sebuahbasis data terpisah atau tempat penyimpanan terstruktur yang dapat ditanyakan oleh agen sesuai kebutuhan.
Sebagai contoh, prototipe agen Pokémon milik Claude menyimpan fakta-fakta yang tahan lama seperti:
Pikachu leveled up to 8Trained 1234 steps on Route 1Goal: reach level 10
Sementara itu, detail sementara-catatan pertempuran, keluaran alat yang panjang-tetap berada di luar konteks aktif. Hal ini mencerminkan bagaimana manusia menggunakan buku catatan: kita tidak menyimpan setiap detail di dalam memori kerja kita; kita menyimpan titik referensi secara eksternal dan mencarinya saat dibutuhkan.
Pencatatan terstruktur mencegah pembusukan konteks yang disebabkan oleh detail yang berulang-ulang dan tidak perlu sambil memberikan model sumber kebenaran yang dapat diandalkan.
3. Arsitektur Sub-Agen: Membagi dan Menaklukkan Tugas Besar
Untuk tugas-tugas yang kompleks, arsitektur multi-agen dapat dirancang di mana agen utama mengawasi keseluruhan pekerjaan, sementara beberapa sub-agen khusus menangani aspek-aspek spesifik dari tugas tersebut. Sub-agen ini menyelami sejumlah besar data yang terkait dengan sub-tugas mereka, namun hanya memberikan hasil yang ringkas dan penting. Pendekatan ini biasanya digunakan dalam skenario seperti laporan penelitian atau analisis data.
Dalam praktiknya, yang terbaik adalah memulai dengan menggunakan agen tunggal yang dikombinasikan dengan kompresi untuk menangani tugas tersebut. Penyimpanan eksternal hanya boleh digunakan ketika ada kebutuhan untuk mempertahankan memori di seluruh sesi. Arsitektur multi-agen harus disediakan untuk tugas-tugas yang benar-benar membutuhkan pemrosesan paralel dari sub-tugas yang kompleks dan terspesialisasi.
Setiap pendekatan memperluas "memori kerja" sistem yang efektif tanpa merusak jendela konteks - dan tanpa memicu pembusukan konteks.
Praktik Terbaik untuk Merancang Konteks yang Benar-Benar Berfungsi
Setelah menangani konteks yang melimpah, ada satu hal lagi yang sama pentingnya: bagaimana konteks dibangun sejak awal. Bahkan dengan kompresi, catatan eksternal, dan sub-agen, sistem akan mengalami kesulitan jika prompt dan alat itu sendiri tidak dirancang untuk mendukung penalaran yang panjang dan kompleks.
Anthropic menawarkan cara yang berguna untuk memikirkan hal ini-kurang sebagai latihan menulis prompt tunggal, dan lebih sebagai membangun konteks di tiga lapisan.
Petunjuk Sistem: Temukan Zona Goldilocks
Kebanyakan petunjuk sistem gagal pada titik ekstrem. Terlalu banyak detail-daftar aturan, kondisi bersarang, pengecualian yang dikodekan dengan keras-membuat prompt menjadi rapuh dan sulit untuk dipertahankan. Struktur yang terlalu sedikit membuat model menebak-nebak apa yang harus dilakukan.
Prompt terbaik berada di tengah-tengah: cukup terstruktur untuk memandu perilaku, cukup fleksibel untuk model bernalar. Dalam praktiknya, ini berarti memberikan model peran yang jelas, alur kerja umum, dan panduan alat yang ringan-tidak lebih, tidak kurang.
Sebagai contoh:
You are a technical documentation assistant serving developers.
1. Start by retrieving relevant documents from the Milvus knowledge base.
2. If the retrieval results are insufficient, use the `search_code` tool to perform a deeper search in the codebase.
3. When answering, cite specific documentation sections or code line numbers.
## Tool guidance
- search_docs: Used for semantic retrieval, best for conceptual questions.
- search_code: Used for precise lookup in the codebase, best for implementation-detail questions.
…
Perintah ini menentukan arah tanpa membebani model atau memaksanya untuk menyulap informasi dinamis yang tidak seharusnya ada di sini.
Desain Alat: Lebih Sedikit Lebih Baik
Setelah perintah sistem menetapkan perilaku tingkat tinggi, alat membawa logika operasional yang sebenarnya. Modus kegagalan yang sangat umum terjadi pada sistem yang dilengkapi dengan alat bantu adalah memiliki terlalu banyak alat bantu - atau memiliki alat bantu yang tujuannya tumpang tindih.
Aturan praktis yang baik:
Satu alat, satu tujuan
Parameter yang eksplisit dan tidak ambigu
Tidak ada tanggung jawab yang tumpang tindih
Jika seorang insinyur manusia akan ragu-ragu tentang alat mana yang akan digunakan, model juga akan demikian. Desain alat yang bersih mengurangi ambiguitas, menurunkan beban kognitif, dan mencegah konteks menjadi berantakan dengan upaya alat yang tidak perlu.
Informasi Dinamis Harus Diambil, Bukan Dikodekan
Lapisan terakhir adalah yang paling mudah diabaikan. Informasi dinamis atau sensitif terhadap waktu-seperti nilai status, pembaruan terkini, atau status khusus pengguna-tidak boleh muncul dalam prompt sistem sama sekali. Memasukkannya ke dalam prompt menjamin informasi tersebut akan menjadi basi, membengkak, atau kontradiktif dalam waktu yang lama.
Sebaliknya, informasi ini harus diambil hanya ketika dibutuhkan, baik melalui pengambilan atau melalui alat bantu agen. Menjaga konten dinamis dari prompt sistem mencegah pembusukan konteks dan menjaga ruang penalaran model tetap bersih.
Kesimpulan
Ketika agen AI bergerak ke lingkungan produksi di berbagai industri, mereka mengambil alur kerja yang lebih panjang dan tugas yang lebih kompleks daripada sebelumnya. Dalam kondisi seperti ini, mengelola konteks menjadi kebutuhan praktis.
Namun, jendela konteks yang lebih besar tidak secara otomatis memberikan hasil yang lebih baik; dalam banyak kasus, yang terjadi justru sebaliknya. Ketika sebuah model kelebihan beban, diberi informasi yang sudah basi, atau dipaksa melalui permintaan yang sangat banyak, akurasi akan menurun secara perlahan. Penurunan yang lambat dan halus itulah yang sekarang kita sebut sebagai pembusukan konteks.
Teknik-teknik seperti JIT retrieval, pre-retrieval, hybrid pipelines, dan pencarian semantik bertenaga vektor-basis data, semuanya bertujuan untuk tujuan yang sama: memastikan model melihat informasi yang tepat di saat yang tepat - tidak lebih, tidak kurang - agar dapat tetap membumi dan menghasilkan jawaban yang dapat diandalkan.
Sebagai basis data vektor sumber terbuka dan berkinerja tinggi, Milvus menjadi inti dari alur kerja ini. Milvus menyediakan infrastruktur untuk menyimpan pengetahuan secara efisien dan mengambil bagian yang paling relevan dengan latensi rendah. Dipasangkan dengan pengambilan JIT dan strategi pelengkap lainnya, Milvus membantu agen AI tetap akurat saat tugas mereka menjadi lebih dalam dan dinamis.
Namun, pengambilan hanyalah salah satu bagian dari teka-teki. Desain prompt yang baik, perangkat yang bersih dan minimal, serta strategi overflow yang masuk akal - baik kompresi, catatan terstruktur, atau sub-agen - semuanya bekerja sama untuk menjaga model tetap fokus di seluruh sesi yang berjalan lama. Seperti inilah rekayasa konteks yang sebenarnya: bukan peretasan yang cerdas, tetapi arsitektur yang cermat.
Jika Anda menginginkan agen AI yang tetap akurat selama berjam-jam, berhari-hari, atau seluruh alur kerja, konteks layak mendapatkan perhatian yang sama seperti yang Anda berikan pada bagian inti lain dari tumpukan Anda.
Punya pertanyaan atau ingin mendalami fitur apa pun? Bergabunglah dengan saluran Discord kami atau ajukan masalah di GitHub. Anda juga dapat memesan sesi tatap muka selama 20 menit untuk mendapatkan wawasan, panduan, dan jawaban atas pertanyaan Anda melalui Milvus Office Hours.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



