搜索
首页科技周边人工智能向量流:生锈的记忆效率索引

介绍

正在引入嵌入中的矢量流,该功能旨在优化大规模文档嵌入。使用RUST的并发启用异步分解和嵌入可以减少记忆使用情况并加快过程的速度。今天,我将展示如何将其与编织矢量数据库集成在一起,以进行无缝的图像嵌入和搜索。

在我的上一篇文章中,用嵌入方式将嵌入式管道增压起来,我讨论了嵌入背后的想法,以及它如何使从多种模式中创建嵌入式。在本文中,我想介绍一个名为矢量流的嵌入的新功能,并查看它如何与Weaviate Vector数据库一起工作。

向量流:生锈的记忆效率索引

概述

  • 嵌入式中的矢量流媒体通过异步分解与Rust的并发性优化了大规模文档的嵌入。
  • 它通过并联处理块来解决传统嵌入方法中的记忆和效率问题。
  • 与Weaviate集成可以使无缝的嵌入和搜索矢量数据库中。
  • 实现向量流涉及创建数据库适配器,启动嵌入模型和嵌入数据。
  • 这种方法为大规模文档嵌入提供了更高效,可扩展和灵活的解决方案。

目录

  • 问题是什么?
  • 我们解决问题的解决方案
  • 示例用嵌入的用例
    • 步骤1:创建适配器
    • 步骤2:创建嵌入模型
    • 步骤3:嵌入目录
    • 步骤4:查询矢量数据库
    • 步骤5:查询矢量数据库
    • 输出
  • 常见问题

问题是什么?

首先,检查创建嵌入的当前问题,尤其是在大规模文档中。当前的嵌入框架在两个步骤的过程中运行:切块和嵌入。首先,从所有文件中提取文本,并创建块/节点。然后,将这些块馈送到具有特定批量大小的嵌入模型中,以处理嵌入。在完成此操作的同时,块和嵌入式保留在系统内存上。

当文件和嵌入尺寸很小时,这不是问题。但是,当有很多文件时,这将成为一个问题,并且您正在使用大型模型,更糟糕的是多矢量嵌入。因此,要处理此操作,需要一个高RAM才能处理嵌入。另外,如果同步完成,则在创建块的同时浪费了很多时间,因为块并不是计算较重的操作。随着块的制作,将它们传递到嵌入模型将是有效的。

我们解决问题的解决方案

解决方案是创建一个异步分块和嵌入任务。我们可以使用Rust的并发模式和线程安全有效地产生螺纹来处理此任务。这是使用RUST的MPSC(多生产者单个消费者)模块完成的,该模块通过线程之间传递消息。因此,这会创建一块用缓冲区传递到嵌入线的块流。缓冲区完成后,它将块嵌入块并将嵌入式发送回主线程,然后将它们发送到矢量数据库。这样可以确保任何一次操作都不会浪费时间,也不会浪费瓶颈。此外,系统仅存储块和嵌入缓冲区中的块,一旦将它们移至矢量数据库,它们就会从内存中擦除它们。

向量流:生锈的记忆效率索引

示例用嵌入的用例

现在,让我们看看此功能中的功能:

使用嵌入,将向量从文件目录传输到矢量数据库是一个简单的三步过程。

  1. 为矢量数据库创建一个适配器:这是围绕数据库函数的包装器,它允许您创建索引,将元数据从embedanything的格式转换为数据库所需的格式,以及插入嵌入式的函数。突出数据库的适配器已经创建并在此处存在。
  1. 启动您选择的嵌入模型:您可以从不同的本地模型甚至云模型中进行选择。还可以通过设置块大小和缓冲区大小来确定配置,以一次将多少嵌入。理想情况下,这应该尽可能高,但是系统RAM会限制这一点。
  1. 从嵌入式呼叫嵌入功能:只需传递嵌入目录路径,嵌入模型,适配器和配置即可。

在此示例中,我们将嵌入图像目录并将其发送到向量数据库。

步骤1:创建适配器

在嵌入内容中,适配器是在外部创建的,以免使图书馆沉重,并且可以选择要使用的数据库。这是一个简单的编织适配器:

从embed_anything Import embeddata

从embed_anything.vectordb导入适配器

weaviateadapter类(适配器):

def __init __(self,api_key,url):

super().__ init __(api_key)

self.client = weaviate.connect_to_weaviate_cloud(

cluster_url = url,auth_credentials = wvc.init.auth.api_key(api_key)

)

如果self.client.is_ready():

打印(“编织已准备就绪”)

def create_index(self,index_name:str):

self.index_name = index_name

self.collection = self.client.collections.create(

index_name,vectorizer_config = wvc.config.configure.vectorizer.none()

)

返回self.Collection

def convert(self,嵌入:列表[embeddata]):

数据= []

用于嵌入嵌入:

属性=嵌入。metadata

属性[“ text”] = embedding.text

data.append(

wvc.data.dataobject(properties =属性,vector = embedding.embedding)

)

返回数据

def upsert(自我,嵌入):

data = self.convert(嵌入)

self.client.collections.get(self.index_name).data.insert_many(data)

def delete_index(self,index_name:str):

self.client.collections.delete(index_name)

###启动客户端和索引

url =“ your-weaviate-url”

api_key =“您的weaviate-api-key”

weaviate_adapter = weaviateadapter(api_key,url)

index_name =“ test_index”

如果weaviate_adapter.client.collections.list_all()中的index_name():

weaviate_adapter.delete_index(index_name)

weaviate_adapter.create_index(“ test_index”)

步骤2:创建嵌入模型

在这里,由于我们正在嵌入图像,因此我们可以使用剪辑模型

导入embed_anything inocting wht ymodel

型号= embed_anything.embeddingmodel.from_pretretained_cloud(

embed_anything.thichmodel.clip,

模型_)

步骤3:嵌入目录

data = embed_anything.embed_image_directory(

“ \ image_directory”,

嵌入式=模型,

适配器= weaviate_adapter,

config = embed_anything.imageembedconfig(buffer_size = 100),

)

步骤4:查询矢量数据库

query_vector = embed_anything.embed_query([“猫的图像”],embeder =型号)[0] .embedding

步骤5:查询矢量数据库

响应= weaviate_adapter.collection.query.near_vector(

近_vector = query_vector,

限制= 2,

return_metadata = wvc.query.metadataquery(eslenty = true),

)

检查响应;

输出

使用剪辑模型,我们将整个目录与猫,狗和猴子的图片进行了矢量。使用简单的查询“猫的图像”,我们能够搜索所有文件中的猫图像。

向量流:生锈的记忆效率索引

在COLAB上查看笔记本中的代码。

结论

我认为矢量流是使许多工程师能够选择更优化和无技术债务解决方案的功能之一。您可以使用轻巧的流媒体选项,而不是在云上使用笨重的框架。

在此处查看GitHub存储库:嵌入仓库。

常见问题

Q1。嵌入中的矢量流是什么?

Ans。矢量流是一项功能,可通过使用Rust的并发来优化大规模文档嵌入,以进行异步分解和嵌入,减少内存使用并加快过程。

Q2。矢量流解决了什么问题?

Ans。它通过异步处理块,减少瓶颈并优化资源使用来解决传统嵌入方法中的高内存使用情况和效率低下。

Q3。向量流如何与编织合作?

Ans。它使用适配器将嵌入到编织矢量数据库中连接,从而可以无缝嵌入和查询数据。

Q4。使用向量流的步骤是什么?

Ans。这是步骤:
1。创建一个数据库适配器。
2。启动嵌入模型。
3。嵌入目录。
4。查询矢量数据库。

Q5。为什么要在传统方法上使用向量流?

Ans。与传统的嵌入方法相比,它提供了更好的效率,记忆使用降低,可扩展性和灵活性。

以上是向量流:生锈的记忆效率索引的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何使用Huggingface Smollm建立个人AI助手如何使用Huggingface Smollm建立个人AI助手Apr 18, 2025 am 11:52 AM

利用“设备” AI的力量:建立个人聊天机器人CLI 在最近的过去,个人AI助手的概念似乎是科幻小说。 想象一下科技爱好者亚历克斯(Alex)梦见一个聪明的本地AI同伴 - 不依赖

通过斯坦福大学激动人心的新计划,精神健康的AI专心分析通过斯坦福大学激动人心的新计划,精神健康的AI专心分析Apr 18, 2025 am 11:49 AM

他们的首届AI4MH发射于2025年4月15日举行,著名的精神科医生兼神经科学家汤姆·因斯尔(Tom Insel)博士曾担任开幕式演讲者。 Insel博士因其在心理健康研究和技术方面的杰出工作而闻名

2025年WNBA选秀课程进入联盟成长并与在线骚扰作斗争2025年WNBA选秀课程进入联盟成长并与在线骚扰作斗争Apr 18, 2025 am 11:44 AM

恩格伯特说:“我们要确保WNBA仍然是每个人,球员,粉丝和公司合作伙伴,感到安全,重视和授权的空间。” anno

Python内置数据结构的综合指南 - 分析VidhyaPython内置数据结构的综合指南 - 分析VidhyaApr 18, 2025 am 11:43 AM

介绍 Python擅长使用编程语言,尤其是在数据科学和生成AI中。 在处理大型数据集时,有效的数据操作(存储,管理和访问)至关重要。 我们以前涵盖了数字和ST

与替代方案相比,Openai新型号的第一印象与替代方案相比,Openai新型号的第一印象Apr 18, 2025 am 11:41 AM

潜水之前,一个重要的警告:AI性能是非确定性的,并且特定于高度用法。简而言之,您的里程可能会有所不同。不要将此文章(或任何其他)文章作为最后一句话 - 目的是在您自己的情况下测试这些模型

AI投资组合|如何为AI职业建立投资组合?AI投资组合|如何为AI职业建立投资组合?Apr 18, 2025 am 11:40 AM

建立杰出的AI/ML投资组合:初学者和专业人士指南 创建引人注目的投资组合对于确保在人工智能(AI)和机器学习(ML)中的角色至关重要。 本指南为建立投资组合提供了建议

代理AI对安全操作可能意味着什么代理AI对安全操作可能意味着什么Apr 18, 2025 am 11:36 AM

结果?倦怠,效率低下以及检测和作用之间的差距扩大。这一切都不应该令任何从事网络安全工作的人感到震惊。 不过,代理AI的承诺已成为一个潜在的转折点。这个新课

Google与Openai:AI为学生打架Google与Openai:AI为学生打架Apr 18, 2025 am 11:31 AM

直接影响与长期伙伴关系? 两周前,Openai提出了强大的短期优惠,在2025年5月底之前授予美国和加拿大大学生免费访问Chatgpt Plus。此工具包括GPT-4O,A A A A A

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)