尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
手把手教你用Node.js搭建自己的知识库并实现RAG系统,小白也能学会!
本文将带你一步步用Node.js、Express.js和Qdrant数据库搭建一个知识库并实现RAG检索增强生成系统。文章涵盖了从环境搭建到API实现的完整流程包括集成Qdrant数据库、实现RAG核心逻辑、添加Rerank和混合查询功能并使用Mock数据进行测试。适合想学习大模型和小白程序员参考收藏。手把手教你用Node.js搭建自己的知识库并实现一个RAG今天为大家带来一篇技术文章教你如何用Node.js搭建自己的知识库并实现一个RAGRetrieval-Augmented Generation系统。最后我们还会加入Rerank重排序和混合查询功能并通过Mock数据演示整个流程。我们将使用Node.js、Express.js、Qdrant数据库等技术栈一步步实现这个系统。整体架构imagegraph TD A[前端] --|发送查询| B[后端] B --|检索| C[知识库] C --|返回文档| B B --|重排序| D[Rerank模块] D --|返回重排序结果| B B --|生成文本| E[生成模型] E --|返回生成结果| B B --|返回结果| A subgraph 后端 B[后端] D[Rerank模块] end subgraph 知识库 C[Qdrant数据库] end subgraph 生成模型 E[OpenAI GPT] end流程graph TD A[用户输入查询] -- B[检索相关文档] B -- C[重排序文档] C -- D[生成文本] D -- E[返回生成结果]image技术栈Node.js: 作为后端运行时环境提供高效的异步I/O操作。Express.js: 用于构建RESTful API处理HTTP请求和响应。Qdrant: 一个高性能的向量数据库用于存储和检索知识库中的向量数据。ReACT架构: 一种结合了检索和生成的AI模型架构。Rerank: 对检索结果进行重排序提升结果的相关性。混合查询: 结合关键词搜索和向量搜索提升检索效果。Mock数据: 用于模拟真实数据方便开发和测试。步骤一搭建Node.js环境如果你还没有搭建Node.js环境可以直接使用以下命令初始化项目# 创建一个新的Node.js项目 mkdir my-knowledge-base cd my-knowledge-base npm init -y # 安装必要的依赖 npm install express qdrant-client openai axios步骤二创建Express.js服务器我们创建一个简单的Express.js服务器来处理HTTP请求。const express require(express); const app express(); const port 3000; app.use(express.json()); app.get(/, (req, res) { res.send(Hello, World!); }); app.listen(port, () { console.log(Server is running on http://localhost:${port}); });步骤三集成Qdrant数据库Qdrant是一个高性能的向量数据库非常适合用于存储和检索知识库中的向量数据。我们需要安装Qdrant客户端并连接到数据库。const { QdrantClient } require(qdrant-client); const qdrant new QdrantClient({ url: http://localhost:6333 }); // 创建一个新的集合 qdrant.createCollection(knowledge-base, { vectors: { size: 768, // 假设我们使用768维的向量 distance: Cosine, }, });步骤四实现RAG系统RAG系统的核心是结合检索和生成。我们首先需要从知识库中检索相关信息然后使用生成模型生成文本。const openai require(openai); openai.apiKey your-openai-api-key; // 检索相关文档 async function retrieveDocuments(query) { const queryVector await getQueryVector(query); // 获取查询的向量表示 const searchResults await qdrant.search(knowledge-base, { vector: queryVector, top: 10, // 返回前10个最相关的文档 }); return searchResults; } // 生成文本 async function generateText(query, documents) { const prompt Query: ${query}/nDocuments: ${documents.join(/n)}; const response await openai.Completion.create({ model: text-davinci-003, prompt: prompt, max_tokens: 150, }); return response.choices[0].text; } // 获取查询的向量表示 async function getQueryVector(query) { // 这里可以使用预训练的模型将查询转换为向量 // 例如使用OpenAI的Embedding API const response await openai.Embedding.create({ input: query, model: text-embedding-ada-002, }); return response.data[0].embedding; }步骤五实现Rerank功能Rerank功能可以对检索结果进行重排序提升结果的相关性。我们可以使用开源的Rerank模型如Cohere Rerank或自定义规则来实现。// 使用Cohere Rerank API进行重排序 async function rerankDocuments(query, documents) { const cohere require(cohere-ai); cohere.init(your-cohere-api-key); const response await cohere.rerank({ query: query, documents: documents, top_n: 5, // 返回前5个最相关的文档 }); return response.results; }步骤六实现混合查询混合查询结合了关键词搜索和向量搜索可以提升检索效果。我们可以使用Qdrant的混合查询功能来实现。// 混合查询结合关键词搜索和向量搜索 async function hybridSearch(query) { const queryVector await getQueryVector(query); // 向量搜索 const vectorResults await qdrant.search(knowledge-base, { vector: queryVector, top: 10, }); // 关键词搜索假设我们有一个关键词索引 const keywordResults await qdrant.search(knowledge-base, { filter: { must: [ { key: text, match: { value: query, }, }, ], }, top: 10, }); // 合并结果并去重 const combinedResults [...vectorResults, ...keywordResults]; const uniqueResults Array.from(new Set(combinedResults.map(JSON.stringify))).map(JSON.parse); return uniqueResults; }步骤七使用Mock数据进行测试为了测试我们的系统我们可以使用Mock数据来模拟真实场景。// 生成Mock数据 async function generateMockData() { const mockData [ { id: 1, text: Node.js是一个基于Chrome V8引擎的JavaScript运行时。, vector: await getQueryVector(Node.js是一个基于Chrome V8引擎的JavaScript运行时。) }, { id: 2, text: Express.js是一个基于Node.js的Web应用框架。, vector: await getQueryVector(Express.js是一个基于Node.js的Web应用框架。) }, { id: 3, text: Qdrant是一个高性能的向量数据库。, vector: await getQueryVector(Qdrant是一个高性能的向量数据库。) }, ]; // 将Mock数据插入Qdrant await qdrant.upsert(knowledge-base, { points: mockData, }); } // 初始化Mock数据 generateMockData();步骤八整合所有功能最后我们将所有功能整合到一个API中用户可以通过发送HTTP请求来获取生成的文本。app.post(/rag, async (req, res) { const { query } req.body; // 混合查询 const documents await hybridSearch(query); // Rerank const rerankedDocuments await rerankDocuments(query, documents); // 生成文本 const generatedText await generateText(query, rerankedDocuments); res.json({ generatedText }); });总结通过以上步骤我们成功搭建了一个基于Node.js的知识库并实现了RAG系统。通过加入Rerank和混合查询功能我们进一步提升了系统的检索效果。最后如果说程序员已经是高薪职业那么干AI的程序员就是高薪中的高薪。现在的市场已经用数据给程序员指明了方向学AI大模型就是冲刺高薪的最优解看着身边越来越多的同行转型大模型、拿到高薪offer很多人心里都动了心但真正的难题来了零基础小白不知道从哪入门有基础的程序员找不到系统学习路径实战项目练手无门面试不知道考什么别慌今天就给大家整理了一份【2026年最新版】AI大模型免费学习资源包覆盖从入门到实战、从理论到面试、从基础到进阶的全流程所有资料均已整理归档无冗余、无套路免费分享给每一位想抓住AI风口的程序员和小白扫码免费领取全部内容1、大模型系统化学习路线2、大模型学习书籍文档3、AI大模型最新行业报告4、大模型项目实战配套源码5、大模型大厂面试真题四阶段精细化学习规划附时间节点可直接照做结合上述资源给大家整理了一份可直接落地的四阶段学习规划总时长约2个月小白可循序渐进程序员可根据自身基础调整节奏高效掌握大模型核心能力快速实现从“入门”到“能落地、能面试”的跨越。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容6、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
RELATED

