96SEO 2026-09-06 11:36 32
在日常工作中。你可能经常碰到“酸辣土豆丝的做法”与“马铃薯怎么做”这类毫无重叠字词却在语义上高度相关的问题。传统 SQL 的 LIKE '%xxx%' 只能匹配字面相同的子串。一旦关键词缺失或变形,就无法返回正确答案。说起来,对于内容量巨大的知识库。这种匹配方式往往导致:
要把文本转换为向量,需要调用 Embedding API,每次调用都会产生网络延迟和费用。不过,频繁调用不仅会被限流,还会让程序整体性能下降。当数据量从几百条 到几万甚至百万条时逐条计算余弦相似度变成 O 的线性遍历,吞吐量不足以满足实时查询需求。

RAG = Retrieval + Augment + Generation
Retrieval → 从知识库中搜索这些内容
Augment → 将检索结果注入 Prompt
Generate → LLM 基于提高的上下文生成答案
这篇文章聚焦第一步先:Retrieval,自然语义搜索。其实,
主要思路:
"React" → // 1536维向量
"渐进式框架" → // 一样是1536维
// 余弦相似度计算:
const similarity = dotProduct /;
因为向量能捕捉词义之间的关系。即使词汇不同,只要语义相近,它们在向量空间中的方向就会靠拢。这样即使使用者输入拼音、同义词或错别字,也能得到精准匹配。
posts-demo/
├── app.service.mjs # 共享客户端
├── create-embedding.mjs # 离线向量化
├── semantic-search.mjs # 在线语义搜索
└── data/
├── posts.json # 原始文章
└── posts‑embedding.json # 持久化向量数据
app.service.mjs完整代码:
import OpenAI from "openai";import dotenv from "dotenv";dotenv.config;怎么说呢,export const client = new OpenAI({
从apiKey来看,process.env.DASHSCOPE_API_KEY。baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",});按理说,
Create‑Embedding.mjs
import fs from "fs/promises";import { client } from "./app.service.mjs";const inputFilePath = "./data/posts.json";const outputFilePath = "./data/posts‑embedding.json";const data = await fs.readFile;const posts = JSON.parse;const sleep = ms => new Promise);const postsWithEmbedding =;for {
console.log;const response = await client.embeddings.create({
再看model。
"text‑embedding‑v4",input: `${title},分类:${category}`,});postsWithEmbedding.push({
title,category。embedding: response.data.embedding,});await sleep,// 防止限流
}
await fs.writeFile(
outputFilePath,JSON.stringify
);console.log,
Semi\-Search.mjs
import fs from "fs/promises";import { client } from "./app.service.mjs";import readline from "readline";说起来,
const inputFilePath = "./data/posts‑embedding.json";const data = await fs.readFile;const posts = JSON.parse;
const cosineSimilarity = => { const dotProduct= v1.reduce=>a+cv2,0);const len1=Math.sqrt=>a+cc,0));const len2=Math.sqrt=>a+c*c,0));话说回来,return dotProduct/;},
const rl=readline.createInterface;rl.on("line",async answer=>{
const resp=await client.embeddings.create;const { embedding }=resp.data;const results=posts.map}))
.sort=>b.similarity-a.similarity)
.slice
.map=>${j+1}. ${i.title})
.join;怎么说呢,console.log;其实,console.log;}),rl.on=>process.exit);
bash
node create‑embedding.mjs
node semantic-search.mjs
当文章内容不再变化时只需执行一次预处理脚本;后续查询完全基于本地存储。无需 调用 Embedding API,从而节省成本并提高速度。
| 决策项 | 原因 / 好处 |
|---|---|
| app.service.mjs 单独抽离客户端配置 | 全局复用、易切换服务商、避免重复实例导致内存泄漏。 |
| 离线嵌入 & JSON 存盘 | 一次性完成昂贵 API 调用;后续查询零延迟、无网络依赖。 |
| 命令行交互原型开发期低成本 | 快速验证思路,节省前端 UI 开发时间。 |
| for…of + await sleep 串行请求控制限流 | 避免批量请求导致 IP 封禁;保证稳定性, |
| 降序排序 b−a 而非 a−b 确保 TopN 正确排位 | 防止错误排序导致无关文档优先展示。 |
| 使用文本描述拼接输入模型 | 提高嵌入质量;减少歧义, |
| # 场景 # | # JSON 文件方案 ## | # 向量数据库方案 ## ... |
|---|
关键
• 大规模场景下 O 遍历不可接受;索引结构让查询瞬间完成,
• 增删改全局重写文件成本高,而数据库支持在线增删改。
• 实时业务场景更倾向于在线检索而非批处理。
作为专业的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