利用大语言模型进行网络搜索:我的实战经验与改进建议
我使用大语言模型主要有两大场景:编写代码和网络搜索。网上关于大语言模型辅助编程的讨论很多,但关于其辅助搜索的却少之又少,因此这里就这一话题分享一些随性的想法。
OpenAI 将其网络搜索功能称为 ChatGPT 深度研究,谷歌叫 双子座深层研究,而 Anthropic 只用“研究”这个词。无论名称如何,这些产品的工作方式都如出一辙:
- 你像在其他任何大语言模型工作流中一样输入提示词。
- 大语言模型可能会提一个澄清问题(不知为何总是只有一个,绝不超过一个)。
- 它借助传统搜索引擎,在网络上查找与你的提示词相匹配的页面。
- 然后基于检索到的网页生成一份长篇报告,并在报告正文中每处作出主张时都注明出处。
我非常喜欢这项功能,每当要找关于某个新领域的、由真人撰写的高质量长文时,都会 heavily 依赖它。我平时大多用 Kagi 来处理搜索请求,但当我完全不熟悉某个主题、甚至不确定该用哪些关键词时,转而求助大语言模型就很有帮助。
或者,有时也只是不想花时间从成千上万字的 SEO 内容里挑出几个靠谱的结果。
我很少向大语言模型询问事实性问题,因为我不信任它们给出的答案。除非有办法验证其输出,否则我会把大语言模型说的任何话都当成“幻觉”。
学习新知识的时候尤其如此。比如刚接触 Rust 时,我又怎么确定 Claude 告诉我的那些 Rust 最佳实践真的是所有 Rust 实践中的最优选呢?
如果大语言模型的输出能引用我可以自己阅读的网页,我就更容易信赖它。这让我能够核实信息确实来自值得信赖的主体——希望那是一位真正具备专业素养的人或机构。
将大语言模型与网络搜索相结合,也意味着我更有可能找到尚未纳入其训练数据的最新资讯(不过依我的经验,这一点也并非 always 有保证)。
如今每当我对某事产生好奇,就会先写下一条详细的问题,提交给 Claude,然后去做点别的活儿,让它一边翻阅数百个网页寻找答案。有时我会同时打开好几个浏览器标签页,每个都运行着不同的搜索查询。
对于大多数问题,Claude 能在五到十分钟内写出一篇带出处的详尽报告,期间大约会浏览一百页左右。偶尔它也会花更多时间,阅读好几百个网页。
曾有一次,它整整忙了近十七分钟,查阅了五百五十个来源才完成报告。
其实我对 Claude 研究结束后生成的那份报告并不在意,几乎从不细读。那不过是一堆大语言模型式的废话:行文佶屈聱牙、冗长拖沓,还常常曲解它所引用的原始资料。
我真正关心的是它找到的那些链接,它们往往与我在 Kagi 上得到的结果完全不同。
我的工作流程是快速浏览报告,了解其大致结构,把所有链接在新标签页中打开,然后直接关闭报告本身。我倒希望有一种模式,让“报告”干脆只是一份实用链接清单,当然通过一些巧妙的提示或许也能达到类似效果。
Claude 推荐的网页总让我感到意外。我搞不清它用的是哪个索引、底层用的是哪些搜索关键词,也不知道它是如何判断哪些链接值得一点击的。
不管其背后的秘诀是什么,我经常会被带到一些用常规搜索引擎根本找不到的页面:二十年前就已停止更新的个人网站、早已停刊杂志上的专栏、古老的 Blogger 和 LiveJournal 博客、藏身于某大型企业迷宫般支持网站深处的页面、大学网站上发布的讲义、暴露的 wp-content 目录里的 PDF,以及搜索引擎竭力掩盖的其他网络奇珍异宝。
有时 Claude 还会链接到那些早已下线的页面!既然无法真正读取,它又是如何引用这些内容的呢?不得而知。我常常不得不借助互联网档案馆调出这些页面的缓存版本。
例如,它生成的一份报告就分别指向了 关于大纲工具与大纲处理 和 与鼓手一起开始博客,而这两个页面如今已不在网上。
我很难判断各大主流大语言模型服务商是否真的重视他们的网络搜索产品(Perplexity 除外,但它严格来说并非大语言模型提供商)。自这些功能推出以来,我确实没看到过什么实质性的更新,也很少有人谈论它们。
不过对我而言,网络搜索正是我使用大语言模型的主要理由之一。这也部分解释了为什么我每个月都要给 Anthropic 那 20 美元。
我对大语言模型驱动的搜索产品有一长串期待的功能清单:
- 别再把网络搜索藏在菜单里了!让我能像点击 Claude 侧边栏里的“新建对话”或“代码”那样,直接点击“新建搜索”。
- 让它开始搜索之前,允许我调整研究计划(Gemini 在某种程度上已经做到了)。
- 让我能修改大语言模型用于启动研究的关键词,或者干脆让它在动笔之前自动优化这些关键词。
- 如果大语言模型在网上发现了能重新contextualize 我的原始问题的新信息,能不能让它暂停当前研究,先来问问我要不要澄清一下?
- 让我能看到大语言模型为每个关键词检索到的原始结果。
- 增加一种模式:让大语言模型帮我筛选出最优质的搜索结果,只返回链接列表,就像传统搜索引擎那样。
- 在 就像我用在Kagi身上的方式一样 中加入“滤镜”功能,让我可以对来源类型加以限制,比如只允许社交媒体、个人博客、新闻网站或学术期刊。
- 让我能在 就像Kagi允许的那样 中对某些来源进行升权、降权甚至封禁。
也许未来 Kagi Assistant 会朝这个方向演进?或者我也该试试 Perplexity?不过我对这两款产品都只有一般般的体验,也不确定它们能否在结果质量上与 ChatGPT、Claude 或 Gemini 抗衡。
总之,没错,我喜欢大语言模型驱动的搜索。