[使用Vald进行快速和近似密集向量搜索的完整指南]

# 使用Vald进行快速和近似密集向量搜索的完整指南

## 引言

在当今的大规模数据处理中,高效地搜索和检索相似数据是一项重要任务。Vald 是一个高度可扩展的分布式快速近似最近邻(ANN)密集向量搜索引擎,专为处理这种任务而设计。在这篇文章中,我们将探讨如何使用 Vald 数据库进行文档相似性搜索,并提供代码示例来帮助您快速上手。

## 主要内容

### 安装和准备环境

在开始之前,确保您已经设置好运行的 Vald 集群。您可以参考 [安装说明](https://vald.vdaas.org/docs/get-started/) 了解更多信息。使用以下命令安装所需的 Python 包:

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

加载和预处理文档

我们首先需要加载和分割文本文档,以便为它们生成嵌入向量。

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)

使用 HuggingFaceEmbeddings 生成嵌入

embeddings = HuggingFaceEmbeddings()
db = Vald.from_documents(documents, embeddings, host="{AI_URL}", port=8080) # 使用API代理服务提高访问稳定性

相似性搜索

您可以进行基于文本或者向量的相似性搜索:

  • 基于文本查询
query = "What did the president say about Ketanji Brown Jackson"
docs = db.similarity_search(query)
print(docs[0].page_content)
  • 基于向量查询
embedding_vector = embeddings.embed_query(query)
docs = db.similarity_search_by_vector(embedding_vector)
print(docs[0].page_content)

使用安全连接

在某些环境中,使用安全连接至关重要。以下是一个使用基于 Athenz 认证的 Vald 集群的示例配置:

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="{AI_URL}",  # 使用API代理服务提高访问稳定性
    port=443,
    grpc_use_secure=True,
    grpc_credentials=credentials,
    grpc_metadata=metadata,
)

docs = db.similarity_search(query, grpc_metadata=metadata)
print(docs[0].page_content)

常见问题和解决方案

  • 网络访问限制:由于某些地区的网络限制,您可能需要使用 API 代理服务来提高访问稳定性。
  • 性能调整:基于硬件配置和数据量调整 Vald 集群的参数以优化性能。

总结和进一步学习资源

Vald 提供了一种高效的方式来处理海量数据的相似性搜索,在构建需要快速响应的搜索应用时具有显著优势。要进一步了解,请参阅以下资源:

参考资料

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

---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值