相关推荐

PubSubClient:5分钟让Arduino设备变身智能物联网终端的3大秘诀

PubSubClient:5分钟让Arduino设备变身智能物联网终端的3大秘诀

PubSubClient:5分钟让Arduino设备变身智能物联网终端的3大秘诀 【免费下载链接】pubsubclient A client library for the Arduino Ethernet Shield that provides support for MQTT. 项目地址: https://gitcode.com/gh_mirrors/pu/pubsubclient 想象一下&…

📅 2026/8/23 17:20:42
tprPix数据库设计:如何使用SQLite3高效管理游戏存档数据

tprPix数据库设计:如何使用SQLite3高效管理游戏存档数据

tprPix数据库设计:如何使用SQLite3高效管理游戏存档数据 【免费下载链接】tprPix a Cross-Platform, 2D Survival Sandbox Game Project. Based on C17/cmake/OpenGL/SQLite3. 项目地址: https://gitcode.com/gh_mirrors/tp/tprPix 在2D生存沙盒游戏tprPix中…

📅 2026/8/23 17:20:47
百度网盘秒传脚本3分钟快速上手:告别链接失效的终极解决方案

百度网盘秒传脚本3分钟快速上手:告别链接失效的终极解决方案

百度网盘秒传脚本3分钟快速上手:告别链接失效的终极解决方案 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 你是不是经常遇到百度网盘分享链接…

