欢迎来到Xugang的小屋
-
HNSW图的构建(Lucene 9.8.0)
Lucene基于论文Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs [2018]实现... -
索引文件之vec&vem&vemf&vemq&veq&vex(Lucene 9.9.0)
在文章索引文件之vec&vem&vex(Lucene 9.8.0)中介绍了Lucene 9.8.0版本向量数据相关的索引文件(必须先阅读下,很多重复的内容不会再提起),由于在Lucene 9.9.0中引入了Scalar Quant... -
Vector Similarity Computations FMA- style
介绍下一篇基于FMA(Fused Multiply-Add)利用SIMD的文章。 原文地址:https://www.elastic.co/search-labs/blog/articles/vector-similarity-computat... -
NumericUtils(Lucene 9.8.0)
Lucene中用BKD存储的数值无论是哪种类型(long,int,float,double,BigInteger),为了便于使用相同的代码逻辑中实现BKD的遍历以及优化存储,都统一使用字节数组byte[]描述原值(original value)并... -
索引文件之vec&vem&vex(Lucene 9.8.0)
本篇文章将介绍Lucene中向量搜索相关的索引文件。当前版本中由三个索引文件,即文件后缀名为.vec、.vex、.vem的文件,文件中包含的内容主要包括图的分层信息,每一层中节点的编号,向量值,相连的邻居节点等信息。 向量搜索的实现基于这篇论... -
Scorer(Lucene 9.6.0)
阅读文本之前,建议先看下文章ImpactsDISI,有助于理解。先直接给出Scorer在Lucene中的注释: 图1: 图1中的注释已经几乎不能完全用于理解Scorer类,因为这个类经过十几年的迭代,注释却没有保持更新,甚至部分描述还不准确... -
ImpactsDISI(Lucene 9.6.0)
在文章BulkScorer(一)中,我们介绍了抽象类DocIdSetIterator类,而ImpactsDISI是DocIdSetIterator的其中一种实现,当排序规则为文档打分值时,使得在查询TopN遍历文档时,可以跳过那些不具备竞争力的文... -
BulkScorer(二)(Lucene 9.6.0)
本篇文章我们继续介绍BulkScorer的其他子类,下图为BulkScorer主要的几个子类,其中DefaultBulkScorer的介绍可以见文章BulkScorer(一): 图1: ReqExclBulkScorer 实现逻辑 Re... -
BulkScorer(一)(Lucene 9.6.0)
本篇文章介绍在查询阶段,BulkScorer相关的知识点,在查询流程中的流程点如下红框所示: 图1: 父类BulkScorer BulkScorer类的定位是一个对满足查询条件的所有文档号进行收集的最初入口。在执行完该类的方法一后,Luc... -
段的多线程查询(一)(Lucene 9.6.0)
前段时间有个朋友问到我:对多个段进行查询时,为什么在定义IndexSearcher时使用了Executor后,相比较单个线程轮询方式查询相同的多个段,查询速度并没有提升,有时候还下降了?本篇文章会介绍多线程查询中的一些知识点,给与大家在解决性能问...