Chengshuo Dai
Back to Blog

万物皆可Embedding

Embedding & Vector Database

今天花时间弄懂了 Embedding(向量化)到底是个什么鬼。

简单来说,它就是把一段文字变成了一个包含几千个浮点数的数组。在这个高维的数学空间里,意思相近的词或者句子,它们对应的坐标就会靠得很近。比如“苹果”和“橘子”的距离,肯定比“苹果”和“汽车”的距离要近。

感觉这就像是给人类的语言建立了一个数学坐标系。

顺便了解了一下向量数据库(比如 Pinecone 和 Milvus)。当我们的向量多到几百万个的时候,暴力遍历计算距离太慢了。所以数据库会用一些特殊的索引算法,比如 HNSW(分层导航小世界)。

看 HNSW 原理的时候我有点晕,大概懂了它是在构建一种多层的图结构,搜索的时候从稀疏的上层快速定位,再到密集的下层精确查找。感觉和跳表(Skip List)有点像。具体的底层 C++ 实现我就先不深究了,目前把它当个好用的黑盒 API 调用就行。