链载Ai

标题: 想让 FastGPT 更猛?试试 OceanBase 向量数据库吧! [打印本页]

作者: 链载Ai    时间: 5 小时前
标题: 想让 FastGPT 更猛?试试 OceanBase 向量数据库吧!

RAG 的核心魔法之一,就是向量数据库

向量数据库

RAG 的“记忆大脑” ,它负责将海量知识转化为向量存储,并在用户提问时高效检索出最相关的知识片段。

这些检索结果是驱动大模型生成高质量答案的关键,直接影响 RAG 应用的整体效果。

一直以来,FastGPT 默认推荐大家使用 PostgreSQL (配合 pgvector 扩展) 作为“记忆大脑”。不得不说,PostgreSQL 是非常优秀、稳健的开源数据库,绝大多数场景,它都表现得很好。

不过随着大家的应用越做越大、数据量越来越多,或者当你开始玩转更高维度的向量模型 (比如现在动不动就上千维的 embedding)、需要更复杂的检索逻辑 (比如想先按类别筛选再找相似内容) 时,会发现 PostgreSQL 在向量处理这块儿有些吃力。

我们也一直在琢磨怎么能让 FastGPT 变得更强!所以,今天给大家带来一个好消息:

FastGPT 正式支持 OceanBase!?

现在,除了 PostgreSQL,你还可以选择 OceanBase 作为 FastGPT 的向量数据库!

对于追求极致性能、分布式扩展能力以及卓越运维易用性的用户来说,OceanBase 是您大规模或复杂应用场景下使用 FastGPT 的理想搭档。

PostgreSQL 的局限性

深度使用 PostgreSQL (pgvector) 的过程中,确实发现了一些让开发者们 (包括我们自己) 不是很丝滑的地方。不是说 PG 不好,而是在向量数据这种 “新物种” 面前,它这位 “老将” 有时会显得有点力不从心。

具体表现如下:

  1. 向量维度限制:“高维模型放不下”
    你有没有遇到过这种情况:兴冲冲地训练好了一个效果超赞的 embedding 模型,结果发现它的维度是 2048 或者更高?当你试图把它存入 PG HNSW 索引时,傻眼了——PG HNSW 全精度只支持到 2000 维!超出的部分,要么忍痛降维 (可能会损失精度),要么就只能望 “维” 兴叹。

  2. 混合检索的 “坑”:“我想精准找,怎么这么难?”
    这可能是最让 RAG 开发者头疼的问题之一。很多时候,我们不只是想 “找最像的”,而是想在特定条件下找最像的。比如,“只在 ‘技术文档’ 这个分类下,找和 ‘数据库优化’ 最相关的几段话”。这种 “先过滤、再搜索” 的需求,就是混合检索
    然而,PG 的 HNSW 索引 (至少在 pgvector 0.8 版本之前) 并不原生支持在索引层面直接做这种混合过滤。你可能得先用 HNSW 召回一大堆向量,然后再在应用层或者数据库层面进行二次过滤。这样做不仅效率低,更要命的是,如果你的数据删改频繁 (向量数据库里还挺常见的),PG 的旧数据 (死元组) 可能会干扰 HNSW 的召回,导致你过滤后发现,真正想要的数据丢失了
    就算升级到了 pgvector 0.8+ 引入了递归搜索来缓解这个问题,我们实测发现,性能可能会变慢,而且有时候原先能跑的查询,索引突然就不生效了,得费劲改 SQL,体验上确实有点 “坑”。

  3. VACUUM 的 “痛”:“空间回收跟不上”
    PG 依赖 VACUUM 机制来回收那些不再使用的空间 (比如你删除或更新数据后留下的 “坑”)。对于传统的文本、数字数据,这套机制运行得挺好。但向量数据不一样,它可是个 “大块头”,一个向量动辄几 KB 甚至更多。
    当你的 RAG 应用数据量很大,并且删改操作还挺频繁时,你会发现数据库文件像吹气球一样膨胀起来。这时候,PG 的 VACUUM 可能就有点 “消化不良” 了,回收速度跟不上数据更新的速度。结果就是要不就忍受磁盘空间的浪费,要不就得手动、频繁地执行 VACUUM FULL (这玩意儿还会锁表),或者被迫给 autovacuum 分配更多的系统资源,运维起来真心有点累。


为什么选择 OceanBase?

而 OceanBase 是这么“对症下药” 的:

  1. 轻松驾驭 4096 维,还能更高!
    OceanBase 的向量索引默认就支持高达 4096 维的向量!这已经覆盖了市面上绝大多数主流 embedding 模型的需求。而且,这个上限还是可以配置扩展的!这就意味着,你可以放心地选用更高维度的模型来追求更好的效果,再也不用为了数据库的限制而牺牲模型精度去搞降维了。

  2. 原生混合检索:精准、高效,一步到位!
    这绝对是 OceanBase 的一大杀手锏!它的向量索引是原生支持混合检索的。也就是说,你可以直接在查询时就告诉它:“嘿,帮我在 ‘这个分类’ 并且 ‘那个标签’ 下,找和 ‘这个描述’ 最相似的向量”。OceanBase 可以在索引层面一边进行精确的标量过滤,一边进行高效的向量相似度搜索
    这样做的好处是显而易见的:







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5