# AS-RAG-AI **Repository Path**: was666/as-rag-ai ## Basic Information - **Project Name**: AS-RAG-AI - **Description**: Node + LangChain RAG知识库聊天机器人(火山方舟 + 硅基流动免费版) - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-02 - **Last Updated**: 2026-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Node\.js\+LangChain RAG知识库聊天机器人(火山方舟\+硅基流动免费版) **标签:\#LangChain \#RAG \#Node\.js \#火山方舟 \#硅基流动 \#知识库AI** ## 🚀 前言 大部分RAG要么依赖笨重的向量数据库(Chroma/Pinecone),要么代码老旧、LangChain版本错乱,极易出现依赖报错、向量库兼容、接口超时等问题。 这是一款**零第三方向量库、纯Node\.js运行、双模型分离架构**的命令行RAG聊天机器人,核心亮点: - ✅ **完全免费**:火山方舟每日免费LLM \+ 硅基流动永久免费Embedding - ✅ **零依赖向量库**:手写内存向量检索,避开LangChain版本坑 - ✅ **双模问答**:优先知识库检索,无数据自动切换AI通用联网知识 - ✅ **长文本提速**:火山Fast低延迟推理、上下文裁剪、流式输出 - ✅ **带对话记忆**:多轮上下文记忆,支持清空对话/退出指令 ## 🎯 整体架构设计 ### 1\. 技术栈拆分 |模块|服务厂商|模型|计费规则|作用| |---|---|---|---|---| |对话大模型|火山方舟|doubao\-seed\-lite|每日50万Token免费|多轮对话、RAG答案生成| |嵌入模型|硅基流动|BAAI/bge\-large\-zh\-v1\.5|永久免费|文档向量化、相似度检索| |运行环境|Node\.js|18\+|本地运行|程序主体、文件解析、向量计算| |核心框架|LangChain 1\.x|最新稳定版|开源免费|链路编排、记忆管理、Prompt管理| ### 2\. 核心执行链路 ```plain 用户输入 → 非阻塞命令行接收 → 历史对话裁剪 → RunnablePassthrough(保留原输入)→ 子链RAG检索(向量化+余弦匹配)→ 拼接参考文档Prompt → 火山LLM流式推理 → 逐字输出答案 ``` ### 3\. 双模问答逻辑(核心亮点) - **模式1|知识库优先**:检索到相关文档 → 仅基于文档回答,强制标注来源 - **模式2|通用AI搜索**:无匹配文档 → 自动切换模型内置知识,提示用户无本地资料 ## ⚙️ 前置准备 ### 1\. 火山方舟(LLM对话) 1. 注册火山引擎账号,进入【方舟大模型服务平台】 2. 实名认证后,获取 `VOLC_API_KEY` 3. 部署免费模型:`doubao-seed-2-0-lite`(每日50万免费Token) 4. 获取模型端点ID、官方BaseURL ### 2\. 硅基流动(Embedding向量) 1. 注册硅基流动账号,实名认证 2. 获取 `SILICONFLOW_API_KEY` 3. 内置免费模型:`BAAI/bge-large-zh-v1.5` 永久免费向量化 ### 3\. 项目初始化 ```bash pnpm install ``` ## 📁 项目目录结构 ```plain langchain-rag-bot/ ├── .env # 密钥配置文件 ├── index.js # 主程序源码 └── docs/ # 知识库目录(自行新建) ├── 教程.md └── 笔记.txt ``` ## 🔧 配置文件 \.env ```env # 火山方舟 LLM 配置 VOLC_API_KEY=你的火山方舟API密钥 VOLC_MODEL=你的模型端点ID VOLC_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 # 硅基流动 Embedding 配置 SILICONFLOW_API_KEY=你的硅基流动API密钥 ``` ## ▶️ 运行使用 1. 项目根目录新建 `docs` 文件夹,放入任意 `.txt/.md` 知识库文档 2. 填写 `.env` 中的两类API密钥 3. 启动程序: `node index.js` 4. 指令说明: - `exit` / `Ctrl+C`:退出程序 - `/clear`:清空当前对话记忆 - 普通提问:自动触发RAG检索或通用AI回答 ## 🔥 核心技术亮点解析 ### 1\. 为什么不用Chroma/Pinecone向量库? 官方向量库存在**版本兼容、二进制编译、跨平台报错**三大问题。手写内存向量检索,基于余弦相似度计算,功能完全对标 `MemoryVectorStore`,零额外安装、开箱即用。 ### 2\. 双模型免费架构精髓 - 火山方舟LLM:每日免费Token,国内低延迟,支持Fast推理加速长文本 - 硅基流动Embedding:BGE中文向量模型永久免费,RAG零成本构建知识库 ### 3\. 解决「AI思考很久/超时」问题 - 开启火山 `serviceTier:fast` 低延迟算力池 - 限制单文档700字符、召回Top2文档,压缩上下文Token - 自动裁剪对话历史,避免多轮记忆无限膨胀 - 关闭模型深度思考、降低随机性,加快推理速度 - 流式输出,不用等待全部生成,优化体感延迟 ### 4\. RunnableSequence \+ RunnablePassthrough 核心原理 通过 `RunnablePassthrough.assign` 保留原始用户输入,同时并行执行RAG检索生成上下文,解决LangChain管道数据流覆盖问题;使用数组式 `RunnableSequence.from` 编排链路,支持动态步骤拼接,可读性远优于管道符 `|`。 ## 🐛 常见问题排查 1. **请求超时**:减少docs文档数量、降低chunkSize、清理对话历史、切换手机热点 2. **检索不到文档**:检查文件编码为UTF\-8、后缀是否为txt/md、相似度阈值是否过高 3. **模型报错**:核对API密钥、模型端点ID、账号是否有额度/实名认证