首页
为什么需要 RAG
全链路架构
分块策略
检索优化
向量数据库
生成层
高级技术
评估体系
工程实践
面试考点
企业 RAG 首席科学家视角 · 2026 最新版

企业级 RAG
从 Naive 到 Agentic 的全景工程体系

Retrieval-Augmented Generation 已成为企业 AI 的基础设施。本教程以首席科学家视角,系统解析分块策略、混合检索、重排序、生成优化、RAGAS 评估,以及 GraphRAG / Agentic RAG 等前沿范式,帮助你构建生产可用的企业知识库系统。

0
核心章节
0
检索策略
0
RAGAS 指标
0+
面试考点
Chapter 01

为什么企业需要 RAG

LLM 的三大致命局限,以及 RAG、Fine-tuning、Long Context 的三角抉择

💡 首席科学家的一句话定义

RAG = 让 LLM 在回答前先去"查资料"。大模型的权重里存的是训练截止前的世界知识,但企业需要 AI 回答的问题 90% 涉及内部私有知识(合同、产品文档、运营数据)或实时动态知识(今天的股价、昨天的事故报告)。RAG 用精准检索替代模糊记忆,让 LLM 成为有扎实"查阅"能力的分析师,而非靠记忆说话的通才。

🚫
知识截止(Cutoff)
LLM 权重在训练后冻结,对 2025 年后发生的事件一无所知。企业运营数据、产品更新、政策变化——全都在截止日期之后。RAG 让 LLM 实时访问最新知识库,彻底突破时间壁垒。
🔒
私有知识盲区
LLM 从不知道你公司内部的合同、技术文档、财务报表、客服记录。这些私有知识无法公开训练,但恰恰是企业 AI 最核心的价值来源。RAG 安全地把私有知识注入每次推理。
👻
幻觉(Hallucination)
当 LLM 不知道答案时,它倾向于"发明"一个听起来合理的答案。企业场景中这是灾难性的——错误的法规解读、虚构的合同条款、编造的产品参数都会带来真实损失。RAG 通过锚定真实文档抑制幻觉。

⚖️ RAG vs Fine-tuning vs Long Context:企业如何选择

维度 🔍 RAG 🎯 Fine-tuning 📖 Long Context (1M+)
知识更新成本 ✓ 实时更新,重新索引即可 ✗ 需重新训练,成本高 每次需塞入全量知识
私有知识保护 ✓ 知识在数据库,不进权重 ✗ 知识进入模型权重,难管控 ✓ 运行时注入,不留痕
领域风格适应 ✗ 回答风格取决于基础模型 ✓ 可深度适配行业术语/格式 ✗ 无法改变模型风格
回答可溯源 ✓ 每句话可追回源文档 ✗ 来自权重,无法溯源 ✓ 可指向上下文位置
推理延迟 检索 + 生成,约 2-5 秒 ✓ 直接生成,最快 ✗ 长 Context 推理慢 + 贵
启动成本 ✓ 低,数周内可上线 ✗ 高,需要标注数据+GPU ✓ 低,API 即用
适用场景 企业知识库、客服、合规 固定输出格式、专业代码生成 长文档分析、一次性任务
⚠️ 首席科学家的选型铁律

知识动态 + 需要溯源 + 有隐私要求 → 优先 RAG。 只有当你的需求是"让模型说话像个法律专家"(风格/格式)而非"让模型知道你的法律文档"(知识),才考虑 Fine-tuning。Long Context 是 RAG 的补充而非替代——用于单次需要处理超大文档的场景。70% 的企业 AI 需求,RAG 是第一选择。

Chapter 02

RAG 全链路架构

从文档入库到答案生成:完整的离线索引流水线与在线查询流水线

⬇ 离线索引流水线(Indexing Pipeline)

📄
文档加载
LlamaParse
Unstructured
DocLing
🧹
清洗预处理
去噪 / 去重
格式标准化
语言检测
✂️
分块策略
Recursive
Semantic
Hierarchical
🏷️
元数据注入
来源 / 日期
章节 / 作者
权限标签
🧬
向量化
text-embedding
-3-large
BGE-M3
🗄️
双路存储
向量DB
+ BM25 索引
+ 原文存储

⬆ 在线查询流水线(Query Pipeline)

💬
用户查询
原始 Query
对话历史
🔄
查询改写
HyDE
Query Expansion
Sub-question
🔍
混合检索
Dense + Sparse
RRF 融合
权限过滤
📊
重排序
Cohere Rerank
BGE-Reranker
Cross-encoder
🧩
Context 组装
压缩 / 截断
引用标记
格式注入
🤖
LLM 生成
幻觉检测
引用校验
流式输出
💡 架构关键决策:两条流水线的职责边界

离线流水线决定知识库的质量天花板——垃圾进垃圾出,分块和向量化做不好,检索层无论多精巧都无济于事。在线流水线决定用户体验——延迟、相关性、可信度都在这里体现。两条流水线必须独立监控、独立优化,索引质量查询质量的 A/B 实验要完全分开跑。

Chapter 03

文档处理与分块策略

Chunk Size 的黄金法则、六种分块模式、Metadata 策略——最被低估的工程环节

💡 分块是 RAG 工程的第一关

90% 的 RAG 质量问题根源在分块策略。Chunk 太小 → 缺乏语义完整性,检索到的片段没有足够上下文;Chunk 太大 → 噪声多、精度差、超出 Context 窗口。没有放之四海皆准的最优 Chunk Size——它取决于你的文档类型、Embedding 模型的最大长度、以及你的查询通常有多精确。

Strategy 01
固定大小分块(Fixed-size)
按 Token 数量硬切(如 512 tokens,重叠 50 tokens)。实现简单,但可能在句中断切,破坏语义完整性。
  • 实现最简单,速度最快
  • 适合结构规整的纯文本
  • Overlap 可部分弥补断切问题
LangChain CharacterTextSplitter
Strategy 02
递归字符分块(Recursive)
按优先级依次尝试 \n\n → \n → . → 空格分割,尽量在自然边界(段落、句子)断开。企业最常用的基线策略。
  • 语义完整性显著优于固定切割
  • LangChain RecursiveCharacterTextSplitter 开箱即用
  • Chunk 大小可控,适合大多数文档类型
推荐企业基线
Strategy 03
语义分块(Semantic)
计算相邻句子的 Embedding 相似度,在相似度骤降处断开(语义跳跃点)。Chunk 大小动态变化,但语义一致性最高。
  • 语义完整性最高
  • 适合议论文、学术论文、报告
  • LlamaIndex SemanticSplitterNodeParser
高质量场景推荐
Strategy 04
层级分块(Hierarchical)
同时生成父 Chunk(大块)和子 Chunk(小块)。检索时用子 Chunk 精准定位,返回时扩展为父 Chunk 提供完整上下文。Small-to-Big 检索模式。
  • 检索精度高 + 上下文完整
  • 适合长结构化文档(技术手册、合同)
  • LlamaIndex ParentDocumentRetriever
企业合规推荐
Strategy 05
文档结构感知(Structure-aware)
利用文档本身的结构(HTML 标签、Markdown 标题、PDF 页面/段落)进行分块。标题作为 Chunk 的 metadata,便于结构化检索。
  • Markdown/HTML 文档天然最优
  • 标题信息保留完整,检索时可过滤
  • LlamaIndex MarkdownNodeParser
文档库推荐
Strategy 06
晚期分块(Late Chunking)
先对完整文档生成 Token-level Embedding(利用全文上下文),再按位置切分。每个 Chunk 的向量包含了全局语义信息。Jina AI 提出。
  • Embedding 质量最高,上下文感知
  • 解决传统切块丢失全局语境的问题
  • 需要支持长上下文的 Embedding 模型
2024-2026 前沿

📏 Chunk Size 黄金法则

