news 2026/5/14 7:56:14

RAG和向量索引

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RAG和向量索引

为特定用例设计代理时,需要确保语言模型已建立基础并使用与用户所需内容相关的事实信息。

虽然语言模型针对大量数据进行了训练,但它们可能无权访问你想要向用户提供的知识。 若要确保代理基于特定数据提供准确且特定于域的响应,可使用检索增强生成 (RAG)。

RAG

RAG 是一种可用于建立语言模型基础的技术。 换句话说,它是检索与用户的初始提示相关的信息的过程。 一般情况下,RAG 模式包含以下步骤:

  1. 根据用户输入的初始提示检索基础数据。
  2. 使用基础数据增强提示。
  3. 使用语言模型生成有根据的响应。

通过从指定数据源检索上下文,确保语言模型在响应时使用相关信息,而不是依赖其训练数据。

在很多情况下,你想要建立自己的语言模型的基础并提高生成式 AI 应用的响应的事实准确性,此时使用 RAG 是一种强大且易用的方法。

当你想要创建一个使用你自己的数据生成准确答案的代理时,你需要能够有效地搜索数据。 使用 Microsoft Foundry 生成代理时,可以使用与Azure AI 搜索的集成来检索聊天流中的相关上下文。

Azure AI 搜索是一个检索器,你可以在生成某个具有提示流的语言模型应用程序时包含它。 使用 Azure AI 搜索,你可以自带数据、为数据建立索引,以及查询索引来检索所需的任何信息。

使用矢量索引

虽然基于文本的索引可以提高搜索效率,但通常可以使用基于向量的索引(包含表示数据源中的文本标记的嵌入)来实现更好的数据检索解决方案。

嵌入是一种特殊的数据表示格式,搜索引擎可以使用它轻松查找相关信息。 更具体地说,嵌入是浮点数的矢量。

例如,假设你有两个包含以下内容的文档:

  • 孩子们在公园里快乐地玩耍。
  • 孩子们快乐地在操场上跑来跑去。

这两个文档包含语义上相关的文本,尽管使用了不同的单词。 通过为文档中的文本创建矢量嵌入,可以用数学方法计算文本中单词之间的关系。

想象一下从文档中提取关键字并在多维空间中将其绘制为矢量:

矢量之间的距离可以通过测量两个矢量之间的角度的余弦(也称为余弦相似性)来计算。 换句话说,余弦相似性计算文档和查询之间的语义相似性。

通过用矢量表示单词及其含义,即使数据以不同的格式(文本或图像)和语言进行存储,也可以从数据源中提取相关上下文。

当你希望能够使用矢量搜索来搜索数据时,你需要在创建搜索索引时创建嵌入。 若要为搜索索引创建嵌入内容,可以使用 Microsoft Foundry 中提供的 Azure OpenAI 嵌入模型。

提示

详细了解 Foundry 模型中 Azure OpenAI 中的嵌入。

创建搜索索引

在 Azure AI 搜索中,搜索索引描述如何组织内容以使其可供搜索。 想象一个包含许多书籍的图书馆。 你希望能够轻松高效地搜索图书馆并检索相关书籍。 为了使图书馆可供搜索,请创建一个目录(其中包含有关书籍的任何相关数据),以便轻松查找任何书籍。 图书馆的目录充当搜索索引。

尽管创建索引的方法不同,但 Microsoft Foundry 中的 Azure AI 搜索集成使你可以轻松地创建适合语言模型的索引。 可以将数据添加到 Microsoft Foundry,之后可以使用 Azure AI 搜索通过嵌入模型在 Microsoft Foundry 门户中创建索引。 索引资产存储在 Azure AI 搜索中,并在聊天流中使用时由 Microsoft Foundry 查询。

如何配置搜索索引取决于你拥有的数据以及你希望语言模型使用的上下文。 例如,使用关键字搜索,你可以检索与搜索查询完全匹配的信息。 语义搜索则更进一步,使用语义模型检索与查询含义匹配的信息,而不是与确切的关键字匹配的信息。 目前,最先进的技术是矢量搜索,它创建嵌入来表示数据。

搜索索引

