# 从零开始搭建AI驱动的应用:Google Firestore与Langchain整合指南
## 引言
Google Firestore是一个无服务器的文档导向型数据库,非常适合需要动态扩展的应用。通过Firestore与Langchain的整合,我们可以轻松构建AI驱动的体验。本篇文章将深入探讨如何使用Firestore存储向量数据,并通过`FirestoreVectorStore`类进行查询。
## 主要内容
### 1. 环境准备
在开始之前,你需要:
- 创建一个Google Cloud项目
- 启用Firestore API
- 创建一个Firestore数据库
确保在运行环境中拥有数据库访问权限后,填写以下信息:
```python
# 设置集合名称
COLLECTION_NAME = "test" # @param {type:"CollectionReference"|"string"}
2. 安装必要库
整合功能位于 langchain-google-firestore 包中,同时安装 langchain-google-vertexai 以使用Google生成AI的嵌入。
%pip install --upgrade --quiet langchain-google-firestore langchain-google-vertexai
3. 设置Google Cloud项目
设置你的Google Cloud项目,以便在本环境中使用Google Cloud资源。
PROJECT_ID = "extensions-testing" # @param {type:"string"}
!gcloud config set project {PROJECT_ID}
4. 认证
认证Google Cloud以访问项目。在Colab中运行以下代码:
from google.colab import auth
auth.authenticate_user()
5. 初始化FirestoreVectorStore
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)
# 使用API代理服务提高访问稳定性
6. 删除与更新向量
可以使用delete方法删除文档:
vector_store.delete(['apple_id'])
更新向量类似于添加新向量:
fruit_to_update = ['{"name": "apple","price": 12}']
vector_store.add_texts(fruit_to_update, ids=["apple"])
7. 相似性搜索
使用FirestoreVectorStore进行相似性搜索:
vector_store.similarity_search("I like fuji apples", k=3)
代码示例
以下是一个完整的Python代码示例,展示了如何实现上述步骤:
from langchain_google_firestore import FirestoreVectorStore
from langchain_google_vertexai import VertexAIEmbeddings
COLLECTION_NAME = "test"
PROJECT_ID = "extensions-testing"
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=COLLECTION_NAME,
embedding=embedding,
)
vector_store.add_texts(fruits_texts, ids=ids) # 使用API代理服务提高访问稳定性
# 相似性搜索实例调用
results = vector_store.similarity_search("I like fuji apples", k=3)
常见问题和解决方案
问题1:访问限制
在某些地区,Firestore API可能受限。推荐使用API代理服务以提高稳定性。
问题2:认证失败
确保在执行认证步骤时,以正确的IAM用户身份登录。
总结和进一步学习资源
通过结合Google Firestore与Langchain,你可以快速搭建一个强大的AI驱动应用。本教程提供了基础步骤和代码示例,帮助你利用Firestore存储和查询向量数据。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---