📖
按文档类型推荐 Chunk Size
技术文档 / API Doc 256–512 tokens
法律合同 / 合规文件 512–1024 tokens
新闻 / 文章 200–400 tokens
FAQ / 知识库条目 100–256 tokens
学术论文 512–1024 tokens
代码文件 按函数/类边界
🏷️
Metadata 策略(必不可少)
每个 Chunk 必须携带完整 Metadata 用于过滤和溯源:
// 企业级 Chunk Metadata 标准
{
  doc_id: "contract_2026_001",
  source: "s3://docs/legal/...",
  created_at: "2026-01-15",
  department: "legal",
  access_level: "confidential", // 权限过滤关键
  chunk_index: 3,
  parent_section: "第四章 违约责任"
}
Chapter 04

检索策略全解

从单一向量搜索到混合检索 + 重排序:企业级精准召回体系

💡 检索是 RAG 质量的核心杠杆

生成层的质量上限由检索层决定——如果检索回来的文档本身就是错的或不相关的,再强的 LLM 也无能为力。混合检索 + 重排序是 2025-2026 年企业 RAG 的黄金标准:Dense 检索捕捉语义,Sparse 检索保留精确关键词,Reranker 做最终精排。三层叠加,召回率和精确率双优化。

🧬
Dense Retrieval(向量检索)
将 Query 和 Chunk 都映射到高维向量空间,用余弦相似度或点积找最近邻(ANN)。能捕捉语义相似性("涨薪"和"薪资调整"能匹配)。
# Dense retrieval with FAISS
query_vec = embedder.encode(query)
scores, indices = index.search(query_vec, k=20)
# ANN 算法: HNSW / IVF-PQ / ScaNN
语义匹配跨语言检索
🔤
Sparse Retrieval(BM25 稀疏检索)
基于 TF-IDF 改进的 BM25 算法,对词频和逆文档频率精确建模。精确关键词匹配能力极强(型号、代码、专有名词)。与 Dense 互补。
# BM25 sparse retrieval
from rank_bm25 import BM25Okapi
bm25 = BM25Okapi(tokenized_corpus)
scores = bm25.get_scores(tokenized_query)
精确关键词专有名词
⚗️
混合检索 + RRF 融合
同时运行 Dense 和 Sparse,用 Reciprocal Rank Fusion(RRF)融合两路排名。RRF 无需调参,对不同分数量纲鲁棒。企业黄金标准组合。
# RRF 融合公式
rrf_score(doc) = Σ 1 / (k + rank_i(doc))
# k=60 是最佳默认值(Cormack 2009)
# rank_i: 第 i 路检索的排名
企业标准双路互补
🎯
Reranking(交叉编码重排序)
用 Cross-Encoder 模型对 Query + Candidate Chunk 联合编码,精准打分(比 Bi-Encoder 精确 10-30%)。作为召回后的精排层,处理 Top-20 → 返回 Top-5。
# Cohere Rerank API
results = cohere.rerank(
  query=query, documents=candidates,
  model="rerank-v3.5", top_n=5
)
精排关键Cohere / BGE
🔮
HyDE(假设文档嵌入)
先让 LLM 根据 Query "幻想"一个假设性答案文档,再用该假设文档的向量进行检索。弥补 Query 和 Answer 的文本分布差异(用户问"怎么...",文档写"...方法是")。
# HyDE:Query → 假设文档 → 向量检索
hypo_doc = llm.generate(
  f"写一段关于 {query} 的文档")
results = vdb.search(embed(hypo_doc))
弥补分布偏移
🔗
查询改写(Query Transformation)
将原始 Query 扩展为多个子查询或同义表达,分别检索再合并。对复杂多跳问题效果显著。Multi-query、Step-back Prompting、Decomposition 三种模式。
# Multi-query:一问变三问
sub_queries = llm.generate(
  "将此问题改写为 3 个不同角度的子问题:{query}")
results = [vdb.search(q) for q in sub_queries]
复杂问题多跳推理
Chapter 05

向量数据库选型

企业级考量:规模、托管、混合查询、安全隔离

