大型 Trie 树数据库的尝试,期望在 RAG 系统中发挥作用

50 天前
 bigtang
搜索了天工 AI, perplexity, GPT4, 全世界尚无一个独立的商业 Trie 树数据库产品。

http://xt.tanglib.com/ 是一个 Trie 树数据库,上线半年,还是很稳定的。

大型 Trie 树数据库是有难度的( xt.tanglib.com 的文本数据接近 1T ,单机应该算大型了),否则早就诞生了。

Trie 树数据库相对于 ElasticSearch 倒排索引数据库有一些独特优势,例如速度更快,可以支持插入删除。

最近流行 RAG 系统,特发帖在 v2ex, 期待愿意用 Trie 树数据库的项目来谈合作。

欢迎大家体验这个 Trie 树数据库。
1927 次点击
所在节点    分享创造
27 条回复
miniliuke
50 天前
你不会是索引结构是字典树就叫 Trie 树数据库吧......
buaasoftdavid
50 天前
没有诞生的原因有没有一种可能是因为这是个伪需求?
bigtang
50 天前
楼上你心目中的 Trie 树数据库是什么样的?

知乎上有个问题:Trie 树非常适合索引结构,怎就没人用于数据库引擎?
https://www.zhihu.com/question/643972502/answer/3393671711
cowcomic
50 天前
之前做过基于 Trie 树的内存级词匹配
感觉 trie 树的构建对于内存的消耗还是挺大的
而且搜索感觉是 Trie 树的逆向使用呢,好奇怎么做的
bigtang
50 天前
@cowcomic 看来研究过 trie:) @buaasoftdavid 有可能是,如果 chatgpt3 不出来,整个 AI 都是“伪需求”
fakepoet
50 天前
小小的鸡毛一下,可以叫 `Trie` 或者叫 `字典树`,但是 `Trie 树` 有点语义问题。
maggch97
50 天前
额额,只能搜索精确子序列,不知道怎么硬和 ai 扯上关系的
存储也是 26 倍普通结构…
maggch97
50 天前
@maggch97 子串,26 还是只有小写字母的情况
yeekal
50 天前
trie 内存占用太大,ElasticSearch 倒排索引跟 trie 不矛盾,如果你把分词粒度调到 1 ,理论上 trie 能检索到的,ElasticSearch 也可以
shyrock
50 天前
理论上对于离散的数据,也就是搜索词不是紧靠在一起的情况,trie 搜索不到吧。

在 OP 的网页上试了一下,感觉不符合一般的搜索习惯。
比如说正常搜索阿里公司 名叫马云的人,输入阿里 马云就搜不到,实际上这条记录是存在的。
bigtang
50 天前
@shyrock 这个网站的数据里真不存在 “阿里 马云” 阿,你看着数据再挑两个词看看
bigtang
50 天前
@yeekal trie 数据库就是比 ElasticSearch 粒度设为 1 要优秀得多,否则就毫无意义了
pkoukk
50 天前
AI 用的是向量数据库....
OpenAI 提供的知识库自训练 embeddings 数据可以直接存进向量数据库里去
https://platform.openai.com/docs/guides/embeddings/frequently-asked-questions
Trie 在 AI 里不能说毫无用处,起码也是没有屌用,ana 和 anal 两个词可是天差地别
bigtang
50 天前
@maggch97 @pkoukk 跟 ai 的关系是:例如用户问 Q10G 电视是否效果好? trie 很快能搜到很多 Q10G 电视及评价,送给大模型判断。实际的型号可能是 tcl 75q10g, tcl85q10g, 当然你说 elasticsearch 也能搜到,我告诉你同等条件下 trie 更优秀。

跟向量数据库的区别是性能及易用性上的区别,向量数据库的匹配跟 ai 还是差很远,且向量数据库只能是含义上的匹配,就刚才这个 Q10G 电视是否效果好 我怀疑向量数据库能否准确排除非 Q10G 。
matrix1010
50 天前
10 楼的意思是,比如我想搜 ab OR de OR gh, Trie 是否能做到,是否比倒排索引性能更高?
shyrock
50 天前
@bigtang 你自己随便找你工商数据任意一行,把公司和人名两个关键字拿去搜一下就会发现问题了。
bigtang
50 天前
@matrix1010 @shyrock 求交集问题是无解的,a 有 10 亿个,b 有 10 亿个,求 a and b, 只能遍历,不要问不可能的问题。
但 ai 解决这种实际问题不难,a 有 10 亿个,加一些背景限制,缩减到 3 万个,遍历就快了。
shyrock
50 天前
@bigtang 你要把思路限定在只用 trie 来搜索,当然很难。。。

你看下 baidu 或者 ES 搜索就知道了,这个是非常高频的需求,而且换个方法就并不是那么难解决。
maggch97
50 天前
我只觉得你的数据结构知识学的很一般。首先 trie 做存储并不是什么特立独行的想法,每个刚学数据结构的人都会觉得这个结构简直无敌,非常适合做数据库。
但是为什么这么简单的结构,看起来这么 work 的想法还没有成熟的项目应用呢。聪明的人知道去搜一下前人的讨论,“固执”的人会真的搞出来并强行推销给大家,不过并没有人接受就是了。
maggch97
50 天前
我觉得你既不懂数据结构,也不懂数据库,更不懂 AI

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1024910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX