【免费下载链接】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),仅供参考