🌲
Pinecone
全托管 · SaaS
全托管向量数据库,Serverless 模式零运维。支持元数据过滤、命名空间(Namespace)多租户隔离。冷启动延迟需注意。
命名空间隔离Serverless
✦ 最佳场景:快速上线、中小规模、不想管运维
🔷
Weaviate
开源 / 托管 · 混合
原生支持混合检索(BM25 + Vector)、GraphQL 查询、多租户。自带 Embedding 模块,支持多模态。可自托管或云托管。
原生混合检索GraphQL
✦ 最佳场景:需要混合检索 + 多模态 + 自托管控制
Milvus / Zilliz
开源 · 高性能
面向亿级向量的高性能分布式向量数据库。支持 IVF-PQ、HNSW 等多种索引,写入吞吐量业界最高。Zilliz 提供云托管版。
亿级规模高吞吐写入
✦ 最佳场景:超大规模(>1亿向量)、高并发写入
🐘
pgvector
PostgreSQL 扩展
在 PostgreSQL 中添加向量支持,可与业务数据同库存储。支持精确 KNN 和近似 IVFFLAT/HNSW 索引。AWS RDS、Supabase 均支持。
SQL 联合查询同库业务数据
✦ 最佳场景:已有 PG 基础设施、中小规模、需联表
🔴
Redis Vector
内存数据库
基于 Redis Stack 的向量搜索,延迟极低(毫秒级)。适合实时性要求极高的场景。数据量受内存限制。
超低延迟实时场景
✦ 最佳场景:实时推荐、会话缓存、毫秒级要求
🟡
Chroma
开源 · 开发友好
Python-native 的轻量向量数据库,本地内嵌模式零配置启动。适合快速原型验证,生产建议迁移到更成熟方案。
零配置原型Python-native
✦ 最佳场景:PoC 验证、本地开发、学习用途
💡 企业选型决策树

数据量 <1000万 + 不想运维 → Pinecone Serverless 或 pgvector(已有 PG)
需要混合检索(BM25+Dense)且要自控 → Weaviate 自托管
亿级以上 + 高并发写入 → Milvus / Zilliz
需要和业务数据 JOIN 查询 → pgvector(SQL 联表优先)
实时推荐 + 毫秒延迟 → Redis Vector
关键考量:Metadata 过滤能力(用户权限隔离必须)和多租户支持(B2B SaaS 场景)是企业选型两个非谈判项。

Chapter 06

生成层优化

Prompt 工程、Context 压缩、幻觉抑制、引用溯源——让 LLM 忠实于检索结果

💡 生成层的核心矛盾

你希望 LLM 仅基于检索到的文档回答,但 LLM 的训练让它有强烈冲动用自身知识"补全"答案——这就是 RAG 中的幻觉来源。生成层优化的本质是:通过 Prompt 设计和后处理机制,最大化 LLM 对检索内容的忠实度,最小化其对训练知识的依赖。

📝
RAG System Prompt 标准模板
## 系统提示词结构
你是一个企业知识库助手。请遵循以下规则:

【回答规则】
1. 仅根据下方"参考文档"中的内容回答
2. 若文档中无相关信息,明确说"根据现有文档,
   无法回答此问题",不得自行推断
3. 每个关键论断后用 [来源N] 标注引用
4. 若文档间有矛盾,指出矛盾不武断判断

【参考文档】
[来源1] {chunk_1_content}
[来源2] {chunk_2_content}
...

【用户问题】{user_query}
✂️
Context 压缩与窗口管理
检索出的 Top-K Chunk 可能超过 LLM Context 窗口,需要压缩:
  • LLMLingua:Token 级别压缩,保留关键 Token,压缩率可达 5-20x
  • Rerank + 截断:Reranker 精排后只保留 Top-5,丢弃低分 Chunk
  • 句子级过滤:对每个 Chunk 内,删除与 Query 相关性低的句子
  • Lost in Middle 规避:最相关文档放首尾,避免 LLM 忽略中间内容
