AI大模型应用开发-RAG 基础:向量数据库(FAISS/Milvus)、文本拆分、相似性搜索(“让模型查资料再回答”)

一、先搞懂:RAG 到底是什么?

1. 官方名字

RAG = Retrieval-Augmented Generation检索增强生成, 核心逻辑是「让大模型先查 "专属资料",再基于资料回答问题」。

2. 小白通俗理解

普通大模型(Qwen / ChatGPT 等)就像一个只靠脑子里记忆答题的学生

  • 只记得训练时学过的 "旧知识"
  • 不知道你的私人文档、公司手册、最新新闻、课程笔记这类它没学过的内容
  • 没记住又被问,就开始瞎编(幻觉)

RAG 就是给这个学生配一本可随时翻阅的 "随身资料册" :你提问 → 模型先去资料册里找最相关的几段话 → 拿着找到的资料组织语言回答 → 不瞎编、只按资料说。

3. RAG 解决的三大问题

  1. 大模型不知道私有数据(你的笔记、文档、合同、课程)
  2. 大模型知识过时(训练截止后新发生的事)
  3. 大模型胡说八道(幻觉)(没见过也强行编答案)

二、RAG 三大核心知识点(按执行顺序讲)

1. 第一步:文本拆分(把长文档切成小段)

1.1 为什么要拆分?

  • 大模型一次能 "读" 的文字长度有限(上下文窗口),读不下一整篇长文章 / 整本书
  • 太长的文本,模型抓不住重点,检索也不精准
  • 我们要做的:把一份长文档,切成很多短片段(chunk)

1.2 通俗叫法

"切书、切文档":把一本书 → 切成一段一段小文字块,每段几十~几百字。

1.3 小白常用拆分规则(不用复杂算法)

实际工具会自动做,你只要理解逻辑:

  1. 按标点 / 段落切:先按自然段分开,太长的段再继续切
  2. 固定长度切:比如每 256 字、512 字切一段
  3. 保留小段重叠:前后两段稍微重叠几个字,防止把一句话从中间切断,丢失语义

1.4 拆分后的结果

一份 学习笔记.md → 变成:

  • 片段 1:RAG 是检索增强生成,用于解决大模型幻觉...
  • 片段 2:文本拆分的目的是适配模型上下文长度...
  • 片段 3:向量数据库用来存储文本对应的数字向量...

这些小段,就是后面要存进数据库、用来检索的最小单位


2. 第二步:向量与向量数据库(FAISS / Milvus)

2.1 先懂:什么是 "向量"?

文字是字符串,计算机没法直接算 "两段文字像不像"。所以要把每一小段文本,转换成一串固定长度的数字 ------ 这串数字就叫向量(embedding / 词向量 / 文本向量)

  • 人话:把文字 "翻译" 成计算机能看懂、能计算距离的数字数组
  • 例子(简化):
    • "RAG 介绍" → [0.12, 0.45, -0.23, ...](长度一般几百~几千位)
    • "苹果水果" → [0.88, -0.11, 0.32, ...]

语义越接近的两段文字,它们对应的向量在空间里距离越近

2.2 向量数据库是干嘛的?

普通数据库(MySQL)存的是:文字、数字、表格,不擅长做 "向量相似度计算"

向量数据库 = 专门存向量、并能快速算 "哪个向量和我最像" 的数据库核心职责只有两件事:

  1. :把所有文本片段对应的向量存起来
  2. :你给一个新向量(你的问题),它快速找出距离最近、语义最相似的若干个片段

2.3 FAISS vs Milvus(小白怎么选)

库 / 系统 定位 部署难度 适合谁 小白结论
FAISS Facebook 开源,轻量向量检索库 极低:本地 pip 安装,无服务、无端口、无配置 个人学习、本地 demo、小批量文本 入门首选,Windows 直接跑
Milvus 企业级分布式向量数据库 较高:要起服务、端口、后台守护 生产环境、大量数据、多用户并发 入门先不学,做项目上线再考虑

一句话:

  • 你自己本地玩、做课程 demo、存几十 / 几百篇文档 → 用 FAISS
  • 公司上线、海量数据、多人同时用 → 再上 Milvus

3. 第三步:相似性搜索("找最相关的资料")

3.1 什么是相似性搜索?

你提一个问题 → 把问题也转成向量 → 去向量库里找和这个向量距离最近的 N 个文本片段 → 这就是相似性搜索

  • 不按关键词精确匹配(不是百度式搜词)
  • 语义相似 匹配
    • 你问:"RAG 怎么避免大模型瞎编"
    • 能搜到:"检索增强可以为模型提供外部参考资料,降低幻觉概率"
    • 哪怕文字不完全一样,只要意思接近,就能搜到

3.2 搜索到干嘛用?

把搜到的最相关的几段原文,拼在一起,当做 **"参考资料"**,和你的问题一起喂给大模型。

