循序渐进 · AIP 教学 · Chatbot Studio(五)

检索上下文类型(Context types)

机器人回答得好不好,八成取决于喂给它的上下文。检索上下文针对每一条新消息确定性地运行,把相关内容塞进模型。

全部目录 AIP 首页 ← 上一篇 检索上下文类型(Context types) 下一篇 →
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/chatbot-studio/retrieval-context/
原始标题:AIP Chatbot Studio • Retrieval context • Context types • Palantir · 所属:AIP Chatbot Studio(做对话机器人)

先记住这几条

① 每条消息都会检索
不是只在第一轮做。
② 确定性执行
不会随机跳过,行为可预期。
③ 上下文的类型可配
文档上下文、Ontology 上下文等。
④ 检索质量决定回答质量
这是调优的主战场。
0

写在前面

AIP Chatbots 可以配置 retrieval context。retrieval context 会针对每一条新的用户消息确定性地运行,检索到的信息会被传入 LLM。

你可以为聊天机器人配置以下任意数量的 retrieval context 类型:

AIP Chatbot Studio 编辑模式中显示的 retrieval context 选项。
AIP Chatbot Studio 编辑模式中显示的 retrieval context 选项。
1

Ontology 上下文

要点:从本体对象里检索相关内容。

Ontology context 为聊天机器人提供来自 Ontology 中对象的上下文。你可以提供固定的 N 个对象,也可以执行语义搜索来找出与用户查询最相关的 K 个对象,前提是你的对象类型具有向量嵌入属性。

在配置 Ontology context 时,你可以选择起始对象集为 Static input(静态输入,包含完整对象类型),或 Variable input(变量输入,可以由作为 application state 变量传入的经过筛选的对象集组成)。

AIP Chatbot Studio 编辑模式中 Ontology context 配置的示例。
AIP Chatbot Studio 编辑模式中 Ontology context 配置的示例。

你还可以配置一个对象属性列表,以决定每个检索到的对象有哪些属性会被打印并作为上下文传递给 LLM。默认情况下会选中所有属性,但无法打印的属性除外(例如媒体引用或向量嵌入)。

AIP Chatbot Studio 编辑模式中 Ontology context 属性配置的示例。
AIP Chatbot Studio 编辑模式中 Ontology context 属性配置的示例。

此外,你还可以通过为对象集输出和 citation variable 输出配置变量,将 Ontology context 与你的 application state 集成。更多信息,请参阅 application statecitation variable updates 相关章节。

2

文档上下文

要点:从文档里检索相关内容。

document context 允许用户在每条发送给 LLM 的消息中附带文档中的相关文本。文档的选择与添加方式,与在 AIP Threads 中向对话添加文档的方式相同。

提供 document context 有两种模式:

  1. Full document text mode(完整文档文本模式): 此模式将文档的完整文本内容提供给 LLM 作为上下文。
  2. Relevant chunks mode(相关分块模式): 此模式对文档执行语义搜索,将最相关的 K 个分块作为上下文返回给 LLM。
Beta 版

Relevant chunks mode 处于开发的 beta 阶段,你的 enrollment 上可能尚不可用。功能在活跃开发期间可能发生变化。请联系你的 Palantir 代表或 Palantir 支持团队以申请使用此功能。

配置了 document context 的 AIP Chatbot Studio 编辑页面截图。
配置了 document context 的 AIP Chatbot Studio 编辑页面截图。
3

函数支撑的上下文

要点:用函数动态产出上下文。

function-backed context 使用户能够在每次查询时执行自己的检索。这非常适用于 Ontology context 或 document context 所提供的开箱即用检索方法无法满足某个用例的场景。例如,如果用户想要组合不同的检索方法,比如关键词搜索和语义搜索,那么他们可以编写一个函数来实现,因为 Chatbot Studio 目前尚不支持这种组合。

你可以在 Code Repositories 中用 TypeScript v1 编写这些函数。为此,请导航到一个 TypeScript v1 仓库并导入 AipAgentsContextRetrieval 函数接口。TypeScript v2 仓库不支持函数接口。

