如何为 LlamaIndex 代理加入实时网页搜索
学习如何为 LlamaIndex 代理加入实时网页搜索。本文涵盖网页搜索工具、结构化搜索结果、来源筛选、国家和语言设置、RAG 工作流程、SDK 和 MCP 集成,以及 TalorData 使用场景。
LlamaIndex 代理适合用来建立能推理、使用工具、检索上下文,并回答用户问题的 AI 应用。
但它常遇到一个问题。
很多问题需要最新的网页信息。
用户可能会询问今天的商品价格、最新公司新闻、竞争对手排名、搜索结果、政策更新、新产品发布,或公开网页上的最新变化。如果代理只能依赖静态知识库,就可能漏掉近期信息。
这就是实时网页搜索的价值。
把网页搜索工具加入 LlamaIndex 代理后,代理就可以在需要最新信息时搜索网页、提取结构化结果、选择相关来源,并把这些结果用在最终回答中。
实际流程如下:
用户问题
↓
LlamaIndex 代理
↓
实时网页搜索工具
↓
结构化搜索结果
↓
来源筛选
↓
基于最新网页情境回答
这篇文章会说明如何为 LlamaIndex 代理加入实时网页搜索、应该返回哪些数据、如何设计搜索工具,以及 TalorData 如何支持这类工作流程。
为什么要为 LlamaIndex 代理加入实时网页搜索?
一般 LlamaIndex 代理可以很好地使用内部文档、知识库和预先定义的工具。
但很多真实业务问题都依赖实时或近期更新的网页数据。
示例:
| 用户问题 | 为什么需要实时搜索 |
| 这个市场最近有哪些价格变化? | 价格可能频繁变动 |
| 哪些竞争对手本月发布了新产品? | 产品发布具有时效性 |
| 今天哪些来源在这个关键词下排名靠前? | 搜索结果会随时间变化 |
| 最近大家如何讨论这个品牌? | 公开网页内容会快速变化 |
| 这个研究任务应该使用哪些来源? | 来源发现需要最新搜索 |
| 这项政策或文档发生了什么变化? | 静态知识可能已经过期 |
没有实时搜索时,代理只能根据已有上下文回答。
有了实时搜索后,代理可以在回答前判断是否需要检索最新网页数据。
目标不是让代理每个问题都搜索。
目标是在问题依赖外部最新信息时,提供一个可靠的搜索工具。
网页搜索工具应该做什么?
给 LlamaIndex 代理使用的网页搜索工具,不应该只是返回一大段原始 HTML。
那会给模型太多噪声,却缺少清晰结构。
更好的网页搜索工具应该返回干净、结构化的搜索结果。
有用字段包括:
| 字段 | 为什么重要 |
| 标题 | 帮助代理理解结果主题 |
| 网址 | 显示来源页面 |
| 域名 | 帮助识别来源 |
| 摘要 | 提供内容简短预览 |
| 排名位置 | 显示结果顺序 |
| 搜索引擎 | 适合多搜索引擎工作流程 |
| 国家 | 适合特定市场搜索 |
| 语言 | 适合本地化回答 |
| 设备 | 适合 SEO 或搜索结果比较 |
| 采集时间 | 显示数据检索时间 |
简单结果可以是:
{
"position": 1,
"title": "2026 Market Report for Smart Home Devices",
"url": "https://www.example.com/smart-home-market-report",
"domain": "example.com",
"snippet": "A recent report covering market trends, major brands, product categories, and pricing changes.",
"collected_at": "2026-07-15T09:00:00Z"
}
这种格式更方便代理阅读、筛选、引用、摘要,并传入 RAG 工作流程。
代理什么时候应该使用网页搜索?
不是每个问题都需要网页搜索。
当答案依赖最新、公开或外部信息时,代理才应使用实时搜索。
适合触发搜索的情况包括:
| 触发条件 | 示例 |
| 时效性 | latest、recent、today、this week、2026 |
| 市场研究 | 竞争对手、定价、市场趋势 |
| 搜索可见度 | 排名、搜索结果、排名靠前页面 |
| 来源发现 | 寻找来源、采集网址、比较页面 |
| 公开网页更新 | 政策变更、公告、产品发布 |
| 本地或区域数据 | 国家特定结果、语言特定结果 |
| 商品研究 | Shopping 结果、卖家页面、商品比较 |
代理不一定需要搜索的问题包括:
| 问题类型 | 更合适的来源 |
| 内部政策问题 | 内部知识库 |
| 用户账户问题 | 内部数据库或 API |
| 历史概念解释 | 已建立索引的文档 |
| 私有公司数据 | 已授权内部来源 |
| 已索引的静态文档 | 既有 RAG 索引 |
这种区分很重要。
搜索工具应该改善回答,而不是把每个任务都变成缓慢的网络寻宝。
简单的 LlamaIndex 网页搜索架构
清晰架构通常包含四层:
| 层级 | 作用 |
| 代理 | 判断是否要调用搜索工具 |
| 搜索工具 | 采集结构化网页搜索结果 |
| 筛选层 | 选出相关结果并移除噪声 |
| 回答层 | 使用选中的结果回答用户 |
实际流程:
用户提出问题
↓
代理判断是否需要最新网页数据
↓
代理调用 web_search(query, country, language, device)
↓
搜索工具返回结构化结果
↓
代理筛选相关标题、摘要和网址
↓
代理基于最新来源情境回答
这可以让系统保持聚焦。
搜索工具负责检索数据。
代理负责理解数据。
最终回答只使用和用户问题相关的结果。
步骤 1:定义搜索工具
先定义搜索工具应该接收什么,并返回什么。
简单搜索工具可以接收:
| 参数 | 用途 |
| query | 搜索查询 |
| country | 目标国家或市场 |
| language | 搜索结果语言 |
| device | 桌面或移动设备 |
| num_results | 返回结果数量 |
工具输入示例:
{
"query": "latest smart home device market trends",
"country": "us",
"language": "en",
"device": "desktop",
"num_results": 10
}
工具输出示例:
{
"query": "latest smart home device market trends",
"country": "us",
"language": "en",
"results": [
{
"position": 1,
"title": "Smart Home Device Market Trends 2026",
"url": "https://www.example.com/smart-home-trends",
"domain": "example.com",
"snippet": "Recent trends in smart home devices, including security, energy management, and connected appliances."
}
]
}
这会让工具更可预期。
可预期的工具更容易被代理调用,也更容易让开发者调试。
步骤 2:把网页搜索包装成代理工具
在 LlamaIndex 中,代理可以使用工具执行外部动作。
网页搜索函数可以被包装成可调用工具,然后提供给代理使用。
概念型 Python 示例:
def web_search(query: str, country: str = "us", language: str = "en") -> dict:
"""
Search the public web and return structured results.
Use this tool when the user needs fresh public information,
recent market data, search result pages, or source discovery.
"""
results = search_api.search(
query=query,
country=country,
language=language,
device="desktop"
)
return {
"query": query,
"country": country,
"language": language,
"results": results
}
真正重要的是工具描述。
代理需要理解什么时候应该使用这个工具。
不好的描述:
Search the web.
更好的描述:
Search the public web for fresh or recently updated information. Use this tool for current events, market research, competitor research, product pricing, search result analysis, source discovery, and questions that require up-to-date public web context.
工具描述不是装饰。
它会影响代理如何做决策。
步骤 3:保持搜索结果结构化
除非任务真的需要完整页面内容,否则不要直接把巨大原始页面丢给代理。
第一步通常只需要结构化搜索结果。
好的搜索结果对象包含:
{
"position": 1,
"title": "Example Market Report",
"url": "https://www.example.com/report",
"domain": "example.com",
"snippet": "A short summary of the page content.",
"type": "organic",
"collected_at": "2026-07-15T09:00:00Z"
}
这可以帮助代理:
- 比较来源
- 选择相关网址
- 理解搜索意图
- 识别来源域名
- 避免阅读不相关页面
- 判断是否需要进一步抓取页面
一条有用规则是:
先搜索,再按需抓取完整页面。
这能让流程更快、成本更低,也更容易控制。
步骤 4:加入来源筛选
原始搜索结果不一定直接有用。
代理应该在使用结果前先筛选。
有用筛选规则包括:
| 规则 | 作用 |
| 移除不相关结果 | 降低噪声 |
| 优先保留权威域名 | 提高来源质量 |
| 移除重复网址 | 避免重复上下文 |
| 按域名分组 | 避免单一网站占据全部结果 |
| 保留最相关的前几个结果 | 控制 token 使用量 |
| 保存采集时间 | 保留新鲜度情境 |
筛选逻辑示例:
从 10 条搜索结果开始。
移除不相关结果。
移除重复网址。
按域名分组。
保留 3 到 5 个最相关来源。
在回答或 RAG 工作流程中使用这些来源。
这很重要,因为搜索结果是来源发现数据。
它们不是自动成立的最终证据。
代理应该先选择来源,再摘要或回答。
步骤 5:判断何时抓取来源页面
有时标题和摘要已经足够。
有时代理需要完整页面内容。
以下情况适合抓取完整页面:
| 情况 | 为什么需要抓取 |
| 用户要求详细比较 | 摘要太短 |
| 回答需要精确主张 | 需要完整页面上下文 |
| 代理需要摘要某个来源 | 需要页面内容 |
| 来源网址要进入 RAG | 页面应被索引 |
| 摘要含糊不清 | 完整内容可以降低不确定性 |
安全流程:
搜索网页
↓
选择相关来源网址
↓
抓取选中页面
↓
提取干净内容
↓
作为上下文使用
↓
生成回答
这比盲目抓取所有结果更好。
重点是采集足够上下文,而不是把整个互联网当成自助餐塞给模型。
步骤 6:加入国家和语言设置
如果代理可以按国家和语言搜索,实时搜索会更有用。
例如,市场研究代理可能需要分别搜索美国、德国和日本的结果。
有用设置包括:
| 设置 | 示例 |
| 国家 | us、gb、de、jp |
| 语言 | en、de、ja |
| 设备 | desktop、mobile |
| 结果数量 | 10、20、50 |
| 时间范围 | 支持时可使用近期结果 |
示例:
{
"query": "electric scooter price comparison",
"country": "de",
"language": "de",
"device": "desktop"
}
这让代理可以回答特定市场问题。
用户问题示例:
比较德国和美国可见的 electric scooter 来源。
代理可以执行两次搜索:
搜索 1:electric scooter price comparison,country = de,language = de
搜索 2:electric scooter price comparison,country = us,language = en
然后比较来源域名、标题、摘要和排名模式。
步骤 7:在 RAG 工作流程中使用搜索结果
实时网页搜索也可以支持 RAG 流程。
常见模式:
用户问题
↓
代理搜索网页
↓
代理选择相关来源网址
↓
系统抓取或提取选中页面
↓
页面加入临时上下文或向量索引
↓
代理使用网页上下文回答
这适合:
| 工作流程 | 示例 |
| 研究助手 | 根据最新网页来源建立简报 |
| 竞争对手研究 | 比较可见竞争对手页面 |
| 市场监控 | 追踪新的公开更新 |
| SEO 助手 | 分析搜索结果标题和摘要 |
| 商品研究 | 采集商品页和卖家来源 |
| 新闻监控 | 摘要近期公开更新 |
搜索结果适合做来源发现。
当系统需要选中来源的深层内容时,RAG 才更有用。
不要混淆两者。
搜索负责找到候选来源。
RAG 负责使用被选中的内容。
步骤 8:保存搜索日志和快照
如果代理在生产环境中使用网页搜索,应保存搜索日志。
有用字段包括:
| 字段 | 用途 |
| user_query | 原始用户问题 |
| search_query | 传给搜索工具的查询 |
| country | 目标国家 |
| language | 搜索语言 |
| results | 结构化搜索结果 |
| selected_urls | 最终回答使用的网址 |
| collected_at | 搜索时间 |
| agent_decision | 代理为什么搜索 |
| final_answer_id | 对应的最终回答 |
这有助于:
- 调试
- 评估
- 质量控制
- 来源审核
- 成本追踪
- 可重复性
- 合规审核
一个能搜索网页的代理不应该是黑箱。
如果它搜索了,你应该知道它搜了什么、找到什么,以及用了哪些来源。
TalorData 如何帮助为 LlamaIndex 代理加入实时网页搜索?
TalorData 可以作为 LlamaIndex 代理的结构化网页数据层。
团队不需要自行建立和维护搜索采集、网页抓取、解析、清洗和结构化提取流程,而是可以使用 TalorData 为代理工作流程提供实时搜索和网页数据工具。
TalorData 支持两种实用集成方式:
| 集成方式 | 适合场景 |
| Python SDK | 快速原型、概念验证、单代理应用、本地开发 |
| MCP Server | 生产环境、多代理系统、共享工具能力、团队工作流程 |
实际 TalorData 和 LlamaIndex 工作流程如下:
用户问题
↓
LlamaIndex 代理
↓
TalorData 网页搜索工具
↓
结构化搜索结果
↓
可选的来源抓取或提取
↓
提供给代理的最新上下文
↓
最终回答、报告或 RAG 工作流程
TalorData 可以支持这些工作流程:
| 工作流程 | 实时搜索如何帮助 |
| 研究助手 | 检索最新公开网页结果 |
| 竞争对手研究 | 比较可见来源和页面 |
| SEO 助手 | 分析搜索结果标题、摘要和网址 |
| 市场监控 | 追踪公开来源中的近期更新 |
| 商品研究 | 采集最新商品和卖家页面 |
| RAG 问答 | 为静态索引之外的问题补充最新来源 |
| 内容助手 | 基于近期搜索结果生成简报和草稿 |
核心价值不只是取得网页数据。
真正的价值是让代理获得结构化、可重复使用、可配置、可筛选、可记录,并能安全接入工作流程的网页数据。
结语
为 LlamaIndex 代理加入实时网页搜索,可以让代理更好地回答依赖最新公开信息的问题。
基本流程是:
定义代理何时应该搜索。
建立结构化网页搜索工具。
返回标题、网址、域名、摘要和时间戳。
筛选相关结果。
只在需要时抓取来源页面。
在回答或 RAG 工作流程中使用选中结果。
保存搜索行为,用于审核和评估。
对研究助手、SEO 工具、竞争对手监控、市场研究、商品分析和 RAG 应用来说,实时网页搜索可以让 LlamaIndex 代理获得最新网页情境。
静态知识库告诉代理它已经知道什么。
实时网页搜索帮助代理找到外部世界发生了什么变化。
FAQ
LlamaIndex 代理可以使用实时网页搜索吗?
可以。LlamaIndex 代理可以把网页搜索函数作为可调用工具使用。工具可以返回标题、网址、域名、摘要和时间戳等结构化搜索结果。
LlamaIndex 代理什么时候应该使用网页搜索?
当问题依赖最新公开信息、近期市场数据、竞争对手研究、搜索结果分析、商品价格或来源发现时,应使用网页搜索。
搜索工具应该返回原始 HTML 吗?
通常不需要。更好的做法是先返回结构化搜索结果。只有当代理需要更深来源内容时,才抓取完整页面。
网页搜索结果可以用于 RAG 吗?
可以。搜索结果可以帮助发现相关来源网址。选中的页面可以再被抓取、清洗,并作为 RAG 工作流程中的上下文。
SDK 集成和 MCP 集成有什么不同?
SDK 集成通常更适合快速原型和单代理应用。MCP Server 集成更适合生产系统、多代理工作流程,以及跨团队共享工具能力。