贫瘠之地

出来混最重要的是什么?是出来

索引(Indexing)API 支持将任何来源的文档加载到向量存储中并保持同步,具体来说有助于:

  • 避免重复数据写入向量数据库
  • 避免重写未更改的数据
  • 避免在未更改的内容上重新计算 embeddings

这些目标可以帮助节省时间和金钱、改进矢量搜索结果

重要的是,即使原始文本经过了一些转换步骤(例如文本切分 chunking)索引依然可以生效

如何工作

阅读全文 »

当使用 Java 或任何其他基于 JVM 的编程语言时,其中一个核心功能是内存清理(垃圾回收)

和 C 和 C++ 等语言不同,使用者不需要关注内存相关的操作,例如 malloccallocreallocfree 等函数

释放内存的操作就是由 JVM 中名为 Garbage Collector 的角色完成的

垃圾回收器是如何工作的

JVM 在后台运行垃圾回收器来查找未使用的引用,这些引用占用的内存可以被释放并重新使用

阅读全文 »

背景

在 n 个数中,如何让抽到每一个数的概率相等

可以产生一个随机数,n 个数则在 [1,n] 中产生一个随机数即可

但如果涉及到外部数据,即一次并不能全部读取 n 个数(n 未知);例如一共 1000 个数据,一次只能加载 10 个,那么再每 10 个加载一次,总共加载 100 次的过程中如何保证最终取到的值满足 1/n

使用水塘抽样算法可以解决

阅读全文 »

背景

之前一直对索引分析中 type range 有误解

下面是官方文档对 type range 的解释

range can be used when a key column is compared to a constant using any of the =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, LIKE, or IN() operators:

1
2
3
4
5
6
7
8
9
10
11
SELECT * FROM tbl_name
WHERE key_column = 10;

SELECT * FROM tbl_name
WHERE key_column BETWEEN 10 and 20;

SELECT * FROM tbl_name
WHERE key_column IN (10,20,30);

SELECT * FROM tbl_name
WHERE key_part1 = 10 AND key_part2 IN (10,20,30);

IN 查询下的 range 什么时候会恶化为 ALL 呢?按照我之前的理解,可能有两点

阅读全文 »
0%