在现代应用程序开发中,特别是涉及到人工智能的应用,文档的高效管理和操作是关键的一环。Google Cloud SQL 提供了一种高性能、无缝集成且可扩展的数据库管理服务,支持 MySQL、PostgreSQL 和 SQL Server 数据库引擎。本篇文章将聚焦于如何利用 Cloud SQL for SQL Server 与 Langchain 集成来存储、加载和删除文档。
技术背景介绍
Google Cloud SQL 是 Google 云平台提供的托管数据库服务,支持主流的关系型数据库引擎如 MySQL、PostgreSQL 和 Microsoft SQL Server。在机器学习和 AI 驱动的应用程序中,通过 Langchain 集成,Cloud SQL 可以用来管理大量的文本数据和相关的元数据。
核心原理解析
通过 MSSQLLoader 和 MSSQLDocumentSaver,您可以轻松地将文档存储到 SQL Server 数据库中,并根据需要进行查询和管理。这些工具基于 SQLAlchemy 提供了一组简单易用的 API,帮助开发者在 Python 环境中操作 SQL Server 数据库。
代码实现演示
以下是如何在 Python 环境中使用 MSSQLLoader 和 MSSQLDocumentSaver 进行操作的示例代码:
环境准备
首先,确保您已经创建了 Google Cloud 项目,并启用了 Cloud SQL Admin API。还需要一个 Cloud SQL for SQL Server 的实例和数据库。设置环境变量以便连接数据库:
# 设置环境变量
REGION = "us-central1"
INSTANCE = "test-instance"
DB_USER = "sqlserver"
DB_PASS = "password"
DATABASE = "test"
TABLE_NAME = "test-default"
# 安装必要的库
!pip install --upgrade --quiet langchain-google-cloud-sql-mssql
MSSQL 引擎配置
建立与 Cloud SQL 数据库的连接池:
from langchain_google_cloud_sql_mssql import MSSQLEngine
engine = MSSQLEngine.from_instance(
project_id='my-project-id', # 您的项目ID
region=REGION,
instance=INSTANCE,
database=DATABASE,
user=DB_USER,
password=DB_PASS,
)
初始化表
初始化一个新的表用于存储文档,如果表已存在则覆盖:
engine.init_document_table(TABLE_NAME, overwrite_existing=True)
保存文档
保存文档到指定的表中:
from langchain_core.documents import Document
from langchain_google_cloud_sql_mssql import MSSQLDocumentSaver
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)
加载文档
通过 MSSQLLoader 从数据库中加载文档:
from langchain_google_cloud_sql_mssql import MSSQLLoader
loader = MSSQLLoader(engine=engine, table_name=TABLE_NAME)
docs = loader.lazy_load()
for doc in docs:
print("Loaded documents:", doc)
应用场景分析
这种配置和 API 调用特别适合于需要处理大量文档数据的应用场景,如内容管理系统(CMS)、搜索引擎、以及任何需要自然语言处理的应用程序。
实践建议
- 确保在生产环境中使用安全可靠的数据库凭证。
- 在大规模操作时,考虑使用事务以提高数据一致性。
- 利用现有的索引能力优化查询性能。
结束语:如果遇到问题欢迎在评论区交流。
—END—