使用Intel的Visual Data Management System (VDMS)作为向量存储的实战教程

在大数据的时代,如何高效地管理和访问“视觉”数据成为了一大挑战。老铁们,今天咱们就来聊聊Intel的Visual Data Management System (VDMS)。它使用视觉元数据作为图存储,旨在通过云端扩展解决方案快速访问相关视觉数据。VDMS采用MIT许可,让我们能自由发挥。

技术背景介绍

VDMS支持多种近邻搜索功能,包括:

  • K近邻搜索
  • 欧几里得距离 (L2) 和 内积 (IP)

另外,它也提供了多种用于索引和计算距离的库,比如TileDBDense、TileDBSparse、Faiss等,可以支持文本、图像和视频的嵌入,以及向量和元数据的搜索。

原理深度解析

VDMS的架构包括服务器和客户端组件,通过图形化的元数据管理视觉数据。这波操作可以说是相当丝滑。为了更好地展示VDMS的功能,我们可以在Docker中运行VDMS服务器并通过Python客户端与之交互。

实战代码演示

让我们动手实践一下,使用VDMS作为向量存储:

# 进行必要的安装
%pip install --upgrade --quiet pip vdms sentence-transformers langchain-huggingface > /dev/null

# 启动VDMS服务器
!docker run --rm -d -p 55555:55555 --name vdms_vs_test_nb intellabs/vdms:latest

# 引入必要库
from langchain_community.document_loaders.text import TextLoader
from langchain_community.vectorstores import VDMS
from langchain_community.vectorstores.vdms import VDMS_Client
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_text_splitters.character import CharacterTextSplitter

# 连接到VDMS向量存储
vdms_client = VDMS_Client(host="localhost", port=55555)

# 加载文档并获取嵌入
document_path = "../../how_to/state_of_the_union.txt"
raw_documents = TextLoader(document_path).load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(raw_documents)

# 使用HuggingFace嵌入函数
embedding = HuggingFaceEmbeddings()

# 创建Faiss Flat索引并进行相似度搜索
collection_name = "my_collection_faiss_L2"
db_FaissFlat = VDMS.from_documents(docs, client=vdms_client, collection_name=collection_name, embedding=embedding)

query = "What did the president say about Ketanji Brown Jackson"
returned_docs = db_FaissFlat.similarity_search(query, k=3)

优化建议分享

通过Faiss IVFFlat和其他策略进一步优化搜索速度和准确性。我先前踩过这个坑,发现使用FaissIVFFlat结合IP距离有时能带来更好的结果。可以根据实际需求进行调优。

db_FaissIVFFlat = VDMS.from_documents(docs, client=vdms_client, collection_name="my_collection_FaissIVFFlat_IP", embedding=embedding, engine="FaissIVFFlat", distance_strategy="IP")
docs_with_score = db_FaissIVFFlat.similarity_search_with_score(query, k=3)

补充说明和总结

VDMS不仅提供了多种索引和距离计算策略,而且与LangChain的结合使得其在向量搜索方面十分强大。适合需要处理大规模视觉数据的应用场景。

老铁们,这就是今天的技术分享,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值