Press "Enter" to skip to content

11 search results for "SentenceTransformer"

使用Amazon SageMaker JumpStart进行大规模的文本嵌入和句子相似度检索

在本文中,我们展示了如何使用SageMaker Python SDK进行文本嵌入和句子相似度的使用方法句子相似度涉及在通过LLM将两个文本片段转换为嵌入后,评估它们之间的相似程度,这是像检索增强生成(RAG)这样的应用的基础步骤

Leave a Comment

“深入挖掘 Rust 编写的矢量数据库 Qdrant”

介绍 Vector数据库已经成为存储和索引非结构化和结构化数据表示的首选位置。这些表示是由嵌入模型生成的向量嵌入。向量存储已成为开发带有深度学习模型的应用程序的重要组成部分,尤其是大型语言模型。在向量存储的不断发展中,Qdrant是最近推出的一个功能齐全的向量数据库。让我们深入了解一下。 学习目标 熟悉Qdrant的术语,以更好地理解它 深入研究Qdrant Cloud并创建Clusters 学习如何创建我们的文档的嵌入并将它们存储在Qdrant Collections中 探索在Qdrant中查询的工作原理 在Qdrant中调试过滤器,以检查其工作原理 本文作为Data Science Blogathon的一部分发表。 什么是嵌入? 嵌入是一种以数字形式表示数据的方式,即以n维空间中的数字或数值向量的形式表示不同类型的数据,如文本、照片、音频、视频等。嵌入使我们能够以这种方式对相关数据进行分组。使用特定模型可以将某些输入转换为向量。Google创建的一种广为人知的嵌入模型是将单词转化为向量(向量是具有n维的点),称之为Word2Vec。每个大型语言模型都有一个嵌入模型,用于生成LLM的嵌入。 嵌入的用途是什么? 将单词转换为向量的一个优点是可以进行比较。当拿到两个单词作为数字输入或向量嵌入时,计算机可以进行比较,尽管它无法直接比较它们。可以将具有可比较嵌入的单词分组在一起。因为它们彼此相关,诸如“王”、“皇后”、“王子”和“公主”这些术语将出现在一个聚类中。 从这个意义上讲,嵌入帮助我们找到与给定术语相关的单词。这可以用于句子,我们输入一个句子,提供的数据返回相关的句子。这为许多用例奠定了基础,包括聊天机器人、句子相似性、异常检测和语义搜索。我们开发的用于根据我们提供的PDF或文档回答问题的聊天机器人利用了这种嵌入概念。所有生成式大型语言模型都使用这种方法,以获得与他们提供的查询相关联的内容。 什么是向量数据库? 如前所述,嵌入是各种数据的表示,通常是非结构化数据以数字格式在n维空间中。那么我们该如何存储它们呢?传统的关系型数据库管理系统(RDMS)不能用于存储这些向量嵌入。这就是向量存储/向量数据库发挥作用的地方。向量数据库的设计目的是以高效的方式存储和检索向量嵌入。有许多不同的向量存储器,它们通过所支持的嵌入模型和用于获取相似向量的搜索算法的种类而有所不同。 什么是Qdrant? Qdrant是一种新型的向量相似性搜索引擎和向量数据库,采用Rust语言构建的可用于生产的服务。Qdrant具有用户友好的API,用于存储、搜索和管理具有元数据的高维点(点就是向量嵌入),这些元数据称为载荷。这些载荷成为有价值的信息,提高搜索精度,并为用户提供有见地的数据。如果您熟悉其他向量数据库,如Chroma,Payload类似于元数据,它包含有关向量的信息。 Qdrant是用Rust编写的,即使在负载很重的情况下也是快速可靠的向量存储。Qdrant与其他数据库的区别在于它提供的客户端API数量。目前,Qdrant支持Python、TypeScript/JavaScript、Rust和Go。它使用HSNW(层次可导航小世界图)进行向量索引,并提供了许多距离度量,如余弦、点和欧氏距离。它还提供了一个内置的推荐API。 了解Qdrant术语 要顺利开始使用Qdrant,熟悉Qdrant向量数据库中的术语/主要组件是一个好习惯。…

Leave a Comment

在Amazon SageMaker上使用LLMs实现智能视频和音频问答,并提供多语言支持

在日益数字化的世界中,数字资产是企业产品、服务、文化和品牌身份的重要视觉表现数字资产与记录的用户行为一起,可以通过提供互动和个性化体验来促进客户参与,使公司能够与目标受众更深入地连接高效地发现和搜索特定的数字资产[…]

Leave a Comment

见面GPTCache:开发LLM查询语义缓存的库

