前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
返回 AI 情报前线
All News · 全部资讯4904
  • Ilya Sutskever新公司SSI首模型曝光:剑指持续学习
  • DeepSeek V4 Pro 0813发布:1M上下文+工具调用+Thinking模式
  • 研究揭示:AI Agent技能仅12%经过安全审计,覆盖83%安装量
  • MCP服务器多实例实战:15个Safari-MCP并发部署踩坑全记录
  • LangChain构建语音Agent:架构、流式与生产级模式
  • Hermes Soul:让Copilot外壳调用Agent工具链实现内联编辑
  • LLM幻觉深度解析:AI为何编造内容及工程应对策略
  • Playwright AI Agent:自主浏览器自动化的完整工程指南
  • 一致性≠正确性:企业AI需要持续评估的R.A.H.S.I.框架
  • LLM账单有两个杠杆,你们团队只拉了一个
  • SFT 中究竟什么被 token 化:chat template 底层机制详解
  • 社区平台工程指南:Feed不是查询
  • 发布MCP服务器前的安全检查清单
  • Agent工具调用劫持:注入模式与运行时防护
  • AI Agent成本预测:在用户点击运行前估算工作流开销
  • 为何 AI Agent 指令文件总在多台机器间漂移
  • AI 水印无法真正证明作者身份——而且这才是关键
  • 企业级 AI 编程 ROI 量化实践:LoongSuite-Pilot + SLS
  • AI Agent 缺控层:R.A.H.S.I. 框架解决生产级连续保障
  • Grok 4.6 发布:50 万上下文、xhigh 推理级,60 分跻身第一梯队
  • AI Agent 搜索落地指南:减少幻觉的四大实践
  • 截图搜索 App 实战架构:端侧 OCR + Gemini 分类
  • 幂等性:让发布 Agent 不怕中途被杀
  • AI Agent 安全:教程里不会教的防护层
  • 2026生产级AI Agent实战指南:评估体系、生产架构与竞争策略
  • 企业级多Agent架构设计:Agent Mesh实现跨框架互操作
  • 上下文工程:6 文件替代全量历史,Token 消耗降 84%、准确率升 39%
  • AI 编码 Agent 需要确定性验收边界
  • 批处理中的静默失败:十条日志全成功仅两条执行
  • Pest 5:用测试工作流重新定义 Agent 代码验证
  • AI Agent的记忆检索正常却答错了:信息过期的隐性陷阱
  • AI编程的质量瓶颈在于上下文,而非模型本身
  • 自进化AI Agent正在淘汰静态脚手架:2026技术架构解析
  • AMD收购Taalas:芯片级AI推理的时代来了
  • Embabel:JVM上的Spring之父新作,Kotlin编写的企业级Agent框架
  • 6000+评论揭示:Cursor是AI编程安全问题最多的工具
  • 2026年AI编程工具横评:9款主流Harness对比与模型选配指南
  • LTX-2:首个DiT架构音视频生成模型开源
  • 33个生产Agent运行经验:记忆持久化模式总结
  • VLM+DOM Diff实现低误报的UI回归测试
  • 新模型来了?先用自己仓库的历史 commit 跑一遍
  • 廉价新模型上线前,我用 2 小时金丝雀测试决定要不要切
  • 免费模型评测后再付费:AI 编程任务的评估工作流
  • Meta 30B本地Agent模型Mac实测对比
  • 用测试套件自动分流免费/付费模型的工作流
  • Switchyard:Rust 编写的 LLM 流量代理,支持 OpenAI/Anthropic 协议互转
  • RAGFlow v0.4:开源 RAG 引擎支持 DeepSeek v4 与多渠道聊天
  • 廉价模型优先、失败时升级:构建可审计的双层 LLM 流水线
  • 2026年Claude Code最佳替代工具横评
  • DeepSeek-V4-Pro 正式版发布:Agent 能力大幅提升,支持 Responses API
  • AI编程工具选型:别比补全速度,比执行位置
  • 已加载 51 / 4904
8.0
热点
AI SCORE
编程提效2026-08-13 14:16

AI Agent 搜索落地指南:减少幻觉的四大实践

dev.to · AI#Agent#RAG#AI工程化
Editor brief · 编辑速览

梳理搜索增强 Agent 的四大失败模式(结果过期、 paraphrase 漂移、无来源标识、工具形态不匹配)并给出检索契约、查询构造、引用强制和验证通道的具体解法。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

为什么朴素检索反而让 Grounding 更糟

所有人起步时都是把搜索结果一股脑塞进上下文窗口,然后听天由命。实践中会碰到四种典型失败模式:

结果过期。 排第一的搜索结果是一年前的,模型毫不知情。没有时间戳、没有新鲜度窗口、不会重新检索。

** paraphrase drift(改写漂移)。** 模型读了一遍来源,用自己的话重新组织,在重新表述的过程中悄悄丢掉或扭曲了关键的那个数字。答案"有搜索依据",但仍然是错的。

上下文污染。 塞进去十五段摘要后,模型偏偏盯上了那段看起来最合理、却与其他段落相矛盾的段落。更多上下文反而让情况更糟,而不是更好。

输出无法验证。 回复里没有 URL、没有引用片段、没有方式让人类——或者第二轮 agent 核查——去核实任何一个声明。

Grounding 失败,十次有九次出在检索层,而不是生成层。先把契约修好。

