解锁Google Firestore的潜力:使用Firestore VectorStore实现AI驱动的数据库应用
引言
Google Firestore 是一种无服务器文档导向数据库,能够根据需求进行扩展。随着AI技术的快速发展,将你的数据库应用扩展到AI驱动的体验变得尤为重要。本文将介绍如何利用Firestore的Langchain集成,通过Firestore VectorStore类来存储向量和进行查询。
主要内容
1. 准备工作
在开始之前,确保您已完成以下步骤:
- 创建一个Google Cloud项目
- 启用Firestore API
- 创建一个Firestore数据库
一旦确认在Notebook的运行环境中可以访问数据库,填写如下值并运行。
COLLECTION_NAME = "test" # @param {type:"string"}
2. 安装必要的库
Firestore 与Langchain的集成位于单独的langchain-google-firestore包中,因此需要安装它。同时,我们也需要安装langchain-google-genai以使用Google生成AI的嵌入。
%pip install -U --quiet langchain-google-firestore langchain-google-vertexai
3. 设置Google Cloud项目
设置Google Cloud项目,以便在本笔记本中使用Google Cloud资源。
PROJECT_ID = "your-project-id" # @param {type:"string"}
!gcloud config set project {PROJECT_ID}
4. 身份验证
使用以下代码进行身份验证:
from google.colab import auth
auth.authenticate_user()
代码示例
下面的代码示例展示了如何使用FirestoreVectorStore存储和查询向量。这些示例旨在帮助您理解如何在Firestore中存储和管理向量数据。
from langchain_google_firestore import FirestoreVectorStore
from langchain_google_vertexai import VertexAIEmbeddings
# 使用API代理服务提高访问稳定性
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)
常见问题和解决方案
1. 如何删除向量?
您可以使用delete方法通过文档ID删除数据库中的向量。
vector_store.delete(ids)
2. 如何更新向量?
使用add方法,通过提供文档ID和新向量来更新向量。
fruit_to_update = ['{"name": "apple","price": 12}']
apple_id = "apple"
vector_store.add_texts(fruit_to_update, ids=[apple_id])
3. 如何进行相似性搜索?
您可以使用similarity_search进行相似性搜索。
vector_store.similarity_search("I like fuji apples", k=3)
4. 网络限制问题
由于某些地区的网络限制,开发者可以考虑使用API代理服务来提升访问稳定性。
总结和进一步学习资源
通过Firestore VectorStore,您可以轻松地将Firestore数据库扩展为支持AI的应用。我们探讨了如何存储和管理向量数据,并进行了相似性搜索。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---