上下文
什么是 RAG(检索增强生成)?
RAG 是指从你自己的文档中检索出相关段落,直接摆在模型面前供它参考作答,而不是依赖它凭记忆回答。这篇文章说明文档分块的方式和检索质量,具体如何决定这套机制在实践中是否真正有效。
全部文章 · 最近核实:
它是怎么运作的
文档被切成块,每一块都转换成一个向量——它含义的数字化表示。问题也用同样方式转换,检索出向量最接近的那些块。
这些块被插入提示词,通常附带一条「据此作答」的指令。模型负责语言部分的工作,检索负责知识部分。
检索质量决定了整个系统
如果正确的段落没被检索到,任何模型都救不了这个答案——它会凭通用知识作答,听起来同样自信。大多数令人失望的 RAG 系统,其实是穿着生成外衣的检索问题。
分块是这一切被决定的地方。太小的块会丢失让它们有意义的上下文;太大的块会稀释每一次匹配。按文档结构——章节、标题——来分块,通常胜过按固定长度分块。
它修复什么,不修复什么
RAG 修复的是「模型从没见过我的文档」这个问题。在文档能回答的问题上,它能减少幻觉,因为答案就摆在模型面前。
它不修复推理能力,也不能阻止模型在检索不到有用内容时凭记忆作答。基于证据的回答是一种强烈的倾向,不是保证,它的失败模式是一个没有来源却很自信的答案。
常见问题
- RAG 和微调是一回事吗?
- 不是,两者解决的是不同的问题。微调改变模型的行为方式;RAG 改变它在某次请求中知道什么。对于「回答关于我的文档的问题」这类需求,RAG 几乎总是正确的工具,而且保持更新的成本低得多。
- 大的上下文窗口会让 RAG 过时吗?
- 不会。你可以贴进去更多内容,但每条消息里的每个 token 都要付费,而且模型对很长的输入分配注意力并不均匀。此外,检索也是唯一能突破任何窗口容量限制的方法。
- RAG 会把我的文档发给模型供应商吗?
- 检索到的段落会被发送,因为模型正是这样看到它们的。如果这不可接受,模型就必须运行在你能掌控的地方,这正是本地执行的用途所在。
与其阅读,不如亲自试试
ClawAI 从你附加的文件中检索,并将其与本地执行结合,让检索到的段落能留在你自己的硬件上。