520这个数字在中文里是“我爱你”,但对我来说,是“我爱代码”。今天,这个博客的雏形终于上线了,它不是一个WordPress模板,也不是一个静态生成器,它是我用代码和一堆API管道拼出来的、能自己干活的东西。代码不会闹脾气,不会跟你谈理想,你喂给它逻辑,它吐出结果,干净利落。
这玩意儿的内核,是我用n8n搭的一个自动化大脑。前端就是个极简的页面,用户输入问题,比如“2019年你管理团队踩过最大的坑是什么”,这个查询不会去匹配关键词,而是直接进了我自建的向量数据库。对,就是那个听起来很玄乎的“语义检索”。我受够了以前博客那种基于标签和关键词的垃圾搜索,用户问“如何提高Axure原型效率”,我十年前写的关于“Axure组件库复用”的旧文根本搜不出来,因为字面不匹配。这太蠢了,我的知识被锁死在字符层面。
所以这次我搞了个狠的。我把过去七年写的所有技术复盘、踩坑笔记,大概几百篇Markdown文件,全部用OpenAI的text-embedding-ada-002模型跑了一遍,生成了向量。这个过程本身就是一个技术活,你得处理文本分块,控制token长度,还得考虑上下文连贯性,不然“Python多线程爬虫”和“Python异步IO”可能被切成毫不相关的碎片。我写了个脚本,按语义段落切,而不是机械地按字数切。
然后就是向量数据库的选择。我试过Pinecone,云服务省心但贵,而且我这种个人项目,数据量不大,但查询频率可能突然爆一下(万一火了怎么办?),按用量计费心里没底。最后选了Chroma,本地部署,轻量,Python接口友好。我把所有向量和对应的原文链接、标题元数据存了进去。n8n在这里扮演了交通枢纽的角色:它接收前端的HTTP请求,把查询文本同样转换成向量,然后调用Chroma的API进行相似度搜索,返回最相关的几条内容,再组装成一段带引用的、人性化的回答,吐回给前端。
整个流程在n8n里画成工作流,像一张神经网。这里面的魔鬼细节是错误处理和降级方案。向量数据库查询可能超时,OpenAI的Embedding API有频率限制(RPM),前端用户可能输入乱码。我在n8n的每个关键节点都设置了重试机制和fallback路径,比如向量搜索失败,就自动降级到基于Elasticsearch的传统关键词检索,虽然笨,但至少能有结果返回,不至于让用户面对一个空白页。这就是产品思维,你可以追求技术的优雅,但必须保证系统的鲁棒。
搞完这一套,我坐在电脑前,看着日志里一条条自动完成的“查询-检索-响应”记录,有种奇特的满足感。这不再是2016年那种写个爬虫薅点流量数据的低级快感,这是一种构建数字资产的感觉。我的经验、我的思考,被编码成向量,沉淀在数据库里,成了一个可以7×24小时自动应答、不断增值的“数字分身”。它不会因为我今天心情不好而罢工,也不会要求涨薪。在2023年,当ChatGPT已经让很多传统技能显得可笑时,这种“用AI管理并放大自身知识资产”的能力,可能就是“超级个体”最后的护城河。代码不爱我,但我爱它能带来的、确定的、沉默的产出。这就够了。














