使用OpenAI、RAG和MongoDB向量嵌入构建知识库聊天机器人
这是为谁准备的?
该模板专为希望自动吸收产品文档并实现AI驱动的、检索增强型问答的技术公司的内部支持团队、产品专家和知识经理设计。
这个工作流解决了什么问题?
支持代理经常花费太多时间手动搜索冗长的文档,导致回答不一致或延迟。这个解决方案自动导入、分块和索引产品手册,然后使用检索增强生成(RAG)通过AI快速准确地回答用户的查询。
这些工作流的作用
工作流1:文档吸收和索引
手动触发,从Google Docs导入产品文档。
自动将大文档分解成小块,以实现高效的搜索。
使用OpenAI嵌入生成每块的向量嵌入。
将嵌入块和元数据插入到MongoDB Atlas向量存储中,以支持快速的语义搜索。
工作流2:AI驱动的查询和响应
监听进入的用户问题(可扩展到webhook)。
将问题转化为向量嵌入,并在MongoDB的向量存储上执行相似性搜索。
使用OpenAI的GPT-4o-mini模型和检索增强生成来生成直接、上下文相关的答案。
使用内存缓冲节点维持短期的对话上下文。
设置
设置向量嵌入
认证Google Docs并连接包含要索引的产品文档的Google Docs URL。
认证MongoDB Atlas并连接要存储向量嵌入的集合。在此集合上创建搜索索引以支持向量相似性查询。
确保索引名称与n8n(data_index)配置的名称相匹配。
参见下面的MongoDB搜索索引模板示例。
设置聊天
在“知识库代理”节点中配置AI系统提示以反映公司的语调、回答风格和任何业务规则。
更新工作流描述和指导以帮助用户理解聊天的目的和功能。
在聊天工作流中连接用于向量搜索的MongoDB集合,并根据需要更新向量搜索引擎以匹配你的设置。
确保
(吸收和聊天工作流中的)两个MongoDB节点连接到同一个集合,并具有:
存储向量数据的嵌入字段,
相关的元数据字段(例如,文档ID,源),以及
配置了相同的向量索引名称(例如,data_index)。
搜索索引示例:
{
“mappings”: {
“dynamic”: false,
“fields”: {
“_id”: {
“type”: “string”
},
“text”: {
“type”: “string”
},
“embedding”: {
“type”: “knnVector”,
“dimensions”: 1536,
“similarity”: “cosine”
},
“source”: {
“type”: “string”
},
“doc_id”: {
“type”: “string”
}
}
}
}