LLMLinguaPosition Bias 规避

🛡️ 幻觉检测与引用校验体系

🔍
NLI 事实核查
用自然语言推理(NLI)模型检测生成答案中每个声明是否"蕴含"于源文档。声明若为中立/矛盾,标记为不可信,触发回退或警告。
TrueTeacherMiniCheck
🔗
引用溯源验证
LLM 输出每个 [来源N] 引用后,程序自动回查对应 Chunk 原文,用字符串匹配或 Embedding 相似度验证引用是否真实支撑该声明。
Citation GroundingExact Match
🔄
Self-RAG 自我评估
让 LLM 生成答案的同时输出"是否需要检索"、"检索内容是否相关"、"答案是否有支撑"三类特殊 Token,基于自评估动态决策。
Self-RAGCRAG
Chapter 07

高级 RAG 技术

GraphRAG · Agentic RAG · Multi-hop · ColPali 多模态 — 超越传统向量检索的下一代架构

🕸️
GraphRAG(微软 2024)
传统 RAG 无法回答需要跨文档推理的"全局"问题(如"所有文档中最常提到的风险是什么?")。GraphRAG 先从文档中提取实体和关系构建知识图谱,再基于图结构做社区摘要,支持两种检索模式:
  • Local Search:围绕特定实体的深度检索(传统 RAG 的超集)
  • Global Search:跨整个文档集的宏观问题,基于社区摘要回答
知识图谱社区摘要多跳推理
🤖
Agentic RAG
让 LLM Agent 动态决定是否检索、检索什么、检索几次,而非静态的"检索一次→生成"流程。Agent 可以:
  • 决定当前 Context 不足,主动触发补充检索
  • 分解复杂问题为子问题,逐步检索(Iterative RAG)
  • 跨多个知识库做 Tool-call 式检索(RAG as Tool)
  • 结合 Web 搜索 + 内部知识库的混合信息源
动态检索Tool-callIterative
🖼️
ColPali 多模态文档 RAG
传统 RAG 处理 PDF 需要先 OCR + 文本提取,丢失大量视觉信息(图表、表格布局、公式)。ColPali 用视觉语言模型直接对 PDF 页面图像做 Late Interaction 检索,原生支持视觉内容理解。
  • 无需 OCR,直接处理图像页面
  • 保留表格、图表、布局等视觉语义
  • 结合 Qwen-VL / GPT-4V 做多模态生成
无 OCR视觉 RAG
🔗
Multi-hop RAG(多跳推理)
对于需要串联多个文档才能推导出答案的问题("A 公司的 CTO 毕业于哪所大学?"需要先找 CTO 是谁,再找其教育背景),单次检索无法完成。Multi-hop 通过迭代检索链接知识。
  • IRCoT:交错推理链与检索步骤
  • BeamSearch 式多路径探索
  • 知识图谱路径游走辅助跳跃
IRCoT迭代推理
🔮 2026 年前沿:RAG + Long Context 的融合范式

Claude 3.7 / Gemini 2.5 Pro 的 1M+ Token Context 窗口正在改变 RAG 的使用边界。新范式正在形成:RAG 做粗筛选(从百万文档中找出相关的几十份),Long Context 做精读(把这几十份塞进 1M Context 让 LLM 深度理解)。纯 Long Context 把整个知识库塞进去的做法不会成立(成本过高),但 RAG + Long Context 的组合会成为企业标准。

Chapter 08

RAG 评估体系

RAGAS 五大指标 + 生产监控 — 没有评估就没有迭代

💡 评估是 RAG 工程的指北针

没有评估体系的 RAG 工程是盲目的——你不知道改进了分块策略后检索质量有没有提升,也不知道换了 Reranker 后答案忠实度变化如何。RAGAS(RAG Assessment)是 2024-2026 年企业 RAG 评估的事实标准,提供五个维度的量化指标,支持全自动 LLM-as-Judge 评估,无需人工标注。

