打造下一代应用:如何在Google Firestore中存储和查询向量

73 阅读2分钟

打造下一代应用:如何在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功能的现代应用。建议阅读以下资源以深入了解:

参考资料

  1. Google Cloud 官方文档
  2. Langchain 官方主页

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

---END---