96SEO 2026-09-09 07:10 4
说起来,
使用 Node.js + Milvus + 大模型。搭建一个基于《红楼梦》小说的问答助手。
RAG 是Retrieval-Augmented Generation是一种将大语言模型与外部知识检索结合起来的 AI 技术。它的主要思想是:

这样模型不仅依赖训练时学到的知识,还可以利用最新或公司私有的数据。
说到目的只有一个。让大模型回答更准确,其实,
因为大语言模型的知识可能过时、不了解私有数据。容易产生幻觉,
需要 RAG。让大语言模型基于最新的知识或私有数据进行回答,解决大语言模型的幻觉问题。不过,
可以把 RAG 理解成检索、提高和生成三个步骤:
说到检索。根据使用者提问,在向量数据库中检索找到最相关的文档。
:将使用者问题 + 检索结果一起组成 Prompt。
从生成来看。将 Prompt 传给 LLM,并得到答案。
说到例如。有一个由《员工手册》切分成的向量数据库:
This is definitely more accurate than letting large model answer based solely on its training data.
使用者问题 + 检索到的文本 一起发送给 LLM,由 LLM 根据这些资料生成最终答案。
主要技术栈:
Milvus 向量数据库——存放原文+检索结果;
阿里云 text-embedding-v4——Embedding 模型,用于给文本“打标签”;
阿里云 qwen-plus 大模型——负责回答使用者问题;
Express —— Node.js 后端框架;
Vue + Element Plus —— 前端 UI 框架;
SSE 流式传输——让答案逐字出现。实现“打字机”效果,减少等待时间;,。,。,  ,
 ,
注上述代码块中 与 请根据实际需求设置,例如 chunkSize=5000 字、chunkOverlap=200 字。
使用者回答阶段
typescript
async function* streamChatWithHongLouMeng(
至于query,string): AsyncGenerator{
console.log;// . 搜出最相关的 k 段原文
const retriever = vectorStore.asRetriever({
searchType: "similarity"。k: /* 最多返回多少段 */10,});按理说,const docs = await retriever.invoke;// . 组装提示词:告诉大模型它是谁 + 给它参考资料 + 使用者问题
const chain = prompt.pipe.pipe);// . 流式生成:每出一个字就 yield 出去
const stream = await chain.stream({
context: formatContext。input: query,});for await {
if {
yield chunk;// “贾” → “宝玉” → “外貌” → …}
}
}
function formatContext:string{
return docs.map=>doc.pageContent).join;}
提示词示例的观点是,
你是一个精通《红楼梦》的文学助手。怎么说呢,说到上下文信息,使用者问题:贾宝玉的外貌如何?再看回答,
SSE 流式推送
typescript
// 告诉浏览器:我要用 SSE 协议。边生成边发
res.setHeader;res.setHeader;// 每生成一个字,就包装成 SSE 事件发出去
for await ) {
res.write;res.write,}
前端打字机效果
typescript
// 收到一个字 → 拆成打字单元 → 塞进队列
function push{
queue.push);其实,// "贾宝玉" →
}
// 打字泵:从队列取字 → 显示 → 停顿 → 再取
async function pump{
while{
const unit = queue.shift;
message.content += unit;
// 追加到界面
await sleep);// 根据字符类型设定停顿时间
}
}
splitIntoTypingUnits 与 getTypingDelay 的具体实现可在项目仓库查看。
效果演示
-
一次性导入
bash
pnpm ingest # 把《红楼梦》全文导入 Milvus,只跑一次即可。其实,
-
开启服务
bash
pnpm dev # 启动后端服务;老实说,pnpm web:dev # 启动前端服务。
-
访问体验
浏览器打开 http://localhost:。输入任意《红楼梦》相关的问题,即可看到实时流式回答。老实说,
完整代码已上传 GitHub 仓库:
这篇文章以《红楼梦》问答助手为例。演示了如何使用 Node.js、Milvus 和大型语言模型建立一套完整 RAG 程序:
-
文本切分 — 将约百万字小说拆成若干千字符块,并做适当重叠,以保持语义连贯性。
-
Embedding 与存储 — 用 text‑embedding‑v4 把每块转为向量后写入 Milvus,并创建 IVF_FLAT+COSINE 索引以加速搜索。其实,
-
检索 & Prompt 构造 — 在查询时先从 Milvus 中拿到 Top‑k 最相近原文。再把它们与使用者提问拼接为 Prompt 给 qwen‑plus。不过,
-
流式输出 & 打字机 UI — 后端通过 SSE 推送单字符流。前端解析并按自然节奏渲染,实现“打字机”效果,明显提高交互体验。
该方案有效抑制了 LLM 幻觉。提高了答案准确率,同时满足了实时交互需求,是建立文学类智能问答程序的一套成熟实践方案。说起来,
标签:
红楼梦
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback