# langchain-node-kit **Repository Path**: lyxstart/langchain-node-kit ## Basic Information - **Project Name**: langchain-node-kit - **Description**: 基于Node(express)和Langchain的项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-03-14 - **Last Updated**: 2025-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # langchain-node-kit ## 介绍 用 node + express + langchain + ollama 做的一套后端 AI 服务 ## 软件架构 node+express+langchain+ollama ## 创建流程 1. 安装 express 脚手架 ```bash npm install express-generator -g ``` 2. 初始化项目 ```bash express --view=null langchain-node-kit ``` 因为项目是前后端分离的,不需要模板引擎,所以使用--view=null 参数来初始化项目 3. 修改启动方式为热启动 ```bash npm install nodemon -D ``` 修改 package.json 文件,将 start 命令修改为 nodemon ./bin/www ``` "start": "nodemon ./bin/www", ``` 4. 安装 dotenv 依赖 ```bash npm install dotenv -D ``` 在根目录下创建 .env 文件,添加配置代码 5. 安装 eslint 代码检查工具 ```bash npm install eslint -D ``` 执行初始化命令 ```bash npx eslint --init ``` 根据提示下一步即可 然后修改 eslint.config.mjs 文件,设置运行环境为 node ```json {languageOptions: { globals: globals.node }} ``` 然后在 package.json 中添加以下代码 ```json "scripts": { "lint": "eslint ." } ``` 6. 安装 langchain 依赖 ```bash npm i @langchain/core @langchain/community @langchain/ollama langchain ``` 7. 安装 向量数据库 faiss 依赖 ```bash npm i faiss-node ``` ❓ 选择原因:支持持久化、支持本地文件存储 (MemoryVectorStore 运行在内存中,持久化效果不好、Chroma 在 Node 环境中不支持本地文件存储,需要额外安装很多东西。。。) ❗ 注意:这个依赖在 github 上,有时候下载会很慢,很可能会超时,需要多尝试几次,或者你可以加点儿魔法。。。 📝 使用说明:https://js.langchain.com/docs/integrations/vectorstores/faiss/ ## 目录结构 ``` ├─bin # 项目启动脚本目录 │ └─www # 项目入口文件 ├─controllers # 控制器目录,处理业务逻辑 │ ├─chatController.js # 聊天相关控制器 │ └─documentController.js # 文档处理相关控制器 ├─core # 核心功能目录 │ ├─rag # RAG(检索增强生成)相关功能 │ │ ├─baseRag.js # 基础RAG功能实现 │ │ ├─fileRag.js # 文件RAG功能实现 │ │ ├─webRag.js # 网页RAG功能实现 │ │ └─data # RAG数据存储目录 │ │ └─index.js # RAG功能入口文件 │ └─vectorStore # 向量存储相关功能(基于FAISS实现) │ ├─data # FAISS向量数据存储目录 │ └─index.js # FAISS向量存储功能实现 ├─data # 数据存储目录 │ └─chroma # Chroma向量数据库存储目录 ├─public # 静态资源目录 │ ├─images # 图片资源 │ ├─javascripts # JavaScript文件 │ └─stylesheets # CSS样式文件 ├─routes # 路由目录 │ ├─index.js # 主路由文件 │ └─modules # 模块化路由目录 │ ├─chat.js # 聊天相关路由 │ ├─embedding.js # 文本嵌入相关路由 │ └─model.js # 模型相关路由 ├─services # 服务层目录 │ ├─chatService.js # 聊天服务 │ ├─documentService.js # 文档处理服务 │ ├─promptTemplateService.js # 提示词模板服务 │ └─qaService.js # 问答服务 ├─utils # 工具函数目录 │ └─resultWrapper.js # 响应结果包装器 ├─views # 视图目录(前后端分离,暂未使用) ├─.env # 环境变量配置文件 ├─.gitignore # Git忽略文件配置 ├─.npmrc # NPM配置文件 ├─app.js # Express应用主文件 ├─eslint.config.mjs # ESLint配置文件 ├─package.json # 项目依赖配置文件 └─README.md # 项目说明文档 ```