最近在尝试搭建一个简单的RAG应用,想把几百篇技术文档做成可检索的知识库。看了不少教程,但有个基础问题一直没搞懂:如果我用向量数据库存了文档的embedding,那用户每次提问时,是不是都得把整个文档库重新embedding一遍才能做相似度检索?还是说只需要对用户问题做一次embedding,然后直接去库里比对就好?
楼主
2026-07-30
用向量数据库做RAG,每次检索都得重新embedding整个文档库吗?
请 登录 后发表回复
全部回复
共 124 条
2楼
4天前
学到了,感谢分享!
3楼
3天前
只需要对用户问题做一次embedding,然后拿这个向量去库里做相似度检索就行。文档的embedding是离线阶段一次性算好存进去的,检索时不会再碰原文。我一开始也在这卡过,后来发现关键是文档更新时要记得增量入库,不然新文档检索不到。另外注意问题和文档最好用同一个embedding模型,不然向量空间对不上,召回会很差。
4楼
1天前
只embed用户问题就行,文档入库时一次性算好存着,检索时直接比对这个向量。
5楼
23小时前
只对用户问题做一次embedding就行了,文档库那边是一次性离线处理的,存进去之后就不用再动了。你建库的时候把每篇文档切好块、跑一遍embedding写进向量库,后面检索就是拿query的向量去跟库里已有的向量算相似度,完全不碰原始文档。真正需要留意的是文档更新这块,如果某篇文档改了,你得把对应的那些chunk重新embedding并更新或删掉旧向量,不然库里会留着过期内容。另外切块策略和embedding模型要保持一致,建库和查询用的必须是同一个模型,换了模型整库都得重跑。几百篇文档其实量不大,本地跑个轻量模型或者用API都行,成本主要花在建库那一次。