踩坑MySQL后,我用Milvus向量库做了个能读懂人话的AI日记助手
2026/7/30 1:53:07 网站建设 项目流程

文章目录

  • 一、做AI工具踩大坑:传统数据库根本读不懂人话
    • 1.1 向量数据库到底怎么解决这个尴尬问题
  • 二、Milvus是啥?AI产品的记忆仓库
    • 2.1 定位:专门装高维向量的数据库
    • 2.2 Zilliz Cloud:懒人专属托管服务
  • 三、环境搭建三步走,依赖少到离谱
    • 3.1 三个核心包,搞定全部流程
    • 3.2 Milvus连接小细节,新手必踩坑
  • 四、索引:海量向量毫秒搜索的核心密码
    • 4.1 不建索引=检索慢到想砸电脑
    • 4.2 IVF_FLAT索引,中小数据集首选
    • 4.3 三种相似度算法,场景别混用
  • 五、Collection=向量库里面的“数据表”
    • 5.1 日记专属Schema设计思路
    • 5.2 两个容易忽略的操作要点
  • 六、日记数据入库:文本一键转向量存入库
    • 6.1 批量向量化,并发提速
    • 6.2 插入数据极简写法
  • 七、语义检索:不用关键词,也能读懂你的需求
  • 八、RAG完整闭环:检索日记+大模型生成暖心回答
    • 8.1 RAG核心逻辑一句话讲透
    • 8.2 检索函数封装,容错拉满
    • 8.3 Prompt设计小技巧,效果提升一大截
  • 九、项目学习顺序,新手别搞反
  • 十、整套技术选型复盘,每一步都有实用考量
  • 收尾

P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01

一、做AI工具踩大坑:传统数据库根本读不懂人话

咱做开发的,写存储第一反应就是MySQL,增删改查玩得飞起,存表格数据简直顺手到离谱。

但上次我想整个日记小工具,直接给我干沉默了。

我日记写了一句:周末和朋友去爬山,天气很好,心情放松,大自然太舒服了。

然后我搜“户外活动相关日记”,SQL直接返回空。

你说搞不搞笑?爬山明明就是户外活动,可数据库只认字面匹配,没出现“户外”俩字,它就两眼一抹黑,啥也查不出来。

就像你跟直男说“我有点冷”,他只会回一句“那你多穿点”,完全get不到你想让他把外套递过来的潜台词,纯纯字面理解机器。

这就是传统数据库最大的短板:只能匹配文字,读不懂藏在句子里的意思。

1.1 向量数据库到底怎么解决这个尴尬问题

逻辑特别好懂,全程没有复杂公式,听一遍就能记住。

文字丢进Embedding模型,变成一串长长的数字向量,存进向量库;用户提问也转成向量,数据库算向量之间的远近,离得近的,就是语义差不多的内容。

爬山和户外活动,文字完全不一样,但在向量空间里挨得特别近,搜索直接精准捞出来,不用死磕关键词。

相当于以前找人只能看身份证名字,现在能靠长相、气质判断是不是同一个人,容错率直接拉满。

二、Milvus是啥?AI产品的记忆仓库

2.1 定位:专门装高维向量的数据库

很多人刚接触会疑惑,好好的MySQL不用,非要整个新库折腾?

举个接地气的例子:MySQL是超市货架,只能放规整的包装盒;Milvus是超大储物仓,专门存那种几百上千维度的“数字坐标”,海量数据也扛得住。

现在市面上所有带记忆功能的AI助手、AI Agent,底层基本都离不开它,相当于AI的大脑记忆区。

2.2 Zilliz Cloud:懒人专属托管服务

自己部署Milvus服务端?听着就头大,调集群、维护扩容,加班KPI直接翻倍。

Zilliz Cloud就是托管版Milvus,类比云数据库RDS,开箱即用,填个地址和token就能连上,不用管底层运维,摸鱼时间直接多两小时。

我做这个日记项目全程用的就是Serverless实例,配置写在.env里,复制粘贴就能跑,新手零门槛。

三、环境搭建三步走,依赖少到离谱

3.1 三个核心包,搞定全部流程

  • @zilliz/milvus2-sdk-node:操作向量库的官方SDK,v3版本体验最好
  • @langchain/openai:统一封装大模型和向量化接口,厂商切换不用改业务代码
  • dotenv:读取环境变量,密钥不用硬编码写代码里,防止泄露翻车

最爽的一点:国内通义千问、DeepSeek这些模型,全都兼容OpenAI接口协议。

只需要改个baseURL地址,模型直接无缝切换,不用重新学新SDK,厂商锁死这种糟心事直接不存在。

我这次用阿里云DashScope,text-embedding-v3输出1024维向量,中文语义匹配效果巨稳。

3.2 Milvus连接小细节,新手必踩坑

很多老教程会写手动connect,新版SDK v3根本不用。

实例化MilvusClient的时候,内部自动建立gRPC连接,后面所有增删查改操作,都会自动等连接就绪再执行,少写一堆冗余代码。

但健康检查千万别省!启动先跑checkHealth,集群挂了、密钥错了能直接抛出提示,不然跑半天才报错,排查能浪费半小时。

四、索引:海量向量毫秒搜索的核心密码

4.1 不建索引=检索慢到想砸电脑

没索引的向量库,每次搜索要拿查询向量和库里几百万条向量挨个算相似度,复杂度O(n)。

类比去图书馆找《三体》,没有分类索引,你得一本一本翻书架,下班都找不到。

