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

查看 315|回复 24
shyrock   
trie 内存占用太大,ElasticSearch 倒排索引跟 trie 不矛盾,如果你把分词粒度调到 1 ,理论上 trie 能检索到的,ElasticSearch 也可以
bigtang
OP
  
理论上对于离散的数据,也就是搜索词不是紧靠在一起的情况,trie 搜索不到吧。
在 OP 的网页上试了一下,感觉不符合一般的搜索习惯。
比如说正常搜索阿里公司 名叫马云的人,输入阿里 马云就搜不到,实际上这条记录是存在的。
bigtang
OP
  
@shyrock 这个网站的数据里真不存在 “阿里 马云” 阿,你看着数据再挑两个词看看
pkoukk   
@yeekal trie 数据库就是比 ElasticSearch 粒度设为 1 要优秀得多,否则就毫无意义了
bigtang
OP
  
AI 用的是向量数据库....
OpenAI 提供的知识库自训练 embeddings 数据可以直接存进向量数据库里去
https://platform.openai.com/docs/guides/embeddings/frequently-asked-questions
Trie 在 AI 里不能说毫无用处,起码也是没有屌用,ana 和 anal 两个词可是天差地别
matrix1010   
@maggch97 @pkoukk 跟 ai 的关系是:例如用户问 Q10G 电视是否效果好? trie 很快能搜到很多 Q10G 电视及评价,送给大模型判断。实际的型号可能是 tcl 75q10g, tcl85q10g, 当然你说 elasticsearch 也能搜到,我告诉你同等条件下 trie 更优秀。
跟向量数据库的区别是性能及易用性上的区别,向量数据库的匹配跟 ai 还是差很远,且向量数据库只能是含义上的匹配,就刚才这个 Q10G 电视是否效果好 我怀疑向量数据库能否准确排除非 Q10G 。
shyrock   
10 楼的意思是,比如我想搜 ab OR de OR gh, Trie 是否能做到,是否比倒排索引性能更高?
bigtang
OP
  
@bigtang 你自己随便找你工商数据任意一行,把公司和人名两个关键字拿去搜一下就会发现问题了。
shyrock   
@matrix1010 @shyrock 求交集问题是无解的,a 有 10 亿个,b 有 10 亿个,求 a and b, 只能遍历,不要问不可能的问题。
但 ai 解决这种实际问题不难,a 有 10 亿个,加一些背景限制,缩减到 3 万个,遍历就快了。
maggch97   
@bigtang 你要把思路限定在只用 trie 来搜索,当然很难。。。
你看下 baidu 或者 ES 搜索就知道了,这个是非常高频的需求,而且换个方法就并不是那么难解决。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部