type
Post
status
Published
date
May 14, 2026
slug
agent39
summary
tags
Agent
category
icon
password
核心结论:静态知识库适合回答“稳定、私有、可治理、需要一致性”的问题;动态网页检索适合回答“实时、公开、快速变化、需要外部验证”的问题。生产级 RAG 不应该把二者做成二选一,而应该做成一个 Knowledge Router:先判断问题的时效性、权限边界、可信来源和答案置信度,再决定走静态库、动态网页,还是混合检索。
一、为什么这个问题在 RAG 中很重要?
RAG 的本质不是“把所有资料都塞进向量库”,而是让模型在生成答案前,能够访问合适的外部上下文。
LangChain 对 Retriever 的定义很关键:Retriever 是“给定非结构化查询,返回 Document 的接口”,它并不等同于向量库;向量库可以变成 Retriever,但 Retriever 也可以来自其他数据源。这个定义说明,在工程上我们应该把“静态知识库”和“动态网页检索”都抽象成 Retriever,然后由上层路由器选择使用哪一个。(LangChain 文档)
现在主流 Agent / RAG 系统基本都在往这个方向演进:
Claude 的 Web Search 工具允许模型在需要时访问实时网页内容,并在最终回答中给出引用;新版还支持动态过滤,在内容进入上下文窗口前先筛掉无关网页内容,以减少 token 消耗和噪声。(Claude Platform)
Claude Code Agent SDK 暴露了与 Claude Code 类似的工具和 agent loop,其中包括 WebSearch、WebFetch、文件读取、命令执行、编辑代码等工具,这说明成熟 Coding Agent 通常把“本地上下文”和“外部网页”放在同一个工具调度体系下。(Claude Code)
OpenCode 也内置了
webfetch 和 websearch:websearch 用于发现信息,webfetch 用于读取指定 URL,文档明确建议发现阶段用 websearch、已知 URL 抓取阶段用 webfetch。(OpenCode)OpenClaw 的
web_search 支持可配置 provider,结果默认按 query 缓存 15 分钟;它也区分轻量 HTTP Web Search / Web Fetch 和真正的浏览器自动化,并建议 JS-heavy 或登录场景使用浏览器工具。(OpenClaw)Haystack 的 Agentic RAG 示例则采用了更典型的“静态库优先,无法回答再 fallback 到动态 Web Search”的设计。(Haystack)
LlamaIndex 的 Agentic Retrieval 进一步展示了多知识库路由:上层用 LLM 分类决定查询哪个子索引,子索引内部再选择 chunk、metadata、content 等不同检索模式。(llamaindex.ai)
二、先定义:什么是静态知识库,什么是动态网页检索?
1. 静态知识库
静态知识库一般指企业或项目主动采集、清洗、切分、向量化、索引后的知识源,例如:
类型 | 示例 |
企业内部文档 | PRD、技术方案、会议纪要、SOP、FAQ |
产品文档 | API 文档、SDK 文档、部署手册 |
代码仓库知识 | README、源码、注释、Issue、PR |
业务知识库 | 客服知识、法务条款、财务制度 |
离线资料 | PDF、Word、PPT、HTML dump、Confluence 导出 |
OpenAI 的 File Search 就是典型静态知识库工具形态:它通过 vector store 检索文件,并且允许控制返回结果数量;文档也明确指出减少返回结果可以降低 token 和延迟,但可能牺牲答案质量。(OpenAI开发者)
2. 动态网页检索
动态网页检索指在用户提问时实时调用搜索引擎、网页抓取、搜索 API、浏览器自动化等工具,例如:
类型 | 示例 |
搜索 API | Google、Bing、Brave、Tavily、Exa、SerpAPI |
网页抓取 | fetch URL、Firecrawl、Browser-use |
AI 原生搜索 | Perplexity、Exa、Tavily、OpenAI Web Search |
浏览器自动化 | 登录后页面、JS 渲染页面、多步骤网页任务 |
OpenAI 的 Responses API 可以通过
{ "type": "web_search" } 启用 Web Search,模型会根据输入决定是否搜索网页。(OpenAI开发者)LlamaIndex 的 Exa 工具也提供了自然语言 Web Search,并支持 include domains、exclude domains、发布时间过滤等参数。(Developer Documentation)
三、一句话判断标准
问题依赖“你掌控的数据”时,用静态知识库。问题依赖“世界刚刚发生了什么”时,用动态网页检索。问题既涉及内部规则又涉及外部变化时,用混合检索。
举几个例子:
用户问题 | 推荐检索方式 | 原因 |
“我们公司的报销制度是什么?” | 静态知识库 | 内部制度、权限敏感、要求一致性 |
“这周 OpenAI API 有什么新变化?” | 动态网页检索 | 时效性强,依赖最新公开信息 |
“我们当前 SDK 是否兼容最新版 LangChain?” | 混合检索 | 需要内部 SDK 代码 + 外部最新 LangChain 文档 |
“产品 A 的历史故障原因是什么?” | 静态知识库 | 来自内部工单、日志、复盘文档 |
“今天美元兑日元是多少?” | 动态网页检索 | 实时市场数据 |
“根据公司安全规范,能否接入 Tavily 做网页检索?” | 混合检索 | 内部合规文档 + 外部服务条款 / 技术文档 |
四、静态知识库适合什么场景?
1. 知识稳定、更新周期慢
例如:
产品说明书法务条款内部流程历史技术方案代码仓库文档API 使用手册客服 FAQ
这类知识不是每分钟都变,适合做离线 indexing。
优点是检索快、成本低、可控性强、结果可复现。
典型 pipeline 如下:
2. 数据是私有的,不能直接交给外部搜索
企业内部文档、客户数据、代码仓库、合同、财务制度等都不应该通过普通 Web Search 查询。
这类场景的核心不是“能不能搜到”,而是:
谁有权限看?哪个版本有效?是否可以审计?是否符合合规要求?是否能做到回答可追溯?
所以静态知识库要配合:
能力 | 作用 |
ACL 权限过滤 | 不同用户只能检索自己有权限的文档 |
metadata filter | 按业务线、版本、部门、时间过滤 |
文档版本管理 | 避免旧制度污染答案 |
引用溯源 | 回答必须引用 chunk / 文件 / 页码 |
离线评测集 | 持续评估召回率、准确率、幻觉率 |
3. 需要一致性和可复现
例如客服机器人、法务问答、医疗辅助、财务制度解释,不适合每次都在 Web 上随机搜。
静态库的优势是:
同一个问题,在同一版本知识库下,应该得到稳定答案。如果答案错了,可以回溯到具体文档和 chunk。如果知识过期,可以通过重新索引修复。
动态网页检索的结果受搜索排名、网页变化、爬取失败、SEO 垃圾内容影响,不适合作为强一致业务规则的主来源。
4. 需要低延迟、低成本、高吞吐
静态库一般可以做到:
项目 | 静态知识库 |
延迟 | 毫秒到秒级 |
成本 | 主要是向量检索和少量 rerank |
可缓存 | 很容易缓存 |
稳定性 | 高 |
可观测性 | 强 |
动态网页检索通常涉及搜索 API、网页抓取、HTML 清洗、反爬、JS 渲染,延迟和失败率都更高。
五、动态网页检索适合什么场景?
1. 问题强依赖最新信息
典型关键词包括:
今天、现在、最新、最近、刚发布、价格、版本、新闻、政策、比赛结果、榜单、招聘、漏洞、公告、变更日志
这类问题如果只用静态库,很容易回答过期。
例如:
问题 | 为什么需要动态网页 |
“Claude Code 现在支持哪些工具?” | 工具列表和权限策略可能变化 |
“OpenCode websearch 怎么开启?” | 文档和环境变量可能更新 |
“某个 CVE 是否已经有补丁?” | 安全信息强时效 |
“某产品今天价格是多少?” | 价格实时变化 |
“某个开源项目最新 release 改了什么?” | GitHub release / changelog 持续变化 |
Claude Web Search 文档明确把实时网页内容用于突破模型知识截止时间,并支持最终回答带引用。(Claude Platform)
OpenCode 文档也把 websearch 定位为“研究当前事件或训练数据截止之后的信息”。(OpenCode)
2. 静态库召回不到,或者答案置信度低
Haystack 的 Agentic RAG 示例就是这种思路:先在数据库中做 RAG,如果无法从数据库文档回答,再切换到 Web Search fallback。(Haystack)
这是一种非常实用的生产策略:
3. 需要外部交叉验证
有些场景即使静态库能回答,也应该用网页做验证:
技术选型开源项目活跃度安全漏洞第三方 API 是否废弃SaaS 服务价格和服务条款法规政策是否更新
例如企业内部文档写着“使用某 API v1”,但外部官方文档显示 v1 已废弃,那么系统应该提示:
内部文档可能过期,外部官方文档显示该接口已有更新。建议以官方文档为准,并同步更新内部知识库。
4. 需要探索未知领域
用户问的问题如果静态库没有覆盖,比如:
“有哪些替代方案?”“市面上主流产品怎么做?”“最近有哪些最佳实践?”“有没有相关论文或开源实现?”
这类问题不是单纯问内部知识,而是需要开放域调研。动态网页检索更合适。
六、什么时候应该混合使用?
实际生产中最常见的是混合模式。
1. 内部事实 + 外部事实
例如:
“我们项目当前使用的 LangChain 版本是否需要升级?”
需要:
来源 | 作用 |
静态知识库 / 代码仓库 | 当前项目依赖版本、代码调用方式 |
动态网页检索 | 最新 LangChain 文档、breaking changes、漏洞公告 |
2. 内部约束 + 外部候选
例如:
“给我们客服 RAG 系统选一个合适的 Web Search API。”
需要:
来源 | 作用 |
内部知识库 | 成本预算、合规要求、地域限制、数据安全要求 |
网页检索 | Tavily / Exa / Brave / Firecrawl 等最新能力和价格 |
3. 静态库答案需要 freshness 校验
例如:
“公司当前支持 GPT-4.1 吗?”
如果内部文档最后更新于 2025 年,而现在是 2026 年,这就需要网页或内部系统做更新校验。
可以给每个 chunk 加 metadata:
检索后先判断:
七、源码级设计:把静态 KB 和动态 Web 都抽象成 Retriever
成熟实现的共同点是:不要在业务层硬编码“到底查哪里”,而是封装成统一工具。
LangChain 的 Retriever 抽象本身就支持这种设计,因为 Retriever 只关心“输入 query,输出 documents”,不要求数据一定来自向量库。(LangChain 文档)
可以设计如下接口:
静态知识库 Retriever:
动态网页 Retriever:
上层不关心底层来自向量库还是网页,只关心证据质量:
八、核心模块:Knowledge Router 怎么判断走哪条路?
1. 规则路由
最简单也最稳定:
2. LLM 路由
适合复杂问题:
3. 置信度路由
不要只在查询前路由,还要在静态检索后判断是否需要 fallback。
九、推荐架构:Static First + Web Fallback + Evidence Merge
这是最适合企业落地的架构。
其中最关键的是
Enough Evidence?,它不应该只看 top-k 分数,还要看:判断项 | 说明 |
相关性 | top score 是否足够高 |
覆盖度 | 是否覆盖问题中的所有子问题 |
时效性 | 文档是否过期 |
权威性 | 来源是否是官方 / 内部 owner |
一致性 | 多个 chunk 是否互相矛盾 |
权限 | 用户是否有权查看 |
可引用性 | 是否能给出来源 |
十、动态网页检索不是越多越好
动态网页检索有几个明显风险。
1. 噪声和 token 消耗
Claude Web Search 文档明确指出,普通 Web Search 往往需要把搜索结果、完整 HTML、多个网站内容拉进上下文,其中很多内容无关,可能降低回答质量并增加 token 消耗;因此新版支持动态过滤。(Claude Platform)
这也是为什么 Web Search 后面通常要接:
domain allowlistsource rankingcontent extractiondedupfreshness filtercitation verificationcompressionrerank
LangChain 的 contextual compression 也是同一思想:先召回更多内容,再把和 query 相关的部分抽取出来,减少无关内容干扰模型。(LangChain)
2. Prompt Injection 风险
网页内容是不可信输入。OWASP 明确把间接 Prompt Injection 描述为:当 LLM 接受来自网站或文件等外部来源的输入时,外部内容可能改变模型行为。(OWASP Gen AI Security Project)
所以动态网页检索结果进入 LLM 前,建议做隔离:
同时,在工具层面要限制:
风险 | 防护 |
网页诱导模型泄露系统提示词 | 外部内容与指令隔离 |
网页诱导调用敏感工具 | 高危工具需要用户确认 |
SEO 垃圾站污染答案 | 域名白名单 / 权威源优先 |
恶意网页内容注入 | 清洗 HTML、去脚本、去隐藏文本 |
假新闻 / 低质量内容 | 多源交叉验证 |
3. 结果不可复现
今天搜到的网页,明天可能变了。
如果是审计场景,应保存:
十一、静态知识库也不是永远可靠
静态库的问题通常不是“搜不到”,而是“搜到了旧知识”。
典型问题:
问题 | 后果 |
文档未更新 | 回答过期制度 |
多版本共存 | 新旧 API 混用 |
chunk 缺少 metadata | 无法判断来源和时效 |
只做向量相似度 | 召回语义相似但业务错误的内容 |
没有权限过滤 | 泄露内部敏感资料 |
没有 rerank | top-k 中混入低质量 chunk |
没有压缩 | 无关上下文干扰模型 |
所以静态知识库应该加上:
然后检索时做 metadata filter:
十二、典型生产策略
策略 1:静态库优先,网页兜底
适合企业助手、客服机器人、内部知识问答。
策略 2:网页优先,静态库约束
适合研究助手、竞品分析、技术调研。
策略 3:并行检索,证据合并
适合复杂决策类问题。
十三、工程决策表
判断维度 | 静态知识库 | 动态网页检索 |
信息时效性 | 稳定、低频更新 | 高频变化、实时更新 |
数据来源 | 内部、私有、可治理 | 外部、公开、不可控 |
权限控制 | 强 | 弱,需要额外治理 |
可复现性 | 高 | 低 |
延迟 | 低 | 中到高 |
成本 | 可控 | 搜索 API + 抓取 + token 成本较高 |
幻觉控制 | 好做引用和审计 | 需要来源校验 |
安全风险 | 主要是权限和旧数据 | Prompt injection、网页污染、钓鱼源 |
适合场景 | 企业 QA、客服、代码库、制度问答 | 新闻、价格、版本、政策、开源动态 |
最佳实践 | metadata + rerank + eval | allowlist + freshness + citation + sandbox |
十四、推荐 Prompt:让 Agent 自己判断是否需要网页检索
十五、评估指标怎么设计?
1. 静态知识库指标
指标 | 含义 |
Recall@K | 正确证据是否被召回 |
MRR / nDCG | 正确证据排序是否靠前 |
Faithfulness | 回答是否忠于检索证据 |
Answer Correctness | 最终答案是否正确 |
Citation Accuracy | 引用是否真的支持答案 |
Staleness Rate | 使用过期文档的比例 |
Permission Leakage Rate | 是否越权召回文档 |
2. 动态网页检索指标
指标 | 含义 |
Source Authority | 是否来自官方 / 权威网站 |
Freshness | 发布时间是否满足问题要求 |
Cross-source Agreement | 多个来源是否一致 |
Fetch Success Rate | 网页抓取成功率 |
Noise Ratio | 抓取内容中无关内容比例 |
Citation Validity | 引用链接是否仍可访问 |
Injection Robustness | 是否抵抗网页中的恶意指令 |
3. 路由指标
指标 | 含义 |
Route Accuracy | 是否选择了正确知识源 |
Unnecessary Web Rate | 不必要网页搜索比例 |
Missing Web Rate | 应该搜网页但没搜的比例 |
Fallback Success Rate | 静态失败后网页兜底成功率 |
Cost per Answer | 单次回答平均检索和 token 成本 |
Latency P95 | 端到端延迟 |
十六、最佳实践总结
1. 不要把所有网页都灌进静态知识库。高频变化的信息不适合离线索引,否则知识库很快变脏。
2. 不要所有问题都 Web Search。内部制度、私有文档、代码库问题应该优先走静态库,否则会带来安全和一致性问题。
3. 给每个文档加时间、版本、owner、权限 metadata。RAG 的质量很大程度取决于 metadata,而不只是 embedding 模型。
4. 对动态网页做来源治理。优先官方文档、GitHub release、标准组织、监管机构、厂商公告,少用聚合站和 SEO 站。
5. 静态召回不足时再 fallback 到网页。这是企业 RAG 最稳妥的默认策略。
6. 对“最新”类问题默认启用网页检索。模型训练知识和静态库都可能过期。
7. 回答中区分内部证据和外部证据。尤其当二者冲突时,不要强行融合,要明确告诉用户冲突在哪里。
8. 网页内容必须视为不可信输入。OWASP 已明确指出外部网站或文件可能造成间接 Prompt Injection。(OWASP Gen AI Security Project)
十七、最终落地建议
如果你要在企业里做一个生产级 RAG,我建议默认采用下面的策略:
最推荐的系统形态是:
一句话收尾:静态知识库解决的是“可信、私有、稳定知识”的问题;动态网页检索解决的是“实时、公开、变化知识”的问题。真正成熟的 RAG / Agent 系统,不是简单选择其中一个,而是构建一个能理解问题、判断证据、评估时效、控制风险的 Knowledge Router。
分享
