96SEO 2026-07-03 03:20 9
哎呀,跟你聊聊 RAG吧,别紧张,像老友坐在咖啡馆里唠嗑一样。
RAG 是啥玩意儿?先说白了RAG 就是把「检索」和「生成」拼在一起。

检索阶段把海量文档给挑出来生成阶段让大模型基于这些材料来回答。
这套流程Neng让模型说话geng靠谱,尤其是知识geng新频繁、要引用来源的场景。
核心组件一览🔹 文档解析PDF、Word、HTML → 纯文本。
🔹 Chunking把长文档切成小块,通常 200‑400 token 左右,还会留点 overlap 防止上下文被割裂。
🔹 Embedding 模型把每个 chunk 编码成向量,用来Zuo相似度搜索。常见模型有 text‑embedding‑v4、BGE 等。
🔹 向量数据库FAISS、Milvus、Pinecone ……存向量 + 元数据。
🔹 检索策略BM25 + 向量混合检索、Hybrid Retrieval,甚至Ke以加上 React Search 之类的普通搜索Neng力。
🔹 Rerank粗排后用 Cross‑Encoder 或者专门的 Rerank 模型精排 Top‑N,提高准确率。
🔹 Prompt 构造把检索到的 chunk 拼进 Prompt,让 LLM 生成答案,并要求它引用来源。
从零搭建 RAG 流程——一步步拆解 1️⃣ 文档解析 & 清洗先把业务手册、FAQ、法规文档统统搬进来用 PyPDF2 把 PDF 拆成文字,用 docx 读取 Word,用 BeautifulSoup 把 HTML 的标签剥掉,只保留正文。
import PyPDF2, docx, bs4
def extract_text:
if file_path.endswith:
reader = PyPDF2.PdfReader)
return "
".join for page in reader.pages)
elif file_path.endswith:
doc = docx.Document
return "
".join
elif file_path.endswith:
soup = bs4.BeautifulSoup, 'html.parser')
return soup.get_text
else:
return ""
2️⃣ Chunking & 元数据标记
切块时记得打上 tag,比如「技术」「政策」「财务」;再加上 source_priority,以及 version、updated_at 等字段,后面过滤和排序dou靠它们。
{
"chunk_id": "doc_12_chunk_03",
"doc_id": "doc_12",
"text": "这里是 chunk 内容……",
"tags": ,
"source_priority": 10,
"version": "v2.1",
"updated_at": "2024-06-15T12:34:56"
}
3️⃣ 向量化 & 建库
LLM 把每个 chunk 的文字喂进 Embedding 模型,得到高维向量,再批量写入向量库。记得保存原始文本和元数据,以免后面找不到来源。
示例代码:
def add_document:
# 检测是否变geng
doc_hash = hashlib.md5).hexdigest
if doc_id in doc_hashes and doc_hashes == doc_hash:
print
return
# 删除旧版本
if doc_id in doc_hashes:
delete_document
embedding = get_embedding # 调用 embedding API
vector_id = len
index.add_with_ids.astype, np.array)
metadata_store.append({
'doc_id': doc_id,
'text': text,
'metadata': metadata,
'hash': doc_hash,
'created_at': datetime.now.isoformat
})
doc_hashes = doc_hash
print
4️⃣ 检索阶段——粗排 + 精排
B M25 + 向量混合:
B M25 给出关键词匹配分数;
The Embedding 相似度给出语义匹配分数;
# RRF把两者排名融合,不需要直接相加分数,因为尺度不一样嘛!
def hybrid_search:
bm25_scores = bm25.search # 返回
query_vec = get_embedding
distances, ids = index.search.astype, k)
# 简单 RRF 融合
combined = {}
for rank, in enumerate:
combined = combined.get + 1/ # 加上常数防止除零
for rank, idx in enumerate:
doc_meta = metadata_store
combined] = combined.get + 1/
top_docs = sorted, key=lambda x: -x)
return for i,_ in top_docs]
5️⃣ Rerank 精排——让模型挑出真金白银
Cross‑Encoder 把 query 和每个 candidate 拼在一起算相关度,比单纯向量相似度geng精准,但成本高,只跑 Top‑K。
class Reranker:
def __init__:
self.tokenizer = AutoTokenizer.from_pretrained
self.model = AutoModelForSequenceClassification.from_pretrained.eval
def rerank:
pairs = ] for d in docs]
inputs = self.tokenizer
with torch.no_grad:
scores = self.model.logits.squeeze.tolist
scored_docs = list)
scored_docs.sort
return scored_docs
6️⃣ Prompt 注入与答案生成
LLM 收到经过筛选的 chunk 列表后需要一个好 Prompt 才Neng发挥作用。常见技巧:
"请根据以下材料回答,并在答案末尾标注出处。"
"Ru果没有找到明确答案,请说明并给出可Neng的参考。"
"不要自行编造信息,要严格依据提供的上下文。"
User Query: “迪士尼儿童票退票政策是什么?”
Context:
...儿童票价格...
...退票须知...
请给出答案,并在每段后标明来源。
为什么百度不收录?—顺便答疑一下 🤔
A:其实百度爬虫对内容质量和可访问性要求挺高的。 Ru果页面没有合理的标题标签(
Company Wiki、产品手册经常geng新,一次性塞进 LLM 那可不行。RAG Neng实时召回Zui新章节,让客服机器人答得既快又准。
b. 法规合规检查Security 团队要查某条政策是否Yi废止,只要把法规 PDF 全部导入系统,然后用查询 “Zui新个人信息保护条例”,RAG 会返回对应条款,还Neng附上官方链接。
b. 财报分析与实时行情Data 从时序数据库拉来再配合 Tool / Function Call 去算指标,Zui后用 RAG 把结果包装成自然语言报告,“今天 A 股涨幅为 X%,主要受 Y 新闻影响”。哈哈,这玩意儿真的hen酷!
细节坑—别踩雷 🚧
No Only LLM Generate. 直接让 LLM 编造答案是幻觉大户,你得先保证检索到足够相关材料,否则模型会瞎猜。
# Overlap 必不可少? 不是所有场景dou需要 overlap。Ru果你采用句子级或语义边界切分,本身Yi经保证完整性,那Ke以省掉 overlap,省点 token 哦。
# 权限过滤要前置. 千万别先召回 Top‑K 再过滤权限,否则可Neng出现“召回空”的尴尬局面——用户根本kan不到任何结果。正确Zuo法是先基于用户角色限定候选集合,再进行检索与排序。
# 去重不Neng只靠 LLM. LLM 在判断相似度时容易受上下文影响,用 SimHash / MinHash 或者直接对 chunk hash Zuo去重geng可靠。Ru果发现两个 chunk 内容几乎一样,就只保留一个再送给模型,以免浪费上下文窗口。
# 多模态也Neng混合. 图片 OCR 转文字后同样Ke以进入向量库;音频转写也行,只要统一成文本向量即可。这样搜索范围geng宽广,却不会破坏整体架构。
# 数据脱敏必须严守 — 手机号、身份证号等敏感字段在入库前一定要打码,否则泄露风险极高。
# 实时监控不可少 — 监控指标包括 Recall@K、Precision@K、平均延迟以及 Bad Case 比例。一旦发现召回率跌破阈值,就立刻检查 embedding geng新或 chunk 大小是否异常。
# Bad Case 收集方式hen简单 — 用户点踩或修改答案时把原始 query、检索到的 contexts 与Zui终回答全部记录下来形成反馈库,然后用 LLM 自动归纳错误模式,再迭代改进 Prompt 或 retriever 参数。
# RAG 并非万Neng查询系统 — 对于精确数值计算或实时库存查询,geng适合走 SQL / API / Tool,而不是靠向量相似度去找答案。
# 用好 Hybrid Retrieval — BM25 对长尾关键词特别灵敏,而 Embedding 对语义相近但词汇不同的问题表现geng好,两者结合往往比单独使用任意一种效果好hen多。
# 元数据标签玩转过滤 — 业务线标签、部门标签、版本号 douNeng在召回阶段帮你快速筛选出Zui符合业务需求的数据。
# Prompt 中强制引用来源 — 在 Prompt Zui底部加一句 “请在每段标注对应来源”。这样即使模型想“偷懒”也会被约束住。
# Model Version 管理 — 每次微调或升级 System Prompt,dou记录版本号并保存对应评估报告,这样出现性Neng倒退时Neng快速定位是哪一步改动导致的问题。
# 多轮对话中 Query hen重要 — 用户经常省略主语或指代前文,这时候需要一个 Query Rewrite 步骤,把 “那个怎么办?” 成 “迪士尼儿童票退票政策是什么?” 再去检索。
# HyDE 技术Ke以提升召回率 — 让 LLM 假设生成一段可Neng的答案,然后用这段假设文本去Zuo向量检索,比直接用原始 query geng容易命中相关文档。
# 使用 RRF 融合多路召回时注意排名冲突 — Ru果 BM25 与 Embedding 排名前十完全不同,那说明两套检索侧重点差异大,Ke以考虑分别调参再融合,而不是盲目取前十混杂。
实战案例小结 🚀 — 小公司如何落地 RAG?
Step 1:把公司内部 FAQ 导出为 Markdown → 用脚本统一转成纯文本 → 按章节划分 Chunk 。
Step 2:为每个 Chunk 打上「部门」标签,以及「geng新时间」元数据。
Step 3:选择轻量级向量库 FAISS 本地部署,因为数据规模只有几千条,不需要云服务费用。
Step 4:实现 Hybrid Retrieval:先跑 BM25 ,再跑 Embedding ,使用 RRF 合并排名得到 final top‑50。
Step 5:调用开源 BGE‑Reranker 对 top‑50 Zuo Cross‑Encoder 重排序,仅保留 top‑5 入 Prompt。
Step 6:Prompt 示例:
User Query: “请告诉我2024年新员工培训计划”
Context:
{chunk01}
{chunk02}
...
Answer :
...
注意不要超过模型Zui大上下文长度,否则会被截断。
...
以上示例仅演示结构,请自行替换真实代码片段
调试 & 优化小技巧 🛠️
Debug Retrieval: 用下面这个函数打印 Top‑10 的相似度和来源,一眼kan穿是不是误召回了无关内容。
def debugretrieval:
qvec=getembedding
dists,ids=index.search.astype,k)
print
for rank, in enumerate):
if idx==-1:continue
meta=metadatastore
sim=1/ # L2→相似度近似
print}")
print
except Exception as e:
print
debug_retrieval
Query Rewrite: 当用户提问过于口语化或省略主语时可调用 LLM Zuo
,使其geng适合检索。例如:
def rewrite_query:
history="
".join
prompt=f"""基于以下对话历史,将Zui新问题
为完整独立的问题。
历史:{history}
问题:{query}
后:"""
resp=client.chat.completions.create
return resp.choices.message.content.strip
"""
newq=rewritequery
标签:
技术
作为专业的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