# 引言
在当今数据驱动的世界中,如何高效地管理和搜索海量数据成为了一项重要的挑战。本文将介绍如何利用MongoDB Atlas的向量搜索功能,通过LangChain库进行集成。这一技术结合了MongoDB的强大存储能力和LangChain的灵活性,为您的应用提供了无缝的向量搜索解决方案。
# 主要内容
## 什么是MongoDB Atlas Vector Search?
MongoDB Atlas是一种全面托管的云数据库,支持在AWS、Azure和GCP上运行。其原生的向量搜索功能允许用户将嵌入存储在MongoDB文档中,创建向量搜索索引,并使用近似最近邻算法进行KNN搜索。
## 环境设置
要开始使用MongoDB Atlas向量搜索,您需要具备以下条件:
- 一个运行MongoDB 6.0.11、7.0.2或更高版本的Atlas集群
- 安装`langchain-mongodb`和`pymongo`包
```bash
pip install -qU langchain-mongodb pymongo
认证
首先,找到您的MongoDB集群URI:
import getpass
MONGODB_ATLAS_CLUSTER_URI = getpass.getpass("MongoDB Atlas Cluster URI:")
向量搜索初始化
您可以从OpenAI、HuggingFace等处获取嵌入模型:
pip install -qU langchain-openai
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
创建向量存储
初始化MongoDB客户端并创建向量存储:
from langchain_mongodb.vectorstores import MongoDBAtlasVectorSearch
from pymongo import MongoClient
client = MongoClient(MONGODB_ATLAS_CLUSTER_URI) # 使用API代理服务提高访问稳定性
DB_NAME = "langchain_test_db"
COLLECTION_NAME = "langchain_test_vectorstores"
ATLAS_VECTOR_SEARCH_INDEX_NAME = "langchain-test-index-vectorstores"
MONGODB_COLLECTION = client[DB_NAME][COLLECTION_NAME]
vector_store = MongoDBAtlasVectorSearch(
collection=MONGODB_COLLECTION,
embedding=embeddings,
index_name=ATLAS_VECTOR_SEARCH_INDEX_NAME,
relevance_score_fn="cosine",
)
代码示例
添加文档到向量存储:
from uuid import uuid4
from langchain_core.documents import Document
documents = [
Document(page_content="I had chocolate chip pancakes...", metadata={"source": "tweet"}),
Document(page_content="The weather forecast for tomorrow...", metadata={"source": "news"}),
# 更多文档...
]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
执行相似度搜索:
results = vector_store.similarity_search("LangChain provides abstractions...", k=2)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
挑战1:网络访问限制
由于某些地区的网络限制,开发者可能需要使用API代理服务以确保访问的稳定性。
挑战2:版本兼容性
确保使用MongoDB Atlas支持向量搜索的版本(6.0.11及以上)。
总结和进一步学习资源
利用MongoDB Atlas与LangChain进行向量搜索提供了强有力的工具,可以在多种场景中实现高效数据检索。您可以进一步探索以下资源来深化理解:
参考资料
- MongoDB Atlas 官方文档
- LangChain 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---