一套从零构建 AI 智能体的实践教程,基于 node-llama-cpp 使用本地大模型,涵盖函数调用、记忆与 ReAct 模式。
pguso/rag-from-scratch
一个用 JavaScript 从零实现检索增强生成(RAG)的分步教学项目,基于本地 LLM,不依赖云端 API。
- Star
- 1,646
- Fork
- 205
- 未关闭 Issue
- 1
- 最近提交
- 7个月前
这是什么?
RAG from Scratch 是一个教学项目,带领开发者亲手实现检索增强生成(RAG),而不是直接套用框架。每个环节都有简短、带注释的 JavaScript 示例,涵盖文档加载与分块、生成向量嵌入、存储向量、检索上下文,以及把上下文交给本地 LLM 生成有依据的回答。
示例按固定顺序覆盖完整流程:从不到 70 行的最小 RAG 演示,到内存向量库、余弦相似度和元数据过滤;后续还包括查询预处理、结合 BM25 的混合检索、使用倒数排名融合(RRF)的多查询检索,以及通过 node-llama-cpp 调用本地 Qwen 模型或启发式规则进行查询改写。
仓库的 src/ 目录提供了可复用的库代码,包括文本、PDF 和目录加载器、文本切分器、嵌入与缓存封装、支持 LanceDB 和 Qdrant 的向量存储、检索器和调用链。重排序、评估指标、流式输出等主题目前仍在规划中。
核心功能
- 01从嵌入到生成逐步构建 RAG 的示例
- 02通过 node-llama-cpp 在本地运行 LLM,无需云端 API
- 03内存向量库,支持最近邻搜索和元数据过滤
- 04结合向量相似度与 BM25 关键词打分的混合检索
- 05多查询检索,支持倒数排名融合和去重
- 06可复用的库代码,包含多种加载器、文本切分器以及 LanceDB、Qdrant 存储
适用场景
- 理解检索、向量嵌入与提示词增强之间的关系
- 在完全离线的环境中验证文档问答流程
- 对比向量、关键词和混合等不同检索策略
- 在采用大型框架之前,向团队讲解 RAG 的底层原理
使用前须知
- README 中没有给出安装或运行命令,因此无法从中确认设置步骤。
- 部分章节仍在规划中,例如结果排序、检索后重排序和模板,因此学习路径并不完整。
- 它是一个教学性质的演示项目,而不是可用于生产环境的 RAG 库。
标签
常见问题
- rag-from-scratch 是什么?
- 一个用 JavaScript 从零实现检索增强生成(RAG)的分步教学项目,基于本地 LLM,不依赖云端 API。 RAG from Scratch 是一个教学项目,带领开发者亲手实现检索增强生成(RAG),而不是直接套用框架。每个环节都有简短、带注释的 JavaScript 示例,涵盖文档加载与分块、生成向量嵌入、存储向量、检索上下文,以及把上下文交给本地 LLM 生成有依据的回答。
- rag-from-scratch 可以免费使用吗?用的什么许可证?
- rag-from-scratch 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- rag-from-scratch 还在维护吗?
- 超过半年未提交。rag-from-scratch 最近一次提交是在 2026年3月11日。
- rag-from-scratch 适合用来做什么?
- 理解检索、向量嵌入与提示词增强之间的关系 在完全离线的环境中验证文档问答流程 对比向量、关键词和混合等不同检索策略 在采用大型框架之前,向团队讲解 RAG 的底层原理
- 在哪里获取 rag-from-scratch?
- 源代码和安装说明在 GitHub 上:https://github.com/pguso/rag-from-scratch
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向 AI 应用的开源数据基础设施,用于存储文档与向量并支持语义、混合及全文检索。
一门免费开源的 AI 工程课程,共 542 节课,用 Python、TypeScript、Rust 和 Julia 从零实现核心概念。
为 Claude Code、Cursor、Codex 等 AI 编程助手提供持久化记忆,自动记录会话并在新会话中注入相关上下文。
基于 Python 与 Rust 内核的增量数据管道框架,让向量索引和知识图谱随源数据变化持续同步,服务于 AI 智能体与 RAG 应用。
基于 LangGraph 构建的模块化 Agentic RAG 教程与项目,支持层级索引、对话记忆和查询澄清。