Building a Multi-User Chatbot with Langchain and Pinecone in Next.JS
文章来源:Building a Multi-User Chatbot with Langchain and Pinecone in Next.JS | Pinecone
可能遇到的问题:
- LLM对于不熟悉的知识会胡编乱造
- 使用过程中可能会遇到LLM的token限制
- LLM本身不会记忆对话历史内容的,这需要我们去维护对话历史记录
- 多用户实时交互,这需要我们对每个对话都维护一个单独的对话历史
项目所依赖的服务
- Pinecone:云向量数据库
- OpenAI
- Ably
- CockroachDB
- Finegerprint Pro
项目结构
Indexer抓取事实数据放到Pinecone知识库中,来让用户进行查询
Indexer的工作步骤
- 爬虫或人工抓取事实数据
- 将数据转换成Documents类型
- 将Documents数据使用LLM进行embedding
- 放到Pinecone中以供程序进行查询
整个对话机器人的工作流程
- 首先用户将query传递给Inquiry buider chain,它会帮助生成带有对话历史记录的query
- 将query embedding,然后在pinecone中查询documents
- 由于查询到的文档可能很长,所以通过Summarizer Chain进行总结
- 最后,QnA Chain会结合Summary documents、query、history来生成最后的结果
多用户对话隔离
对于多用户对话隔离的方案:
- 可以做一个用户登录系统
- 也可以使用唯一的ID来根据浏览器来区别用户,聊天机器人就会根据这个唯一的ID来保存用户的对话历史记录
这里为了简单,使用第二种方案
代码
由于文章的示例代码为js,有需要可以参考:
GitHub - pinecone-io/chatbot-demo