Code Repositories 中的函数接口对话框
Code Repositories 中的函数接口对话框

然后,编写一个满足该接口的函数,如下所示。为了满足契约,该函数必须将 messages 作为唯一必需的输入。

@AipAgentsContextRetrieval()
public exampleRetrievalFunction(messages: MessageList): RetrievedContext {
    let combinedText: string[] = [];
    messages.forEach((message) => {
        ...
    })
    return {
        retrievedPrompt: "..."
    }
}

检索函数必须输出一个 retrievedPrompt 字符串,AIP Chatbots 会将其粘贴到 LLM 系统提示词中,用于回答用户查询。

发布函数后,在 Chatbot Studio 的 Retrieval context 面板下选择 Function-backed context,以选择一个用于检索的函数。

AIP Chatbot Studio 中 function-backed context 选择的截图
AIP Chatbot Studio 中 function-backed context 选择的截图

Application variables in retrieval functions

检索函数还可以接收聊天机器人上 application variables 的值作为输入。要进行此配置,请在函数定义中添加可选参数。目前仅支持字符串和对象集类型的应用变量,因此函数输入必须是这两种类型之一。

@AipAgentsContextRetrieval()
public movieRetrievalFunction(messages: MessageList, movieTitle?: string, movieSet?: ObjectSet<Movie>): RetrievedContext {
    ...
}

对象类型请使用 API 名称。该名称可在 Ontology Manager 中找到。然后,你可以在聊天机器人上的应用变量与类型相匹配的函数输入之间配置映射。

AIP Chatbot Studio 编辑页面中检索函数输入映射的截图。
AIP Chatbot Studio 编辑页面中检索函数输入映射的截图。

要创建应用变量,请导航到 Chatbot Studio 中的 Application variables 面板。

Write retrieval functions in AIP Logic

用户很快将能够在 AIP Logic 中编写这些函数,后者提供了一个可随时上手使用的界面,用于开发无代码的 LLM 驱动函数。在此期间若要使用检索函数,我们建议编写一个满足该接口的 TypeScript 函数,并在底层调用 Logic 函数。

Custom citations

如果 LLM 以特定的 XML 格式返回 citations,AIP Chatbot 界面将渲染出 citation 气泡。借助 function-backed context,用户可以通过让函数返回一段提示 LLM 按给定格式编写 citations 的字符串,来渲染这些 citations。请参阅 citation formats 了解所提供的格式列表,并参阅 citation variable updates 了解如何在每次选择对象 citation 时更新 Workshop 变量。

AIP Chatbot Studio 配置了 function-backed context 以返回自定义文档 citations 的截图。
AIP Chatbot Studio 配置了 function-backed context 以返回自定义文档 citations 的截图。

在上面的示例中,该函数接收一组表示为 Ontology 对象的文档分块。随后它对这些对象执行语义搜索,并返回最相关的五个对象,且按上述 citation 样式进行格式化。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

本组其他页面 · AIP Chatbot Studio(做对话机器人)

同一主题下的相邻内容。

常见问题速答 · FAQ

关于「检索上下文类型(Context types)」,读者最常问的几个问题。

Ontology 上下文是什么?
从本体对象里检索相关内容。Ontology context 为聊天机器人提供来自 Ontology 中对象的上下文。你可以提供固定的 N 个对象,也可以执行语义搜索来找出与用户查询最相关的 K 个对象,前提是你的对象类型具有向量嵌入属性。
文档上下文是什么?
从文档里检索相关内容。document context 允许用户在每条发送给 LLM 的消息中附带文档中的相关文本。文档的选择与添加方式,与在 AIP Threads 中向对话添加文档的方式相同。
函数支撑的上下文是什么?
用函数动态产出上下文。function-backed context 使用户能够在每次查询时执行自己的检索。这非常适用于 Ontology context 或 document context 所提供的开箱即用检索方法无法满足某个用例的场景。