您可以将Atlas Vector Search与LangChain公司建造法学硕士应用程序和实现检索增强生成(RAG)。本教程演示如何开始使用带有LangChain的Atlas Vector Search来执行对数据进行语义搜索并构建RAG公司实施。具体来说,您可以执行以下操作:
设置环境。
将自定义数据存储在阿特拉斯。
在数据上创建Atlas Vector Search索引。
运行以下矢量搜索查询:
语义搜索。
带分数的语义搜索。
带元数据预过滤的语义搜索。
实施RAG公司使用Atlas Vector Search回答有关数据的问题。
LangChain是一个开源框架,它简化了法学硕士通过使用“链”应用程序。链是特定于LangChain的可以组合用于各种人工智能用例的组件,包括RAG公司。
通过将Atlas Vector Search与LangChain集成,您可以使用阿特拉斯作为向量数据库,并使用Atlas vector Search实施RAG公司通过检索语义相似的文档根据您的数据。了解更多RAG公司,看见关键概念。
首先,通过复制来设置本教程的环境并将以下代码片段粘贴到笔记本中。
运行以下命令:
%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客户端 |
运行以下代码,并在出现提示时提供以下内容:
您的OpenAI API密钥。
您的阿特拉斯集群的SRV公司 连接字符串。
os.environ公司[“OPENAI_API_KEY”]=获取通行证.getpass(“OpenAI API密钥:”) |
ATLAS_CONNECTION_STRING=获取通行证(“MongoDB Atlas SRV连接字符串:”) |
连接字符串应使用以下格式:
mongodb+srv://<用户名>:<密码>@<群集名称><主机名>.mongodb.net |
然后,将自定义数据加载到阿特拉斯并实例化阿特拉斯作为向量数据库,也称为向量存储。将以下代码片段复制并粘贴到笔记本中。
运行以下代码以建立连接到您的阿特拉斯集群。它规定了以下内容:
|
client=MongoClient(ATLAS_CONNECTION_STRING) |
|
|
数据库名称=“langchain_db” |
收藏_名称=“测试” |
atlas_collection=客户端[db_name][collection_name] |
矢量搜索索引=“矢量_索引” |
对于本教程,您将使用一个可公开访问的PDF文档标题为MongoDB Atlas最佳实践作为向量存储的数据源。本文档描述了各种建议和核心概念管理您的阿特拉斯部署。
要加载示例数据,请运行以下代码段。它执行以下操作:
|
loader=PyPDF加载器("https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4HkJP") |
data=loader.load() |
|
|
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)以下为: |
运行以下代码创建向量存储命名矢量_搜索
从示例文档中。此代码段使用蒙哥DBAtlasVectorSearch.from_documents
方法并指定以下参数:
|
vector_search=MongoDBAtlasVectorSearch.from_documents( |
documents=文档, |
嵌入=OpenAIEmbeddings(disallowed_special=()), |
collection=地图集集合, |
索引名称=矢量搜索索引 |
) |
运行示例代码后,您可以查看向量嵌入在Atlas UI中通过导航到langchain_db.test测试
集群中的集合。
要在向量存储上启用向量搜索查询,在上创建Atlas矢量搜索索引langchain_db.test测试
收藏。
要创建Atlas Vector Search索引,必须项目数据访问管理员
或更高的访问权限阿特拉斯项目。
如果尚未显示,请选择包含来自的所需项目 组织机构菜单在中导航栏。
如果尚未显示,请选择所需的项目来自项目导航栏中的菜单。
如果集群页面不是已显示,单击数据库在侧边栏中。
点击创建搜索索引。
低于地图集矢量搜索,选择JSON编辑器和然后单击下一步。
在数据库和集合部分,查找语言链db
数据库,然后选择测试
收藏。
在索引名称字段,输入向量_索引
。
用以下索引替换默认定义定义,然后单击下一步。
此索引定义指定对以下字段进行索引在的索引中矢量搜索类型:
{ |
“字段”:[ |
{ |
“type”:“向量”, |
“path”:“嵌入”, |
“尺寸数”:1536, |
“相似性”:“余弦” |
}, |
{ |
“type”:“filter”, |
“路径”:“页面” |
} |
] |
} |
建立索引大约需要一分钟。尽管如此生成状态列读取首字母同步。建造完成后状态柱读取活动。
一次阿特拉斯建立索引,返回到您的笔记本,并对您的数据运行矢量搜索查询。以下示例演示了可以执行的各种查询在矢量化数据上运行。
本节演示如何实现RAG公司在您的应用程序与Atlas Vector Search和LangChain。现在您已经使用了Atlas Vector Search要检索语义相似的文档,请运行以下代码示例提示法学硕士根据这些文件回答问题。
了解其他RAG公司使用Atlas矢量搜索,请参阅LangChain提供的以下模板,以帮助您构建应用程序:
MongoDB还提供以下开发人员资源: