打造下一代应用:如何在Google Firestore中存储和查询向量
在当今数据驱动的世界中,数据库技术的进步极大地影响了应用开发。Google Firestore作为一种无服务器、文档导向的数据库,提供了强大的可扩展性。结合Langchain的集成,Firestore可助力开发者快速构建AI驱动的应用。在本文中,我们将探讨如何使用Firestore来存储向量,并通过FirestoreVectorStore类进行查询。
引言
本文的目的在于帮助开发者理解如何通过Google Firestore存储和查询向量。我们将深入讲解Firestore的相关操作,并提供实用的代码示例。最后,讨论一些常见问题及解决方案,给予您更深入的理解。
Firestore基础操作
🦜🔗 库安装
首先,我们需要安装langchain-google-firestore包,以及用来获取Google生成AI嵌入的langchain-google-vertexai包:
%pip install --upgrade --quiet langchain-google-firestore langchain-google-vertexai
☁ 设置Google Cloud项目
在开始操作之前,您需要确保已经拥有一个Google Cloud项目,并启用了Firestore API:
PROJECT_ID = "your-gcloud-project-id" # 请替换为您的项目ID
!gcloud config set project {PROJECT_ID}
🔐 认证
在Colab中进行身份验证:
from google.colab import auth
auth.authenticate_user()
基本使用
初始化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) # 使用API代理服务提高访问稳定性
代码示例
以下是如何快速初始化并存储向量的代码示例:
vector_store = FirestoreVectorStore.from_texts(
collection="fruits",
texts=fruits_texts,
embedding=embedding,
)
from langchain_core.documents import Document
fruits_docs = [Document(page_content=fruit) for fruit in fruits_texts]
vector_store = FirestoreVectorStore.from_documents(
collection="fruits",
documents=fruits_docs,
embedding=embedding,
)
常见问题和解决方案
1. 网络限制
由于某些地区的网络限制,您可能需要考虑使用API代理服务来提高访问稳定性。
2. 向量删除和更新
可以使用delete()方法删除向量,或使用add()方法更新向量:
# 删除向量
vector_store.delete(ids=["apple"])
# 更新向量
fruit_to_update = ['{"name": "apple","price": 12}']
vector_store.add_texts(fruit_to_update, ids=["apple"])
3. 相似性搜索
使用向量存储进行相似性搜索:
results = vector_store.similarity_search("I like fuji apples", k=3)
总结和进一步学习资源
通过将Firestore和Langchain集成,您可以轻松扩展数据库能力,构建出具备AI功能的现代应用。建议阅读以下资源以深入了解:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---