0

0

构建 LLM 应用程序:利用 Azure 认知服务的矢量搜索功能

王林

王林

发布时间:2023-08-23 22:49:06

|

962人浏览过

|

来源于51CTO.COM

转载

作者 | simon bisson

策划 | Ethan

Microsoft 的认知搜索 API 现在提供矢量搜索即服务,可与 Azure OpenAI 等中的大型语言模型一起使用。

语义核心、TypeChat和LangChain等工具使得围绕Azure OpenAI等生成式AI技术构建应用程序成为可能。这是因为它们允许对底层大语言模型(LLM)施加约束,将其用作构建和运行自然语言界面的工具

从本质上讲,LLM 是一种用于导航语义空间的工具,其中深度神经网络可以预测从初始提示开始的标记链中的下一个音节。如果提示是开放式的,LLM 可能会超出其输入范围,产生看似合理但实际上完全是无稽之谈的内容。

正如大家倾向于信任搜索引擎的输出一样,我们也倾向于信任LLM的输出,因为我们将它们视为熟悉技术的另一个方面。但是,使用来自维基百科、Stack Overflow 和 Reddit 等网站的可信数据来训练大型语言模型并不能传达对内容的理解;它只是赋予生成文本的能力,该文本遵循与这些来源中的文本相同的模式。有时输出可能是正确的,但有时却是错误的。

我们如何避免大型语言模型的错误和无意义的输出,并确保我们的用户获得准确且合理的查询答案?

1、限制用语义记忆约束大模型

我们需要做的是限制LLM,确保它只从更小的数据集生成文本。这是Microsoft基于LLM的新开发堆栈的用武之地。它提供了必要的工具来控制模型并防止其产生错误

你可以通过使用 TypeChat 之类的工具来强制使用特定的输出格式,或者使用 Semantic Kernel 之类的编排管道来处理其他可信信息源,从而有效地将模型“root”在已知的语义空间中,从而约束 LLM。在这里,LLM 可以做它擅长的事情,总结构建的提示并根据该提示生成文本,而不会超限(或至少显着减少发生超限的可能性)。

微软所说的“语义记忆”是最后一种方法的基础。语义记忆使用向量搜索来提供提示,可用于提供 LLM 的事实输出。矢量数据库管理初始提示的上下文,矢量搜索查找与初始用户查询匹配的存储数据,LLM 根据该数据生成文本。在Bing Chat中看到这种方法的实际应用,它使用Bing的本机矢量搜索工具来构建从其搜索数据库中获取的答案

语义记忆使得矢量数据库和矢量搜索成为提供基于LLM的应用程序的手段。您可以选择使用数量不断增加的开源矢量数据库之一,或者将矢量索引添加到您熟悉的SQL和NoSQL数据库中。一款看起来特别有用的新产品扩展了Azure认知搜索,为数据添加了向量索引,并提供了用于查询该索引的新API

2、将矢量索引添加到 Azure 认知搜索

Azure 认知搜索是建立在Microsoft自己的搜索工具基础上的。它提供了熟悉的Lucene查询和自己的自然语言查询工具的组合。Azure 认知搜索是一个软件即服务平台,可以托管私有数据,并使用认知服务API来访问内容。最近,Microsoft还添加了对构建和使用向量索引的支持,这使得你可以使用相似性搜索对数据中的相关结果进行排名,并在基于AI的应用程序中使用它们。这使得Azure 认知搜索成为使用Semantic Kernel和Azure OpenAI构建的Azure托管LLM应用程序的理想工具,并且还提供了用于C#和Python的认知搜索的语义内核插件

Lumen5
Lumen5

一个在线视频创建平台,AI将博客文章转换成视频

下载

与其他 Azure 服务一样,Azure 认知搜索是一项托管服务,可与其他 Azure 服务配合使用。它允许你在各种 Azure 存储服务中进行索引和搜索,托管文本、图像、音频和视频。数据存储在多个区域,提供高可用性并减少延迟和响应时间。此外,对于企业应用程序,你可以使用 Microsoft Entra ID(Azure Active Directory 的新名称)来控制对私有数据的访问

3、为内容生成和存储嵌入向量

需要注意的是,Azure 认知搜索是一项“自带嵌入向量”服务。认知搜索不会为您生成所需的矢量嵌入,因此您需要使用 Azure OpenAI 或 OpenAI embedding API 来为内容创建嵌入。这可能需要将大文件分块处理,以确保您在服务的令牌限制内。在需要时,请准备创建新表来索引向量数据

在 Azure 认知搜索中,矢量搜索使用最近邻模型返回与原始查询相似的文档,数量由用户选择。这个过程通过使用原始查询的向量嵌入来调用向量索引,并从数据库中返回相似的向量和索引内容,以供 LLM 提示准备使用

微软使用这种矢量存储作为Azure机器学习的检索增强生成(RAG)设计模式的一部分,并与其提示流工具配合使用。RAG利用认知搜索中的向量索引来构建构成LLM提示基础的上下文。这为您提供了一种构建和使用向量索引的低代码方法,例如设置查询返回的相似文档的数量

4、Azure 认知搜索中的矢量搜索入门

使用 Azure 认知搜索进行矢量查询非常简单。首先在同一区域中为 Azure OpenAI 和认知搜索创建资源。这将允许你以最小的延迟加载带有嵌入的搜索索引。你需要调用 Azure OpenAI API 和认知搜索 API 来加载索引,因此最好通过添加管理重试的代码来确保代码可以响应服务中任何可能的速率限制为你。当你使用服务 API 时,你应该使用异步调用来生成嵌入和加载索引。

向量作为向量字段存储在搜索索引中,其中向量是具有维度的浮点数。这些向量通过分层可导航小世界邻近图进行映射,该图将向量分类到相似向量的邻域中,从而加快了搜索向量索引的实际过程。

在定义了矢量搜索的索引架构之后,你可以将数据加载到认知搜索的索引中。需要注意的是,数据可能与多个向量相关联。举个例子,如果你使用认知搜索来托管公司文档,你可能会有一个用于关键文档元数据术语和文档内容的单独向量。数据集必须以JSON文档的形式存储,这样可以简化使用结果来组合提示上下文的过程。索引不需要包含源文档,因为它支持使用最常见的Azure存储选项

在运行查询之前,你需要首先使用查询正文调用你选择的嵌入模型。这样会返回一个多维向量,你可以用它来搜索你选择的索引。当调用矢量搜索API时,请指定目标矢量索引、所需的匹配项数量以及索引中相关的文本字段。选择适当的相似性度量对查询非常有帮助,其中最常用的是余弦度量

5、超越简单的文本向量

Azure 认知搜索的矢量功能不仅仅是匹配文本。认知搜索能够与多语言嵌入配合使用,以支持跨多种语言的文档搜索。你也可以使用更复杂的 API。例如,你可以在混合搜索中混合使用 Bing 语义搜索工具,以提供更准确的结果,从而提高 LLM 支持的应用程序的输出质量。

微软正在迅速将其用于构建自己的基于GPT-4的Bing搜索引擎以及各种Copilot的工具和技术产品化。Semantic Kernel和Azure AI Studio的提示流等编排引擎是Microsoft使用大型语言模型的核心方法。现在这些基础已经奠定,我们看到该公司推出了更多必要的支持技术。矢量搜索和矢量索引是提供准确响应的关键。通过构建熟悉的工具来提供这些服务,微软将帮助我们将成本和学习曲线降至最低

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

706

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

327

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

349

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1201

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

360

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

798

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

581

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

422

2024.04.29

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

9

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号