你是否曾感觉自己淹没在 AI 工具的海洋中?
Notion AI、ChatGPT、Claude、NotebookLM、Perplexity…… 它们都承诺可以成为你的 “第二大脑”,但你并未感觉自己变得更聪明,反而更加分散。
我们试过所有工具。有些时候,某个工具感觉比其他更有用,但从未有明确的赢家,从未有一个工具真正配得上 “第二大脑” 的称号。它们表面上看似如此相似,互相之间却有根本区别。
这种相似与差异之间的奇怪张力在脑海中萦绕了数月。我们会根据心情、项目或任何吸引注意力的闪亮新功能在工具间切换。不断的切换让人精疲力尽,但我从未多想,直到最近我开始尝试 RAG(检索增强生成)。
当开始着手创建兼具个人特色和实用性的东西:一个真正理解我的写作并能结合上下文回应的 AI,我发现的东西改变了一切 —— 不仅是关于 AI 工具,更是关于如何战略性思考我们已在使用的工具。
-
究竟什么是 RAG?
如果你和我一样,不太深究技术细节,第一次听到 “RAG” 时,可能会觉得这又是一个 AI 流行术语:神秘、重要,甚至可能被过度炒作。
但一旦搭建了一个 RAG 系统,就会意识到:从核心来看,RAG 只是更智能的搜索。
与仅查找精确词语匹配的关键词搜索不同,RAG 可以理解语义。例如:
关键词搜索 “dog”
-
找到:包含 “dog” 一词的文档
-
遗漏:“puppies”(幼犬)、“canines”(犬科动物)、“golden retrievers”(金毛寻回犬)
RAG 搜索 “dog”
- 找到:上述所有内容,还包括宠物护理、训练、兽医等相关主题
RAG 完美诠释了语言学中的一句名言: “观其伴而知其意”
当你提问时,RAG 会将问题转化为语义编码(称为嵌入向量),查找语义相似的内容,并将上下文输入语言模型,生成有依据的回答。
-
构建系统:RAG 集成
现在我们着手构建一个能作为个人 AI 助手的 RAG 系统,它需要真正理解我的写作、记住讨论主题,并能结合上下文回答问题。
目标:
-
抓取并处理文章
-
创建优化检索的语义块
-
生成用于相似度搜索的嵌入向量
-
构建自然且响应迅速的聊天界面
-
提供来源引用以便用户知晓信息出处
架构
我采用了分三阶段的方案,在功能和成本效益间取得平衡:
阶段 1:内容处理
-
从订阅源自动抓取 30+ 篇文章
-
将内容切分为 500 字的块,重叠 50 字
-
提取标题、URL、发布日期和主题标签
阶段 2:嵌入与搜索
-
使用 OpenAI 的 text-embedding-3-small 生成向量表示
-
实现余弦相似度算法查找相关内容块
-
全部本地存储为 JSON 以降低成本
阶段 3:聊天界面
-
开发响应式悬浮聊天组件
-
添加合规 Markdown 渲染以优化阅读体验
-
包含带相似度分数的来源引用
结果与数据
-
处理并索引 30+ 篇文章
-
生成 250 个语义块,均通过 OpenAI 嵌入
-
每块包含 2436 维向量
-
大多数查询响应时间为 秒级
-
相似度分数范围 0.3–0.8(分数越高匹配度越高)
-
总嵌入成本:~0.03 美元
-
零幻觉现象—— 所有回答均基于我的内容
实践心得
分块策略至关重要 。500 字块 + 重叠设计在保持搜索精准度的同时保留了语义完整性。块太小会丢失上下文,太大则导致结果模糊。
语义搜索如同魔法。即使是 “如何构建 AI 工作流?” 这类模糊查询也能精准定位相关观点 —— 它理解词语背后的意图。
用户体验决定一切。网站直接集成聊天界面让交互更人性化,而 Markdown 格式的价值被低估了。
从零构建 RAG 是众多项目中最有成就感的经历之一。它将嵌入向量、相似度搜索和语言生成融合成真正实用的工具。最令人兴奋的是:随着持续写作,这个系统能理解文字的细微差别,并提供上下文相关的响应 —— 就像有一个读过我所有文章、能即时召回最相关信息的研究助理。
在明天的文章中我们将继续深入探讨对RAG的理解。