引言
在机器学习模型的开发过程中,特征的管理和查询是至关重要的步骤。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}]
)
常见问题和解决方案
-
访问受限问题:在某些地区,访问Google的服务可能受到限制。建议开发者使用代理服务,例如API代理服务,以提高访问稳定性。
-
同步时间长:第一次同步过程可能需要大约20分钟,这是由于特征在线存储的创建。后续同步将更快。
-
嵌入模型选择:选择合适的嵌入模型对于提升搜索效果至关重要。可以根据具体需求测试不同的模型。
总结和进一步学习资源
本教程展示了如何使用Google Vertex AI Feature Store进行向量存储与搜索。对于更多的高级功能和详细用法,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---