做 AI 本地优先知识库三个月后,我发现 RAG 没那么简单
上周基本都在更新我的 AI 本地优先知识库。
说是更新,其实更像是把一个放了一个多月的项目重新捡起来,拍掉灰,再试着往前推几步。
从发布到现在,差不多快三个月了。
项目地址是:veyliss/ai-localbase。
Star 到了 300+。这个数字说大不大,说小也不小。对一个个人项目来说,能被三百多人点一下星,已经说明它至少击中过一小部分人的需求。
但我也很清楚,中间有一个多月没怎么更新,所以 Star 涨得慢下来也很正常。
开源项目有时候像一条很细的火线。你持续更新,它就偶尔亮一下;你停下来,它就慢慢变暗。不是项目突然没价值了,而是互联网上每天都有太多新的东西流过去。
还是 Demo
Section titled “还是 Demo”重新看这个项目的时候,第一感觉是:
它还是一个 Demo。不是不能用,也不是只有一个空壳。
它已经能跑起来,方向也比较明确:本地优先、知识库、AI 问答、RAG、个人数据掌控。
但离“一个成熟产品”还有距离。
Bug 还不少,体验也不算很好。有些流程能走通,但不够顺。有些功能看起来有了,但真的连续使用时,边角问题会一个个冒出来。
这也是个人项目很真实的一面。
发出来的时候,更多是在表达一个想法:
我想做一个本地优先的 AI 知识库。但真正要让别人舒服地用起来,靠一个想法远远不够。
补了一些体验
Section titled “补了一些体验”这次回来更新,主要做了两件事:优化 UI,优化检索。
UI 的问题比较直观。一个工具能不能让人继续用下去,很多时候不是取决于它有没有某个大功能,而是打开之后顺不顺、清不清楚、有没有那种“我愿意继续点下去”的感觉。
检索就更核心了。一个知识库项目,如果检索不准,后面 AI 回答再漂亮也没有意义。
RAG 的链路里,LLM 往往是最显眼的部分,但真正影响回答质量的,很多时候是前面的检索。
这也是我这几天最明显的感受:
RAG 不是接一个模型,再塞一点文档,就自然变聪明。RAG 比想象中难
Section titled “RAG 比想象中难”真正做起来才发现,RAG 的难点不只在“调用大模型”。
模型只是最后一步。
前面还有一整套不太显眼、但很要命的链路:
- 文档怎么解析。
- 内容怎么切分。
- 怎么向量化。
- 怎么检索。
- 怎么重排序。
- 怎么拼上下文。
- 怎么让答案有依据。
以前看 RAG 的概念图,会觉得它很清晰:
用户问题 -> 检索资料 -> 交给模型 -> 生成答案但真正落到项目里,它就不是一条那么干净的线了。
文档内容可能很乱,切分可能切断语义,向量检索可能召回不准,模型可能忽略上下文,回答可能没有引用依据。这些问题不会在 Demo 截图里出现,但会在真实使用里一点点暴露。
也正因为这样,我越来越觉得 RAG 是一个工程问题,不只是一个 AI 概念。
本地优先和现实
Section titled “本地优先和现实”这个项目一开始很强调本地优先。
我很喜欢这个方向。
知识库本来就带有很强的个人属性。笔记、文档、想法、项目资料,这些东西放在本地,用户自己掌控,会让人更安心。
所以最开始我很自然地选择了 Ollama。
本地模型、本地运行、本地数据,听起来非常完整。
但现实很快给了我一巴掌。
太慢了。
在普通机器上,本地模型的体验并不好。回复一次两次都很勉强,更不用说连续对话、长上下文、知识库检索之后再生成回答。
本地优先的理念是好的,但如果体验慢到让人不想继续用,那它就会从“安全感”变成“阻力”。
这件事让我重新思考一个问题:
本地优先是不是等于只能使用本地模型?后来我觉得,不一定。本地优先更重要的是数据和控制权。用户的数据应该尽量保存在本地,知识库应该由用户自己掌控,项目不应该强绑定某个平台。
加入 API 接入
Section titled “加入 API 接入”后面我加入了 API 接入能力。
这样项目不再只依赖 Ollama,也可以接入市面上很多模型。
这不是放弃本地优先,更像是给项目留出两个出口:
想要完全本地,可以走 Ollama。想要更好体验,可以走 API。我现在更愿意把它理解成:
数据本地优先,模型选择开放。这个取舍比一开始更现实,也更接近一个工具真的要被使用时的样子。
知识储备不太够
Section titled “知识储备不太够”这几天还有一个很强烈的感受:自己的知识储备还不太够。
以前以为做一个 AI 知识库,重点是把产品形态搭起来。现在发现,产品形态只是外壳。里面真正难的是检索、向量化、上下文组织和回答质量。
向量化这块尤其明显。Embedding 模型怎么选?中文效果怎么样?切片多大合适?什么时候只用向量检索,什么时候要结合关键词检索?要不要重排序?
这些问题都不是一句“接入向量数据库”就能解决的。它们需要实验,也需要积累。
我现在还在补这些东西。
三个月后的状态
Section titled “三个月后的状态”所以,如果给这个项目现在的状态做一个描述,我会这样写:
方向是对的,但还不够好用。它已经证明了一些事情:
- 本地优先知识库是有需求的。
- AI 问答和个人知识库结合是有吸引力的。
- 但体验、速度、检索质量和稳定性都还需要继续打磨。
Star 300+ 当然让我开心。
但我也知道,Star 不是产品成熟的证明。
真正的证明是:有人能把它装起来,导入自己的资料,连续用几天,还愿意继续打开。
这比 Star 更难。
写到这里,感觉这不是一篇项目总结,更像是给自己留的一张便签。
提醒自己不要被概念骗得太轻松。
RAG 很热,本地优先也很好听,AI 知识库也很有想象空间。
但真正做起来,还是那些很具体的东西:
- 一个按钮是否清楚。
- 一次检索是否准确。
- 一段回答是否有依据。
- 一个模型是否太慢。
- 一个新用户能不能顺利跑起来。
这些东西不酷,但它们决定项目能不能从 Demo 往前走。
项目现在还不成熟。
但至少,它还在往前。
这几天重新更新它的时候,我又找回了一点刚开始做它时的感觉:不是很确定,但挺想继续看看它能长成什么样。