外观
RAG应用落地
RAG应用落地
介绍
RAG(检索增强生成)的落地,不是简单调用一个 API 就能完成的,而是一个端到端的系统工程。要真正实现“可用、好用、可控、可维护”的企业级 RAG 系统,需从 数据、架构、检索、生成、评估、安全 六大维度进行系统化设计。
以下是 RAG 落地的完整路径与关键实践:
明确业务场景
不要为了用 RAG 而用 RAG,先回答:
- 用户的核心问题是什么?(如:查政策、问产品、解代码)
- 是否存在私有/动态/专业性强的知识源?
- 模型“幻觉”是否不可接受?
适合 RAG 的场景特征:
- 知识更新频繁(如促销规则)
- 内容敏感/私有(如公司制度)
- 需要引用来源(如法律、医疗)
- 回答必须准确(如客服、运维)
构建高质量知识库
数据源接入——数据是根基
- 支持格式:PDF、Word、Markdown、HTML、数据库、API、Confluence 等
- 工具建议:Unstructured、LlamaParse、Apache Tika
文档预处理
- 去噪:删除页眉页脚、水印、无关广告
- 结构保留:提取标题、章节、表格、代码块
- 多模态处理(如含图文档):OCR + 图生文(可选)
智能分块(Chunking)——关键!
- 块太小 → 语义断裂;块太大 → 噪声干扰。建议 300–800 字为宜。
| 分块策略 | 适用场景 | 工具 |
|---|---|---|
| 固定长度(如512字符) | 快速原型 | LangChain TextSplitter |
| 语义分块 | 技术文档、论文 | Semantic Chunking(基于Sentence-BERT) |
| 上下文增强分块 | 法律条文、合同 | 当前块+前后段 |
| 带标题/元数据分块 | 企业手册、年报 | 提取章节名作为前缀 |
向量化与存储
选择嵌入模型(Embedding Model)——检索基础
- 中文推荐:
bge-large-zh-v1.5、text-embedding-3-large(OpenAI) - 多语言:
multilingual-e5-large - 注意:嵌入模型需与检索任务对齐(如问答 vs 摘要)
向量数据库选型
- 建议:生产环境优先选支持 混合检索(向量+关键词) 和 元数据过滤 的数据库。
| 数据库 | 优势 | 适用规模 |
|---|---|---|
| Milvus / Zilliz | 高性能、支持标量过滤 | 中大型企业 |
| Pinecone | 全托管、易用 | 中小团队 |
| Qdrant | 开源、支持 payload 过滤 | 自研部署 |
优化检索流程
查询理解与改写——提升召回 & 精准度
- 使用 LLM 对用户问题做 查询扩展(Query Expansion) 例:用户问“怎么退货?” → 扩展为:“退货流程”、“7天无理由退货条件”、“退款到账时间”
- 工具:LangChain 的
MultiQueryRetriever
多路召回(Hybrid Retrieval)
- 向量检索(语义相似)
- 关键词检索(BM25,保底召回)
- 规则召回(如按文档类型、发布时间过滤)
- 融合策略:加权打分、RRF(Reciprocal Rank Fusion)
重排序(Reranking)——大幅提升精度
- 第一阶段:向量库召回 Top 20
- 第二阶段:用 Cross-Encoder(如
bge-reranker-large)精细打分,取 Top 3–5 - 效果:解决“表面相似但语义无关”问题
Prompt 工程与生成控制
构造高质量 Prompt
shell
你是一个专业客服,请根据以下参考资料回答问题。
仅使用参考资料中的信息,不要编造。
如果参考资料无法回答,请说“我无法回答该问题”。
参考资料:
{retrieved_contexts}
问题:{user_query}控制生成行为
- 设置
temperature=0减少随机性 - 限制输出长度
- 添加 JSON Schema 强制结构化输出(如返回“答案+引用ID”)
评估与迭代
关键指标——闭环优化
| 维度 | 指标 | 工具 |
|---|---|---|
| 检索质量 | Recall@K, MRR | BEIR benchmark |
| 生成质量 | Faithfulness(忠实度)、Answer Relevance | TruLens、Ragas |
| 系统性能 | 延迟(P95 < 2s)、吞吐量 | Prometheus + Grafana |
| 业务效果 | 用户满意度、转人工率 | A/B 测试 |
Ragas 评估示例
python
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy
result = evaluate(
dataset=your_dataset,
metrics=[faithfulness, answer_relevancy]
)安全与合规
企业刚需
- 权限控制:基于角色过滤可检索文档(如 HR 只能看人事制度)
- 数据脱敏:在向量化前清洗敏感信息(身份证、手机号)
- 审计日志:记录“谁问了什么,引用了哪些文档”
- 本地化部署:敏感行业(金融、政务)建议私有化嵌入模型 + 向量库
典型落地架构图
shell
用户提问
↓
[查询预处理] → 查询改写 / 意图识别
↓
[多路检索] → 向量库 + 关键词引擎 + 规则过滤
↓
[重排序] → Cross-Encoder 精排
↓
[Prompt 构造] → 拼接上下文 + 指令
↓
[LLM 生成] → 私有模型 / API(如 Qwen-Max)
↓
[后处理] → 敏感词过滤、引用标注
↓
返回答案 + 来源链接推荐工具链
2025年主流
| 功能 | 推荐工具 |
|---|---|
| 框架 | LangChain、LlamaIndex、Haystack |
| 向量库 | Milvus、Qdrant、Pinecone |
| 嵌入模型 | BGE 系列、OpenAI Embeddings |
| 重排序 | BGE-Reranker、Cohere Rerank |
| 评估 | Ragas、TruLens、DeepEval |
| 部署 | Docker + FastAPI + Kubernetes |
RAG 落地的关键
不是模型越强越好,而是“检索准 + 知识新 + 流程稳
- 数据 > 模型:80% 的效果来自知识库质量与分块策略;
- 评估驱动迭代:没有评估,优化就是盲人摸象;
- 场景闭环:从“能回答”到“被信任”,需要可解释、可追溯、可纠错。