如何构建你的第一个RAG系统:JavaScript+Embeddings+Neo4j语义检索完整教程(engenharia-de-software-com-ia-aplicada)
【免费下载链接】engenharia-de-software-com-ia-aplicadaCódigos e referências usados na Pós de Engenharia de Software com IA Aplicada项目地址https://gitcode.com/gh_mirrors/en/engenharia-de-software-com-ia-aplicada点击查看免费下载在engenharia-de-software-com-ia-aplicada课程仓库中你可以跟随exemplo-13-embeddings-neo4j-rag示例用JavaScript Embeddings Neo4j从零搭建一个完整的RAG系统检索增强生成把 PDF 文档切分成小块、转成向量存入 Neo4j 图数据库再通过语义检索找到最相关的内容最后交给 LLM 生成有依据的回答 。什么是RAG系统为什么新手应该先学它RAGRetrieval-Augmented Generation解决了一个大模型的经典痛点模型不知道你的私有知识。普通聊天机器人的回答只依赖模型训练时的记忆无法回答你公司内部文档、私有知识库里的问题。RAG 的思路非常直观分两步走Retrieval检索把用户问题也变成向量去向量数据库里做语义相似度匹配找出最相关的文档片段Augmented Generation增强生成把检索到的片段作为参考资料塞进 Prompt让 LLM 只根据这些资料作答。这样做的好处是回答有据可依、幻觉更少、知识库可以随时更新而且不需要微调模型成本极低。 向量相似度检索不只是 RAG 的底层能力它同样支撑着推荐系统这类找到最相似的东西的场景下面这个课程里的电商推荐系统演示界面就是一个典型例子项目里的 RAG 示例长什么样本教程围绕 exemplo-13-embeddings-neo4j-rag/ 展开核心文件一览文件作用tensores.pdf待检索的知识库文档TensorFlow.js 教程docker-compose.yml一键拉起 Neo4j 向量数据库容器src/documentProcessor.tsPDF 加载与文档切分src/index.ts主流程向量化入库 发起问答src/ai.ts检索 LLM 生成的 RAG 链路prompts/template.txt回答用的提示词模板respostas/每次问答生成的 Markdown 回答存档第一步用 Docker 一键启动 Neo4j 向量数据库整个 RAG 系统只需要两个环境Node.js 22直接运行 TypeScript无需编译和Docker跑 Neo4j。package.json 里预置了很方便的脚本npm ci # 安装依赖 npm run infra:up # 启动 Neo4j 容器基于 docker-compose.ymlNeo4j 5.14 容器会开放两个端口7474Web Browser可图形化查看节点和7687Bolt 查询协议。连接信息NEO4J_URI、NEO4J_USER、NEO4J_PASSWORD等通过.env环境变量注入在 src/config.ts 中统一读取避免硬编码密码。第二步PDF 加载与文档切分ChunkingRAG 的质量一半取决于文档怎么切。图RAG 管线的输入就是这样的原始文档——先加载再切分后向量化DocumentProcessor 做了两件事用 LangChain 的PDFLoader把tensores.pdf逐页读成文档对象保留页码元数据方便回答时溯源用RecursiveCharacterTextSplitter递归切分文本。切分参数在 src/config.ts 中定义chunkSize: 1000—— 每块约 1000 个字符太长会稀释语义、太短会丢失上下文chunkOverlap: 200—— 相邻块之间重叠 200 字符防止一个知识点被拦腰切断。第三步Embeddings 向量化并写入 Neo4j这一步是整个 RAG 系统的心脏。主流程 src/index.ts 依次做了三件事加载本地 Embedding 模型通过huggingface/transformers的HuggingFaceTransformersEmbeddings在本地把文本编码成向量模型名由EMBEDDING_MODEL环境变量指定。src/config.ts 还提供了fp32 / fp16 / q8 / q4等精度选项——精度越高效果越好量化后速度更快建立 Neo4j 向量存储Neo4jVectorStore.fromExistingGraph连接数据库配置向量索引tensors_index每个文本块存为一个Chunk节点批量入库清空旧数据后循环addDocuments把每个文本块连同其向量一起写入图库。为什么选 Neo4j 而不是普通向量库因为它是图数据库——向量检索之外后续还可以用 Cypher 做实体关系查询比如某章节关联的所有概念这在纯向量库中做不到。第四步语义检索 LLM 生成回答光会检索还不够RAG 的最后一公里是基于检索结果回答问题。核心链路封装在 AI 类 中用 LangChain 的RunnableSequence把两个步骤串成链检索环节retrieveVectorSearchResults对问题执行similaritySearchWithScore拿到带相关度分数的 Top-K 片段分数低于0.5的低质结果会被直接过滤全部落空则友好提示未找到相关信息生成环节generateNLPResponse把角色设定、任务约束、检索到的上下文和用户问题按 prompts/template.txt 模板拼装后交给 LLM走 OpenRouter 兼容接口模型由NLP_MODEL指定。角色的语气、语言、格式等约束都写在 prompts/answerPrompt.json 里其中一条关键指令是只使用上下文中提供的信息作答——这是压制幻觉的点睛之笔 ✍️。运行效果让 RAG 回答私有知识问题执行npm run dev后程序会依次跑通建库与 5 个测试问题例如O que é normalização de dados e por que é necessária?数据归一化是什么、为什么需要每个问题的完整回答会以 Markdown 文件形式存档到 respostas/ 目录方便逐条检查质量。以 resposta-0-1768357794801.md 为例回答先解释张量本质上是多维数值数组再给出 hot encoding 表格示例——内容全部来自tensores.pdf而不是模型的自由发挥。调优 RAG 系统的 3 个实用技巧 结合本示例的配置新手调优可以优先看这三个旋钮都在 src/config.ts 里topK默认 3检索返回的片段数量。太多会引入噪音、挤爆上下文太少可能漏掉关键信息。3~5 是稳妥起点相似度分数阈值score 0.5过滤擦边结果。发现回答开始胡说时可以先调高这个阈值chunkSize/chunkOverlap知识密度高的文档如 API 手册适合更小的 chunk如 500叙事性强的文档可以放大到 1500~2000。延伸练习先做纯检索版本再上完整 RAG想先验证向量检索本身是否有效仓库里还有一个不带 LLM 的简化版 exemplo-12-embeddings-neo4j/它同样把tensores.pdf向量化存入 Neo4j但查询时只打印最相关的 3 个片段及其来源页码见 src/util.ts 的displayResults。建议按 12 → 13 的顺序学习先看懂检索到了什么再理解LLM 怎么把它变成答案。小结环节本示例方案文档加载与切分LangChainPDFLoaderRecursiveCharacterTextSplitter1000/200向量化本地 HuggingFace Transformers Embedding 模型向量存储Neo4j 5.14Docker 一键启动Chunk节点 tensors_index检索similaritySearchWithScore 0.5 分数阈值生成LLM 结构化 Prompt 模板回答存档为 Markdown按照这条加载 → 切分 → 向量化 → 检索 → 生成的管线你就拥有了第一个可落地、可迭代的 RAG 系统。接下来可以尝试换一份自己的 PDF、更换 Embedding 模型、或为回答加上引用页码功能——这些都能在现有代码结构上平滑演进 赞分享【免费下载链接】engenharia-de-software-com-ia-aplicadaCódigos e referências usados na Pós de Engenharia de Software com IA Aplicada项目地址https://gitcode.com/gh_mirrors/en/engenharia-de-software-com-ia-aplicada点击查看免费下载相关推荐如何用Text Embeddings Inference构建高性能RAG系统完整指南如何用Text Embeddings Inference构建高性能RAG系统完整指南 在当今的人工智能应用中检索增强生成RAG系统已经成为连接大语言模型模型推理服务人工智能大模型Embedding后端本地部署RerankDeepSeek-V3 AMD MI250部署指南三步跑通FP8推理吞吐量拉满78.2 tokens/sDeepSeek V3 AMD MI250部署指南三步跑通FP8推理吞吐量拉满78.2 tokens/s 在 AMD MI250 上把 DeepSeek V人工智能大模型基础模型本地部署模型量化DeepSeekTest Kitchen调试技巧7个常见问题及其解决方案Test Kitchen调试技巧7个常见问题及其解决方案 Test Kitchen是开发和测试基础设施代码的强大集成工具但在使用过程中难免会遇到各种问题。本开发工具运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

