项目介绍:serverless-chat-langchainjs
概述
serverless-chat-langchainjs 是一个基于 LangChain.js 和 Azure 技术开发的无服务器人工智能聊天应用样例。通过使用 Azure 静态 Web 应用和 Azure 函数,这个应用展示了如何构建一个支持检索增强生成(Retrieval-Augmented Generation,RAG)的 AI 聊天体验。存储文本和向量数据则使用了 Azure Cosmos DB for NoSQL。这款项目可以作为开发更复杂 AI 应用的起点。
项目背景
构建人工智能应用通常来说复杂且耗时。然而,借助 LangChain.js 和 Azure 的无服务器技术,能够极大地简化这一过程。本项目的核心是一款基于企业文档集的聊天机器人,用户可以向机器人提问,获取关于企业支持和服务的解答。为了帮助理解,项目中使用的范例数据来自一个虚构的公司——Contoso 房地产,用户可以根据自身需要替换这些数据。
应用架构
整个应用由多个关键组件构成:
- Web 应用:使用 Lit 构建的单一聊天组件,并托管在 Azure 静态 Web 应用中。代码位于
packages/webapp
文件夹中。 - 无服务器 API:通过 Azure 函数构建的 API,使用 LangChain.js 处理文档并生成响应。代码位于
packages/api
文件夹中。 - 数据库:采用 Azure Cosmos DB 存储从文档中提取的文本和向量。
- 文件存储:使用 Azure Blob Storage 存储源文档。
应用程序通过 AI 聊天应用的 HTTP 协议 进行组件间通信。
功能特点
- 无服务器架构:利用 Azure Functions 和 Azure Static Web Apps 实现完全无服务器的应用部署。
- 检索增强生成(RAG):结合 Azure Cosmos DB 与 LangChain.js 的能力,提供相关且准确的回应。
- 可扩展性与成本效益:借助 Azure 的无服务器服务,提供了可扩展且具有成本效益的解决方案。
- 本地开发支持:支持使用 Ollama 进行无云成本的本地开发测试。
项目启动
有多种方式可以启动这个项目:
- 在本地环境中使用:您需要安装工具如 Node.js LTS、Azure Developer CLI、Git、PowerShell 等, 然后 clone 项目的代码到本地运行。
- 使用 GitHub Codespaces:在浏览器中直接通过 GitHub Codespaces 运行项目,它会提供一个预配置的开发环境。
- 使用 VS Code 开发容器:在本地的 VS Code 实例中使用 Dev Containers 扩展,需安装 Docker 来运行容器。
示例运行
项目可以在本地使用 Ollama 或 Azure OpenAI 模型运行,或者直接部署到 Azure。
在 Azure 上部署
需要一个 Azure 账户、启用 Azure OpenAI 服务访问权限以及相应的权限。运行 azd up
部署应用后即可在浏览器中访问应用。
本地运行
如有足够资源的机器,可以安装 Ollama 并拉取模型数据,接着安装 npm 依赖并启动应用即可在本地运行。
资源与学习
可以查阅以下资源以深入了解该项目使用的技术:
- LangChain.js 文档
- Azure OpenAI 服务
- Azure Cosmos DB for NoSQL
更多的 Azure AI 示例可在 GitHub 上浏览。
常见问答与故障排除
如果在运行或部署该项目时遇到问题,请查看项目中的常见问答和故障排除指南。如未能解决问题,则可以在 GitHub 中开启问题讨论。
贡献
该项目欢迎各种形式的贡献和建议。