[轻松管理和查询你的ML特征:深入探索Google Vertex AI Feature Store]

64 阅读3分钟

引言

在机器学习模型的开发过程中,特征的管理和查询是至关重要的步骤。Google Cloud的Vertex AI Feature Store简化了这一过程,允许你在Google Cloud BigQuery中以低延迟的方式服务数据。本教程将展示如何使用Vertex AI Feature Store中的VertexFSVectorStore类,直接从BigQuery数据执行低延迟向量搜索和近似最近邻检索,为强大的ML应用提供支持。

主要内容

安装库

首先,安装必要的库:

%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"

安装完成后,重启当前的Jupyter运行时环境:

import IPython

app = IPython.Application.instance()
app.kernel.do_shutdown(True)

设置项目ID和区域

配置你的Google Cloud项目ID和BigQuery区域:

PROJECT_ID = ""  # @param {type:"string"}
! gcloud config set project {PROJECT_ID}

REGION = "us-central1"  # @param {type: "string"}

设置数据集和表名

定义你的BigQuery数据集和表名:

DATASET = "my_langchain_dataset"  # @param {type: "string"}
TABLE = "doc_and_vectors"  # @param {type: "string"}

验证你的环境

如果你使用的是Colab,运行以下代码来进行身份验证:

# from google.colab import auth as google_auth
# google_auth.authenticate_user()

创建嵌入类实例

启用Vertex AI API:

gcloud services enable aiplatform.googleapis.com --project {PROJECT_ID}

创建一个嵌入类实例:

from langchain_google_vertexai import VertexAIEmbeddings

embedding = VertexAIEmbeddings(
    model_name="textembedding-gecko@latest", project=PROJECT_ID
)

初始化VertexFSVectorStore

初始化VertexFSVectorStore

from langchain_google_community import VertexFSVectorStore

store = VertexFSVectorStore(
    project_id=PROJECT_ID,
    dataset_name=DATASET,
    table_name=TABLE,
    location=REGION,
    embedding=embedding,
)

添加文本数据

添加文本数据和对应的元数据:

all_texts = ["Apples and oranges", "Cars and airplanes", "Pineapple", "Train", "Banana"]
metadatas = [{"len": len(t)} for t in all_texts]

store.add_texts(all_texts, metadatas=metadatas)

手动同步数据:

store.sync_data()

在生产环境中设置自动同步

你可以使用cron_schedule参数来设置自动同步:

store = VertexFSVectorStore(cron_schedule="TZ=America/Los_Angeles 00 13 11 8 *", ...)

代码示例

进行查询和近似最近邻搜索:

query = "I'd like a fruit."
docs = store.similarity_search(query)
print(docs)

query_vector = embedding.embed_query(query)
docs = store.similarity_search_by_vector(query_vector, k=2)
print(docs)

# 仅返回长度为6的文档 ("Banana")
docs = store.similarity_search_by_vector(query_vector, filter={"len": 6})
print(docs)

# 添加文本和嵌入向量
items = ["some text"]
embs = embedding.embed(items)

ids = store.add_texts_with_embeddings(
    texts=["some text"], embs=embs, metadatas=[{"len": 1}]
)

常见问题和解决方案

  1. 访问受限问题:在某些地区,访问Google的服务可能受到限制。建议开发者使用代理服务,例如API代理服务,以提高访问稳定性。

  2. 同步时间长:第一次同步过程可能需要大约20分钟,这是由于特征在线存储的创建。后续同步将更快。

  3. 嵌入模型选择:选择合适的嵌入模型对于提升搜索效果至关重要。可以根据具体需求测试不同的模型。

总结和进一步学习资源

本教程展示了如何使用Google Vertex AI Feature Store进行向量存储与搜索。对于更多的高级功能和详细用法,可以参考以下资源:

参考资料

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

---END---