ChatGPT和大型语言模型(LLMs)非常灵活,可以创建多种程序。然而,当应用程序受欢迎并且流量增加时,与LLM API调用相关的成本可能变得显著。在处理许多查询时,LLM服务可能还需要较长的等待时间。 为了直面这一困难,研究人员开发了GPTCache,这是一个旨在存储LLM答案的语义缓存项目。开源的GPTCache程序可以通过缓存其输出答案来加快LLMs的速度。当所请求的响应已经在缓存中存储并且之前已经请求过时,这将极大地减少获取它所需的时间。 GPTCache具有灵活和简单的特点,非常适合任何应用。它与许多语言学习机器(LLMs)兼容,例如OpenAI的ChatGPT。 它是如何工作的? 为了正常运行,GPTCache会缓存LLM的最终回复。缓存是用于快速检索最近使用的信息的内存缓冲区。每当向LLM发出新请求时,GPTCache首先查找缓存,以确定所请求的响应是否已经存储在其中。如果答案可以在缓存中找到,它将立即返回。如果缓存中没有找到,LLM将生成响应并将其添加到缓存中。 GPTCache的模块化架构使其易于实施定制的语义缓存解决方案。用户可以通过选择不同的设置来定制每个模块的体验。 LLM适配器通过将各种LLM模型使用的API和请求协议标准化为OpenAI API,统一了它们之间的接口。由于LLM适配器可以在不需要重写代码或熟悉新API的情况下在LLM模型之间移动,它简化了测试和实验。 嵌入生成器使用所请求的模型创建嵌入,以进行相似性搜索。支持的模型可以使用OpenAI的嵌入API。这是使用GPTCache/paraphrase-albert-onnx模型的ONNX,Hugging Face嵌入API,Cohere嵌入API,fastText嵌入API和SentenceTransformers嵌入API。 在缓存存储中,像ChatGPT这样的LLM的响应被保留,直到可以检索。在确定两个实体是否在语义上相似时,会获取缓存的回复并将其发送回请求方。GPTCache与许多不同的数据库管理系统兼容。用户可以选择最符合其性能、可扩展性和最常用数据库成本要求的数据库。 向量存储的选择:GPTCache包括一个向量存储模块,它使用从原始请求中导出的嵌入来识别K个最相似的请求。此功能可用于确定两个请求的相似程度。此外,GPTCache支持多个向量存储,例如Milvus、Zilliz Cloud和FAISS,并为与它们一起使用提供了简单的接口。用户可以选择各种向量存储选项,其中任何一个都可能影响GPTCache的相似性搜索性能。凭借对各种向量存储的支持,GPTCache承诺是可适应的,并满足更多种用例的需求。 GPTCache缓存管理器管理缓存存储和向量存储组件的驱逐策略。当缓存被填满时,替换策略决定哪些旧数据应该从缓存中删除,以为新数据腾出空间。 相似性评估器的信息来自于GPTCache的缓存存储和向量存储部分。它使用几种不同的方法将输入请求与向量存储中的请求进行比较。是否从缓存中提供请求取决于相似度的程度。GPTCache提供了统一的接口和可用实现的库,以确定缓存匹配。GPTCache通过各种相似度算法来确定缓存匹配的能力,使其能够适应大范围的用例和用户需求。 特点和优势 通过GPTCache减少LLM查询延迟,提高响应速度和速度。 由于许多LLM服务采用基于令牌和请求的定价结构,GPTCache可以减少服务成本,限制API调用次数。 GPTCache具有从LLM服务卸载工作的能力,提高可扩展性。随着您接收的请求数量增加,这可以帮助您保持高效运行。 借助GPTCache,可以将创建LLM应用程序的成本降至最低。通过缓存由LLM生成或模拟的数据,您可以在不向LLM服务发出API请求的情况下测试您的应用程序。 GPTCache可以与您选择的应用程序(LLM ChatGPT)、缓存存储(SQLite、PostgreSQL、MySQL、MariaDB、SQL Server或Oracle)和向量存储(FAISS、Milvus、Ziliz Cloud)配合使用。GPTCache项目的目标是在GPT-based应用程序中尽可能地重用先前生成的回复,而不是每次都从空白开始,从而实现对语言模型的最有效利用。

Leave a Comment

用BERT构建自定义FAQ聊天机器人

