探索Google AlloyDB for PostgreSQL:打造高性能AI数据库解决方案
Google AlloyDB for PostgreSQL 是一种全托管的关系数据库服务,旨在提供卓越的性能、无缝集成和出色的可扩展性。它与 PostgreSQL 100% 兼容,为开发者提供强大的灵活性。通过与 Langchain 的集成,AlloyDB 能够支持 AI 驱动的体验,本文将介绍如何使用 AlloyDB for PostgreSQL 存储向量嵌入(vector embeddings)以及使用 AlloyDBVectorStore 类的方法。
主要内容
1. 环境准备
在开始之前,你需要准备以下环境:
- 创建一个 Google Cloud 项目
- 启用 AlloyDB API
- 创建一个 AlloyDB 群集和实例
- 创建一个 AlloyDB 数据库
- 添加一个用户到数据库
2. 安装库
安装集成库 langchain-google-alloydb-pg 和用于嵌入服务的库 langchain-google-vertexai:
%pip install --upgrade --quiet langchain-google-alloydb-pg langchain-google-vertexai
3. 认证和配置
通过以下代码进行谷歌云的认证:
from google.colab import auth
auth.authenticate_user()
设置 Google Cloud 项目 ID,以便在笔记本中使用 Google Cloud 资源:
PROJECT_ID = "my-project-id"
!gcloud config set project {PROJECT_ID}
4. 使用 AlloyDBEngine 和 AlloyDBVectorStore
AlloyDBEngine 连接池
配置 AlloyDBEngine 以连接到数据库:
from langchain_google_alloydb_pg import AlloyDBEngine
engine = await AlloyDBEngine.afrom_instance(
project_id=PROJECT_ID,
region=REGION,
cluster=CLUSTER,
instance=INSTANCE,
database=DATABASE,
)
初始化向量存储表
创建并初始化 AlloyDBVectorStore:
await engine.ainit_vectorstore_table(
table_name=TABLE_NAME,
vector_size=768 # 向量大小,适用于 VertexAI 模型
)
创建嵌入类实例并初始化 AlloyDBVectorStore:
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest", project=PROJECT_ID
)
from langchain_google_alloydb_pg import AlloyDBVectorStore
store = await AlloyDBVectorStore.create(
engine=engine,
table_name=TABLE_NAME,
embedding_service=embedding,
)
5. 代码示例
以下是完整的代码示例,展示如何添加文本、删除文本、搜索文档并使用向量索引加速查询:
import uuid
# 添加文本
all_texts = ["Apples and oranges", "Cars and airplanes", "Pineapple", "Train", "Banana"]
metadatas = [{"len": len(t)} for t in all_texts]
ids = [str(uuid.uuid4()) for _ in all_texts]
await store.aadd_texts(all_texts, metadatas=metadatas, ids=ids)
# 删除文本
await store.adelete([ids[1]])
# 文本搜索
query = "I'd like a fruit."
docs = await store.asimilarity_search(query)
print(docs)
# 向量搜索
query_vector = embedding.embed_query(query)
docs = await store.asimilarity_search_by_vector(query_vector, k=2)
print(docs)
6. 常见问题和解决方案
- API访问限制:在某些地区,访问Google API可能受限,建议开发者考虑使用API代理服务以提高访问稳定性。
- 性能优化:使用向量索引(例如IVF Flat Index)可以显著加快向量搜索速度。
7. 总结和进一步学习资源
AlloyDB for PostgreSQL 是一个强大的数据库解决方案,特别适用于构建AI驱动的应用。通过本文的介绍和示例代码,你可以轻松上手并在项目中实现高效的数据存储和检索。
进一步学习资源:
参考资料
- Google Cloud AlloyDB 产品页面
- Langchain 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---