索引的逻辑就是给向量空间分片区,先锁定相近片区,只在片区内比对,直接跳过绝大多数无关数据,速度直接拉到毫秒级。

4.2 IVF_FLAT索引,中小数据集首选

底层靠K-Means把全部向量分成一堆簇,查询时先找离问题向量最近的几个簇,只在簇内精准匹配。

不用复杂调参,上手简单,做个人日记、小型知识库完全够用,性价比拉满。

4.3 三种相似度算法,场景别混用

  • COSINE余弦:文本语义检索首选,只看向量夹角,长度不影响匹配,写日记、知识库全用它
  • IP内积:需要向量提前归一化的场景,日常文本开发很少碰
  • L2欧氏距离:图像特征匹配专用,文字检索用它效果拉胯

做日记项目直接无脑选COSINE,不用纠结别的,踩坑概率直接清零。

五、Collection=向量库里面的“数据表”

5.1 日记专属Schema设计思路

Milvus里Collection对标MySQL的表,建数据前必须先定义字段结构,我给日记设计了6个字段,覆盖全部需求:

  • id:字符串主键,每条日记唯一标识
  • vector:1024维浮点向量,日记正文的语义载体
  • content:长文本,完整日记内容
  • date:日记记录日期
  • mood:单标签,记录当天心情
  • tags:字符串数组,一条日记最多10个标签,不用关联表,省去JOIN麻烦

传统MySQL存标签要多建一张关联表,查标签还得联表查询,Milvus直接数组字段一步到位,写代码少一半工作量。

5.2 两个容易忽略的操作要点

第一,幂等创建:先判断集合是否存在,不存在再新建,重复运行脚本不会报错,调试超省心。

第二,创建完必须loadCollection:新建集合默认存在磁盘,加载到内存才能正常检索,忘了这一步直接报查询失败,新手高频翻车点。

六、日记数据入库:文本一键转向量存入库

6.1 批量向量化,并发提速

多条日记并行调用Embedding接口,用Promise.all并发处理,比一条一条串行快几倍。

这里提个小坑:并发太高容易触发接口限流,线上项目记得加p-limit控制并发数量,不然直接被API拉黑。

6.2 插入数据极简写法

不用拼接SQL语句,直接把带向量的JSON数组丢进insert接口,库内部自动校验字段和Schema匹配,字段写错直接报错,不用手动校验。

5条测试日记十几行代码全部入库,对比传统数据库插入代码,简洁程度肉眼可见。

七、语义检索:不用关键词,也能读懂你的需求

举个实测例子,我搜“我想看看户外活动的日记”。

库里那条爬山日记根本没写“户外”两个字,但向量相似度直接拉到0.65+,稳稳排在第一条。

换成MySQL检索,这条数据直接消失,差距一目了然。

搜索时可以自定义返回字段,只拿需要的内容,减少数据传输开销;limit控制返回条数,RAG场景一般取前2-4条最合适。

八、RAG完整闭环:检索日记+大模型生成暖心回答

8.1 RAG核心逻辑一句话讲透

用户提问转向量检索相关日记,把日记内容拼接进提示词喂给大模型,AI基于真实日记内容回答,不会凭空瞎编。

完美解决大模型幻觉问题,回答全部有日记原文支撑,靠谱度直接翻倍。

8.2 检索函数封装,容错拉满

单独封装检索方法,检索异常直接返回空数组,不会直接中断整个程序运行,线上稳定性更好。

检索出来的日记统一格式化,标注日期、心情、标签,给大模型清晰的结构化上下文,AI更容易读懂信息,回答逻辑不乱。

8.3 Prompt设计小技巧,效果提升一大截

  • 设定暖心日记助手人设,输出语气温柔有共情
  • 明确兜底规则:没有相关日记就温和告知,禁止编造内容
  • 统一人称用“你”,贴合日记作者视角,回答更有代入感
  • temperature设0.1,降低自由发挥概率,严格贴合检索到的日记内容

我测试提问“最近什么事让我很骄傲”,日记里只写了“成就感”,向量检索精准匹配到做饭、完成项目两篇内容,AI总结出两段暖心回复,语义理解能力碾压关键词检索。

九、项目学习顺序,新手别搞反

  1. main.mjs:最简Demo,先弄懂Milvus连接、基础搜索逻辑
  2. index.mjs:完整数据流,建集合、向量化、批量插入全流程
  3. query.mjs:单独语义检索模块,吃透向量搜索完整链路
  4. rag.mjs:完整RAG流程,打通检索+大模型生成,完成成品AI日记助手

十、整套技术选型复盘,每一步都有实用考量

技术选择核心理由
Milvus(Zilliz Cloud)开源成熟、云原生,托管服务不用自己运维
text-embedding-v31024维,中文语义识别精度高,国内接口稳定
qwen-plus中文理解、共情表达能力强,兼容OpenAI接口
IVF_FLAT索引+COSINE文本检索最优搭配,中小数据毫秒级响应
temperature=0.1RAG场景严控幻觉,回答忠实于检索上下文

收尾

整套代码量不到200行,却覆盖现在AI产品最核心的向量存储+RAG架构。

不管是做个人记忆助手、知识库问答、AI Agent,底层都是这套三件套:Embedding向量转换、Milvus语义检索、大模型生成回答。

搞懂这个日记小项目,等于直接吃透当下AI应用通用底层框架,后续开发同类工具不用从零摸索。

P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询