📅 2026/9/9 13:55:31
MORE NEWS

更多资讯

📰

react-doctor 怎么配置 doctor.config.ts 并控制某条规则的启用与严重级别?

react-doctor 怎么配置 doctor.config.ts 并控制某条规则的启用与严重级别? 【免费下载链接】react-doctor Your agent writes bad React. This catches it 项目地址: https://gitcode.com/GitHub_Trending/re/react-doctor 扫描一个 React 项目后&#xff0…

📰

Openship部署平台快速上手:从安装到生产环境只需10步

Openship部署平台快速上手:从安装到生产环境只需10步 【免费下载链接】openship Self-hosted deployment platform 项目地址: https://gitcode.com/GitHub_Trending/ope/openship Openship 是一个开源、免费的自托管部署平台,内置 CI/CD、自动域名…

📰

FPGA上实现net22+WRS+Flash高精度时间同步系统

简介:本资源是一套基于Verilog语言实现的FPGA SPI闪存驱动与测试工程,面向数字电路设计初学者及FPGA开发工程师,解决嵌入式系统中SPI Flash擦除、页写入与字节读取等核心操作的硬件逻辑实现问题。项目已通过综合与仿真验证,可直接…

📰

硬件钱包物理攻击:一张二维码如何窃取离线私钥

1. 这不是钓鱼邮件,是物理世界的“带毒信封”——Trezor用户正遭遇新型离线攻击最近在几个硬件钱包社区里,陆续有用户发帖描述一种反直觉但极具迷惑性的攻击现象:他们没点开任何可疑链接,没下载任何附件,甚至没连过陌生…

📰

XSS绕过实战指南:从过滤失效到WAF绕过的核心思路

1. 为什么过滤函数挡不住XSS&#xff1a;从黑名单失效说起先聊一个很多人踩过的场景&#xff1a;你把用户输入里的<script>替换成空字符串&#xff0c;自以为万事大吉&#xff0c;结果一个<scr<script>ipt>就给你把代码弹了出来。这种经历基本每个做Web安全的…

📰

Flutter+OpenHarmony开发健康睡眠记录App实践

1. 项目背景与核心价值在万物互联的智能设备时代&#xff0c;健康管理类应用正成为移动开发的热门方向。这次我们要开发的是一个基于Flutter框架、运行在OpenHarmony系统上的身体健康状况记录App&#xff0c;重点实现睡眠记录功能模块。选择这个技术栈组合主要基于以下考量&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