给模型的提示词大致长这样:

请根据下面的参考资料回答用户问题,只使用资料里的内容,不知道就说 "根据资料无法回答",不要编造。参考资料:

  1. xxxxxx
  2. xxxxxx用户问题:xxxxxx

这就是 "让模型查资料再回答" 的完整逻辑。


三、完整 RAG 流程(从头到尾顺一遍,小白必背)

以 "把你的 AI 自学笔记做成 RAG,让模型按笔记回答" 为例:

  1. 准备文档 把你的笔记、文章、PDF 转成纯文本:自学笔记.txt

  2. 文本拆分用工具把长文本切成几百字左右的小片段

  3. **向量化(embedding)**用一个 "向量模型",把每一段文字 → 转换成向量

  4. 存入向量库 把 "文本片段 + 对应向量" 一起存进 FAISS(本地)

  5. 用户提问比如:"LoRA 微调为什么不用从头训练大模型?"

  6. 问题向量化把这个问题也转成向量

  7. 相似性搜索 FAISS 找出笔记中语义最接近的 2~3 个片段

  8. 拼接提示词把问题 + 搜到的片段,一起发给大模型(Ollama 里的 Qwen 等)

  9. 模型生成答案 模型只基于你提供的笔记内容回答,不会瞎编、不会用外部过时知识


四、小白本地 Windows 极简工具链(无 Anaconda、纯 pip、本地运行)

和前面学的 Ollama、Windows 环境完全对齐,不用云、不用复杂服务:

  • 文档加载 / 文本拆分:langchain(封装好拆分函数,不用自己写)
  • 向量数据库:faiss-cpu(CPU 版,Windows 直接 pip)
  • 向量模型:通用开源 embedding 模型(本地跑)
  • 大模型:Ollama + Qwen2:0.5b(之前已经装过)

安装命令(CMD 里直接运行):

复制代码
pip install langchain langchain-community faiss-cpu -i https://pypi.tuna.tsinghua.edu.cn/simple

这套组合,就是目前最适合小白入门 RAG 的本地方案


五、核心名词一句话总结(方便记忆)

  1. RAG:让大模型先检索外部资料,再生成答案,解决幻觉和私有知识问题
  2. 文本拆分:把长文档切成小段,适配模型长度、提高检索精度
  3. 向量:文本转换成的一串数字,用来表示语义、计算相似程度
  4. 向量数据库:专门存向量、快速做相似查找的数据库
  5. FAISS :轻量本地向量库,小白 RAG 入门标配
  6. Milvus:企业级向量数据库,生产使用,入门先放一放
  7. 相似性搜索:根据问题语义,找出库里最相关的文本片段
  8. 核心逻辑:查资料 → 给模型看资料 → 模型按资料回答

六、小白避坑 3 条

  1. 不要一上来用 Milvus:入门先用 FAISS,本地一键跑通,别被部署劝退
  2. 片段不要切太长 / 太短:太长搜不准,太短信息碎,一般 128~512 字区间最常用
  3. RAG≠微调
    • LoRA 微调:改模型参数,给模型 "记到脑子里"
    • RAG:不改模型,只给模型 "翻书看",不训练、速度快、适合频繁更新的资料

整体知识点速记版(可直接背)

  • RAG = 让大模型查资料再回答,解决幻觉、私有知识、知识过时。
  • 第一步文本拆分:长文档切小段,方便检索和模型阅读。
  • 第二步向量数据库:把文字转成数字向量存起来,FAISS 适合本地小白,Milvus 适合企业生产。
  • 第三步相似性搜索:用问题向量找最相似的文本片段,拼给模型做参考。
  • 整套流程:文档→切分→向量化→存 FAISS→提问→向量化问题→搜相似片段→模型按片段回答。
相关推荐
自可乐2 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
Loo国昌2 小时前
【大模型应用开发】第二阶段:语义理解应用:文本分类与聚类 (Text Classification & Clustering)
人工智能·分类·聚类
XX風2 小时前
3.2K-means
人工智能·算法·kmeans
feasibility.2 小时前
在OpenCode使用skills搭建基于LLM的dify工作流
人工智能·低代码·docker·ollama·skills·opencode·智能体/工作流
进击monkey2 小时前
PandaWiki:开源企业级AI知识库工具,基于RAG架构的私有化部署方案
人工智能·开源
zy_destiny3 小时前
【工业场景】用YOLOv26实现桥梁检测
人工智能·深度学习·yolo·机器学习·计算机视觉·目标跟踪
2501_941837263 小时前
蘑菇可食用性分类识别_YOLO11分割模型实现与优化_1
人工智能·数据挖掘
2501_941837263 小时前
基于YOLO11-Aux改进的圣女果目标检测实现
人工智能·目标检测·计算机视觉
莫有杯子的龙潭峡谷3 小时前
在 Windows 系统上安装 OpenClaw
人工智能·node.js·安装教程·openclaw