AI学习笔记

AI学习笔记

2026/5/10
主要是搞懂了RAG检索那块的东西,还有LoRA微调的原理


RAG到底是啥?

说白了就是让大模型开卷考试。模型本身是闭卷,全靠训练时背的东西,容易瞎编(幻觉)。现在先查资料再回答,准多了。

流程:用户提问 → 切成向量 → 去向量库找相似的 → 把找到的资料塞给prompt → 大模型基于这些资料回答。

关键:不直接问模型,而是先查"图书馆"(向量数据库)


向量检索部分

相似度计算

768维距离计算其实就两种:

余弦相似度 - 看方向是不是一致。比如"失眠"和"睡不着"向量方向差不多,值接近1。这个最常用。

欧氏距离 - 看直线距离。适合数值型数据,文本检索一般用余弦。

ANN加速

真有100万条文档的话,一个个算距离要算死。ANN就是近似搜索,牺牲1%精度换100倍速度。

HNSW - 像建了个高速公路网,分层跳转。顶层只有几个大类中心(比如失眠、焦虑、抑郁),先跳到最近的大类,再一层层往下钻到具体文档。没有严格边界,边界文档也能找到。

IVF - 像分科室。先算离哪个科室(聚类中心)近,然后只在这个科室内找。快,但边界文档容易漏(比如既像焦虑又像抑郁的文档)。

记一下:HNSW是织网,IVF是切蛋糕。HNSW更适合医疗这种不能漏诊的场景。


检索优化的几个层次

容易搞混的地方现在理清楚了:

检索前(还没碰文档库)

  • 元数据过滤:比如先按标签筛出"disease=抑郁症"的,只在几百条里找,别在100万里找
  • Query改写:把用户口语"睡不着咋整"改成标准医学术语"失眠的认知行为疗法"

检索中(正在查)

  • Hybrid混合检索:向量检索(语义)+ BM25(关键词)同时跑
  • ANN参数调优:HNSW的M值、IVF的nprobe这些

检索后(已经召回一堆候选)

  • Rerank重排序:用Cross-Encoder精排。召回阶段要的是别漏(高召回率),这里要的是Top5必须准(高精确率)
  • MMR去重:别让返回的5篇都是讲同一个药的,要有不同角度

注意:元数据过滤是Pre-filtering,在向量计算之前!


Hybrid混合检索怎么融合?

两路返回的结果分数不一样(向量是0-1,BM25可能是0-20),不能直接加。

RRF(倒数排序融合) - 推荐用这个
不看具体分数,只看排名。第1名得1/(60+1)分,第10名得1/(60+10)分,两路分数加起来排序。60是平滑常数,不用调。

好处是不用量纲归一化,加一路新的检索也方便。


LoRA微调

不是全量训练(那要几百张显卡),而是冻住原模型,在旁边加个小矩阵(B×A)。

原模型70亿参数不动,只训练那两个小矩阵(比如只占0.1%参数)。就像给大模型戴了个"专业眼镜",拿下眼镜还是通用模型,戴上就是心理专家。

关键参数rank:就是矩阵的秩r。r=8(小)学得慢但不容易过拟合,r=128学得快但可能死记硬背训练集。

过拟合的意思:不是真学会了,只是把训练集2000条对话背下来了,换个问法就不会了。


MCP协议

解决大模型接外部工具的标准问题。就像JDBC让Java能接各种数据库,MCP让大模型能接GitHub、文件系统、数据库。

  • MCP Server:具体工具的适配器(比如GitHub MCP Server)
  • MCP Client:Cursor这些应用里内置的客户端

注意:MCP不管本地git操作(commit/push),只管远程GitHub(读文件、创建PR)。


一些零散笔记

SSE vs WebSocket

  • SSE是单向(服务器→客户端),适合大模型打字机效果,简单
  • WebSocket双向,适合实时打断、语音对话,复杂

PsyQA数据集
搞心理机器人需要的数据集。获取途径:公开数据集(HuggingFace)、爬虫(知乎心理板块)、医院合作(需脱敏)、AI生成+人工校验。

数据清洗
去隐私(手机号变[PHONE])、去重(文本相似度去重)、弱监督标注(先用规则/模型标,人工再改,省钱)。

单模态
只处理文本。不像多模态还要处理语音、表情、视频。

今天最大的收获是搞清楚了检索优化的分层,元数据过滤和重排序的位置现在很清楚了。

posted @ 2026-05-10 22:14  柳成荫y  阅读(3)  评论(0)    收藏  举报