初探MongoDB Atlas中的向量搜索:LangChain集成指南

引言

在当今数据驱动的世界中,向量搜索已成为信息检索中的关键技术。MongoDB Atlas是一种流行的云数据库解决方案,提供了强大的向量搜索功能。本文将介绍如何在LangChain框架中使用langchain-mongodb包与MongoDB Atlas进行向量搜索。

主要内容

1. MongoDB Atlas简介

MongoDB Atlas是一个全托管的云数据库,支持在AWS、Azure和GCP上运行。它提供了本地向量搜索功能,可以将嵌入存储在文档中,并使用近似最近邻算法进行搜索。

2. 环境配置

2.1 安装依赖

首先,确保你已安装以下Python包:

pip install -qU langchain-mongodb pymongo langchain-openai langchain-huggingface langchain-core

2.2 设置凭证

获取你的MongoDB Atlas集群URI:

import getpass

MONGODB_ATLAS_CLUSTER_URI = getpass.getpass("MongoDB Atlas Cluster URI:")

若需使用LangSmith API进行自动化跟踪:

# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"

3. 初始化

3.1 嵌入模型

选择OpenAI或HuggingFace的模型:

from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-large")

from langchain_huggingface import HuggingFaceEmbeddings

embeddings = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")

3.2 MongoDB Atlas配置

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 langchain_core.documents import Document
from uuid import uuid4

# 创建文档
documents = [
    Document(page_content="I had chocolate chip pancakes for breakfast.", metadata={"source": "tweet"}),
    Document(page_content="The weather forecast is sunny.", metadata={"source": "news"})
]

# 添加文档
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)

# 执行相似性搜索
results = vector_store.similarity_search(
    "What is the weather like?", k=1
)
for res in results:
    print(f"* {res.page_content} [{res.metadata}]")

常见问题和解决方案

  1. 访问问题:由于网络限制,可能需要使用API代理服务以提高访问的可靠性。

  2. 版本不兼容:确保MongoDB Atlas版本为6.0.11或7.0.2及更高,否则可能需要固定LangChain版本至<=0.0.304。

总结和进一步学习资源

MongoDB Atlas中的向量搜索为开发者提供了强大的工具来处理复杂的检索需求。在LangChain的支持下,这种集成变得更加简便和强大。建议查看以下资源以深入学习:

参考资料

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值