用 Web Search Retrieval 为 AI Agent 做 Grounding:定义检索契约

第一个决策是 agent 实际接收到的是什么。原始抓取的 HTML 不是 grounding 材料,结构化的结果才是:

{
  "query": "30-year fixed mortgage rate",
  "freshness": "7d",
  "k": 5,
  "results": [
    {
      "title": "Mortgage rates today",
      "url": "https://example.com/mortgage-rates",
      "snippet": "The average 30-year fixed rate is 6.1% as of Aug 10.",
      "published": "2026-08-10",
      "score": 0.93
    }
  ]
}

每个字段都有它存在的理由:published 让模型能够推理新鲜度,score 给它一个判断冲突的弱信号,url 是引用锚点,而 snippet 才是模型被允许直接引用的内容。如果你的搜索工具返回不了这个形状,用一个适配器包装它——你的 prompt 工程会感谢你。

查询表述:先拆解再搜索

Agent 内部的问题不是搜索查询。"把 Postgres 备份到 S3 最好的方式是什么?"是一句对话;而搜索层想要的是 "postgres backup to s3 best practices"、"postgres pg_dump to s3"、"postgres backup tools comparison"。

有效的模式是:把 agent 的问题拆成 2-3 个具体的子查询,并行执行,然后按来源质量而非顺序合并。对于任何易变的事物——价格、版本、分数、可用性——加上时间范围限定。对于一个每周都会变化的事实,一个没有新鲜度限定的查询就是一次多此一举的幻觉。

把来源紧绑在事实上

这一条能解决大部分幻觉,而且零成本。不要让模型把检索到的事实 paraphrasing(改写)进答案却不给那条具体声明附上引用。两个机制让它生效:

把 snippet 在上下文中加上引号,让模型的输出锚定在确切措辞上,而不是对页面的模糊记忆。

在输出格式中要求每个声明都有引用——先给答案,然后标注 [source: url]——对于模型无法关联到已检索 snippet 的声明直接丢弃。

听起来很严苛,但这就是"跟你争论的 agent"和"展示推理过程的 agent"之间的区别。下面的验证环节之所以能成立,正是因为这个格式存在。

用来源验证答案

第二轮审查能捕获第一轮没能发现的问题。把起草的声明与已检索的 snippet 逐条核对:

数字精确匹配。对于价格、版本、日期:snippet 里真的这么说了吗?

跨来源一致性。对于易变事实,要求两个独立结果一致,不一致时让 agent 明确说明。

新鲜度复查。如果答案依赖于"最新",重新检索而不是信任第一次拉取的结果。

诚实失败。允许的输出只有"已确认"和"无法确认"两种。"无法确认"是合法的答案。

这把 grounding 从对上下文窗口的一次侥幸尝试变成了一个循环——检索→起草→验证→失败时重新检索——而不是单程票。

工具链决定了整个循环能否撑过生产

以上每一步都假设搜索步骤是一次可靠的、结构化调用。但在实践中这正是 grounding 管道最容易挂掉的地方:爬虫换个页面布局就坏了、浏览器自动化撞上 rate limit、API key 周五过期。

这也是我停止手写爬虫的时刻。Grounding 循环需要一个结构化的搜索能力(JSON 输出,不是 HTML)、能从 agent 自己的 runtime 触达、可以一键安装——形状跟一个设计良好的检索微服务一样,但没有 REST 那套繁琐的东西。这正是 agent 原生工具在 Pilot Protocol 上的样子——一个面向 AI agent 的开源覆盖网络。它在应用商店里提供了一个有 grounding 的 Web Search 应用——发现、安装、调用:

pilotctl appstore install io.pilot.cosift
pilotctl appstore call io.pilot.cosift cosift.search '{"q":"latest stable postgres release","k":"5"}'

JSON 进、JSON 出。重量级的搜索后端跑在别处;agent 拿到的是一个本地类型化适配器,接口稳定,安装时自动启动。同一个应用可以被网络上 243k+ 的 agent 发现——这是"下个季度还会有人维护"的不错指标。而且它直接嵌入上面的检索契约,不需要一行胶水代码。

我仍然自己写契约、查询拆解和验证环节——那些是任何工具都替代不了你做判断的地方。但检索步骤从一个需要自己维护的爬虫变成一条命令安装,这才是 grounding 循环能交付而不是慢慢烂掉的区别所在。


核心要点:

把 agent 的问题拆解为范围明确的子查询。

通过稳定、类型化的搜索工具检索结构化结果。

用带引号的 snippet 起草,每个声明附上引用。

对照来源验证每条声明;失败时重新检索。

用引用回答——或者承认无法确认。


Grounding 是一条管道,不是一句 prompt。把检索契约做好、让每个事实都紧绑来源、先验证再回答、让搜索步骤成为一个稳定类型化的调用而不是爬虫。你的 agent 仍然会犯错——但它会带着来源犯错,这是一个可调试的问题,而不是信任问题。

想试试工具链这边?整个网络一条命令安装:

curl -fsSL https://pilotprotocol.network/install.sh | sh

然后 pilotctl appstore catalogue 查看有什么可用——包括上面的有 grounding 搜索应用。如果你在生产环境里已经跑通了一个 grounding 循环,我很想知道你的检索契约长什么样。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
Grok 4.6 发布:50 万上下文、xhigh 推理级,60 分跻身第一梯队
下一篇
截图搜索 App 实战架构:端侧 OCR + Gemini 分类