serverless-chat-langchainjs
基于 LangChain.js 和 Azure 的 Serverless RAG 聊天机器人,支持文
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 LangChain.js 和 Azure 的 Serverless RAG 聊天机器人,支持文
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你是 Contoso 房产公司的客服人员。每天有上百位客户发来咨询:「租房要交多少押金?」「定金能退吗?」「维修申请怎么提交?」——重复问题占据了你 80% 的工作时间。传统的 FAQ 页面早已无法满足客户的个性化需求,而训练一个专属 AI 助手又似乎遥不可及。
Azure-Samples/serverless-chat-langchainjs 正是为解决这类痛点而生。它让你无需从零构建 AI 应用,只需几步配置,就能拥有一个基于自有文档的智能问答助手。
![]()
这是一个由 Microsoft Azure 团队维护的官方示例项目,托管在 Azure-Samples 组织下,采用了 TypeScript 全栈开发。项目融合了当前 AI 应用开发的主流技术栈:LangChain.js 做 RAG 编排,Azure Functions 提供 Serverless API,Azure Cosmos DB 存储向量数据,Azure Static Web Apps 托管前端。
该项目的技术选型体现了几个重要趋势:Serverless 架构降低运维成本、TypeScript 统一前后端语言、LangChain.js 简化 AI 集成复杂度、以及对本地开发(Ollama)的友好支持。
项目实现了完整的检索增强生成(Retrieval-Augmented Generation)流程:
pdf-parse 库提取文本内容RecursiveCharacterTextSplitter 将长文档切分为 1500 字符的小块// 文档上传核心逻辑(documents-post.ts)
const loader = new PDFLoader(file, { splitPages: false });
const rawDocument = await loader.load();
const splitter = new RecursiveCharacterTextSplitter({
chunkSize: 1500,
chunkOverlap: 100,
});
const documents = await splitter.splitDocuments(rawDocument);
// 生成向量并存储...
项目支持多轮对话和会话历史管理。使用 AzureCosmosDBNoSQLChatMessageHistory 或本地文件存储聊天记录,确保用户可以回顾之前的对话。
生成的回答会自动标注信息来源,格式为 [文件名]: 具体内容,方便用户溯源验证。

图1:azd up 部署命令执行效果
项目采用微前端架构,分为两个主要包:
| 包 | 技术栈 | 职责 |
|---|---|---|
packages/api | Azure Functions + TypeScript | 处理文档上传、向量检索、AI 对话请求 |
packages/webapp | Lit Web Components + Vite | 渲染聊天界面,与 API 通信 |
前端使用 Lit 库构建自定义 Web Components,这是一种轻量级、性能优秀的前端框架。聊天组件 (chat.ts) 实现了完整的对话 UI,包括:
// Lit 组件定义示例
export class ChatComponent extends LitElement {
@property() options: ChatComponentOptions;
@state() private messages: AIChatMessage[] = [];
// ...
}
API 层采用 Azure Functions(Node.js v4 编程模型),核心端点:
POST /api/documents - 上传 PDF 文档POST /api/chats - 发送聊天消息(支持流式响应)GET /api/chats/{chatId}/history - 获取历史消息LangChain.js 负责串联 AI 组件,支持两种模型模式:
AzureOpenAIEmbeddings 和 AzureChatOpenAIChatOllama 和 OllamaEmbeddings,完全免费项目提供一键启动的 Codespaces 环境,点击 README 中的徽章即可在浏览器中打开预配置好的开发环境。适合快速体验和演示,无需本地安装任何工具。
使用 Azure Developer CLI 部署到 Azure:
azd auth login # 登录 Azure
azd up # 一键部署所有资源
部署过程会自动创建:
不想花钱?没问题。使用 Ollama 在本地运行:
ollama pull llama3.1:latest
ollama pull nomic-embed-text:latest
npm install
npm start
# 访问 http://localhost:8000

图2:本地开发模式
项目采用 Microsoft 的 ai-chat-protocol 规范前后端通信,这是一个基于 HTTP 的 AI 对话应用协议,支持:
使用 Bicep 定义所有 Azure 资源,支持环境参数化、本地开发 vs 生产环境隔离、CI/CD 集成。
当 .env 文件存在时自动连接 Azure OpenAI,不存在时自动切换到 Ollama,无需修改代码。
该项目代表了 AI 应用开发的一个成熟范式:Serverless + RAG + 云原生。它证明了:
作为微软官方案例,它的质量和社区活跃度都值得信赖。对于想快速搭建 AI 对话系统的开发者,这是一个很好的起点和参考。