给小博客加一个「问我的文章」AI
思路
个人博客的文章量不大,几十篇、几十万字。这种规模不需要上向量数据库,一个朴素的检索就够了:
- 构建时把每篇文章切成段,抽出标题、摘要、正文
- 运行时按关键词打分,取最相关的几段
- 把这几段塞进 prompt,让模型只基于它们回答
为什么不上 RAG 全家桶
向量库、embedding 服务、chunk 策略……对一个个人博客来说是过度工程。关键词检索在小语料 + 中文上的召回其实不差,而且零依赖、零成本、可解释。
一条检索打分
function score(query: string, text: string): number {
const q = query.toLowerCase().split(/\s+/);
const t = text.toLowerCase();
return q.reduce((s, w) => s + (t.includes(w) ? 1 : 0), 0);
}够了。真的不够的时候再换。
约束比模型重要
比"用哪个模型"更重要的,是 prompt 里的边界:
- 只依据给定文章回答
- 找不到就说"博客里没写到"
- 回答带引用,能点回原文
不然它一定会很自信地编。