我一直在试验用于全文搜索的type向量索引,并发现在type类型的列中生成向量存储是一种常见的做法。我们在Postgres 11.4上,但我已经看到这种实践被用作PG 12生成列的示例。(比为同一目的使用触发器更简单。)
我的问题是,好处是什么?我尝试在文本字段的the向量上使用表达式GIN索引,在存储的the向量上使用GIN索引。由于本地有大约8米行,我无法测量任何有意义的速度差异。考虑到将向量存储为列和索引需要更多的空间,我很好奇是否有明显的情况证明额外的成本是合理的。例如,当你有了更多的角色时。
注意:我们将文本存储在数据库中,因此这不是那些设置之一,您可以在其中索引外部页面/document/etc,而不将源文本删除到数据库中。
发布于 2022-04-20 10:22:25
有趣的是,我在一列上创建了一个GIN索引,其中包含一些较大的值(进行文档文本提取,因此每行有多个段落(如果不是很多页的文本)。
根据查询的不同,查询采用了60+s,移动到预先计算的向量列+索引可以显着地改进这些查询,在“坏查询”上减少到2-3s。
基本上,我只是遵循了https://www.postgresql.org/docs/14/textsearch-tables.html "12.2.2.创建索引“的步骤,从函数索引开始,然后在”列+索引“设置的末尾进行转换。
因此,我强烈推荐任何一个问这个问题的人来衡量他们的设置。
https://dba.stackexchange.com/questions/251307
复制相似问题