第 2 节 / 共 7 节

数据采集:爬虫与 RAG 中的数据库角色

🎯 中药/方剂数据爬取;理解各类数据库在 RAG 中的角色。
📖 笔记

不同数据库在 RAG 中充当的角色

一、先直白区分:MySQL、向量数据库、知识图谱(核心本质)

1)MySQL(关系型数据库,结构化表格)

存储形态:二维表,行 + 列,精确文本、数字、分类;支持 where 精确匹配、模糊 like、多条件筛选

查询特点:

✅ 精准关键词匹配、字段过滤;

❌ 不能理解语义。搜 “手机充电慢”,库里写 “手机耗电快”,关键词不一样就搜不到。

数据关系:只能靠外键简单关联,很难表达复杂逻辑关系(A 导致 B、B 属于 C、规则约束)

2)向量数据库(Embedding 向量检索)

存储形态:文本转换成数字向量,保存【文本 + 向量】

查询特点:

✅ 语义相似检索。“充电慢”≈“耗电快”,向量距离近,能召回;

❌ 不懂实体、不懂关系,不知道 “手机” 是设备、“电池” 是配件,只判断两段文字像不像;

❌ 无法做逻辑推理、链式查询。

3)知识图谱 KG(Graph,实体 + 关系)

存储形态:三元组 (实体,关系,实体)

例子:(手机,故障,充电慢)、(充电慢,原因,电池老化)、(电池老化,方案,更换电池)

查询特点:

✅ 理解实体、层级、因果、从属关系,可以链式推理,多跳的查询;

❌ 原生不擅长长文本模糊语义匹配;纯图谱很难直接匹配用户口语化问句。

极简一句话总结

  • MySQL:精确关键词查表
  • 向量库:语义相似度匹配(只看文字像不像)
  • 知识图谱:实体与逻辑关系、因果推理(看懂事物之间的联系)

二、三者在标准 RAG 流程里各自负责什么?

标准 RAG 链路:用户提问 → 检索 → 召回素材 → 大模型生成答案

  1. MySQL 在 RAG 里一般不作为主检索引擎

适用场景:

  • 存储元数据、业务属性、权限、分类标签; milvus 可以存元数据,所以元数据就在milvus中存着,像faiss chroma, 这些不能存元数据的向量数据库,就需要将元数据存到mysql中。

例:知识库文档分类、文档生效时间、用户权限、工单编号、商品基础信息。

搭配用法:先用向量库召回候选文档,再用 MySQL 过滤【权限 / 分类】。

❌ 不要单独用 MySQL 做客服知识库检索:用户口语多变,关键词稍微不一致就检索失败。

  1. 向量数据库 = 通用 RAG 标准检索组件

适用场景:

  • 大量非结构化文本:FAQ、产品手册、通知、帮助文档、段落文章;

  • 用户自由口语提问,需要

语义模糊匹配

;

绝大多数通用问答场景首选。

局限:没有逻辑,只会 “找相似段落”,无法做推理。

  1. 知识图谱在 RAG 中 = 增强模块(很少单独使用)

适用场景:

满足下面任意多条才值得上图谱:

① 业务存在大量

实体关联、层级、因果关系

;

② 需要

多步推理

:故障溯源、多层属性查询;

③ 需要精准区分实体、避免歧义;

④ 想要支持:“A 和 B 有什么区别?”“出现问题 C,可能有哪些原因?依次怎么处理”

纯知识图谱不能直接应对开放式口语提问,一般架构:向量检索 + 知识图谱混合 RAG


三、重点问题:智能客服,选 RAG 还是知识图谱?

场景划分,直接给结论

场景 A:普通智能客服【90% 企业的情况】

需求:FAQ 问答、产品说明书查询、政策解读、简单咨询

👉 优先:向量 RAG(向量数据库 + MySQL)

架构参考:

  1. MySQL:维护 FAQ 元数据、分类、上下线状态
  2. 文档 / FAQ 向量化存入向量数据库
  3. 用户提问 → 向量检索召回相似 FAQ → 大模型整理回答

✅ 优点:

  • 搭建简单、成本低;文档直接导入,不需要人工抽取三元组;
  • 适配用户五花八门的口语;
  • 迭代方便,新增文档直接切片入库。

❌ 缺点:复杂连锁问题容易答漏,缺少因果逻辑。

场景 B:专业领域客服,满足下面特征【才考虑引入知识图谱】

典型行业:设备运维客服、医疗咨询、政企业务流程、汽车故障售后

特征:

  1. 大量故障溯源、因果推理;

用户问:设备报错 E01,可能有哪些原因?分别怎么排查?

  1. 实体繁多,容易混淆;需要区分零部件、型号、版本;

  2. 需要多层关联查询,不是简单一问一答;

👉 最佳方案:混合架构【RAG 为主 + 知识图谱增强】

工作流程示例:

  1. 用户提问先做意图识别;
  2. 简单咨询:走向量 RAG 召回文档;
  3. 复杂故障 / 关联查询:调用知识图谱做推理,获取因果链路;
  4. 把【检索段落 + 图谱推理结果】一起喂给 LLM 生成答案

⚠️ 重要提醒:

不要一上来只做知识图谱客服!

知识图谱最大痛点:成本极高

所有文本必须人工 / 大模型抽取三元组,数据维护很重;新增业务规则、产品资料都要更新图谱;中小企业很难持续运营。

反面例子(什么时候别硬上图谱)

电商客服:查发货、退换货政策、商品基础咨询

全部都是独立 FAQ,几乎没有复杂推理 → 只用向量 RAG 足够,图谱属于过度设计。

四、直观对比表(智能客服视角)

表格

方案 开发维护成本 擅长问题 短板 适合客服类型
仅 MySQL 关键词检索 低 标准固定问句 口语识别差,语义不理解 淘汰,不推荐
向量 RAG(向量库) 中 开放式口语、FAQ、文档查询 缺少逻辑推理,复杂问题容易碎片化回答 通用电商、政务、普通产品客服【首选】
纯知识图谱 高 实体关联、故障溯源、链式推理 无法直接处理自由口语,文本素材利用难 极少单独使用
RAG + 知识图谱混合 较高 兼顾语义匹配 + 逻辑推理 架构复杂、数据维护工作量大 工业设备、售后运维、专业领域客服

五、落地建议(直接照着决策)

  1. 如果你们是通用智能客服,需求就是回答常见问题、查阅知识库

→ 技术栈:向量数据库 (Chroma/Milvus) + MySQL + LLM,标准 RAG 足够,不用知识图谱。

  1. 如果是设备售后、故障排查、有大量因果推理需求

→ 先用 RAG 搭建基础客服上线;业务稳定后,挑选高频复杂问题,额外构建知识图谱做增强,不要一步到位全图谱。

  1. 避坑:很多人误以为 “知识图谱比 RAG 高级”,实际上两者不是替代关系,是互补关系。RAG 解决文本语义检索;知识图谱解决关系与推理。

如果你需要,我可以给你一份【智能客服 RAG 最简架构图】或者一份:如何判断你的业务是否有必要引入知识图谱的自检清单。

📎 资料

day02 导图

🧠 day02前情回顾.xmind · 大纲
day01前情回顾
中医知识图谱的架构
1.数据采集模块
数据源:https://zhongyibaike.com/
技能点:requests BeautifulSoup
2.图谱生成模块
技能点: Prompt 撰写|大模型调用|LangChain|Faiss|Embedding模型
1.实体关系的抽取(大模型提示词)
2.Neo4j知识图谱的构建
3.Neo4j元数据的提取
为了后续NL2Cypher,提供Neo4j 的相关数据
4.Neo4j标准实体名库(Faiss向量数据库)
后续标准化,用户输入的实体
3.智能体工作流模块
技能点:Langgraph|文生图Api使用|playwright自动化发布框架
设计到的模块
小红书发布模块
中医知识图谱问答模块
大模型直接回答模块
4.前端展示模块
技能点:Streamlit FastApi
公共模块开发
.env
环境变量配置
config
获取配置文件信息
路径管理工具
根据项目相对路径,拼接绝对路径
大模型对象管理模块
neo4jmanager模块
操作neo4j
🧠 中医知识图谱day02.xmind · 大纲
中医知识图谱day02
数据采集模块的实现
数据源
中医方剂:https://zhongyibaike.com/wiki/%E4%B8%AD%E5%8C%BB%E6%96%B9%E5%89%82
中医药材:https://zhongyibaike.com/wiki/%E4%B8%AD%E8%8D%AF%E5%A4%A7%E5%85%A8
技能点
BeautifulSoup
对响应的内容进行解析
requests
访问网站,获取响应内容
实现思路:
1.先爬取 列表
爬取 方剂和中药的名称和url 列表
2.根据列表遍历爬取详情
将详情写到名称.txt文档中
3.优化点
断点续爬
多线程爬取(容易被封)
知识图谱构建模块
中医知识图谱业务知识
实体
关系
实体和关系的抽取
方剂抽取
药材抽取
aipaca微调语料的沉淀
这个是用来微调大模型的