在现代数据处理和人工智能应用中,向量搜索技术变得越来越重要。MongoDB Atlas 提供了一个强大的向量搜索功能,通过结合 Llama Index 和 MongoDB Atlas,我们可以实现高效的向量存储和检索。本文将介绍如何在 MongoDB Atlas 中配置向量搜索,并提供一个简单的示例代码来展示如何使用这些功能。
配置 MongoDB Atlas 向量搜索
在开始之前,您需要确保安装了 pymongo
Python 包,并拥有一个与 MongoDB Atlas 集群相关的连接字符串,该集群上已启用 Atlas 向量搜索索引。具体步骤如下:
- 创建 MongoDB Atlas 集群:首先,您需要在 MongoDB Atlas 上创建一个集群。
- 启用向量索引:在 Atlas GUI 中为您的数据库启用向量索引。
以下是 JSON 编辑器中的向量搜索索引定义示例:
{
"name": "index_name",
"type": "vectorSearch",
"fields":[
{
"type": "vector",
"path": "embedding",
"numDimensions": 1536,
"similarity": "cosine"
}
]
}
示例代码
以下是一个使用 llama-index-vector-stores-mongodb
库在 MongoDB Atlas 中进行向量存储和检索的示例代码:
# 安装依赖包
# pip install llama-index-vector-stores-mongodb pymongo
import pymongo
from llama_index.vector_stores.mongodb import MongoDBAtlasVectorSearch
# 确保您有正确的 MongoDB URI 和凭据
mongo_uri = "mongodb+srv://<username>:<password>@<host>?retryWrites=true&w=majority"
mongodb_client = pymongo.MongoClient(mongo_uri)
# 创建 MongoDBAtlasVectorSearch 实例
vector_store = MongoDBAtlasVectorSearch(mongodb_client)
# 示例: 添加节点
nodes_to_add = [...] # 这里应该是您的节点数据
add_results = vector_store.add(nodes_to_add) # 添加节点到索引
print("Added nodes:", add_results)
# 示例: 查询节点
query_vector = [...] # 查询向量
query_result = vector_store.query(query_vector) # 查询索引
print("Query results:", query_result)
# 示例: 删除节点
doc_id_to_delete = "your_doc_id"
vector_store.delete(doc_id_to_delete) # 从索引中删除节点
print(f"Deleted node with doc_id: {doc_id_to_delete}")
注意: 请将代码中的 <username>
, <password>
, <host>
, nodes_to_add
, query_vector
和 your_doc_id
替换为实际的值和数据。
常见错误及解决办法
- 连接错误:确保 MongoDB URI 是正确的,且集群地址和凭据无误。可以通过连接测试来排除网络问题。
- 索引未启用:确保在 MongoDB Atlas GUI 中已启用向量搜索索引,并且索引配置正确。
- 数据格式错误:添加节点时,确保节点数据符合预期的格式,尤其是嵌入向量的维度和类型。
如果您遇到其他问题,可以参考 MongoDB Atlas 文档 或 Llama Index 文档 进行进一步排查。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!