什么是知识源?

注释

此功能目前处于公开预览状态。 此预览版未随附服务级别协议,建议不要用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

知识源指定用于代理检索的内容。 它封装由外部数据源填充的搜索索引,或者它是与直接查询的远程源(例如必应或 Sharepoint)的直接连接。 知识源是知识库中的必需定义。

  • 在搜索服务上将知识源创建为顶级资源。 每个知识源都指向一个数据结构,即 满足代理检索条件 的搜索索引或受支持的外部资源。

  • 引用 知识库中的一个或多个知识源。 在代理检索管道中,可以在单个请求中针对多个知识源进行查询。 为每个知识源生成子查询。 检索响应中返回最匹配的结果。

  • 对于某些知识源,可以使用知识源定义生成可用于代理检索的完整索引器管道(数据源、技能组、索引器和索引)。 知识源中的信息用于生成所有对象,包括填充索引、分块索引和可搜索索引,而不是手动创建多个对象。

在创建知识库之前,请确保至少有一个知识库。 可以在 预览版 REST API 参考中找到知识源和知识库的完整规范。

使用知识源

  • 创建路径:首先创建知识源,然后创建知识库。

  • 删除路径:更新或删除知识库以删除对知识库的引用,然后最后删除知识库。

  • 知识源、其索引和知识库必须全部存在于同一搜索服务上。 外部内容可通过公共互联网(Bing)或 Azure 租户(远程 SharePoint)进行访问。

支持的知识来源

下面是可在此预览版中创建的知识来源:

创建知识源

知识源创建为独立对象,然后在“knowledgeSources”数组知识库中指定。

必须具有 搜索服务参与者 权限 才能在搜索服务上创建对象。 如果使用创建索引器管道的知识源,则还需要 搜索索引数据参与者 权限才能加载索引。 或者,可以使用 API 管理密钥 而不是角色。

可以使用 REST API 或 Azure SDK 预览包来创建知识源。 Azure 门户支持可用于选择知识源。 以下链接提供有关创建知识源的说明:

创建知识源后,可以在知识库中引用它。

使用知识源

知识源使用情况是显式控制的,例如在知识源定义上设置 alwaysQuery 时,或者在查询规划期间受选择逻辑的约束。 使用低或中等 检索推理工作时,会发生查询规划。 为了尽量减少推理工作,知识库中列出的所有知识源都属于每个查询的范围。 对于低和中,知识库和LLM可以在查询时确定哪些知识源可能提供最佳搜索语料库。

知识源选择逻辑基于以下因素:

  • alwaysQuery 是否已设置? 如果是,则始终在每个查询上使用知识源。

  • name知识来源。

  • 假设description是一个有索引的知识源的索引。

  • retrievalInstructions知识库定义中指定的提供指导,这些指导包括或排除知识源。 这类似于提示符。 你可以将简洁性、音调和格式指定为检索指令。

  • outputMode 也会影响知识库,从而影响查询输出和响应中的内容。

使用检索推理工作来控制 LLM 使用情况

并非所有解决方案都受益于 LLM 查询规划和执行。 如果简单性和速度超过了 LLM 查询规划和上下文工程提供的好处,则可以指定最少的推理工作来防止管道中的 LLM 处理。

对于低级和中级,LLM 处理级别是一种平衡或最大化的方法,有助于提高相关性。 有关详细信息,请参阅 设置检索推理工作

注释

在上一个预览版中如果使用过 attemptFastPath,现在该方法已被替换为将 retrievalReasoningEffort 设置为 minimal