通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

用于文件搜索的矢量存储

矢量存储对象使 文件搜索 工具能够搜索文件。 将文件添加到矢量存储时,服务将分析、区块、嵌入和索引,以便该工具可以同时运行关键字和语义搜索。

可将矢量存储附加到智能体和对话。 目前,最多可以将一个矢量存储附加到一个智能体,并且最多可以将一个矢量存储附加到一个对话。 有关对话的概念性概述,请参阅 代理运行时组件

在当前的代理开发人员体验中,响应生成使用 响应对话。 某些 SDK 和较旧的示例使用术语 运行。 如果看到这两个术语,请将 运行 视为响应生成。 有关迁移指南,请参阅 如何迁移到新的代理服务

有关矢量搜索的限制列表(例如允许的最大文件大小),请参阅 配额和限制 文章。

先决条件

密钥限制和默认值

矢量存储通常是生产中第一个检索工作流失败的地方,因此有助于了解默认值和硬性限制。

  • 每个向量存储的文件:每个向量存储最多可以容纳 10,000 个文件。
  • 附件:最多可以将一个向量存储附加到代理,最多可将一个向量存储附加到会话。
  • 默认检索设置 (文件搜索):
    • 区块大小:800 个令牌
    • 区块重叠:400 个令牌
    • 嵌入模型:text-embedding-3-large,尺寸为 256
    • 添加到上下文的最大区块数:20

有关文件大小和令牌限制,请参阅 配额和限制

重要概念

术语 含义
矢量存储 用于文件搜索工具使用的可搜索文件内容的容器(区块和嵌入)。
摄入 用于搜索的异步进程会解析、分块、嵌入并索引文件。
就绪情况 引入是否已完成,矢量存储是否可搜索。
过期策略 生命周期策略,在处于非活动状态的时间段后使向量存储过期。

文件搜索应用检索最佳做法,以帮助代理从文件中找到正确的内容。 根据查询和数据,该工具可以:

  • 重写用户查询以提高检索能力。
  • 将复杂查询分解为多个搜索。
  • 跨代理和聊天向量存储运行关键字和语义搜索。
  • 在将结果添加到模型上下文之前,重新排序结果。

有关当前默认检索设置(区块大小和重叠、嵌入模型和添加到上下文中的最大区块数),请参阅 工作原理

您的数据存储在哪里(基本代理设置与标准代理设置)

文件和搜索资源的存储位置取决于您的代理设置:

  • Basic 代理设置:文件搜索使用 Microsoft 管理的存储和搜索资源。
  • Standard 代理设置:文件搜索使用在设置过程中连接的 Azure Blob Storage 和 Azure AI Search 资源,因此文件保留在存储中。

若要设置环境,请参阅 代理环境设置。 有关更多详细信息,请参阅 代理设置的依赖关系

在创建响应之前确保矢量存储就绪情况

在创建响应之前,请确保已完全处理矢量存储中的所有文件。 此步骤可确保矢量存储中的所有数据都可以搜索。

若要检查就绪情况,请使用 SDK 轮询帮助程序(例如 ,创建和轮询上传和轮询)或轮询矢量存储对象,直到其状态 完成。 有关代码示例,请参阅 代理的文件搜索工具

引入期间,矢量存储可以 处于in_progress 状态。 引入完成后,状态将更改为 已完成

作为备用措施,当聊天的向量存储中包含正在处理的文件时,响应生成时可能需要最长等待 60 秒。 这种回退等待不适用于智能体的矢量存储区。

端到端工作流清单

使用此清单验证从引入到生命周期管理的工作矢量存储工作流。

  1. 根据希望文件和搜索资源所在的位置,决定是否使用基本代理设置或标准代理设置。 查看您数据的存放位置(基本代理设置与标准代理设置)。
  2. 上传文件并创建矢量存储。 有关分步示例,请参阅 上传文件并将其添加到向量存储
  3. 等待引入完成,然后生成响应。 使用 SDK 轮询辅助工具或轮询矢量存储,直到其状态为 completed 且没有文件处于 in_progress 状态。 在 创建响应之前,请参阅确保矢量存储就绪情况
  4. 将矢量数据库连接到您用于文件搜索的代理或会话。 请记住附件限制。 请参阅 矢量存储
  5. 创建使用文件搜索的响应,并验证该工具是否正在从预期的源检索。 请参阅 创建文件搜索响应验证结果
  6. 管理生命周期:删除不再需要的文件,并规划过期策略(尤其是由聊天帮助程序创建的矢量存储)。 请参阅矢量存储对话矢量存储,它们具有默认的过期策略

添加文件和管理矢量存储

将文件添加到矢量存储是一项异步作。 若要确保引入完成,请使用官方 SDK 中的创建和投票帮助程序。 如果不使用 SDK,请轮询矢量存储,直到其状态为 completed 且没有文件处于 in_progress 状态。

创建矢量存储文件后,还可以将文件添加到矢量存储中。 或者,可以通过创建最多 500 个文件的批处理,将多个文件添加到矢量存储中。

上传文件以创建矢量存储时,系统会自动:

  1. 将内容分块 成可管理的部分。
  2. 使用嵌入模型将每个区块转换为高维向量。
  3. 将这些向量存储在 优化的搜索索引中。
  4. 创建 矢量与您原始内容之间的连接。

从矢量存储中删除文件

可以通过两种不同的方式从向量存储中删除文件:

  • 删除矢量存储文件对象。
  • 删除基础文件对象。 这会从组织中所有代理和对话的所有向量存储配置中删除该文件。

使用过期策略管理生命周期

过期策略可帮助你管理矢量存储生命周期。 创建或更新向量存储对象时,可以设置这些策略。

会话向量存储库具有默认过期策略

使用对话帮助程序创建的矢量存储具有默认的过期策略,即在其最后一次活跃(定义为最后一次在生成响应期间使用该矢量存储的时间)后的七天。

当向量存储过期时,该会话的响应生成将失败。 若要解决此问题,请使用相同的文件重新创建一个新的向量存储,并将其重新附加到对话。 有关更多详细信息,请参阅 对话向量存储具有默认过期策略

支持的文件类型和密钥限制

有关支持的文件类型列表和编码要求,请参阅 支持的文件类型

要记住的关键限制:

  • 你最多可以将一个矢量存储附加到一个智能体,并且最多可以将一个矢量存储附加到一个对话。
  • 文件大小和令牌限制因功能而异。 请参阅 配额和限制

故障排除

  • 矢量存储尚不可搜索:等待数据导入完成。 使用 SDK 轮询帮助程序或轮询矢量存储,直到其状态变为“已完成”
  • 几天后响应生成失败:对话向量存储可能已过期。 使用相同的文件重新创建一个新的矢量存储,并重新附加它。
  • 文件从多个代理或对话中消失:你可能已经删除了基础文件对象,这会从组织中的所有矢量存储配置中删除该文件。
  • 上传或引入失败:检查 配额和限制中的文件大小和令牌限制。

后续步骤