概述| 赵杰 | 量子精神哲学

概述| 赵杰 | 量子精神哲学

作者:赵杰,清华大学硕士、微美全息云科技(NASDAQ:WIMI)董事长、微算法科技(NASDAQ:MLGO)董事长、育杰奖学金创始人人类对精神的探索贯穿古今哲学、宗教与科学的全部历程。传统西方哲…

2026/10/14 17:19:42 阅读更多 →
baidupcsapi 版本演进全记录:从 2013 年首个封装到 Python 3 移植的百度网盘 API 技术时间线

baidupcsapi 版本演进全记录:从 2013 年首个封装到 Python 3 移植的百度网盘 API 技术时间线

后端 【免费下载链接】baidupcsapi 百度网盘api 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcsapi 点击查看 免费下载 本文以 CHANGELOG.md 为主线,完整复盘 baidupcsapi 从 2013 年原作者发布首个版本、到 2014 年 fork 重写、再到 2017 年移…

2026/10/14 17:19:42 阅读更多 →
STM32按键控制LED:GPIO输入模式、上拉电阻与消抖实战

STM32按键控制LED:GPIO输入模式、上拉电阻与消抖实战

到这一篇,路子得掉个头了。前面四篇玩LED点灯、流水灯、蜂鸣器,本质都是同一件事:让单片机往外送出高低电平。但单片机想“懂事”,光会说话不听是不行的。按键控制LED小灯,就是把这个“听”的动作接进来——用按键的按…

