介绍
正在引入嵌入中的矢量流,该功能旨在优化大规模文档嵌入。使用RUST的并发启用异步分解和嵌入可以减少记忆使用情况并加快过程的速度。今天,我将展示如何将其与编织矢量数据库集成在一起,以进行无缝的图像嵌入和搜索。
在我的上一篇文章中,用嵌入方式将嵌入式管道增压起来,我讨论了嵌入背后的想法,以及它如何使从多种模式中创建嵌入式。在本文中,我想介绍一个名为矢量流的嵌入的新功能,并查看它如何与Weaviate Vector数据库一起工作。
概述
- 嵌入式中的矢量流媒体通过异步分解与Rust的并发性优化了大规模文档的嵌入。
- 它通过并联处理块来解决传统嵌入方法中的记忆和效率问题。
- 与Weaviate集成可以使无缝的嵌入和搜索矢量数据库中。
- 实现向量流涉及创建数据库适配器,启动嵌入模型和嵌入数据。
- 这种方法为大规模文档嵌入提供了更高效,可扩展和灵活的解决方案。
目录
- 问题是什么?
- 我们解决问题的解决方案
- 示例用嵌入的用例
- 步骤1:创建适配器
- 步骤2:创建嵌入模型
- 步骤3:嵌入目录
- 步骤4:查询矢量数据库
- 步骤5:查询矢量数据库
- 输出
- 常见问题
问题是什么?
首先,检查创建嵌入的当前问题,尤其是在大规模文档中。当前的嵌入框架在两个步骤的过程中运行:切块和嵌入。首先,从所有文件中提取文本,并创建块/节点。然后,将这些块馈送到具有特定批量大小的嵌入模型中,以处理嵌入。在完成此操作的同时,块和嵌入式保留在系统内存上。
当文件和嵌入尺寸很小时,这不是问题。但是,当有很多文件时,这将成为一个问题,并且您正在使用大型模型,更糟糕的是多矢量嵌入。因此,要处理此操作,需要一个高RAM才能处理嵌入。另外,如果同步完成,则在创建块的同时浪费了很多时间,因为块并不是计算较重的操作。随着块的制作,将它们传递到嵌入模型将是有效的。
我们解决问题的解决方案
解决方案是创建一个异步分块和嵌入任务。我们可以使用Rust的并发模式和线程安全有效地产生螺纹来处理此任务。这是使用RUST的MPSC(多生产者单个消费者)模块完成的,该模块通过线程之间传递消息。因此,这会创建一块用缓冲区传递到嵌入线的块流。缓冲区完成后,它将块嵌入块并将嵌入式发送回主线程,然后将它们发送到矢量数据库。这样可以确保任何一次操作都不会浪费时间,也不会浪费瓶颈。此外,系统仅存储块和嵌入缓冲区中的块,一旦将它们移至矢量数据库,它们就会从内存中擦除它们。
示例用嵌入的用例
现在,让我们看看此功能中的功能:
使用嵌入,将向量从文件目录传输到矢量数据库是一个简单的三步过程。
- 为矢量数据库创建一个适配器:这是围绕数据库函数的包装器,它允许您创建索引,将元数据从embedanything的格式转换为数据库所需的格式,以及插入嵌入式的函数。突出数据库的适配器已经创建并在此处存在。
- 启动您选择的嵌入模型:您可以从不同的本地模型甚至云模型中进行选择。还可以通过设置块大小和缓冲区大小来确定配置,以一次将多少嵌入。理想情况下,这应该尽可能高,但是系统RAM会限制这一点。
- 从嵌入式呼叫嵌入功能:只需传递嵌入目录路径,嵌入模型,适配器和配置即可。
在此示例中,我们将嵌入图像目录并将其发送到向量数据库。
步骤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。查询矢量数据库。
Ans。与传统的嵌入方法相比,它提供了更好的效率,记忆使用降低,可扩展性和灵活性。
以上是向量流:生锈的记忆效率索引的详细内容。更多信息请关注PHP中文网其他相关文章!

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

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

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

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

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

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)