使用MongoDB Atlas进行向量检索的指南

在这篇文章中,我们将介绍如何使用MongoDB Atlas与LlamaIndex结合进行向量检索。MongoDB Atlas 是一个托管的NoSQL数据库服务,而LlamaIndex是一个强大的向量检索引擎。结合两者,我们可以高效地进行大规模数据的检索。

安装依赖

首先,我们需要安装所需的Python包,包括llama-indexpymongo

%pip install llama-index-vector-stores-mongodb
!pip install llama-index

数据准备

接下来,我们需要下载示例数据。这一步骤会下载一份Uber 2021年的财报PDF文件。

!mkdir -p 'data/10k/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/10k/uber_2021.pdf' -O 'data/10k/uber_2021.pdf'

代码示例

以下是使用MongoDB Atlas进行向量检索的完整代码示例。请确保替换mongo_uri中的和为你的实际MongoDB Atlas用户名和密码。

import pymongo
from llama_index.vector_stores.mongodb import MongoDBAtlasVectorSearch
from llama_index.core import VectorStoreIndex, StorageContext
from llama_index.core import SimpleDirectoryReader

# MongoDB Atlas连接URI,替换<username>和<password>
mongo_uri = (
    "mongodb+srv://<username>:<password>@<host>?retryWrites=true&w=majority"
)
mongodb_client = pymongo.MongoClient(mongo_uri)
store = MongoDBAtlasVectorSearch(mongodb_client)
storage_context = StorageContext.from_defaults(vector_store=store)

# 加载数据
uber_docs = SimpleDirectoryReader(
    input_files=["./data/10k/uber_2021.pdf"]
).load_data()

# 创建向量存储索引
index = VectorStoreIndex.from_documents(
    uber_docs, storage_context=storage_context
)

# 进行查询
response = index.as_query_engine().query("What was Uber's revenue?")
print(f"Uber's revenue for 2021 was: {response}")

# 打印存储的文档数量
print(store._collection.count_documents({})) # 输出存储的文档数量

# 获取文档ID并进行删除操作
from llama_index.core import Response
typed_response = (
    response if isinstance(response, Response) else response.get_response()
)
ref_doc_id = typed_response.source_nodes[0].node.ref_doc_id
print(store._collection.count_documents({"metadata.ref_doc_id": ref_doc_id}))

# 删除文档并验证删除
if ref_doc_id:
    store.delete(ref_doc_id)
    print(store._collection.count_documents({}))

注释: //中转API

参考资料

常见错误及解决方法

  1. 连接失败: 如果你在连接MongoDB Atlas时遇到URI错误,请确认你的URI格式正确,并且用户名和密码已经替换为实际值。
  2. 权限问题: 如果你遇到权限问题,请确保你的MongoDB Atlas用户有足够的权限进行读写操作。
  3. 数据加载失败: 检查文件路径是否正确,并确认文件存在。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值