ChromaDB距离计算公式示例

张开发
2026/4/9 1:34:25 15 分钟阅读

分享文章

ChromaDB距离计算公式示例
faiss和chromadb是LLM时代两种重要的轻量级向量库实现方式。之前探索了使用向量库faiss和LLM判断问题是否被记录。https://blog.csdn.net/liliang199/article/details/159476341这里进一步探索chromadb距离计算公式所用示例参考和修改自网络资料。1 ChromaDB距离计算ChromaDB支持三种核心距离计算方式分别通过l2、cosine和ip三个参数来指定。ChromaDB默认使用l2即平方后的欧几里得距离。1.1 平方欧几里得距离平方欧几里得距离 (Squared L2)衡量两个向量在空间中的直线距离对向量长度敏感。其计算公式为适应于向量未经归一化处理或注重绝对差异的场景。1.2 余弦距离 (Cosine)基于“余弦相似度”衍生而来。它计算的是向量间的夹角关注方向的差异而非长度。其公式为在ChromaDB中余弦距离是核心概念值越接近0表示向量越相似。余弦距离对向量的绝对数值不敏感。例如一个小学生[0.13, 0.16, 0.05]和一个大学生[0.63, 0.84, 0.45]的知识向量长度差异很大但方向相似都是数学突出因此它们的余弦距离很小。余弦距离适应于文本、语义相似度等注重方向而非长度的场景。1.3 内积距离 (ip)内积距离(Inner Product / Dot Product) |ip| 也叫点积它是计算两个向量点积的负数(或补数)用于衡量向量在彼此方向上的投影大小。在ChromaDB中内积距离公式可以理解为通常如果某个距离计算为内积其值越小相似度越高。内积距离通常用于优化过的场景如配合特定嵌入模型使用。2 距离计算代码示例2.1 如何设置距离计算方式ChromaDB允许在创建集合Collection时指定计算方式一旦创建就无法修改。以下是Python示例import chromadb # 创建客户端使用内存模式 client chromadb.Client() # 1. 使用默认的 L2 距离等价于下面这行 collection_default client.create_collection(my_collection_l2) # 2. 显式设置使用 Cosine 距离 collection_cosine client.create_collection( namemy_collection_cosine, metadata{hnsw:space: cosine} # 设置为余弦距离 ) # 3. 显式设置使用 Inner Product (点积) 距离 collection_ip client.create_collection( namemy_collection_ip, metadata{hnsw:space: ip} # 设置为内积距离 ) # 添加一些示例向量 collection_cosine.add( ids[id1, id2, id3], embeddings[[1.2, 2.3, 3.4], [0.5, 1.2, 2.1], [1.0, 2.0, 3.0]] ) # 查询并返回距离分数 results collection_cosine.query( query_embeddings[[1.1, 2.2, 3.3]], n_results2, include[distances] # 返回距离分数 ) print(results[distances])在新版Chroma(v1.0以上)中推荐使用更规范的configuration参数来设置更具可维护性。2.2 距离计算的关联影响使用不同的距离计算方式也可能影响到某些查询功能1距离阈值ChromaDB中的Max Query Distance参数用于筛选结果其最大值的范围会因您选择的距离计算方式而不同2距离分数解读在ChromaDB中similarity_search_with_score函数返回的分数其实是距离值。分数越低代表相似度越高这点与相似度的直观感受是相反的。如果需要快速验证设置可使用ChromaDB内存模式或Docker方式无需进行复杂的配置。reference---collectionshttps://cookbook.chromadb.dev/core/collections/#Frequently Asked Questions and Commonly Encountered Issues¶https://cookbook.chromadb.dev/faq/如何使用向量库faiss和LLM判断问题是否被记录https://blog.csdn.net/liliang199/article/details/159476341

更多文章