引言
你是否想过,AI 是如何"懂得"那么多专业知识的?它真的像人一样,把所有知识都记在脑子里吗?
答案可能出乎你的意料:大多数 AI 并没有"记住"那么多东西,它们只是擅长"作弊"——通过一种叫做 RAG 的技术,随时"查阅"知识库。
今天我们就来聊聊 AI Agent 的工作模式,揭开它是如何做到"上知天文、下知地理"的。
一、问题的根源:LLM 的"记忆盲区"
大型语言模型(LLM)虽然能力强大,但它有一个根本性的限制:知识截止日期。
换句话说,ChatGPT 不知道今天发生了什么,你的私有数据它更是完全不了解。你让它分析你公司的内部文档,它只能两手一摊:"对不起,我不认识这些。"
怎么办?总不能为了每个新需求都重新训练一个模型吧?
解决方案就是:不给模型"喂"知识,而是给它配一个"外挂大脑"。
二、解密 RAG:不重新训练,也能让 AI 掌握新知识
2.1 什么是 RAG?
RAG(检索增强生成) 是当前 AI 领域最火的技术架构之一。它的核心思想是:
不要让模型强行记忆所有知识,而是让它在需要时自己去"查资料"。
你可以把 RAG 想象成一个"开卷考试":AI 不需要背诵答案,而是学会使用工具查找资料。
2.2 RAG 的工作流程
RAG 的完整流程可以分为四步:
用户问题 → Embedding(向量化)→ 向量检索 → 拼接 Prompt → LLM 生成回答第一步:向量化(Embedding)
这是 RAG 的核心技术之一。简单来说,就是把文字变成"数字"——具体来说,是一段向量。
为什么要这么做?
因为计算机处理"语义"很困难,但处理"数字"很擅长。通过 Embedding 模型,一段文字会被转换成一段向量。语义相似的文字,它们的向量在空间中也是"相近"的。
举个例子:
- "狗" 和 "猫" 的向量距离比较近
- "手机" 和 "电脑" 的向量距离也比较近
- 但 "狗" 和 "手机" 的向量距离就很远
第二步:向量检索
当用户提出问题时,RAG 会先把问题转换成向量,然后在知识库中寻找"距离最近"的文档。
这个过程叫做向量检索,常用的向量数据库有:Chroma、Qdrant、Milvus、Weaviate 等。
第三步:拼接 Prompt
找到相关的知识片段后,RAG 会把这些片段和用户的问题一起拼接成一个完整的 Prompt,发送给 LLM。
大概是这样的:
基于以下知识库内容回答问题。
知识库内容:
1. OpenClaw 是一个 AI 助手框架,支持多种大模型接入
2. RAG 是检索增强生成技术的缩写
3. 向量数据库用于存储和检索文本向量
用户问题:OpenClaw 是什么?
回答:第四步:LLM 生成
LLM 收到这个"带着参考资料的问题"后,就能基于提供的知识生成准确的回答。这就是为什么接入 RAG 后,AI 很少再"胡说八道"了。
三、实战:如何本地搭建 RAG 系统
3.1 核心技术组件
一个完整的 RAG 系统通常包含以下组件:
| 组件 | 作用 | 常见选择 |
|---|---|---|
| LLM | 生成回答 | Llama.cpp、Ollama、vLLM |
| 向量数据库 | 存储和检索向量 | Qdrant、Chroma、Milvus |
| Embedding 模型 | 将文本转为向量 | BGE-M3、M3E、Sentence-BERT |
| 文档处理框架 | 加载、分块、预处理文档 | LangChain、LlamaIndex |
3.2 部署示例:Llama.cpp + Qdrant
对于个人开发者来说,无需昂贵的 GPU 也能搭建一个本地 RAG 系统:
- 部署 LLM:使用 Ollama 或 llama.cpp 运行量化后的模型(如 Q4 量化的 LLaMA3-8B),通常 8GB 显存即可流畅运行
- 部署向量数据库:用 Docker 一行命令启动 Qdrant(端口 6333)
- 接入 Embedding 模型:使用 bge-m3 模型(免费、开源、效果不错)
- 编写 RAG 流程:Python 代码串联检索和生成
整个过程在消费级硬件上就能完成,成本几乎为零。
四、挑战:如何不让 Prompt "爆仓"
RAG 虽好,但有一个实际问题:LLM 的上下文窗口是有限的。
你不能把整个知识库都塞进 Prompt 里。那么,如何在有限的空间内,放进最有用的知识?
4.1 智能分块(Chunking)
不要把所有文档直接扔进向量库,而是先把文档切分成合适大小的"块"(chunk)。
# 固定 500 tokens 为一块,块之间重叠 50 tokens
chunk_size = 500
overlap = 50这样既保证检索的精度,又避免重要信息被"拦腰截断"。
4.2 重排序(Rerank)
检索时,可以分两步走:
- 粗筛:用向量检索快速找出 top 20 相关文档
- 精筛:用 Cross-Encoder 模型对这 20 条重新排序,取 top 3-5
这样既快又准。
4.3 元数据过滤
在检索之前,先用元数据(时间、分类、标签)过滤掉不相关的文档,减少干扰。
4.4 父子文档检索
把文档先切成小块(子),再组织成大块(父)。检索时定位小块,但召回时使用完整的大块提供上下文。
五、进阶:AI Agent 的完整架构
如果你以为 AI Agent 只靠 RAG 就够了,那你就小看它了。
一个成熟的 AI Agent,通常包含四大核心组件:
| 组件 | 作用 | 说明 |
|---|---|---|
| LLM | 理解和生成 | 负责"思考"和"说话" |
| RAG | 知识增强 | 外挂知识库,解决知识盲区 |
| Tools | 能力扩展 | 调用搜索、计算器、API 等外部工具 |
| Memory | 记忆保持 | 记住对话历史、长期偏好 |
这就是现在主流 AI Agent 的通用架构:
感知输入 → LLM理解 → RAG检索 → Tool执行 → Memory记忆 → LLM生成 → 行动输出无论是 ChatGPT、Claude,还是各种自研 Agent,在底层都是这套逻辑的工程化实现。区别只在于:各自的技术选型、工程优化和产品定位不同。
六、总结
AI Agent 的本质,是让 LLM 成为一个"会调用工具的大脑",而不是一个"独自硬扛的百科全书"。
- 它不擅长记忆 → 没关系,外挂一个知识库(RAG)
- 它不会使用工具 → 没关系,给它封装好工具(Function Calling)
- 它记不住对话 → 没关系,给它加个记忆模块(Memory)
这就是为什么我们说:现在的 AI Agent = LLM + RAG + Tools + Memory + Planning。
殊途同归,万变不离其宗。
评论区: