Press "Enter" to skip to content

Tag: database

如何使用向量数据库构建LLM应用程序?

介绍 在人工智能领域,大型语言模型(LLMs)和生成型AI模型,如OpenAI的GPT-4、Anthropic的Claude 2、Meta的Llama、Falcon、Google的Palm等,已经彻底改变了我们解决问题的方式。LLMs使用深度学习技术来执行自然语言处理任务。本文将教你如何使用向量数据库构建LLM应用程序。你可能已经与类似亚马逊客服或Flipkart决策助手的聊天机器人进行过交互。它们能生成类似人类的文本,并提供几乎与现实对话无异的交互用户体验。然而,这些LLMs需要进行优化,以产生高度相关和具体的结果,才能真正对特定的使用案例有用。 例如,如果你询问亚马逊客服应用程序:“如何在Android应用中更改语言?”可能没有经过训练来处理这个确切的文本,因此可能无法回答。这就是向量数据库发挥作用的时候。向量数据库将领域文本(在这种情况下是帮助文档)和所有用户的过去查询(包括订单历史等)存储为数值嵌入,并提供实时查找相似向量的功能。在这种情况下,它将这个查询编码成一个数值向量,并使用它在其向量数据库中执行相似性搜索,找到最相似的邻居。有了这个帮助,聊天机器人可以正确地指导用户进入亚马逊应用程序的“更改语言偏好设置”部分。 学习目标 LLMs是如何工作的,它们的限制是什么,为什么它们需要向量数据库? 嵌入模型的介绍以及如何在应用程序中对其进行编码和使用。 学习什么是向量数据库,以及它们如何成为LLM应用程序架构的一部分。 学习如何使用向量数据库和tensorflow编写LLM/生成型AI应用程序。 本文是数据科学博客马拉松的一部分。 什么是LLMs? 大型语言模型(LLMs)是基础的机器学习模型,使用深度学习算法处理和理解自然语言。这些模型被训练使用大量的文本数据来学习语言中的模式和实体关系。LLMs可以执行许多类型的语言任务,例如翻译语言、分析情感、聊天机器人对话等。它们能够理解复杂的文本数据,识别实体及其之间的关系,并生成连贯且语法正确的新文本。 在这里阅读更多关于LLMs的信息。 LLMs是如何工作的? LLMs使用大量数据进行训练,通常是以太字节,甚至是拍字节,拥有数十亿或数万亿个参数,使其能够根据用户的提示或查询进行预测和生成相关的响应。它们通过词嵌入、自注意层和前馈网络处理输入数据,生成有意义的文本。你可以在这里阅读更多关于LLM架构的信息。 LLMs的限制 虽然LLMs似乎以相当高的准确性生成响应,甚至在许多标准化测试中比人类表现得更好,但这些模型仍然有限制。首先,它们完全依赖于它们的训练数据来构建推理,因此可能在数据中缺乏特定或当前的信息。这导致模型生成不正确或不寻常的响应,也被称为“幻觉”。有持续的努力在减轻这个问题。其次,模型可能无法按照用户的期望行为或响应。 为了解决这个问题,向量数据库和嵌入模型通过为用户寻找信息提供了额外的类似性查询(文本、图像、视频等)。以下是一个例子,LLMs无法回答用户询问的信息,而是依靠向量数据库找到该信息。 LLM和向量数据库 大型语言模型(LLM)被广泛应用于电子商务、旅游、搜索、内容创作和金融等行业的许多部分。这些模型依赖于一种相对较新的数据库类型,称为向量数据库,它以一种称为嵌入的二进制表示存储文本、图像、视频和其他数据的数值表示。本节介绍了向量数据库和嵌入的基本原理,更重要的是介绍了如何将它们与LLM应用程序集成使用。 向量数据库是一种使用高维空间存储和搜索嵌入的数据库。这些向量是数据特征或属性的数值表示。使用计算向量在高维空间中的距离或相似度的算法,向量数据库可以快速高效地检索相似的数据。与传统的基于标量的数据库不同,后者将数据存储在行或列中,并使用精确匹配或基于关键词的搜索方法,向量数据库的操作方式不同。它们使用向量数据库来在非常短的时间内(毫秒级别)搜索和比较大量向量,使用近似最近邻(ANN)等技术。 嵌入的简要教程 AI模型通过将原始数据如文本、视频和图像输入到诸如word2vec之类的向量嵌入库中,生成嵌入。在AI和机器学习的背景下,这些特征代表数据的不同维度,这些维度对于理解模式、关系和底层结构至关重要。 下面是使用word2vec生成词嵌入的示例。 1.…

Leave a Comment

AWS vs Azure 云服务终极对决

亚马逊网络服务(Amazon Web Services,AWS)和微软 Azure 是云计算领域的两大巨头。这两家行业领导者之间的竞争引发了“云战”。本文深入比较了 AWS 和 Azure,从功能、优势、劣势、就业机会等方面进行了全面的比较。 什么是 AWS? 亚马逊网络服务(Amazon Web Services,AWS)是亚马逊提供的功能丰富的云计算平台。它提供许多按需服务,包括计算能力、存储选项、数据库、机器学习、分析等等。这些服务使企业和个人能够在没有物理硬件的情况下创建、分发和管理软件应用和服务,提高了云环境的灵活性、可扩展性和可负担性。 什么是 Azure? Azure 是微软提供的云计算平台,提供处理能力、存储、数据库、网络、分析等各种服务。它使企业能够构建、实施和管理基于云的应用和服务,并与微软的软件生态系统实现可扩展性、灵活性和集成。 AWS vs. Azure:概述 让我们看一下 AWS 和 Azure 之间的基本区别:…

Leave a Comment

SQL中的SUBSTRING函数是什么?【通过示例进行解释】

你是否曾经遇到在SQL中提取字符串的特定部分的需求?你可以检索列的前几个字符,或者根据特定的位置或长度来隔离一个子字符串。在这种情况下,SUBSTRING SQL函数就可以派上用场。你可以使用这个有效的工具快速地修改字符串,使得你的数据库查询更具灵活性。这个全面的教程将涵盖SUBSTRING SQL的所有方面,并提供其语法、应用、性能建议和实际示例的全面概述。 什么是SQL中的SUBSTRING函数? SUBSTRING函数是SQL中一种强大的工具,它允许我们根据指定的条件从字符串中提取部分内容。它允许我们高效地操作和分析文本数据,无论是需要提取特定数量的字符,还是根据特定位置提取子字符串,或者根据模式提取子字符串。在本文中,我们将探讨SUBSTRING函数在SQL中的各种应用和语法。 SQL中SUBSTRING的语法 SQL中SUBSTRING函数的语法略有不同,具体取决于你使用的数据库管理系统(DBMS)。然而,一般的语法如下: 对于大多数DBMS SUBSTRING(string_expression, start_position, length) 对于某些DBMS(例如Oracle) SUBSTR(string_expression, start_position, length) string_expression:要从中提取子字符串的输入字符串。 start_position:子字符串在输入字符串中的起始位置。通常是一个整数值。 length:(可选)要提取的子字符串的长度。如果省略,将从start_position位置提取到输入字符串的末尾。 需要注意的是,start_position参数通常是基于1的,也就是说输入字符串的第一个字符位于位置1。 还要阅读:初学者、中级学习者和有经验的学习者的前10个SQL项目 SUBSTRING SQL查询和示例 为了进一步巩固你对SQL中SUBSTRING的理解,让我们深入到SUBSTRING查询的实际示例中,展示它的多功能性和在各种场景中的应用。这些示例将涵盖从简单的提取到更高级的查询的各种用例。 示例1:提取名字 假设你有一个名为full_name的列,其中存储了个人的全名。你想从这个列中提取出只有名字。可以使用如下的Substring实现:…

Leave a Comment

在AWS服务中构建一个完整的Web应用程序

介绍 当我们开始学习AWS时,通常我们只学习一些零碎的知识,比如一些核心服务;在AWS控制台上操作,我们可以创建一个新的EC2实例或者一个S3存储桶,并且上传一些东西。但是在大多数情况下,我们无法将所有的服务整合到一个实际的应用程序中。我们知道了不同的AWS服务,但是无法将它们整合成一个实际可用的东西。如果你有同样的感觉,你来对地方了。在完成本文之后,你将能够构建一个托管在AWS中的密码管理应用程序,它在AWS服务器中进行计算,用户数据将通过API Gateway发送到后端服务器,最终结果将在浏览器中显示,并且还将数据存储在AWS数据库中。 在继续之前,请确保你有一个AWS账户并且可以访问控制台。本文不需要对AWS有先前的了解;如果你对AWS有一些基本的了解,那将会有帮助,即使你不了解,你也应该能够跟随我们构建应用程序。本文不是对任何AWS服务的深入探讨,而是将它们全部整合到一个工作的应用程序中。 学习目标 通过整合不同的AWS服务创建一个端到端的Web应用程序。 学习如何使用AWS Amplify部署和托管Web应用程序。 学习如何使用AWS Lambda创建后端服务器。 学习如何使用API Gateway在前端和后端组件之间进行数据传输。 学习如何从AWS DynamoDB数据库中存储和检索数据。 我们将构建的服务和应用程序概述 本文使用五个AWS服务从零开始构建端到端的Web应用程序,如上图所示。我们将创建一个安全密码管理应用程序,通过输入密码的名称、长度和属性(大写字母、小写字母、数字、特殊字符)生成和存储安全密码。这是一个简单的应用程序,但它将所有的主要组件整合在一起,可以用来构建一个更大的实际应用程序。 我们需要做什么来构建这个应用程序? 1. 我们必须创建和托管一个用户将在其浏览器中导航的网页。 2. 我们需要一种方法来调用密码生成功能。 3. 我们需要一种计算结果的方法。 4. 我们需要一种存储结果的方法,并且需要一种将结果返回给用户的方法。…

Leave a Comment