2026/10/14 17:19:42 阅读更多 →

最新新闻

数据库与缓存实战指南:从MySQL索引到Redis穿透与雪崩

数据库与缓存实战指南:从MySQL索引到Redis穿透与雪崩

得,直接开始正题。聊到互联网后端,我估计前面两篇已经把HTTP协议、Web框架、接口设计这些基础盘得差不多了,这篇咱们必须得换个频道,聊聊在“学习记录”这个系列里最劝退、也最躲不开的硬骨头——数据库与缓存。你去看各大招聘网站…

2026/10/14 18:00:22 阅读更多 →
aiogram 入门实战:用完全异步的 Python 框架快速构建 Telegram Bot

aiogram 入门实战:用完全异步的 Python 框架快速构建 Telegram Bot

后端即时通讯API设计 【免费下载链接】aiogram aiogram is a modern and fully asynchronous framework for Telegram Bot API written in Python using asyncio 项目地址: https://gitcode.com/gh_mirrors/ai/aiogram 点击查看 免费下载 aiogram 是一个基于 Pytho…

2026/10/14 18:00:22 阅读更多 →
高项论文质量管理写作指南:从过程组到工具用法的落地拆解

高项论文质量管理写作指南:从过程组到工具用法的落地拆解

每年软考成绩出来之后,评论区里最热闹的往往是论文。尤其是“论项目的质量管理”这个题目,经常出现在备选列表里,也年年有大把考生栽在它上面。按理说,质量管理是项目管理者最不陌生的领域:开发要做测试、交付要有验收…

2026/10/14 18:00:22 阅读更多 →
HarmonyOS 6.0+分布式App开发实战:跨端协同与设备重组

HarmonyOS 6.0+分布式App开发实战:跨端协同与设备重组

1. 跨端开发不是在“移植”,是在“重组”做了几年的多端应用,我越来越觉得“跨端”这个词被理解得太浅了。很多人以为跨端就是把手机上的页面缩一缩放到平板上,或者把App打包成能够在不同系统上跑一遍的安装包。但实际上,真正的跨…

2026/10/14 18:00:22 阅读更多 →
IT培训行业技术管理者的职业发展路径解析

IT培训行业技术管理者的职业发展路径解析

1. 项目背景解析这个标题看似夸张,实则反映了一个职场人从基层逆袭到高管的成长故事。作为在黑马程序员广州校区工作多年的老员工,我亲眼见证过不少技术人通过自身努力实现职业跃迁的真实案例。今天我们就来拆解一个技术管理者从校区基层做到集团高管的典…

2026/10/14 18:00:22 阅读更多 →
C#与松下PLC通信:Mewtocol协议串口/以太网例程与避坑指南

C#与松下PLC通信:Mewtocol协议串口/以太网例程与避坑指南

简介:面向工业自动化上位机开发者的C#与松下PLC通信完整示例工程,以手机屏幕异物检测为应用场景,演示通过串口、TCP/IP等方式与PLC交互,完成数据采集与指令下发。资源包共113个文件,以C#源码(.cs)为主,另有…

2026/10/14 17:59:21 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →