文档菜单
文档主页
/
MongoDB地图集
//

LangChain集成入门

在本页上

  • 背景
  • 前提条件
  • 设置环境
  • 使用阿特拉斯作为向量存储
  • 创建地图集矢量搜索索引
  • 运行矢量搜索查询
  • 回答有关数据的问题
  • 接下来的步骤

注释

本教程使用LangChain的Python库有关使用JavaScript库的教程,请参阅LangChain JS/TS集成入门

您可以将Atlas Vector Search与LangChain公司建造法学硕士应用程序和实现检索增强生成(RAG)。本教程演示如何开始使用带有LangChain的Atlas Vector Search来执行对数据进行语义搜索并构建RAG公司实施。具体来说,您可以执行以下操作:

  1. 设置环境。

  2. 将自定义数据存储在阿特拉斯

  3. 在数据上创建Atlas Vector Search索引。

  4. 运行以下矢量搜索查询:

    • 语义搜索。

    • 带分数的语义搜索。

    • 带元数据预过滤的语义搜索。

  5. 实施RAG公司使用Atlas Vector Search回答有关数据的问题。

LangChain是一个开源框架,它简化了法学硕士通过使用“链”应用程序。链是特定于LangChain的可以组合用于各种人工智能用例的组件,包括RAG公司

通过将Atlas Vector Search与LangChain集成,您可以使用阿特拉斯作为向量数据库,并使用Atlas vector Search实施RAG公司通过检索语义相似的文档根据您的数据。了解更多RAG公司,看见关键概念

要完成本教程,您必须具备以下条件:

  • 阿特拉斯运行MongoDB 6.0.11、7.0.2或更高版本的集群(包括随机对照)。

  • OpenAI API密钥。你必须有一个付费的OpenAI帐户,并有信用可用于API请求。

  • 运行Python项目的笔记本,例如科拉布

首先,通过复制来设置本教程的环境并将以下代码片段粘贴到笔记本中。

1

运行以下命令:

%pip安装--升级--quiet langchain langchain-mongodb langchain-openai pymongo-pypdf

然后,运行以下代码以导入所需的包:

进口获得通行证,os,pymongo,pprint
langchain_community.document_loaders(语言链通讯文档加载程序)进口PyPDF装载机
语言链核心输出处理器进口StrOutputParser语句
langchain_core.runname文件进口可运行直通
langchain_mongodb语言链进口MongoDBAtlasVectorSearch
langchain_openai语言链进口ChatOpenAI、OpenAI嵌入
语言链.提示进口提示模板
语言链.text_splitter进口递归字符文本拆分器
皮蒙戈人进口Mongo客户端
2

运行以下代码,并在出现提示时提供以下内容:

os.environ公司[“OPENAI_API_KEY”]=获取通行证.getpass(“OpenAI API密钥:”)
ATLAS_CONNECTION_STRING=获取通行证(“MongoDB Atlas SRV连接字符串:”)

注释

连接字符串应使用以下格式:

mongodb+srv://<用户名>:<密码>@<群集名称><主机名>.mongodb.net

然后,将自定义数据加载到阿特拉斯并实例化阿特拉斯作为向量数据库,也称为向量存储将以下代码片段复制并粘贴到笔记本中。

1

运行以下代码以建立连接到您的阿特拉斯集群。它规定了以下内容:

  • langchain_db.test测试作为要为其加载数据的集合的名称。

  • 向量_索引作为要用于查询数据的Atlas Vector Search索引的名称。

#连接到您的阿特拉斯星团
client=MongoClient(ATLAS_CONNECTION_STRING)
#定义集合和索引名称
数据库名称=“langchain_db”
收藏_名称=“测试”
atlas_collection=客户端[db_name][collection_name]
矢量搜索索引=“矢量_索引”
2

对于本教程,您将使用一个可公开访问的PDF文档标题为MongoDB Atlas最佳实践作为向量存储的数据源。本文档描述了各种建议和核心概念管理您的阿特拉斯部署。

