利用MongoDB Atlas Vector Search向量搜索进行语义搜索和构建RAG
利用MongoDB Atlas Vector Search向量搜索进行语义搜索和构建RAG
介绍
您是否知道 Atlas 现在提供强大的 向量搜索功能?是的利用MongoDB Atlas Vector Search向量搜索进行语义搜索和构建RAG,它现在允许您对数据执行语义搜索并为大型语言模型(LLM) 应用程序实现检索增强生成 (RAG)。通过将 Atlas 与 、 和客户端库等流行框架集成,您可以轻松构建高级自然语言处理(NLP) 解决方案。在本文中,我们将了解如何利用 Atlas 进行语义搜索和 RAG。

学习目标什么是 向量搜索?
向量搜索,也称为语义搜索,是一种超越传统基于关键字的搜索的技术。它采用机器学习模型将文本、音频或图像等数据转换为称为嵌入的高维向量表示。这些嵌入捕获数据的语义利用MongoDB Atlas Vector Search向量搜索进行语义搜索和构建RAG,使您可以根据向量空间中的接近度找到相似的内容,即使确切的单词不匹配也是如此。
向量搜索的核心优势在于它能够理解查询背后的意图和上下文,这使得它对于各种应用程序非常有用,包括搜索引擎、推荐系统和语言模型。
集成 Atlas 向量搜索
Atlas 是一项完全托管的云数据库服务,现在原生支持 向量搜索。通过将向量嵌入与数据一起存储在 中php sqlsrv query,您可以执行高效的语义搜索,而无需单独的向量存储,从而确保数据一致性并简化应用程序架构。
该过程通常涉及:
将数据加载到 Atlas 集群中。使用预先训练的模型(例如 的 text–ada-002)为您的数据生成向量嵌入。将嵌入与数据一起存储在 中。在嵌入字段上创建 Atlas 索引。使用 Atlas 强大的 $ 聚合管道阶段运行 向量搜索查询。
先决条件:要将 Atlas 与 集成,您需要运行 版本 6.0.11、7.0.2 或更高版本的 Atlas 集群、 API 密钥(或替代的 LLM 提供程序)以及用于运行项目的 环境。
集成
是一个用 编写的开源框架,旨在简化由大型语言模型(LLMs)驱动的应用程序的开发。它提供了一个模块化和可扩展的架构,允许开发者通过组合可复用的组件称为“链条”来构建复杂的工作流程。
的一个关键特性是其对检索增强生成(RAG)的支持php sqlsrv query,这是一种结合了 LLMs 的力量和外部数据源的技术。通过将 Atlas 与 集成,开发者可以利用 作为高性能的向量数据库,实现高效的语义搜索和 RAG 实现。


