RAG与LLM原理及实践(6)--- Chroma collection及存储逻辑分析

 背景

在chroma vector db的世界中,除了对query 的理解,另外就是需要深入理解 chroma的运行模式,chroma运行时,提供了 local模式,server-client 模式,这些在应用中固然重要,但从实现原理上说,其实就是通过http 服务,在固定端口如11344上请求数据。但是在这之前,需要深入了解并理解 collection以及chroma 是如何存储及获取他们的。这里的获取,我说的不是你在应用上调用 query 的主逻辑,当然,如果你读完了上一篇RAG与LLM原理及实践(5),你应该知道其实 query 包含了我这里说的 获取逻辑。只是在query主逻辑中,我一笔带过,根据collection_id, 如果cache中有,首先从cache加载,没有的话,从disk load。今天想把collection 与 chroma的物理存储结构 这两件事讲清楚。

collection 集合的目的

collection 是什么?为什么要用集合?实际上我们在关系型数据库中,基本是 db-table-column构成的关系型数据库。根据使用场景,我们可以很容易得看到,关系型数据库顾名思义,就是为定义各种不同错综复杂的关系应运而生的,在追求数据完整存储同时,从时间检索与消耗空间进行综合衡量,来完成数据库构建。正因为我们想表达大千世界中不同事物的各种不同关系,我们需要定义并记录不同事物的属性及通过table范式设计,primary key, foreign key 等关键字段,通过 trigger,transaction等手段描述表间关系与事务运作的行为。但作为在LLM中广泛应用的vector db,其场景是不一样的,table 对vector db 而言,不是不重要,但他应该是向量数据库设计者应该思考的问题,而不是使用者该去梳理的关系。使用场景很大程度上决定了设计,当然这不是唯一的决定性因素,但是你不得不承认,他起着举足轻重的作用。这个系列主要是focus 在RAG,我还是以RAG为例,词句嵌入后的N维向量作为存储在  vector db 中的一个主打功能之一,当然还有别的应用,其目的就是存储vector,可以有文本,图片,URL,当然未来可能还有视频,尽管现在chroma 并没有支持video标签,但使用url可以变相支持这一功能。作为使用者,或许只关心两件事:1)我的知识内容是否存入到vector db中 2)我是否能高效的查出我需要知道的相关内容。从使用场景出发,决定user并不关心你是用什么结构来存储数据。正因为这样,chroma将RAG中的知识,可能来自txt, pdf,word,ppt,URL,picture......需要一个稳定的存储,可能是按章节也可能是按照其他区分。所以  coll

  • 43
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值