LLM应用开发与落地:chroma的近似搜索问题

背景

最近开始测试一个游戏客户的RAG模块,发现一个向量数据库中大家容易忽略的一个点:近邻搜索算法。一开始我们选择的是chroma作为向量数据库,因为chroma的用户接口和设计非常简单,而我偏向于简单。创建collection时设置的距离计算方式是 "hnsw:space": "cosine"。

但是在测试过程中发现,使用 "为什么宗族商店贡献每天都会减少? " 去向量数据库中查询的时候,发现无法查到最匹配的句子 "宗族商店贡献每天都会无故减少,这是什么原因? "。

入库问题

一开始我以为是bug,是不是这句话没有入到向量数据库,然后查询了下,发现这句话是在向量数据库中的,并且距离为0

lua 复制代码
distances: [[0.0]]documents: [['宗族商店贡献每天都会无故减少,这是什么原因?']]

然后我再单独写了个脚本用 "为什么宗族商店贡献每天都会减少? "这句话去搜索最近邻向量,确实没有查询到 "宗族商店贡献每天都会无故减少,这是什么原因? "

向量计算问题

然后我怀疑是不是使用的embedding 模型计算这两个句子时计算出来的向量距离就是比较远。单独自己写了个生成这两个句子的向量并计算余弦距离的工具,计算出来发现结果是 0.02539,也符合预期。

chroma 的近邻查找算法

最后只能怀疑chroma的近邻搜索算法了。找了下chroma的资料,没有明确说是用什么近邻搜索算法,也没有更多的配置。但从设置距离计算公式的配置中的命名 "hnsw:space": "cosine"猜测是使用的 hnsw 算法。这是一种 Approximate Nearest Neighbor Search (ANNS) ,近似的最近邻搜索算法。但是我感觉还是chroma的实现有点问题,然后开始去对比其他向量数据库。

qdrant

快速看了一下其他向量数据库,发现 qdrant是少有几个做了准确率压测的,还支持 Quantization,可以在速度和准确率之间选择最适合自己的。详细见:qdrant.tech/documentati...

我快速搭建了qdrant,把数据导入到qdrant后,在没有配置Quantization的情况下,可以通过 "为什么宗族商店贡献每天都会减少? "去搜索最近邻向量,返回了 "宗族商店贡献每天都会无故减少,这是什么原因? " ,详细如下:

python 复制代码
[ScoredPoint(id=120000, version=508, score=0.9746094, payload={'a': 12, 'q': '宗族商店贡献每天都会无故减少,这是什么原因?'}, vector=None, shard_key=None)]

也是用cosine计算距离,这里的1 - score 就是距离,跟之前计算出来的 0.02539 对得上。所以即使都是hnsw算法,不同的实现出来的准确率还是不一样的。

hnsw 算法

关于hnsw 这种近似的最近邻搜索算法网上文章很多,大家感兴趣的去搜索一下即可。之前遇到这些算法我都会去细究,毕竟我也是打ACM过来的,但是现在实在没有时间。AI这块发展太快了,这么多年学习过来的感触是知识真的学不完,需要再学吧。

总结

网上很多介绍向量数据库的,基本都是浅浅带过,或者把文档中文翻译一下。很多东西还是得亲自去实践过后才知道很多细节。选择向量数据库还是得看下索引实现方式,是否支持量化索引,响应速度,准确率等等。

纸上得来终觉浅,绝知此事要躬行。

相关推荐
会飞的老朱1 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º3 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
Codebee5 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º6 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys6 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56786 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子6 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能6 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144877 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile7 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算