可通过多种方式在索引中查询该信息:

  • 关键字搜索:根据作为输入提供的特定关键字或术语,标识相关文档或段落。
  • 语义搜索:通过了解查询的含义并将其与语义相关的内容进行匹配(而不是仅依赖于确切的关键字匹配项)来检索文档或段落。
  • 矢量搜索:使用文本(矢量)的数学表示形式以根据其语义含义或上下文查找类似的文档或段落。
  • 混合搜索:合并任何或所有其他搜索技术。 查询并行执行,并在统一的结果集中返回。

在 Microsoft Foundry 中创建搜索索引时,系统会引导你配置最适合与语言模型结合使用的索引。 将搜索结果用在生成式 AI 应用程序中时,混合搜索会提供最准确的结果。

混合搜索是关键字(和全文)与矢量搜索的组合,用户可以选择向其添加语义排名。 创建与混合搜索兼容的索引时,如果可以获得精确匹配(使用关键字),则检索到的信息是精确的,而如果只能找到概念上相似的信息(使用矢量搜索),则检索到的信息虽然不精确,但仍然相关。

为了使用索引中的数据来为提示提供根据,Azure OpenAI SDK 支持通过索引的连接详细信息来扩展请求。

针对索引的搜索基于关键字- 换句话说,查询由用户提示中的文本组成,这些文本与索引文档中的文本匹配。 使用支持它的索引时,另一种方法是使用基于矢量的查询,其中索引和查询使用数字向量来表示文本标记。 使用矢量进行搜索可以根据语义相似性和文本匹配进行匹配。

若要使用基于矢量的查询,可以修改 Azure AI 搜索数据源详细信息的规范,以包含嵌入模型;然后,用于向量化查询文本。

参见:https://learn.microsoft.com/zh-cn/training/modules/build-copilot-ai-studio/2-ground-language-model

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 7:56:08

ncmdump终极指南:3分钟快速解密网易云音乐NCM格式实现全平台播放

ncmdump终极指南:3分钟快速解密网易云音乐NCM格式实现全平台播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经在网易云音乐下载了心爱的歌曲,却发现只能在特定客户端播放,无法在车载…

作者头像 李华
网站建设 2026/5/14 7:56:08

电子行业导师制:从技术到商业智慧的成长路径

1. 导师的价值:从被宣告到被接纳的成长之路“我来当你的导师。” 安东尼保罗对我说。那是1993年,我刚加入他担任主编的杂志社。这句话在当时听起来像是一句宣告,甚至带着一丝自上而下的意味。对于一个已经拥有近十年媒体经验、自认为羽翼渐丰…

作者头像 李华
网站建设 2026/5/14 7:52:04

Infineon BGS18GA14 E6327现货供应

引言在现代电子设备中,射频开关扮演着至关重要的角色,尤其是在高频信号接收链路的应用上。Infineon Technologies生产的BGS18GA14 E6327作为一款典型的高性能射频前端低噪声放大器(LNA),以其卓越的性能和广泛的应用领域备受工程师青睐。本文将…

作者头像 李华
网站建设 2026/5/14 7:43:03

从制造业“精益生产”到软件业“精益开发”

当流水线哲学遇见代码世界二十世纪五十年代,丰田生产车间里,大野耐一凝视着堆积如山的库存,一个朴素的想法逐渐成形:只生产需要的数量,只在需要的时间生产。这个想法最终演变为震撼全球制造业的“精益生产”体系&#…

作者头像 李华
网站建设 2026/5/14 7:41:13

硬核手搓解析!进程-内核分析:命令行参数及环境变量,重构main()

目录 命令行参数与环境变量 命令行参数 vim下的main() 环境变量 环境变量的应用举例 查询环境变量 全部查询 针对名称查询(常用的方式) 环境变量的更改 配置环境变量 进程:命令行参数及环境变量的关系 结论 获取环境变量 ①get…

作者头像 李华
网站建设 2026/5/14 7:35:33

开源API逆向工程:豆包大模型免费接口实现与部署指南

1. 项目概述:一个开源API的诞生与价值最近在开源社区里,一个名为LLM-Red-Team/doubao-free-api的项目引起了我的注意。乍一看这个标题,可能很多朋友会有点懵,这到底是个啥?简单来说,这是一个为“豆包”大模…

作者头像 李华