Featured image of post 第一话|大模型会聊天,但怎么让它知道你的退货政策?

第一话|大模型会聊天,但怎么让它知道你的退货政策?

从退货政策问题出发,跑通企业 RAG 知识助手的最小链路。

系列 GYR(Get Your RAG) 第 1 / 2 篇
主题 RAGLLM教程企业级 AI

“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

本次预览实验使用阿里云百炼:

角色模型
Chatdeepseek-v4-flash-0731
Embeddingqwen3.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;401403 通常是 Key 无效、过期或没有权限;404 model not found 则要检查模型名、地域和百炼工作空间。代码默认使用 aliyun-bailiandeepseek-v4-flash-0731qwen3.7-text-embedding,也可以通过 README 中的环境变量覆盖。

关键洞察: 这个 Demo 的价值不是证明 RAG 已经可靠,而是把“资料从哪里来、系统找了什么、模型看到了什么、回答引用了什么”第一次暴露出来。下一篇,我们再追问“系统为什么找到了这些片段”。

六、GYR 系列接下来会补齐什么

现在可以回头看整个系列的路线。每一篇不是凭空增加一个组件,而是在解决上一层暴露出来的具体问题:

阶段要解决的问题主题
第一话整条链路到底是什么RAG 全景与演进路线
第二话问题和文本为什么可以比较Embedding、余弦相似度、Top-K
第三话一篇长文应该如何检索文档分块与 Chunk 设计
第四话找到资料后如何可靠回答上下文、引用与拒答
第五话–第六话如何保存和评价检索结果PGVector、版本与评测基线
第七话–第八话关键词和向量如何配合检索优化与混合检索
第九话–第十二话企业资料如何进入系统并保持边界解析、租户权限、任务恢复与观测
第十三话–第十四话如何收敛为可运行的服务API、模块化原型与框架对照

这条路线有一个刻意的约束:先手写最小机制,再引入数据库、服务和框架。否则读者很容易得到一个“能启动的 RAG”,却不知道每个组件为什么存在。

下一篇:Embedding 到底做了什么

现在我们知道 RAG 的整体链路,也看到一个最小版本确实可以把问题和资料交给模型。但“检索”仍然像一个黑盒:为什么退货政策排在前面?相似度分数是什么?SKU 这种精确编号也适合这样检索吗?

下一篇只回答一个问题:一句用户问题,为什么可以和一段商品政策计算相似度?

我们会检查 Embedding 的真实输出,手写余弦相似度和 Top-K 排序,把第一话图里的“检索”拆开来看。

第一篇只需要记住一句话:

RAG 是裸大模型走向企业知识助手的第一条外部知识链路,但它远没有替企业完成评测、权限和数据治理。

参考资料

  1. Patrick Lewis 等,Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,2020。
  2. Alibaba Cloud Model Studio,List models
  3. Alibaba Cloud Model Studio,DeepSeek API
  4. Elasticsearch,Search approaches

留言

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