Cloud SQL 是一种完全托管的关系型数据库服务,提供高性能、无缝集成和出色的可伸缩性。它提供 PostgreSQL、MySQL 和 SQL Server 数据库引擎。通过利用 Cloud SQL 的 LangChain 集成,扩展您的数据库应用程序以构建 AI 驱动的体验。本笔记本介绍了如何使用
Cloud SQL for MySQL 通过 MySQLVectorStore 类存储向量嵌入。 在 GitHub 上了解有关该包的更多信息。 开始之前
要运行此 notebook,您需要执行以下操作- 创建 Google Cloud 项目
- 启用 Cloud SQL Admin API。
- 创建 Cloud SQL 实例。(版本必须 >= 8.0.36 且 cloudsql_vector 数据库标志配置为“On”)
- 创建 Cloud SQL 数据库。
- 向数据库添加用户。
🦜🔗 库安装
安装集成库langchain-google-cloud-sql-mysql 和嵌入服务库 langchain-google-vertexai。
🔐 身份验证
以登录到此 notebook 的 IAM 用户身份向 Google Cloud 进行身份验证,以访问您的 Google Cloud 项目。- 如果您正在使用 Colab 运行此 notebook,请使用下面的单元格并继续。
- 如果您正在使用 Vertex AI Workbench,请查看此处的设置说明。
☁ 设置您的 Google Cloud 项目
设置您的 Google Cloud 项目,以便您可以在此 notebook 中利用 Google Cloud 资源。 如果您不知道您的项目 ID,请尝试以下操作:- 运行
gcloud config list。 - 运行
gcloud projects list。 - 查看支持页面:查找项目 ID。
基本用法
设置 Cloud SQL 数据库值
在 Cloud SQL 实例页面中查找您的数据库值。 注意:MySQL 向量支持仅在 MySQL 版本 >= 8.0.36 的实例上可用。 对于现有实例,您可能需要执行自助维护更新,将维护版本更新为 MYSQL_8_0_36.R20240401.03_00 或更高版本。更新后,配置数据库标志,将新的 cloudsql_vector 标志设置为“On”。MySQL 引擎连接池
将 Cloud SQL 建立为向量存储的其中一个要求和参数是MySQLEngine 对象。MySQLEngine 为您的 Cloud SQL 数据库配置连接池,从而实现您的应用程序的成功连接并遵循行业最佳实践。 要使用 MySQLEngine.from_instance() 创建 MySQLEngine,您只需提供 4 项内容:project_id:Cloud SQL 实例所在的 Google Cloud 项目的项目 ID。region:Cloud SQL 实例所在的区域。instance:Cloud SQL 实例的名称。database:要连接到 Cloud SQL 实例上的数据库名称。
MySQLEngine.from_instance() 提供可选的 user 和 password 参数。
user:用于内置数据库身份验证和登录的数据库用户password:用于内置数据库身份验证和登录的数据库密码。
初始化表
MySQLVectorStore 类需要一个数据库表。MySQLEngine 类有一个辅助方法 init_vectorstore_table(),可用于为您创建具有正确架构的表。
创建嵌入类实例
您可以使用任何 LangChain 嵌入模型。您可能需要启用 Vertex AI API 才能使用VertexAIEmbeddings。 我们建议为生产环境固定嵌入模型的版本,了解有关 文本嵌入模型的更多信息。初始化默认的 MySQLVectorStore
要初始化MySQLVectorStore 类,您只需提供 3 项内容
engine-MySQLEngine引擎实例。embedding_service- LangChain 嵌入模型的实例。table_name:Cloud SQL 数据库中用作向量存储的表的名称。
添加文本
删除文本
通过 ID 从向量存储中删除向量。搜索文档
按向量搜索文档
还可以使用similarity_search_by_vector 搜索与给定嵌入向量相似的文档,该方法接受嵌入向量作为参数而不是字符串。
添加索引
通过应用向量索引来加速向量搜索查询。了解有关 MySQL 向量索引的更多信息。 注意:对于 IAM 数据库身份验证(默认用法),特权数据库用户需要授予 IAM 数据库用户以下权限,以完全控制向量索引。删除索引
高级用法
创建带有自定义元数据的 MySQLVectorStore
向量存储可以利用关系数据来过滤相似性搜索。 创建带有自定义元数据列的表和MySQLVectorStore 实例。使用元数据过滤器搜索文档
在处理文档之前缩小文档范围可能会有所帮助。 例如,可以使用filter 参数根据元数据过滤文档。以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。