升级您的网站搜索:利用生成式 AI 提供符合情境的回答

生成式 AI 是指使用人工智能来创建新内容,如文本、图片、音乐、音频和视频。生成式 AI 依靠机器学习 (ML) 模型来学习人工创建内容数据集内的模式和关系。

这项技术通过 Gemini 等应用展现了不可思议的能力。您可能想知道,如何在我的 Web 产品中实现生成式 AI 工具?

一种常见的使用场景是为用户提供更好的界面来询问有关网站内容的问题。您可以在机器学习的帮助下大幅改进用户的搜索结果。

您可以创建一个界面,在该界面上,用户编写自己的问题,系统会将问题发送至大型语言模型 (LLM)(如 Gemini)并向用户显示答案。

假设该网站具有此类功能。用户想知道 Interop 2024 中包含哪些 API,他们输入了以下查询:

What are the features included in Interop 24?

遗憾的是,由于以下几个原因,输出可能会不正确:

  • 用户只为 LLM 提供少量上下文来回答问题,因此 LLM 更容易返回错误的答案或产生幻觉。
  • LLM 可能是在 Interop 2024 创建之前或其功能已确定之前进行过训练的,因此它不知道此信息。

虽然 LLM 可以找到更多最新信息,但 LLM 训练数据集本身就已过时。维护最新结果可能非常耗时且成本高昂。

使用提示工程

提示工程是一组使 LLM 获得最佳输出的技术。

一种技术是在提示中提供额外的上下文,使 LLM 更有可能输出与上下文相关的内容。

继续前面的 Interop 示例,我们的第一步是提供文章的完整内容作为上下文。然后,添加该问题作为输入,以便 LLM 回答。例如:

Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)

Input:
What are the features included in Interop 2024?

Gemini 将输出如下内容:

The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL

这个答案可能比没有上下文的提示好得多,因为答案是以所提供的上下文为基础的。

使用 RAG 纵向扩容

例如,我们希望 LLM 回答关于 web.dev 的更多问题,而不是回答关于一篇文章的问题,同时将任何文章用作额外的上下文。鉴于 Gemini 1.5 提供 100 万个词元的上下文窗口,虽然对于小型网站来说可能是这样,但较大的提示速度会更慢且运行成本更高

LLM 的输入和输出长度以词元来衡量和计费,词元这是表示文本输入中的常见字符序列的方法。词元的数量通常大于单词的数量。例如,第一个示例中的输入有 775 个单词,由 1097 个词元表示。不同的 LLM 可能会以不同的方式计算词元,并且大多数都会提供一个 API 或端点来计算文本输入的词元数。

一种解决方案是提供与 LLM 提示相关的文章。此任务应分为两个部分:

  1. 在提示 LLM 时,添加热门文章的内容作为上下文。
  2. 在内容中搜索与“Interop 2024 中包含哪些功能?”相关的文章。

我们希望 Gemini 结果根据以下文章返回内容:

输入应如下所示:

Context:
Article 1:
Over the past two years... (trimmed)

Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)

Article 3:
Following on from the success of Interop 2022... (trimmed)

Input:
What are the features included in Interop 2024?

此上下文会生成我们预期的输出。

* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL

对于熟悉 AI 技术的人员,此方法使用 RAG,这是一种常见做法,可提高生成式 AI 工具获得真实答案的可能性。

虽然 RAG 技术可用于常规的全文搜索,但这种方法存在缺点。

  • 全文搜索可帮助 AI 找到完全匹配关键字。但是,LLM 无法确定用户查询背后的预期含义。这可能会导致输出不完整或不正确。
  • 当字词具有多重含义或查询使用了同义词时,可能会出现问题。例如,“bank”(金融机构与 Riverbank)可能会导致不相关的结果。
  • 在全文搜索中,您可能会发现包含关键字但与用户目标不符的结果。

语义搜索是一种通过重点关注以下几个关键方面来提高搜索准确性的技术:

  • 搜索者的意图:它会尝试了解用户进行搜索的原因。他们想要寻找或实现什么?
  • 上下文含义:它会根据周围文本以及其他因素(如用户的位置或搜索记录)来解释字词和短语。
  • 概念之间的关系:语义搜索使用知识图(相关实体的大型网络)和自然语言处理来理解字词与想法之间的联系。

因此,当您构建支持语义搜索的工具时,搜索结果输出将依赖于查询的总体用途,而不是关键字。这意味着即使不存在完全匹配的关键字,工具也可以确定相关的文档。它也可以避免包含该字词但含义不同的结果。

目前,您可以实现两个采用语义搜索的搜索工具:Vertex AI SearchAlgolia AI Search

从发布的内容中寻找答案

您已经学习了如何使用提示工程,通过向提示添加上下文,让 LLM 提供与其从未见过的内容相关的答案。此外,您还学习了如何使用检索增强生成 (RAG) 技术将此方法从单篇报道扩展到整个内容语料库。您了解了语义搜索如何进一步改进用户搜索查询的结果,从而更好地在产品中实现 RAG。

生成式 AI 工具可能产生“幻觉”已经是一个众所周知的问题,这使得它们在最佳状态(有时不可靠),甚至在最坏的情况下,对业务产生积极影响。借助这些方法,用户和开发者都可以提高可靠性,或许还能建立对这些应用输出的信任。