📐 Context Precision(上下文精确率)
目标 ≥ 0.75 | 优秀 ≥ 0.90
衡量检索到的文档中,有多少比例是真正相关的(精确率)。低 Context Precision 意味着召回了太多噪声文档,会干扰 LLM 生成。
= 相关文档数 / 检索总文档数
📡 Context Recall(上下文召回率)
目标 ≥ 0.75 | 优秀 ≥ 0.90
衡量回答所需的信息有多少被检索到了(召回率)。低 Context Recall 意味着 LLM 生成答案时缺乏必要文档,容易产生幻觉或"不知道"。
= 检索到的相关信息 / 标准答案所需信息
✅ Faithfulness(忠实度)
目标 ≥ 0.85 | 优秀 ≥ 0.95
衡量 LLM 生成的答案有多少声明可以在检索文档中找到支撑。最重要的幻觉检测指标。低忠实度意味着 LLM 在"编造"超出文档范围的内容。
= 有文档支撑的声明数 / 总声明数
🎯 Answer Relevance(答案相关性)
目标 ≥ 0.80 | 优秀 ≥ 0.92
衡量生成的答案有多"切题"——是否真正回答了用户的问题,而非回答了相关但不同的问题。用 LLM 反向生成问题再计算相似度评估。
= mean(sim(生成问题_i, 原始问题))
Python · RAGAS
from ragas import evaluate
from ragas.metrics import (
  faithfulness, answer_relevancy,
  context_precision, context_recall
)
from datasets import Dataset

# 准备评估数据集
eval_dataset = Dataset.from_dict({
  "question": questions, # 用户问题
  "answer": generated_answers, # LLM 生成答案
  "contexts": retrieved_chunks, # 检索到的文档
  "ground_truth": reference_answers # 标准答案(可选)
})

# 运行 RAGAS 评估(LLM-as-Judge,无需人工标注)
result = evaluate(
  dataset=eval_dataset,
  metrics=[faithfulness, answer_relevancy,
           context_precision, context_recall],
  llm=ChatOpenAI(model="gpt-4o")
)
print(result.to_pandas())
# 输出:faithfulness=0.91, answer_relevancy=0.87, ...
≥0.85
生产级 Faithfulness 基线
≥0.75
Context Precision 目标
P95
检索延迟目标 < 500ms
1%
幻觉率生产红线
Chapter 09

企业级 RAG 工程实践

安全隔离 · 增量更新 · 成本优化 · 生产监控 · 知识库治理

PRACTICE 01

🔐 用户级文档权限隔离(必须)

企业 RAG 最危险的安全漏洞:用户 A 的查询返回了用户 B 才能看的文档。解决方案:每个 Chunk 打上 access_level + department + user_groups 标签,在向量检索时叠加 Metadata Filter 硬过滤。Pinecone 用 Namespace,Weaviate 用 RBAC,pgvector 用 Row-level Security。不能用 LLM 判断权限——必须在向量数据库层硬隔离。

Metadata FilterRBACRow-level Security硬过滤
PRACTICE 02

🔄 增量更新策略(知识库永远在变)

文档更新是企业 RAG 最高频的运维操作。策略分级:① 新文档增量追加(索引追加,不影响现有数据);② 文档修改 → 删除旧向量 + 插入新向量(按 doc_id 精确替换);③ 文档删除 → 软删除 + 定期硬清理。永远不要全量重建索引(数百万向量重建需数小时停服)。监控指标:知识库新鲜度(最老文档 Age)+ 更新延迟(文档上传到可检索的时间)。

增量追加doc_id 替换软删除新鲜度监控
PRACTICE 03

💰 LLM 调用成本优化

企业 RAG 的主要成本是 LLM API 调用(约占总成本 70-80%)。四大优化手段:① 语义缓存:相似 Query(cosine >0.95)直接返回缓存答案(GPTCache / Redis);② Query 路由:简单问题用 GPT-4o-mini(便宜 20x),复杂推理用 Claude-3.7;③ Context 压缩(LLMLingua 5-10x 压缩 Prompt);④ 批处理:Embedding 批处理(batch_size=512)比逐条快 10x 且便宜。

语义缓存模型路由Context 压缩批处理
PRACTICE 04

📊 生产监控体系

RAG 系统的可观测性需要三层:① 检索层:每次检索的 Top-K 相关度分布、召回 Chunk 的元数据分布、检索延迟 P50/P95/P99;② 生成层:答案长度分布、引用率(有多少答案引用了至少一个来源)、LLM 拒答率;③ 业务层:用户满意度(👍/👎)、追问率(首次回答未解决问题的比例)。将低满意度答案自动进入人工审核队列。

检索 P95 延迟引用率满意度追踪低质量自动审核
PRACTICE 05

📚 知识库治理(Documentation as Code)

企业知识库的质量腐化比代码更快。治理规范:① 文档 Schema 标准化(必填字段:标题、作者、有效期、所有者、审批状态);② 有效期机制(文档标注过期时间,到期触发所有者审核);③ 孤儿文档清理(超过 12 个月无人访问的文档自动归档);④ 知识库地图(定期生成覆盖率报告:哪些业务领域文档充足,哪些空白)。

文档 Schema有效期机制孤儿清理覆盖率报告
PRACTICE 06

⚡ 低延迟架构设计

企业 RAG 端到端延迟目标:P95 < 3 秒。拆解:检索 <500ms(HNSW 索引 + Metadata 过滤)、Rerank <300ms(API 调用或本地模型)、LLM 生成 <2s(流式输出 first-token <500ms)。关键优化:① 检索和 Query 向量化并行执行;② 流式输出(Streaming)优先显示 first token,降低感知延迟;③ Embedding 服务本地部署(避免 API 往返);④ 向量检索异步预热(不等第一次冷启动)。

HNSW 索引并行检索流式输出本地 Embedding
Chapter 10

面试考点精讲

45+ 道高频 RAG 面试题,覆盖算法原理、系统设计、工程落地三维度

❓ RAG 和 Fine-tuning 怎么选?说出核心判断逻辑+

选 RAG 当:知识频繁更新(无法每次重新训练);需要引用可溯源;知识涉及隐私(不能进权重);快速上线(数周 vs 数月);知识量大(微调无法"记住"全部细节)。

选 Fine-tuning 当:需要改变模型的输出格式/风格(如"像法律专家一样说话");任务高度专业且固定(代码补全、特定领域分类);推理延迟预算极紧(Fine-tuned 模型直接生成,无检索步骤);知识相对稳定不更新。

最常见答案:两者经常一起用——Fine-tuning 赋予模型领域风格和格式偏好,RAG 提供实时私有知识。

❓ 什么是 Hybrid Retrieval?为什么比单独 Dense 或 BM25 好?+

Hybrid Retrieval 同时运行 Dense(向量)和 Sparse(BM25)两路检索,再用 RRF 融合排名。

Dense 的优势:语义理解能力强,能匹配同义词、近义概念("涨薪"≈"薪资调整")。BM25 的优势:精确关键词匹配,对型号、代码、缩写("GPT-4o-mini")的召回准确率极高,不会因语义漂移而丢失。

互补性:Dense 在语义匹配上胜出,BM25 在精确词匹配上胜出。Hybrid 通过 RRF 融合,在两类查询上都能取得好结果。实践上 Hybrid 比单一方法 NDCG@10 提升 10-25%(BEIR benchmark)。

❓ Reranker 的原理是什么?为什么比 Bi-Encoder 检索更精确?+

Bi-Encoder(向量检索):Query 和 Document 分别独立编码为向量,计算两向量的余弦相似度。速度极快(ANN 搜索),但 Query 和 Document 的交互信息在编码时丢失。

Cross-Encoder(Reranker):将 Query + Document 拼接后一起输入 Transformer,模型能看到 Query-Document 的完整交互(attention 机制),打分精度显著更高。代价是:不能预计算 Document 向量,必须为每对(Query, Doc)实时推理,无法扩展到大规模召回。

