Repolode
pguso

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 数据每日更新。

相关项目