[利用Google Firestore存储和检索AI向量:一步步指导和最佳实践]

33 阅读2分钟
# 引言
Google Firestore 是一种无服务器的文档型数据库,可以根据需求进行自动扩展。对于那些希望将AI功能集成到应用程序中的开发者来说,Firestore 提供了一种有效的解决方案,通过它可以存储和检索向量数据。这篇文章将指导您如何使用 Firestore 的 Langchain 集成来存储和查询向量数据。

# 主要内容

## 创建 Google Cloud 项目
首先,您需要创建一个 Google Cloud 项目,并启用 Firestore API。这个步骤是访问 Firestore 所必需的,请确保在继续之前完成这些操作。

## 安装必要的库
为了在Python环境中使用 Firestore,我们需要安装一些特定的库。使用以下命令来安装:
```bash
%pip install --upgrade --quiet langchain-google-firestore langchain-google-vertexai

设置 Google Cloud 项目

设置您的 Google Cloud 项目以便利用其资源。可以通过以下命令进行配置:

# 请填写您的 Google Cloud 项目 ID
PROJECT_ID = "your-google-cloud-project-id"

# 设置项目 ID
!gcloud config set project {PROJECT_ID}

认证

使用 Google Cloud 的IAM用户进行认证,以便访问您的 Google Cloud 项目:

from google.colab import auth
auth.authenticate_user()

FirestoreVectorStore 初始化

FirestoreVectorStore 允许您在 Firestore 数据库中存储新向量。以下是初始化的方法:

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)

删除和更新向量

要删除向量,可以使用 delete 方法:

vector_store.delete(["apple"])  # 删除 'apple' 的数据

更新向量与添加类似:

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

相似性搜索

通过 FirestoreVectorStore,您可以执行向量的相似性搜索:

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

常见问题和解决方案

API访问限制

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务提高访问的稳定性。可以通过在 ClientOptions 中设定代理参数来实现这一点。

总结和进一步学习资源

通过本文,我们详细讲解了如何利用 Google Firestore 来存储和检索 AI 向量数据,为构建AI驱动的应用程序奠定基础。想要深入了解,可以参考以下资源:

参考资料

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

---END---