# 实时网络 RAG：用搜索检索，带引用作答

> 从实时网络做检索增强生成：搜索、把排名靠前的页面读成 Markdown、分块并带引用作答。Python 代码。无需 KYC，加密货币支付。

- URL: https://llmwebsearch.com/zh/use-cases/rag/
- 最后更新: 2026-10-22
- 发布者: LLMWebSearch (https://llmwebsearch.com)

向量索引里存的还是你上个月加载的内容。有些问题需要知道网络今天怎么说。实时网络 RAG 在提问时检索：一次搜索，把排名靠前的页面读成 Markdown，取几块放入 prompt，并给出指向每页的引用。

**快速回答 — 如何用实时网络搜索结果做 RAG？**

提问时运行一次网络搜索，读取排名靠前的页面，把它们切分成块，保留最相关的若干块，再让模型带编号引用作答。**LLMWebSearch** 一次调用就完成前两步：返回排序后的结果，并把前 3 页读成 Markdown，消耗 1 个积分，US$1.20/千次搜索 起。无需 KYC；用加密货币支付。

## 什么是实时网络 RAG？

它是一种检索增强生成，其中检索步骤是一次网络搜索，而不是在自有索引里查找。问题发给搜索 API，API 返回页面，模型基于这些页面作答。

这种模式适合问会变化的事情：价格、发布、规则、日程和新闻。它也适合你自己的文档从未覆盖过的长尾问题。成本是每个问题一次搜索，第一次没找到时则两次。

## 什么时候该实时抓取，什么时候该存储？

稳定且属于你自己的内容就存储；会变化的内容就抓取。产品手册、内部政策和自有文档适合放进向量索引，按计划刷新。竞品价格、法规和新闻适合实时检索。

很多团队两者结合：先搜自己的索引，只有在索引里没有好的匹配，或问题提到近期日期时，才调用网络。

如果你决定保留检索到的页面，请注意我们的立场：我们不会用你的查询或 API 返回的内容训练任何模型，也不会自行添加任何禁止存储结果的规则；你读取的页面所属网站的权利仍然适用。在为其内容建立永久副本之前，请先查看每个网站的条款。

## 如何把搜索结果切成块？

按标题拆分每个页面，再把过长的段落切到固定长度。Markdown 让这件事很容易，因为标题就是以 `#` 开头的行。在每个块上保留来源 URL 和标题，这样切分后引用仍然有效。

下面的示例搜索、读取三个页面、对它们分块，并选出与问题共享最多词的六个块。生产环境里请把词数统计换成你的嵌入模型；结构保持不变。

*Python：带分块和编号来源的实时网络检索*

```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}"
    )
```

## 每个问题应该读多少页？

三页是个不错的起点，而且能让搜索保持在 1 个积分。大多数事实性问题都能在好查询的前两三个页面得到答案。

请求的页面可以比在聊天 agent 里更长，因为分块器反正会丢弃大部分文本。每页 `max_chars` 设为 10,000 到 15,000，能让排序器有足够内容可选。如果答案依赖某个已知站点，用 `include_domains` 把它加进来，而不是多读几页。

## 如何让模型引用来源？

在 prompt 里给来源编号，并在答案中要求给出编号。简短的指令就很有效：只使用上下文，每条论断引用为 [n]，上下文未覆盖问题时说明。

把来源列表放在 prompt 末尾，每个编号对应一个 URL。然后在界面里把 [n] 渲染成链接。用户信任可以核对的答案，错误的引用在审阅时也很容易发现。

## 如果页面被拦截或是空的怎么办？

跳过它，使用其他页面。每个结果都带有 `content_status`；只有 `ok` 的结果才有文本。某页缺失可能是因为 我们的读取器遵守 robots.txt：它会以 LLMWebSearch 表明身份，遵守网站为它或为所有机器人写下的规则，并排除任何它无权读取的页面内容。

当一次搜索的所有页面都返回空时，用一个不同的查询重试一次，或为你知道是开放的站点添加 `include_domains`。当网站拒绝我们的读取器时，结果会不带内容返回，并附上该网站的状态：我们绝不破解 CAPTCHA、不登录账户，也不绕过封锁或付费墙。

## 实时网络 RAG 要花多少钱？

大多数情况下每个问题一次搜索。一个每月回答 5,000 个问题的客服助手，五分之一的问题需要第二次搜索，大约用 6,000 次搜索。25,000 次查询 起 US$41.25，可覆盖四个月这样的用量。

你的模型还要读取你发送的块。六个 1,200 字符的块，每个问题大约增加 2,000 个 token，这可通过块大小和数量来控制。

## 哪种套餐适合 RAG 工作负载？

对大多数流水线来说，每个问题消耗一个积分。查询积分永不过期：这个月没用完的，明年还在。

| 套餐 | 数量 | 价格 | 单价 |
| --- | --- | --- | --- |
| 试用 | 5,000 次搜索 | US$9.25 | US$1.85/千次搜索 |
| 构建者 | 25,000 次查询 | US$41.25 | US$1.65/千次搜索 |
| 生产环境 | 100,000 次查询 | US$145 | US$1.45/千次搜索 |

所有套餐均包含: 前 3 个页面读取为 Markdown · 国家、语言、时间和域名筛选 · 调用失败不计费 · 积分永不过期

**付款前须知**

- 最低充值 US$25。 用加密货币充值一次，即可从余额中购买任意套餐。
- 余额中的资金不会过期，你随时可以用它购买搜索积分。当积分包的价格低于最低充值额时，你仅为达到该最低充值额而支付的部分，可在付款后 30 天内应要求退还给你，以 USDT 或 USDC 支付，前提是这笔钱尚未使用。余额的其余部分不予退还，除非法律要求退还.
- 付款在区块链上核实后即到账。 网络确认的通常时间： BTC ≈ 20 分钟 · USDT TRC-20 ≈ 1 分钟 · USDT ERC-20 ≈ 5 分钟 · USDC ERC-20 ≈ 5 分钟 · ETH ≈ 5 分钟 · SOL ≈ 1 分钟 · LTC ≈ 15 分钟

## 实时网页 RAG：常见问题

### 我可以使用 LangChain 或 LlamaIndex 吗？

可以。[LangChain 和 LlamaIndex 页面](https://llmwebsearch.com/zh/docs/langchain/) 将搜索封装为 retriever 和工具。

### 我可以从已知 URL 中检索吗？

可以，使用 [extract endpoint](https://llmwebsearch.com/zh/docs/extract/)。读取你已持有 URL 的页面：每开始一组 3 个返回内容的页面计 1 积分，每次调用最多 20 个 URL；被拒绝或失败的 URL 不计入。

### LLMWebSearch 会为我存储它读取的页面吗？

不会。每次调用留下一条日志：时间、账号、查询的前 60 个字符、返回的结果数和页面数，以及积分。日志 30 天后删除。我们读取的页面内容不保留。账号编号、订单、充值和积分总额在账户存在期间保留，之后仅在会计法律要求的时间内保留。只有在法律强制要求时，我们才会向当局提供记录。

### 我可以将检索限制为一种语言或一个国家吗？

可以。设置 `language` 和 `country`，例如 `language=de` 和 `country=de` 可获取来自德国的德语结果。

---

LLMWebSearch: LLMWebSearch 是一款面向 AI 智能体的网页搜索 API，返回排序后的搜索结果，并附带热门页面的 Markdown 格式内容，采用加密货币支付，无需上传证件。预付费积分低至 US$1.20/千次搜索，永不过期。无 KYC——无需证件、无需自拍、无需提交任何文件。加密货币支付。