聊天机器人已成为许多组织用于各种目的的越来越标准和有价值的界面。它们在不同行业中有许多应用,例如为客户提供个性化的产品推荐,提供全天候的客户支持来解决查询问题,协助客户预订等等。本文探讨了创建专门用于客户互动的FAQ聊天机器人的过程。FAQ聊天机器人解答特定领域内的问题,利用预定义的问题列表和相应的答案。这种类型的聊天机器人依赖于语义问题匹配作为其基本机制。 学习目标 了解BERT模型的基础知识 了解Elasticsearch及其在聊天机器人中的应用 创建聊天机器人的机制 在Elasticsearch中进行索引和查询 本文是作为Data Science Blogathon的一部分发布的。 BERT是什么? BERT(Bidirectional Encoder Representations from Transformers)是谷歌于2018年发布的一个大型语言模型。与单向模型不同,BERT是基于Transformer架构的双向模型。它通过考虑句子中在它之前和之后出现的单词来学习理解单词的上下文,实现更全面的理解。 BERT面临的一个主要挑战是无法在自然语言处理任务中达到最先进的性能。主要问题是标记级别的嵌入在文本相似性方面无法有效使用,导致在生成句子嵌入时性能较差。 然而,为了解决这个挑战,开发了Sentence-BERT(SBERT)。SBERT基于一个Siamese网络,它每次接收两个句子,并使用BERT模型将它们转换为标记级别的嵌入。然后,它对每组嵌入应用汇聚层以生成句子嵌入。在本文中,我们将使用SBERT进行句子嵌入。 Elasticsearch是什么? Elasticsearch是一个开源的搜索和分析引擎,具有强大的实时处理能力、高度可扩展性,并专为处理大规模数据而设计。它基于Apache Lucene库开发,提供全文搜索功能。Elasticsearch具有高度可扩展性,因为它提供了一个高度分布式的网络,可以跨多个节点进行扩展,提供高可用性和容错性。它还提供了一个灵活而强大的RESTful API,允许使用HTTP请求与搜索引擎进行交互。它支持各种编程语言,并提供客户端库以便于应用程序集成。 如何使用BERT和Elasticsearch创建聊天机器人? 本文将教我们如何使用预训练的BERT和Elasticsearch创建FAQ聊天机器人。 步骤1)安装SBERT库 #安装sentence…

Leave a Comment

用句子转换器构建一个播放列表生成器

不久前,我发布了一个使用Sentence Transformers和Gradio构建的播放列表生成器,并在随后的一篇文章中反思了如何将我的项目作为有效的学习经验。但是,我究竟是如何构建这个播放列表生成器的呢?在这篇文章中,我们将分解该项目并查看两个技术细节:嵌入是如何生成的,以及多步骤的Gradio演示是如何构建的。 正如我们在Hugging Face博客的先前文章中所探讨的那样,Sentence Transformers(ST)是一个提供工具生成句子嵌入的库,具有各种用途。由于我可以访问一组歌词数据集,我决定利用ST的语义搜索功能从给定的文本提示生成播放列表。具体来说,目标是从提示中创建一个嵌入,使用该嵌入对一组预生成的歌词嵌入进行语义搜索,从而生成一组相关的歌曲。所有这些都将包含在一个使用新的Blocks API在Hugging Face Spaces上托管的Gradio应用中。 我们将看到Gradio的稍微高级用法,所以如果你是该库的新手,我建议你在处理本文的Gradio特定部分之前先阅读《入门指南》。另外,请注意,虽然我不会发布歌词数据集,但你可以在Hugging Face Hub上找到歌词嵌入可供你玩耍。让我们开始吧!🪂 Sentence Transformers:嵌入和语义搜索 嵌入在Sentence Transformers中非常关键!我们在之前的一篇文章中了解了嵌入是什么以及如何生成它们,我建议在继续阅读本文之前先查看那篇文章。 Sentence Transformers提供了一个大型的预训练嵌入模型集合!它甚至包括使用我们自己的训练数据对这些模型进行微调的教程,但对于许多用例(如在一组歌词语料库上进行语义搜索),预训练模型在开箱即用时表现出色。然而,由于有这么多的嵌入模型可供选择,我们如何知道该使用哪个模型呢? ST文档突出了许多选择,以及它们的评估指标和一些用例描述。MS MARCO模型是在Bing搜索引擎查询上进行训练的,但由于它们在其他领域上也表现良好,我决定任何一个模型都可能是这个项目的一个好选择。对于播放列表生成器,我们只需要找到具有一定语义相似性的歌曲,而且由于我并不关心达到特定性能指标,我随机选择了sentence-transformers/msmarco-MiniLM-L-6-v3。 ST中的每个模型都有一个可配置的输入序列长度(最大长度),在这之后,你的输入将被截断。我选择的模型具有512个单词片段的最大序列长度,但正如我发现的那样,这通常不足以嵌入整首歌曲。幸运的是,我们可以很容易地将歌词分成较小的部分,以便模型能够处理——诗节!一旦我们将歌曲分成诗节并嵌入每个诗节,我们将发现搜索效果更好。 歌曲被分割成诗节,然后每个诗节被嵌入。 要实际生成嵌入,你可以调用Sentence Transformers模型的.encode()方法,并将其传入一个字符串列表。然后,你可以以任何你喜欢的方式保存嵌入——在这种情况下,我选择了将它们存储为Pickle文件。 from sentence_transformers…

Leave a Comment

Can't find what you're looking for? Try refining your search: