Compartilhar via

什么是知识源?

注释

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

知识源指定用于代理检索的内容。 它要么封装由外部数据填充的搜索索引,要么直接连接到远程目标(例如 Bing 或 SharePoint),并直接进行查询。 知识源是知识库中必需的定义。

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

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

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

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

使用知识源

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

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

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

支持的知识来源

在此预览版中,可以创建以下知识源:

种类 索引或远程
"searchIndex" API 包装现有索引。 已编入索引
"azureBlob" API 生成一个从 Blob 容器中拉取的索引生成管道。 已编入索引
"webParameters" API从Microsoft Bing检索实时基础数据。 Remote

索引知识源指向Azure AI Search的目标索引。 查询的执行是本地于您的搜索服务上的搜索引擎。 关键字(全文搜索)、矢量和混合查询功能用于从索引知识源检索数据。

在查询时访问远程知识源。 代理检索引擎调用为平台设计的检索 API(Bing 或 SharePoint API)。

检索到的所有内容(无论是索引内容还是远程内容)都会被拉入Azure AI Search的排名管道中,在此对其相关性进行评分、合并(假定为多个查询)、重新排序,并在检索响应中返回。

创建知识源

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

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

使用 Azure portal、REST API 或 Azure SDK 预览包创建知识源。 以下链接提供有关创建知识源的说明:

创建知识源后,请在knowledge base中引用它。

使用知识源

可以通过设置 alwaysQuery 知识源定义或通过查询规划期间使用的指导说明来显式控制知识源使用情况。 指导说明是指有关索引的说明,或知识源中的显式检索说明,这些说明提供有关何时使用索引的指导。 使用 LLM 的低或中等检索推理工作时,会发生查询规划。 为了尽量减少推理工作,knowledge base中列出的所有知识源都属于每个查询的范围。 对于低复杂度和中等复杂度,知识库和大型语言模型可以在查询时确定哪些知识源可能提供最佳的搜索语料库。

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

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

  • name知识来源。

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

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

  • knowledge base上的 outputMode 还会影响查询输出和响应中的内容。

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

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

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

注释

如果在之前的预览中使用了 attemptFastPath,现在这个方法已被设置为使用 retrievalReasoningEffortminimal 代替。