# RAG dari web live: retrieve dengan pencarian, jawab dengan sitasi

> Retrieval-augmented generation dari web live: cari, baca halaman teratas sebagai Markdown, jawab dengan sitasi. Kode Python. Tanpa KYC, bayar dengan kripto.

- URL: https://llmwebsearch.com/id/use-cases/rag/
- Terakhir diperbarui: 2026-10-22
- Penerbit: LLMWebSearch (https://llmwebsearch.com)

Indeks vektor menyimpan apa yang Anda muat bulan lalu. Sebagian pertanyaan butuh apa yang dikatakan web hari ini. Live-web RAG melakukan retrieve saat pertanyaan diajukan: satu pencarian, halaman teratas sebagai Markdown, beberapa chunk masuk ke prompt, dan sitasi kembali ke setiap halaman.

**Jawaban singkat — Bagaimana cara melakukan RAG dengan hasil pencarian web live?**

Jalankan pencarian web saat pertanyaan diajukan, baca halaman teratas, bagi menjadi chunk, simpan yang paling relevan, dan minta model menjawab dengan sitasi bernomor. **LLMWebSearch** menangani dua langkah pertama dalam satu panggilan: hasil berperingkat dengan 3 halaman pertama sebagai Markdown, untuk satu kredit, mulai US$1,20/1K pencarian. Tanpa KYC; bayar dengan kripto.

## Apa itu live-web RAG?

Ini adalah retrieval-augmented generation yang langkah retrieval-nya berupa pencarian web, bukan pencarian di indeks Anda sendiri. Pertanyaan dikirim ke search API, API mengembalikan halaman, dan model menjawab dari halaman tersebut.

Pola ini cocok untuk pertanyaan tentang hal yang berubah: harga, rilis, aturan, jadwal, dan berita. Juga cocok untuk pertanyaan long-tail yang tidak pernah dibahas dokumen Anda sendiri. Biayanya satu pencarian per pertanyaan, atau dua jika pencarian pertama tidak menemukan hasil.

## Kapan harus mengambil data segar dan kapan harus menyimpannya?

Simpan yang stabil dan milik Anda; ambil yang berubah. Manual produk, kebijakan internal, dan dokumen Anda sendiri cocok masuk indeks vektor, diperbarui sesuai jadwal. Harga pesaing, regulasi, dan berita cocok untuk live retrieval.

Banyak tim menggabungkan keduanya. Mereka mencari di indeks sendiri dulu dan memanggil web hanya ketika indeks tidak punya kecocokan yang baik, atau ketika pertanyaan menyebut tanggal terbaru.

Jika Anda memutuskan menyimpan halaman yang Anda retrieve, catat posisi kami: Kami tidak melatih model apa pun dengan kueri Anda atau dengan apa yang dikembalikan API, dan kami tidak menambahkan aturan kami sendiri yang melarang penyimpanan hasil; hak situs yang halaman-halamannya Anda baca tetap berlaku. Periksa ketentuan setiap situs sebelum membuat salinan permanen kontennya.

## Bagaimana cara mengubah hasil pencarian menjadi chunk?

Bagi setiap halaman berdasarkan heading-nya, lalu potong bagian yang panjang ke panjang tetap. Markdown memudahkan ini, karena heading adalah baris yang dimulai dengan `#`. Simpan URL sumber dan judul di setiap chunk agar sitasi tetap utuh setelah pemisahan.

Contoh di bawah mencari, membaca tiga halaman, membaginya menjadi chunk, dan memilih enam chunk yang berbagi paling banyak kata dengan pertanyaan. Di produksi, ganti penghitungan kata dengan model embedding Anda; strukturnya tetap sama.

*Python: retrieval web live dengan chunk dan sumber bernomor*

```python
import os
import re

import requests

API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}


def live_chunks(query, read=3, chunk_len=1200):
    """Search, then cut each page that was read into heading-based chunks tagged with its source."""
    body = {"q": query, "max_results": 5, "read": read, "max_chars": 12000}
    results = requests.post(API, headers=HEADERS, json=body, timeout=60).json()["results"]
    chunks = []
    for r in results:
        if r.get("content_status") != "ok":
            continue
        for section in re.split(r"\n(?=#{1,3} )", r["content"]):
            section = section.strip()
            for start in range(0, len(section), chunk_len):
                chunks.append({"url": r["url"], "title": r["title"], "text": section[start:start + chunk_len]})
    return chunks


def top_chunks(chunks, question, k=6):
    """A plain keyword score; swap in your embedding model for better ranking."""
    words = set(re.findall(r"\w{4,}", question.lower()))

    def score(chunk):
        return sum(1 for w in re.findall(r"\w{4,}", chunk["text"].lower()) if w in words)

    return sorted(chunks, key=score, reverse=True)[:k]


def build_prompt(question):
    picked = top_chunks(live_chunks(question), question)
    urls = list(dict.fromkeys(c["url"] for c in picked))
    blocks = [f"[{urls.index(c['url']) + 1}] {c['title']}\n{c['text']}" for c in picked]
    sources = "\n".join(f"[{i}] {u}" for i, u in enumerate(urls, 1))
    return (
        "Use only the context to answer and cite sources as [n].\n\n"
        + "\n\n".join(blocks)
        + f"\n\nSources:\n{sources}\n\nQuestion: {question}"
    )
```

## Berapa halaman yang harus dibaca untuk setiap pertanyaan?

Tiga adalah awal yang baik, dan itu menjaga pencarian tetap satu kredit. Sebagian besar pertanyaan faktual terjawab pada dua atau tiga halaman pertama dari kueri yang baik.

Minta halaman yang lebih panjang daripada di chat agent, karena chunker tetap akan membuang sebagian besar teks. `max_chars` 10.000 hingga 15.000 per halaman memberi ranker cukup pilihan. Jika jawaban bergantung pada satu situs yang diketahui, tambahkan dengan `include_domains` daripada membaca lebih banyak halaman.

## Bagaimana cara membuat model menyitasi sumbernya?

Beri nomor pada sumber di prompt dan minta nomornya di jawaban. Instruksi singkat sudah cukup: gunakan hanya konteks, sitasi setiap klaim sebagai [n], dan sebutkan jika konteks tidak mencakup pertanyaan.

Simpan daftar sumber di akhir prompt, dengan satu URL per nomor. Lalu render [n] sebagai tautan di antarmuka Anda. Pengguna mempercayai jawaban yang bisa mereka periksa, dan sitasi yang salah mudah terlihat saat review.

## Bagaimana jika halaman diblokir atau kosong?

Lewati dan gunakan yang lain. Setiap hasil membawa `content_status`; hanya hasil `ok` yang punya teks. Halaman bisa tidak ada karena Pembaca kami mematuhi robots.txt: ia memperkenalkan diri sebagai LLMWebSearch, mengikuti aturan yang ditulis situs untuknya atau untuk semua robot, dan mengabaikan konten halaman apa pun yang tidak diizinkan untuk dibaca.

Jika semua halaman dari satu pencarian kembali kosong, coba ulang sekali dengan kueri berbeda atau tambahkan `include_domains` untuk situs yang Anda tahu terbuka. Saat situs menolak pembaca kami, hasil kembali tanpa konten dan dengan status dari situs tersebut: kami tidak pernah memecahkan CAPTCHA, masuk ke akun, atau mengakali blokir atau paywall.

## Berapa biaya live-web RAG?

Satu pencarian per pertanyaan dalam sebagian besar kasus. Asisten dukungan yang menjawab 5.000 pertanyaan sebulan, dengan pencarian kedua untuk satu dari lima pertanyaan, memakai sekitar 6.000 pencarian. 25.000 pencarian dengan US$41,25 mencakup empat bulan seperti itu.

Model Anda juga membaca chunk yang Anda kirim. Enam chunk berukuran 1.200 karakter menambah sekitar 2.000 token per pertanyaan, yang Anda kendalikan melalui ukuran dan jumlah chunk.

## Paket mana yang cocok untuk beban kerja RAG?

Satu kredit per pertanyaan untuk sebagian besar pipeline. Kredit pencarian tidak memiliki tanggal kedaluwarsa: yang tidak Anda pakai bulan ini masih ada tahun depan.

| Paket | Jumlah | Harga | Harga per unit |
| --- | --- | --- | --- |
| Coba | 5.000 pencarian | US$9,25 | US$1,85/1K pencarian |
| Builder | 25.000 pencarian | US$41,25 | US$1,65/1K pencarian |
| Produksi | 100.000 pencarian | US$145 | US$1,45/1K pencarian |

Di setiap paket: 3 halaman teratas dibaca sebagai Markdown · Filter negara, bahasa, waktu dan domain · Panggilan gagal tidak dikenai biaya · Kredit tidak pernah kedaluwarsa

**Sebelum Anda membayar**

- Top-up minimum US$25. Isi ulang sekali dengan kripto, lalu beli paket apa pun dari saldo Anda.
- Saldo Anda tidak kedaluwarsa dan dapat dipakai untuk membeli kredit pencarian kapan pun Anda mau. Jika sebuah pack lebih murah daripada top-up minimum, bagian yang Anda bayar hanya untuk mencapai minimum tersebut akan dikembalikan kepada Anda atas permintaan dalam 30 hari sejak pembayaran, dalam USDT atau USDC, dengan syarat bagian itu belum terpakai. Sisa saldo tidak dikembalikan kecuali diwajibkan oleh hukum.
- Dikreditkan setelah pembayaran Anda diperiksa di blockchain. Waktu konfirmasi jaringan yang umum: BTC ≈ 20 menit · USDT TRC-20 ≈ 1 menit · USDT ERC-20 ≈ 5 menit · USDC ERC-20 ≈ 5 menit · ETH ≈ 5 menit · SOL ≈ 1 menit · LTC ≈ 15 menit

## RAG web langsung: pertanyaan umum

### Bisakah saya menggunakan LangChain atau LlamaIndex?

Bisa. [Halaman LangChain dan LlamaIndex](https://llmwebsearch.com/id/docs/langchain/) membungkus pencarian sebagai retriever dan sebagai tool.

### Bisakah saya mengambil dari URL yang sudah saya ketahui?

Bisa, dengan [endpoint extract](https://llmwebsearch.com/id/docs/extract/). Membaca halaman yang URL-nya sudah Anda miliki dikenakan 1 kredit untuk setiap grup 3 halaman yang mulai dikembalikan beserta kontennya, hingga 20 URL per panggilan; URL yang ditolak atau gagal tidak dihitung.

### Apakah LLMWebSearch menyimpan halaman yang dibacanya untuk saya?

Tidak. Setiap panggilan meninggalkan satu baris log: waktu, akun, 60 karakter pertama kueri, berapa hasil dan halaman yang dikembalikan, serta kreditnya. Baris dihapus setelah 30 hari. Konten halaman yang kami baca tidak disimpan. Nomor akun, pesanan, top-up, dan total kredit tetap ada selama akun ada, lalu hanya selama hukum akuntansi menghendakinya. Otoritas menerima catatan hanya ketika hukum memaksa kami.

### Bisakah saya membatasi pengambilan ke satu bahasa atau negara?

Bisa. Atur `language` dan `country`, misalnya `language=de` dan `country=de` untuk hasil berbahasa Jerman dari Jerman.

---

LLMWebSearch: LLMWebSearch adalah API pencarian web untuk agen AI yang mengembalikan hasil berperingkat beserta konten halaman teratas dalam Markdown, dibayar dengan kripto tanpa unggah ID. Kredit prabayar mulai dari US$1,20/1K pencarian tidak pernah kedaluwarsa. Tanpa KYC — tanpa ID, tanpa selfie, tanpa dokumen. Bayar dengan kripto.
