“NovaTrail X2 支持 7 天无理由退货吗?”
把这个问题交给一个裸大模型,它大概率会给出一段很像客服的话:商品需要保持未使用、包装完整,并保留购买凭证。
听起来没什么问题。
但它不知道 NovaShop 的真实退货政策。它没有看过这份商品资料,不知道规则适用于哪个地区,也不知道政策是不是昨天刚刚改过。
它只是生成了一段听起来合理的文字。
这就是 RAG 系列要解决的起点:大模型虽然会聊天,但它不知道你的退货政策。
一、裸大模型:会生成答案,但没有企业知识
先不谈 RAG,看看最原始的系统是什么样:
用户问题 → Chat 模型 → 文本回答
这类模型可以翻译、总结、写代码,也能把客服话术写得很自然。但它的回答依赖两类输入:训练时学到的参数知识,以及本次请求中传入的上下文。
企业自己的商品政策、内部流程、最新价格和租户数据,通常不在它能够直接访问的上下文里。模型并不会因为“你是 NovaShop 客服”这句话,就自动获得 NovaShop 的资料。
所以裸模型的第一个边界很清楚:它可以生成企业知识问答的语言,却没有企业知识问答的证据。
二、第一种补救:把资料塞进 Prompt
最简单的办法,是把政策直接放进提示词:
你是 NovaShop 客服。
以下是退货政策:
NovaTrail X2 支持签收后 7 天内无理由退货,商品须未使用、包装完整,并保留配件和购买凭证。
请根据这段政策回答用户的问题。
这个办法确实有效。模型现在能看到资料,也能根据资料生成回答。
问题是,企业资料不会永远只有一段。商品规格、物流规则、保修政策、不同地区的退货政策和新旧版本都会继续增加。最后,Prompt 会变成一份越来越长、越来越难维护的知识文档。
当回答出错时,排查也很困难:资料没有放进去?放进去了但没有检索到?检索到了但模型没有使用?还是引用了已经过期的版本?
Prompt 方案解决的是“把资料放到模型眼前”,却没有解决“资料如何管理、如何查找、如何证明回答有依据”。
关键洞察: Prompt 可以临时装下知识,但不能替代一条可维护、可追溯的知识链路。
三、第二种补救:先检索,再生成
RAG 在 Prompt 方案前面增加了一步:模型回答之前,系统先去资料中找相关内容。
用户问题
↓
检索相关资料
↓
组装上下文
↓
Chat 模型生成回答
↓
返回引用或拒答
这条链路可以拆成五个动作:
| 动作 | 要回答的问题 |
|---|---|
| 文档准备 | 企业资料从哪里来? |
| 检索 | 哪些片段和当前问题有关? |
| 上下文组装 | 哪些内容真正交给模型? |
| 生成 | 模型是否只根据这些内容回答? |
| 引用与拒答 | 能否指出依据,证据不足时能否不回答? |
RAG 原始论文把外部检索到的知识接入生成过程,用来缓解参数知识难以更新、访问和追溯的问题。Lewis 等,Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
这里还要先纠正一个常见误解:RAG 不等于向量数据库。 Retriever 可以使用关键词检索、Elasticsearch 的分词器和倒排索引、向量检索、结构化查询,也可以把几种方式组合成混合检索。本系列会在后续文章里分别比较这些方式;本篇只把“检索”当作一个黑盒步骤,不展开它的内部算法。Elasticsearch,Search approaches
四、从最小 RAG 到企业级知识助手
RAG 让模型“回答前先查资料”,但这还只是企业知识助手的中间一层。真正的系统需要沿着两条链路运行。
1. 文档入库链路
企业资料不是凭空出现在检索器里的,它要先经过入库:
文档上传
→ 解析与清洗
→ 分块
→ 建立索引
→ 保存版本和来源
这一条链路解决的是“系统手里到底有什么资料”。文档解析决定哪些内容能被看见,分块决定检索的最小单位,索引决定怎么找到它们,版本和来源决定答案能不能回溯。
2. 问答链路
用户提问时,系统再走另一条链路:
用户问题
→ 检索候选片段
→ 权限与版本过滤
→ 组装上下文
→ 模型回答
→ 引用、拒答与记录
两条链路合起来,才是企业级 RAG 的基本轮廓:
这张图只画了主链路,没有画出所有生产组件。评测、权限、版本、任务恢复和观测会横向影响多个节点,后面分别展开。
五、跑一次全链路预览
理论地图有了,接着跑最小实现。配套代码目前保存在私有工作区的 code/agent-tutorial/c01-rag-overview/,尚未作为公开代码仓库发布;实验只依赖 Python 3.10+ 标准库。云端运行需要百炼兼容模式的 DASHSCOPE_API_KEY。
cd code/agent-tutorial/c01-rag-overview
export DASHSCOPE_API_KEY=你的Key
python3 main.py
本次预览实验使用阿里云百炼:
| 角色 | 模型 |
|---|---|
| Chat | deepseek-v4-flash-0731 |
| Embedding | qwen3.7-text-embedding |
没有 Key 时,可以先验证本地链路:
python3 main.py --offline
python3 -m unittest discover -s tests -v
离线模式只验证这条链路的数据结构、上下文组装和引用格式,不代表云端模型的回答效果。云端跑通的判定标准是:看到模型配置、命中的来源、上下文字符数、回答,以及形如 [source:returns-cn#chunk-001] 的引用。至于系统为什么会把某些片段排在前面,下一篇再拆开解释。
2026-08-21 的一次真实运行结果如下:
{"mode":"dashscope","provider":"aliyun-bailian","chunks":3,"chat_model":"deepseek-v4-flash-0731","embedding_model":"qwen3.7-text-embedding"}
{"question":"NovaTrail X2 是否支持 7 天无理由退货?","sources":["returns-cn#chunk-001","novatrail-x2#chunk-001"],"context_chars":215,"answer":"支持。根据退货政策,NovaTrail X2 可在签收后 7 天内无理由退货,但需满足商品未使用、包装完整、保留配件和购买凭证等条件。 [source:returns-cn#chunk-001]"}
{"question":"NovaShop 是否提供月球基地配送?","sources":["returns-cn#chunk-001","novatrail-x2#chunk-001"],"context_chars":215,"answer":"无法确认。现有资料中未提及月球基地配送服务。"}
上面是从真实输出中保留本篇关心字段后的结果。第一个问题走通了完整链路:系统返回了相关来源,模型根据上下文回答,并附上了来源标记。至于这些来源如何被计算和排序,本篇先不展开。
第二个问题暴露了当前 Demo 的边界。资料里没有月球基地配送,但系统还是返回了两个候选片段,因为程序现在固定返回若干候选。模型这次回答“无法确认”,但无关片段已经进入上下文;换一个问题,模型可能会被这些噪声影响。
这说明“能检索、能生成”还不等于“知识助手可靠”。我们还需要阈值、评测、引用校验和拒答策略。
如果运行失败,先看错误发生在哪一层:DASHSCOPE_API_KEY is not set 表示当前 Shell 没有读到 Key;401 或 403 通常是 Key 无效、过期或没有权限;404 model not found 则要检查模型名、地域和百炼工作空间。代码默认使用 aliyun-bailian、deepseek-v4-flash-0731 和 qwen3.7-text-embedding,也可以通过 README 中的环境变量覆盖。
关键洞察: 这个 Demo 的价值不是证明 RAG 已经可靠,而是把“资料从哪里来、系统找了什么、模型看到了什么、回答引用了什么”第一次暴露出来。下一篇,我们再追问“系统为什么找到了这些片段”。
六、GYR 系列接下来会补齐什么
现在可以回头看整个系列的路线。每一篇不是凭空增加一个组件,而是在解决上一层暴露出来的具体问题:
| 阶段 | 要解决的问题 | 主题 |
|---|---|---|
| 第一话 | 整条链路到底是什么 | RAG 全景与演进路线 |
| 第二话 | 问题和文本为什么可以比较 | Embedding、余弦相似度、Top-K |
| 第三话 | 一篇长文应该如何检索 | 文档分块与 Chunk 设计 |
| 第四话 | 找到资料后如何可靠回答 | 上下文、引用与拒答 |
| 第五话–第六话 | 如何保存和评价检索结果 | PGVector、版本与评测基线 |
| 第七话–第八话 | 关键词和向量如何配合 | 检索优化与混合检索 |
| 第九话–第十二话 | 企业资料如何进入系统并保持边界 | 解析、租户权限、任务恢复与观测 |
| 第十三话–第十四话 | 如何收敛为可运行的服务 | API、模块化原型与框架对照 |
这条路线有一个刻意的约束:先手写最小机制,再引入数据库、服务和框架。否则读者很容易得到一个“能启动的 RAG”,却不知道每个组件为什么存在。
下一篇:Embedding 到底做了什么
现在我们知道 RAG 的整体链路,也看到一个最小版本确实可以把问题和资料交给模型。但“检索”仍然像一个黑盒:为什么退货政策排在前面?相似度分数是什么?SKU 这种精确编号也适合这样检索吗?
下一篇只回答一个问题:一句用户问题,为什么可以和一段商品政策计算相似度?
我们会检查 Embedding 的真实输出,手写余弦相似度和 Top-K 排序,把第一话图里的“检索”拆开来看。
第一篇只需要记住一句话:
RAG 是裸大模型走向企业知识助手的第一条外部知识链路,但它远没有替企业完成评测、权限和数据治理。
参考资料
- Patrick Lewis 等,Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,2020。
- Alibaba Cloud Model Studio,List models。
- Alibaba Cloud Model Studio,DeepSeek API。
- Elasticsearch,Search approaches。

留言
欢迎分享你的想法。评论提交后会在审核通过后显示。