Skip to main content
云 SQL 是一种完全托管的关联回归数据库服务,提供高性能、无缝集成和令人印象深刻的可扩展性。它提供 MySQL、PostgreSQL 和 SQL Server 数据库引擎。扩展您的数据库应用程序,利用 Cloud SQL 的 LangChain 集成,构建 AI 驱动的体验。
本笔记本介绍了如何使用 SQL Server 云 SQL 来 保存、加载和删除 langchain 文档,使用 MSSQLLoader 和 MSSQLDocumentSaver。 了解更多关于该包的信息,请访问 GitHub。 在 Colab 中打开

开始前

要运行此笔记本,您需要执行以下操作: 在确认此笔记本的运行环境中可以访问数据库后,填写以下值并运行单元格,然后再运行示例脚本。

🦜🔗 库安装

集成位于其自己的 langchain-google-cloud-sql-mssql 包中,因此我们需要安装它。
Colab 仅限:取消注释以下单元格以重启内核,或使用按钮重启内核。对于 Gemini Enterprise Agent Platform Workbench,您可以使用顶部的按钮重启终端。

🔐 身份验证

以登录到此笔记本的 IAM 用户身份验证 Google Cloud,以便访问您的 Google Cloud 项目。

☁ 设置您的 Google 云项目

设置您的 Google Cloud 项目,以便在此笔记本中利用 Google Cloud 资源。 如果您不知道您的项目 ID,请尝试以下操作:
  • 运行 gcloud config list。
  • 运行 gcloud projects list。
  • 查看支持页面:定位项目 ID。

💡 API 启用

langchain-google-cloud-sql-mssql 包要求您在 Google Cloud 项目中 启用 Cloud SQL 管理员 API。

基本用法

MSSQLEngine 连接池

在从 MSSQL 表保存或加载文档之前,我们首先需要配置到 Cloud SQL 数据库的连接池。MSSQLEngine 配置了 SQLAlchemy 连接池,以您的 Cloud SQL 数据库成功连接,并遵循行业最佳实践。 使用 MSSQLEngine.from_instance() 创建 MSSQLEngine 时,您只需要提供 4 项内容:
  1. project_id:Google Cloud 项目中 Cloud SQL 实例所在的项目 ID。
  2. region:Cloud SQL 实例所在的区域。
  3. instance:Cloud SQL 实例的名称。
  4. database:要连接到的 Cloud SQL 实例上的数据库的名称。
  5. user:用于内置数据库身份验证和登录的数据库用户。
  6. password:用于内置数据库身份验证和登录的数据库密码。

初始化表

通过 MSSQLEngine.init_document_table(<table_name>) 初始化默认架构的表。表列:
  • page_content (类型:text)
  • langchain_metadata (类型:JSON)
overwrite_existing=True 标志表示新初始化的表将替换同名的任何现有表。

保存文档

使用 MSSQLDocumentSaver.add_documents(<documents>) 保存 langchain 文档。要初始化 MSSQLDocumentSaver 类,您需要提供 2 项内容:
  1. engine - 一个 MSSQLEngine 引擎的实例。
  2. table_name - Cloud SQL 数据库中用于存储 langchain 文档的表的名称。

加载文档

使用 MSSQLLoader.load() 或 MSSQLLoader.lazy_load() 加载 langchain 文档。lazy_load 返回一个生成器,该生成器仅在迭代期间查询数据库。要初始化 MSSQLDocumentSaver 类,您需要提供:
  1. engine - 一个 MSSQLEngine 引擎的实例。
  2. table_name - Cloud SQL 数据库中用于存储 langchain 文档的表的名称。

通过查询加载文档

除了从表加载文档,我们还可以选择从由 SQL 查询生成的视图加载文档。例如:
由 SQL 查询生成的视图可以具有与默认表不同的架构。在这种情况下,MSSQLLoader 的行为与从具有非默认架构的表加载相同。请参阅部分 使用自定义文档页面内容和元数据加载文档。

删除文档

使用 MSSQLDocumentSaver.delete(<documents>) 从 MSSQL 表删除一组 langchain 文档。 对于具有默认架构(page_content、langchain_metadata)的表,删除标准是: 一个 row 应该被删除,如果列表中存在一个 document,使得
  • document.page_content 等于 row[page_content]
  • document.metadata 等于 row[langchain_metadata]

高级用法

使用自定义文档页面内容和元数据加载文档

首先我们准备一个具有非默认架构的示例表,并用一些任意数据填充它。
如果我们仍然使用 MSSQLLoader 的默认参数从此示例表加载 langchain 文档,加载文档的 page_content 将是表的第一个列,而 metadata 将包含所有其他列的键值对。
我们可以通过在初始化 MSSQLLoader 时设置 content_columns 和 metadata_columns 来指定我们想要加载的内容和元数据。
  1. content_columns:写入文档 page_content 的列。
  2. metadata_columns:写入文档 metadata 的列。
例如在此处,content_columns 中的列值将被连接成一个空格分隔的字符串,作为加载文档的 page_content,而加载文档的 metadata 将仅包含 metadata_columns 中指定的列的键值对。

使用自定义页面内容和元数据保存文档

为了将 langchain 文档保存到具有自定义元数据字段的表。我们需要首先通过 MSSQLEngine.init_document_table() 创建此类表,并指定我们希望它拥有的 metadata_columns 列表。在此示例中,创建的表将具有表列:
  • 描述 (类型: 文本): 用于存储水果描述。
  • 水果名称 (类型: 文本): 用于存储水果名称。
  • 有机 (类型: tinyint(1)): 用于标识水果是否为有机产品。
  • 其他元数据 (类型: JSON): 用于存储水果的其他元数据信息。
我们可以使用以下参数与 MSSQLEngine.init_document_table() 配合创建表:
  1. table_name: Cloud SQL 数据库中用于存储 langchain 文档的表名。
  2. metadata_columns: 一个 sqlalchemy.Column 列表,指示我们需要哪些元数据列。
  3. content_column: 用于存储 langchain 文档 page_content 的列名。默认值为 page_content。
  4. metadata_json_column: 用于存储 langchain 文档额外 metadata 的 JSON 列名。默认值为 langchain_metadata。
使用 MSSQLDocumentSaver.add_documents(<documents>) 保存文档。如您所见,在这个示例中,
  • document.page_content 将被保存到 description 列。
  • document.metadata.fruit_name 将被保存到 fruit_name 列。
  • document.metadata.organic 将被保存到 organic 列。
  • document.metadata.fruit_id 将以 JSON 格式保存到 other_metadata 列。

删除具有自定义页面内容和元数据的文档

我们也可以通过 MSSQLDocumentSaver.delete(<documents>) 删除具有自定义元数据列的表格中的文档。删除标准如下: 一个 row 应该被删除,如果列表中存在一个 document,使得
  • document.page_content 等于 row[page_content]
  • 对于 document.metadata 中的每一个元数据字段 k
    • document.metadata[k] 等于 row[k] 或者 document.metadata[k] 等于 row[langchain_metadata][k]
  • 在 row 中存在但 document.metadata 中不存在的额外元数据字段。

官方原文:src/oss/python/integrations/document_loaders/google_cloud_sql_mssql.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026