最佳实践:两阶段——Bi-Encoder 快速从百万文档中召回 Top-50,Cross-Encoder 对 Top-50 精排,取 Top-5 送入生成层。Bi-Encoder 管规模,Cross-Encoder 管精度。

❓ 什么是 RAGAS?Faithfulness 和 Answer Relevancy 有什么区别?+

RAGAS 是 RAG 系统的自动化评估框架,用 LLM-as-Judge 替代人工标注。

Faithfulness(忠实度):评估答案中的声明是否能在检索文档中找到依据,衡量幻觉程度。即"LLM 说的话,文档里有没有说"。Faithfulness=1 表示没有幻觉。

Answer Relevancy(答案相关性):评估答案是否切题,衡量是否跑题。方法:让 LLM 根据答案反向生成几个问题,这些问题与原始问题越相似,答案越切题。Answer Relevancy=1 表示完全切题。

区别举例:答案"公司成立于 1998 年,业务覆盖全球 50 个国家"——如果文档里确实这么写,Faithfulness=1;但如果用户问的是"公司的财务状况",Answer Relevancy 就很低(跑题了)。

❓ 企业 RAG 如何实现多租户文档权限隔离?+

多租户权限隔离是企业 RAG 的安全核心,必须在向量数据库层实现,不能依赖 LLM 判断(LLM 不可信)。

技术方案:① Metadata 标签 + 过滤:每个 Chunk 打上 user_id/tenant_id/access_groups 标签,检索时叠加 where: {tenant_id: {$eq: current_user_tenant}} 过滤;② Namespace 隔离(Pinecone):每个租户数据写入独立 Namespace,查询时指定 Namespace,物理隔离;③ Row-level Security(pgvector):PostgreSQL 行级安全策略,从数据库层面强制隔离;④ 文档级权限矩阵:文档打标 access_level: ["finance", "director+"],检索时 filter 当前用户的角色列表与文档标签的交集。

原则:永远在数据库层过滤,永远不在 Prompt 层过滤(Prompt 过滤可被绕过)。

❓ GraphRAG 解决了传统 RAG 的什么问题?什么场景下必须用 GraphRAG?+

传统 RAG 的局限:只能回答"局部"问题——从单个或少数几个文档中提取信息。无法回答"全局"问题——需要跨整个文档集做综合推理的问题。

GraphRAG 的解法:先对所有文档提取实体(人、组织、地点、概念)和关系,构建知识图谱;再对图的社区(紧密连接的节点群)做层级摘要。Global Search 基于这些摘要回答跨文档的宏观问题。

必须用 GraphRAG 的场景:① "这 500 份客户反馈中,最常见的痛点是什么?"(需要跨全量文档聚合);② "张三和李四在哪些项目上有过合作?"(多跳关系推理);③ "公司战略文档中,哪些业务线被提到的次数最多?"(全局统计)。普通 RAG 对这类问题会漏掉大量信息;GraphRAG 成本更高但覆盖全局。

❓ 设计一个金融行业合规文档问答 RAG 系统,关键设计决策有哪些?+

金融合规是 RAG 最严苛的场景,关键决策:

分块:使用层级分块(Hierarchical),保留条款编号("第 15.3 条")作为 Metadata,支持精确条款定位。Chunk Size 512-1024 tokens(合规文件段落较长)。

检索:混合检索(Dense + BM25)——合规文件有大量精确法规引用(如"《证券法》第 68 条"),必须有 BM25 保障精确召回。Reranker 必上,精排 Top-5。

生成:System Prompt 强制要求每个声明必须引用来源条款;禁止推断("文档未提及,不予回答");添加免责声明。

安全:按用户角色(分析师/合规官/总经理)+ 文件密级(内部/机密/公开)双维度权限矩阵,向量库层硬过滤。

评估:RAGAS Faithfulness 基线 ≥0.95(金融合规容错极低);上线前全量人工审核 100 条案例;生产实时监控引用率 + 低满意度触发审计。