[掌握Cloud SQL for MySQL:与Langchain集成实现AI驱动的数据库管理]

56 阅读2分钟

掌握Cloud SQL for MySQL:与Langchain集成实现AI驱动的数据库管理

引言

Google Cloud SQL提供了一种完全托管的关系数据库服务,支持MySQL、PostgreSQL和SQL Server等数据库引擎。通过Langchain的集成,开发者可以将数据库应用程序扩展到AI驱动的体验中。本篇文章将带您深入了解如何使用Cloud SQL for MySQL进行Langchain文档的保存、加载和删除操作。

主要内容

启动前准备

  1. 创建Google Cloud项目。
  2. 启用Cloud SQL Admin API。
  3. 创建Cloud SQL for MySQL实例及数据库。
  4. 为数据库添加IAM用户(可选)。
  5. 确认您在运行环境中的数据库访问权限。
# 请填写Google Cloud地区和Cloud SQL实例名称
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"  # 请填入项目ID
!gcloud config set project {PROJECT_ID}

认证身份

在使用Colab时进行用户认证:

from google.colab import auth
auth.authenticate_user()

连接池配置

使用MySQLEngine配置连接池:

from langchain_google_cloud_sql_mysql import MySQLEngine

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

初始化表

engine.init_document_table(TABLE_NAME, overwrite_existing=True)

文档操作

保存文档
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}),
    # 其他文档...
]

saver = MySQLDocumentSaver(engine=engine, table_name=TABLE_NAME)
saver.add_documents(test_docs)
加载文档
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)

可以根据SQL查询加载文档:

loader = MySQLLoader(engine=engine, query=f"SELECT * FROM `{TABLE_NAME}` WHERE JSON_EXTRACT(langchain_metadata, '$.fruit_id') = 1;")
onedoc = loader.load()
删除文档
loader = MySQLLoader(engine=engine, table_name=TABLE_NAME)
docs = loader.load()
saver.delete(onedoc)
print("Documents after delete:", loader.load())

常见问题和解决方案

如何解决网络访问限制问题?

由于某些地区的网络限制,开发者可以考虑使用API代理服务来提高访问稳定性。

如何处理自定义的文档结构?

使用MySQLLoaderMySQLDocumentSaver时,可以自定义content和metadata字段以适应不同的表结构。配置content_columnsmetadata_columns以定制文档的加载和保存。

总结和进一步学习资源

Google Cloud SQL for MySQL与Langchain的结合为开发者提供了强大的AI驱动数据库解决方案。通过掌握这些技巧,您可以更好地管理和操控数据库数据。

进一步学习资源

参考资料

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

---END---