AI传动系统与燃料
如果说第一层的大模型是那个“全能博士”,那么框架与数据层就是“传动系统”与“燃料”。
为什么这么说呢?因为那个云端的“博士”虽然博学,但他有两个致命弱点:
- 他不知道你公司的内部秘密(比如你们公司的请假流程、最新的电商库存)。
- 他偶尔会一本正经地胡说八道(幻觉问题)。
框架与数据层(如 LangChain 和 RAG 技术)的存在,就是为了给这个博士“喂料”,并“立规矩”。我们可以从以下三个维度来拆解:
编排框架(传动系统):LangChain 等
- 光有一个“全能博士”是不够的,你还需要一个“金牌管家”或者“流水线工头”。
如果你直接问博士:“帮我查一下库存并给客户发邮件。”他可能会懵,因为他没有手脚,也连不上你的数据库。
这时候,LangChain这样的框架就登场了。它就像一套精密的“传动齿轮”,把大模型、你的数据库、搜索引擎、计算器等工具连接起来。它负责把一个大任务拆解成一步步的小指令,指挥模型去调用工具。- LangChain 听起来高大上,其实它的核心作用就一个:帮大模型“插上网线”和“装上插件”。
- 用户问:“我上周去三里屯见客户的打车费怎么报?”
LangChain 会先把这句话也变成“数字指纹”,然后冲进向量数据库大喊:“兄弟们,谁跟这句话的意思最像?给我把最相似的 Top 3 个小纸条找出来!” # 把数据库变成一个检索器,每次捞最相关的 3 段内容 retriever = db.as_retriever(search_kwargs={"k": 3}) # 比如捞到了:《财务报销制度》第3条:打车费需在每月5号前提交...LangChain 会把捞出来的这 3 段“标准答案”,偷偷塞进给大模型的提示词里。
- 原来的提问:“打车费怎么报?”
- 组装后的提示词:“你是一个专业的财务助手。请严格根据以下参考资料回答问题。参考资料:《财务报销制度》第3条:打车费需在每月5号前...。用户问题:打车费怎么报?”
大模型看着你递过来的“小抄”,心里踏实了,于是 confidently 地回答:“亲,根据规定,你需要在每月5号前贴好发票提交给财务哦~”
from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI # 让 LangChain 把上面所有步骤串成一条自动化的问答链 qa_chain = RetrievalQA.from_chain_type(llm=ChatOpenAI(), retriever=retriever) print(qa_chain.run("我上周去三里屯见客户的打车费怎么报?"))
- 用户问:“我上周去三里屯见客户的打车费怎么报?”
- 再举一个🌰:
- 提示词模板(Prompt Templates):给模型立规矩;大模型很吃“提示词”。你不可能每次调用都手动拼凑一大段话。LangChain 让你像做填空题一样预设好格式。
# 预设一个模板,{context} 是留给私有数据的位置,{question} 是用户的问题 template = """ 你是一个专业的客服助手。请严格根据以下参考资料回答问题: 参考资料:{context} 用户问题:{question} 如果资料里没有答案,请直接说“抱歉,我不知道”,不要瞎编。 """ # 用的时候,直接往里面填数据就行2. 链(Chains):把步骤串起来
以前你调用 API 是一次性的(问 -> 答)。现在有了业务逻辑,你需要把多个动作串成一条线。- 落地场景:用户问“帮我查下北京明天的天气,并写一首诗”。
- 链的执行逻辑:
- 第一步:调用【天气查询工具】(API),拿到“北京明天晴,25度”。
- 第二步:把“北京明天晴,25度”这个结果,自动塞进【写诗模型】的提示词里。
- 第三步:输出最终结果。
LangChain 就是帮你把这个“第一步 -> 第二步”的数据传递过程自动化了。
3. 工具(Tools):给模型的手和脚
你需要把公司内部的 API 封装成模型能调用的“工具”。- 落地做法:你写一个 Python 函数
search_inventory(product_name),然后用 LangChain 的装饰器(比如@tool)把它包一下。大模型在收到“查库存”的指令时,就会自动触发这个 Python 函数,而不是在那里干聊。
- 落地做法:你写一个 Python 函数
- LangChain 听起来高大上,其实它的核心作用就一个:帮大模型“插上网线”和“装上插件”。
- 总结一下:你不需要从零开始写代码去拼接这些工具。LangChain 提供了现成的“积木”。
比如,你可以像搭积木一样定义一条流水线:核心要点:框架让大模型从一个“聊天机器人”变成了一个能干活、能调用工具的“智能体”。
- 先接收用户的问题;
- 去查一下公司的数据库;
- 把查到的结果连同问题一起交给大模型;
- 最后把大模型生成的答案发给用户。
私有数据与 RAG(燃料与精准投喂):拒绝胡说八道
- 大模型在出厂时,学的是互联网上的公开知识(截止到训练日期)。但他不知道你昨天刚更新的“2026年公司报销制度”,也不知道你仓库里还剩几双耐克鞋。
- 如果你直接问他,他要么说不知道,要么就开始瞎编(幻觉)。
- RAG(检索增强生成)技术,就是给博士配了一个“随身携带的超级图书馆”。
向量数据库(超级索引柜):数据的特殊摆法
- 为了让 RAG 能够快速找到资料,你的数据不能像普通文件那样乱堆。你需要一个“按语义分类的超级索引柜”,这就是向量数据库。
普通的数据库是查“关键词”(比如搜“苹果”只能找到“苹果”);而向量数据库是查“意思”。
它把你所有的文档都转化成一串数字(向量)。比如,“怎么报销差旅费”和“出差发票怎么贴”这两句话,虽然字不一样,但在向量数据库里,它们的“数字坐标”离得非常近。 - 你只需要把你的公司文档、PDF、Excel 扔进这个数据库,它会自动帮你整理好。当用户用大白话提问时,它能瞬间捞出最相关的知识片段,“喂”给大模型。
1. 向量数据库怎么选?
- 玩票/学习阶段:直接用ChromaDB。它甚至不需要你安装什么服务端,几行 Python 代码就能在本地跑起来,数据就存在你电脑的一个文件夹里,极其方便。
- 公司上线阶段:上Milvus或云厂商的向量检索服务。当你的文档从 100 篇变成 100 万篇时,你需要它们强大的并发检索能力和分布式部署。
2. API 调试:学会看“黑盒”里吐出了什么
大模型和 Embedding 模型本质上都是远程 API。当你的 RAG 效果不好(比如模型开始胡说八道)时,你得学会调试 API。
- 看 JSON 结构:模型返回的不是纯文本,而是一个巨大的 JSON 对象。你需要学会用工具(比如Apifox、Postman或者浏览器的开发者工具 Network 面板)去抓包,看看它到底返回了什么。
- 常见坑:
- 切片太大:你切了 2000 字一片,检索出来的内容太杂,模型看晕了。建议 300-500 字一片。
- 检索太少/太多:
k=1可能资料不够,k=10会把不相关的垃圾信息也塞给模型,导致它混乱。通常k=3到5是个甜蜜点。 - 幻觉依旧:如果模型还在瞎编,检查一下你的提示词(Prompt),是不是没加那句保命咒语:“如果资料里没有答案,请直接说不知道,严禁自行发挥!”
具体的数据处理流水线
第一步:数据准备与切片(Chunking)
你不能把一本 500 页的 PDF 直接扔给模型(既超字数又找不到重点)。你需要把文档切碎。
- 落地细节:
- 加载:用代码读取你的 PDF、Word、Markdown 文件。
- 切片:按固定长度切分。比如每500 个字切一片,为了防止切断了句子,每片之间可以重叠50 个字。
- 结果:一本手册被切成了 200 个小的“文本片段”。
第二步:向量化(Embedding)—— 把文字变成数字
计算机看不懂汉字,它只懂数字。你需要调用一个“嵌入模型”(Embedding Model,比如 OpenAI 的text-embedding-3-small或阿里的text-embedding-v2)。
- 落地细节:
- 你把上面的 200 个文本片段,一个一个发给 Embedding 模型。
- 模型会返回一串长长的数字列表(比如
[0.012, -0.45, 0.88, ...]),这串数字就是这段话的“语义指纹”。 - 注意:意思相近的话(比如“怎么退货”和“退款流程”),它们生成的数字列表在数学上是非常接近的。
第三步:存入向量数据库(Vector Database)
把这些“文本片段”和对应的“数字指纹”存起来。
- 落地选型:
- 轻量级(开发用):直接用 Python 的
ChromaDB或FAISS,数据存在本地文件夹里,几行代码就能跑起来。 - 生产级(公司用):用
Milvus(国产开源,性能强)、Pinecone(云服务)或者云厂商自带的向量检索服务。
- 轻量级(开发用):直接用 Python 的
第四步:检索与生成(RAG 的运行时逻辑)
当用户真正来提问时,后台会发生这一连串动作(全过程通常在 1-3 秒内):
- 用户提问:“你们产品保修期多久?”
- 问题向量化:系统把这句话也变成一串“数字指纹”。
- 向量搜索:拿着这串数字,去向量数据库里比对,找出最相似的 Top 3 个文本片段(比如找到了说明书里的第 5 段、第 12 段)。
- 组装提示词:系统自动把这 3 个片段拼接到我们第一步写的
Prompt Template的{context}位置。 - 最终调用:把组装好的一长串话发给 GPT/通义千问,模型看着你给的资料,生成最终答案。
so简单来说这个过程分为两步:
- 检索(找资料):当用户提问时,系统先去你的私有数据库(比如公司文档、产品手册)里,迅速找到和问题最相关的几段话。
- 增强生成(开卷考试):系统把这几段“标准答案”连同用户的问题,一起塞给大模型,并对他说:“请仅根据我给你的这些资料回答问题。”
这就相当于让博士从“闭卷考试”变成了“开卷考试”。有了这些“燃料”(私有数据),他回答的准确率会直线飙升,再也不敢乱编了。
总结一下:
如果把 AI 应用比作一家餐厅:
- 框架(LangChain)就是餐厅的服务流程和经理,负责接单、传菜、协调后厨;
- 数据层(RAG + 向量数据库)就是餐厅的独家秘方和新鲜食材库。
有了这两层,你才能利用云厂商提供的“全能博士”(模型层)和“超级发电机”(基础设施层),做出一道道符合你客户口味的、独一无二的“AI 招牌菜”。
如果你想动手搭建这一层,你的技术栈应该是这样的:
- Python 编程:这是 AI 应用开发的绝对主流语言。
- LangChain (或 LlamaIndex):学会怎么用代码把“读取文件 -> 切片 -> 向量化 -> 存库 -> 检索 -> 问答”这条线串起来。
- 向量数据库基础:学会怎么安装和查询 ChromaDB 或 Milvus。
- API 调试:学会看大模型和 Embedding 模型返回的 JSON 数据结构。
这一层虽然听起来概念多,但本质上就是“数据的搬运和预处理”。把私有的非结构化数据(文档),变成了大模型能读懂、能检索的结构化知识,这就是 RAG 的全部奥义。