要加载示例数据,请运行以下代码段。它执行以下操作:

  • 从指定的URL检索PDF并加载原始文本数据。

  • 使用文本拆分器将数据拆分为较小的文档。

  • 指定区块参数,该参数确定每个文档中的字符数两个连续文档之间应该重叠的字符数。

#加载PDF
loader=PyPDF加载器("https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4HkJP")
data=loader.load()
#将PDF拆分为文档
text_splitter=递归字符文本拆分器(chunk_size=200,chunk_overlap=20)
docs=text_splitter.split_documents(数据)
#打印第一个文件
文档[0]
文档(page_content='Mong oDB Atlas最佳实践一月20 19A MongoD B白色报纸,元数据={'源'以下为:'https(https)以下为://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4HkJP','页面':0})

运行以下代码创建向量存储命名矢量_搜索从示例文档中。此代码段使用蒙哥DBAtlasVectorSearch.from_documents方法并指定以下参数:

  • 要存储在向量数据库中的示例文档。

  • OpenAI的嵌入模型用作将文本转换为的向量嵌入嵌入字段。

  • langchain_db.test测试作为阿特拉斯集合来存储文档。

  • 向量_索引作为用于查询向量存储的索引。

#创建向量商店
vector_search=MongoDBAtlasVectorSearch.from_documents(
documents=文档,
嵌入=OpenAIEmbeddings(disallowed_special=()),
collection=地图集集合,
索引名称=矢量搜索索引
)

提示

运行示例代码后,您可以查看向量嵌入在Atlas UI中通过导航到langchain_db.test测试集群中的集合。

要在向量存储上启用向量搜索查询,在上创建Atlas矢量搜索索引langchain_db.test测试收藏。

要创建Atlas Vector Search索引,必须项目数据访问管理员或更高的访问权限阿特拉斯项目。

1
  1. 如果尚未显示,请选择包含来自的所需项目 组织机构菜单在中导航栏。

  2. 如果尚未显示,请选择所需的项目来自项目导航栏中的菜单。

  3. 如果集群页面不是已显示,单击数据库在侧边栏中。

2
  1. 单击集群的名称。

  2. 单击地图集搜索选项卡。

  1. 点击创建搜索索引

  2. 低于地图集矢量搜索,选择JSON编辑器然后单击下一步

  3. 数据库和集合部分,查找语言链db数据库,然后选择测试收藏。

  4. 索引名称字段,输入向量_索引

  5. 用以下索引替换默认定义定义,然后单击下一步

    此索引定义指定对以下字段进行索引在的索引中矢量搜索类型:

    • 嵌入字段作为矢量类型。这个嵌入领域包含使用OpenAI创建的嵌入文本嵌入-ada-002嵌入模型。索引定义指定1536矢量尺寸和使用度量相似性余弦

    • 第页字段作为滤波器键入以按PDF中的页码预筛选数据。

    {
    “字段”:[
    {
    “type”:“向量”,
    “path”:“嵌入”,
    “尺寸数”:1536,
    “相似性”:“余弦”
    },
    {
    “type”:“filter”,
    “路径”:“页面”
    }
    ]
    }
4

将显示一个模式窗口,让您知道正在构建索引。

5

建立索引大约需要一分钟。尽管如此生成状态列读取首字母同步。建造完成后状态读取活动

一次阿特拉斯建立索引,返回到您的笔记本,并对您的数据运行矢量搜索查询。以下示例演示了可以执行的各种查询在矢量化数据上运行。

提示

另请参见:

有关语义搜索方法的完整列表,请参阅这个API参考

本节演示如何实现RAG公司在您的应用程序与Atlas Vector Search和LangChain。现在您已经使用了Atlas Vector Search要检索语义相似的文档,请运行以下代码示例提示法学硕士根据这些文件回答问题。

了解其他RAG公司使用Atlas矢量搜索,请参阅LangChain提供的以下模板,以帮助您构建应用程序:

MongoDB还提供以下开发人员资源:

 将矢量搜索与AI技术集成