背景
Chroma query 底层查询的 query 思想是相同的,甚至在vector db 的世界中,都大同小异。如果你有看前面写的 RAG与LLM原理及实践(5)--- Chroma query 源码分析
应该比较清楚query的运作原理,说直白就是在memory或是disk中通过暴力查询比较与HNSW算法(NSW算法的变种,分层可导航小世界)进行分析得到。
其中向量比较的几种方式,如果你看了前面写的 RAG与LLM原理及实践(4)--- 语义相似度距离衡量的三种方式chroma示例 应该也比较清楚,就是cosine,l2,ip 几种比较方式。
这是底层运作的基本思想。但是站在应用层的角度,query可以有所不同。下面的内容聚焦在站在应用层的角度,从chroma源码进行分析,彻底理解 query 在应用层上的调用及使用场景。在开始说明具体问题之前,你需要了解在词句评估时,几个比较重要的概念。
Similarity & Redundancy
相似度 (Similarity) 与 冗余度 (Redundancy)是两个不同概念,它们用于在选择嵌入时评估嵌入与查询之间的关系以及已选集合之间的关系。