集成过程通常涉及以下步骤:
第 1 步:设置环境安装所需的包,包括、-和-。定义环境变量,例如您的 API 密钥和 Atlas 集群连接字符串。
import os
import getpass
from langchain_mongodb import MongoDBAtlasVectorSearch
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
ATLAS_CONNECTION_STRING = getpass.getpass("MongoDB Atlas SRV Connection String:")
第 2 步:使用 Atlas 作为向量存储使用提供的连接字符串连接到您的 Atlas 集群。通过直接插入文档或使用 内置的各种文件格式(例如,PDF、CSV、JSON)的数据加载器将您的数据加载到 Atlas 中。使用 的文本分割器将数据分割成更小的块或文档。使用“arch”类将 Atlas 实例化为向量存储,并指定集合和索引名称。使用预先训练的模型(如 的 text–ada-002)为您的数据生成向量嵌入。
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
# Load data from a PDF
loader = PyPDFLoader("https://example.com/document.pdf")
data = loader.load()
# Split data into documents
text_splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=20)
docs = text_splitter.split_documents(data)
现在,我们已经完成了第一阶段。
第 3 步:创建 Atlas 向量搜索索引定义 Atlas 向量搜索索引模式,指定向量字段(例如“嵌入”)和任何其他过滤字段。使用 Atlas UI 或 Atlas 搜索 API 在 Atlas 集合上创建索引。
# Instantiate Atlas as a vector store
client = MongoClient(ATLAS_CONNECTION_STRING)
atlas_collection = client["langchain_db"]["documents"]
vector_search = MongoDBAtlasVectorSearch.from_documents(
documents=docs,
embedding=OpenAIEmbeddings(),
collection=atlas_collection,
index_name="vector_index"
)
步骤 4:运行 向量搜索查询使用 的 `arch.` 方法将 Atlas 实例化为语义搜索的检索器。执行各种类型的 向量搜索查询,例如基本语义搜索、使用相关性分数的搜索或使用元数据过滤的搜索。
query = "MongoDB Atlas security"
results = vector_search.similarity_search(query)
这标志着第二阶段的完成。
第 5 步:实施 RAG定义一个提示模板,指示 LLM 使用检索到的文档作为生成响应的上下文。通过结合 Atlas 检索器、提示模板和 LLM(如 的 )构建 RAG 链。使用您的查询提示 RAG 链,它将从 Atlas 检索相关文档,将它们传递给 LLM,并生成上下文感知响应。
from langchain.prompts import PromptTemplate
from langchain.chains import RetrievalQA
# Define the prompt template
template = """Use the following context to answer the question:
Context: {context}
Question: {question}"""
prompt = PromptTemplate(template=template, input_variables=["context", "question"])
# Create the RAG chain
rag = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
chain_type="stuff",
retriever=vector_search.as_retriever(),
prompt=prompt)
# Ask a question
query = "How can I secure my MongoDB Atlas cluster?"
result = rag({"query": query})
print(result['result'])
提供了高度的灵活性和可扩展性,允许开发者定制与Atlas 的集成以满足他们的特定需求。例如,您可以通过调整要检索的文档数量、相关性分数阈值或用于排名的相似性度量等参数来微调检索过程。
虽然此集成侧重于 Atlas 向量搜索,但 支持各种向量数据库和搜索引擎,包括 、和 等。此外, 还支持各种 LLM 提供商,例如 、、 等,让您可以轻松地利用不同的语言模型来实现 RAG 实现。

通过将 的模块化架构的强大功能与 Atlas 的高效语义搜索功能相结合,开发人员可以构建复杂的自然语言处理应用程序,这些应用程序可以理解上下文、检索相关信息并生成明智的响应,同时利用 文档的可扩展性和一致性数据库。
整合
是另一个开源框架,旨在简化自定义数据源与 LLM 的集成。它提供了用于加载和准备向量嵌入的工具,从而支持 RAG 实现。通过将 Atlas 与集成,您可以使用 作为向量存储并检索语义相似的文档以增强您的 LLM 知识。

该过程包括设置 Atlas 集群、将数据加载到 索引中,以及使用 arch 向量存储将向量嵌入存储在 中。然后,您可以使用 的 运行语义搜索,并利用查询引擎根据检索到的文档生成上下文感知响应。
客户端库集成
除了流行的框架之外,您还可以使用 的官方客户端库将 Atlas 直接集成到您的应用程序中。此方法涉及为数据生成向量嵌入(例如,使用 API)、将它们存储在 中、创建 向量搜索索引以及从应用程序代码运行 $ 查询。
例如,通过 Node.js 客户端库,您可以设置 Atlas 触发器,以使用 API自动生成新文档的嵌入。然后,它可以创建 向量搜索索引,并使用 $ 聚合管道阶段执行语义搜索。
使用 进行 向量搜索的好处
将 向量搜索功能与 Atlas 集成具有以下几个主要优势:
向量搜索和 RAG 的用例
向量搜索和 RAG 在各个行业和领域都有大量应用,包括:
智能搜索引擎:即使用户的查询不明确或不精确,也能提供更相关和上下文相关的搜索结果。客户支持:构建可以理解自然语言查询并利用相关知识库提供准确、上下文感知响应的聊天机器人和虚拟助手。电子商务和推荐:通过了解用户偏好和查找语义相似的项目来改进产品推荐。内容分析:识别大型数据集中的相似内容。这有助于完成抄袭检测、内容重复数据删除和主题聚类等任务。生物医学研究:根据语义相似性查找相关科学文献和数据,加速药物发现和医学研究。结论
Atlas 向量搜索为构建能够理解上下文和意图的高级自然语言处理(NLP)应用程序提供了激动人心的可能性。通过与流行的框架如 和 集成,或者利用客户端库,您可以轻松实现语义搜索和检索增强生成(RAG)功能。赶快试试吧php sqlsrv query,解锁您的应用程序中的新智能和相关性水平!
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » 利用MongoDB Atlas Vector Search向量搜索进行语义搜索和构建RAG
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

