项目实战 (8)--- 查询逻辑层优化
目录
背景
技术衡量与方案
一种可实现方案
可实现方案及设计描述
可能存在的问题
一种创新实现方案
方案的改良设计
策略公式
优化的实现
完整代码
代码解释
异常场景的考量
处理方式
运行注意事项
运行结果
结果优化对比与解释
背景
在项目实战 ---- 商用落地视频搜索系统(3) --- 数据综合查询设计与实现-CSDN博客中,已经设计并实现了基于视频的查询,这种前期较完善的设计机制结合了向量数据库本身的特点与系统的并发性,同时兼顾了并在向量collection设计阶段尽量减少冗余,达到标准的范式设计的目标。但作为一款完整商用落地的视频搜索系统,可能还需要借助语义文本一起辅助完成最终的搜索。在视频内容搜索的基础上加入视频描述的搜索,并实现最终的排序输出才能是一个完美的视频搜索。但作为商用落地系统,有很多情况需要考虑,比如描述标签的缺失,如何综合衡量内容与描述的一致性给出综合判断,如何考虑客户的喜好,从极限的角度蜕变系统为从内容或从语义角度搜索。当内容与语义搜索出现很多不一致性时,该如何校正处理。整个过程的衡量算法该如何建模等等问题。应该说整个搜索的过程及建模看似已经非常清晰,但在实际建模及商用过程中,你会发现很多问题需要处理。我们一步一步完善这一部分,我会讲清楚里面的设计思路,代码构建,及给出源码,源码分析。
技术衡量与方案
熟悉向量数据库的朋友都知道,在诸如milvus 等高级向量数据库的search 中,存在两种hybrid 排序手段,一种是 weighted 模型,一种是 rrf 模型。关于这两个模型的内涵,使用及源码分析在另一个专栏https://blog.csdn.net/talentyiyy/category_12708398.html 里写的比较清楚,如果不明白自行查阅即可,目前主要是大型应用层面的思考。设计上,你可能会直觉的认为最简单的过程应该是相对比较简单的。但作为商用化,其实这里有些问题值得思考与探索。
一种可实现方案
可实现方案及设计描述
首先根据项目实战 ---- 商用落地视频搜索系统(3) --- 数据综合查询设计与实现-CSDN博客计算出视频内容的相似度id 集合,记为 collection1。
再从collection1中,使用 vector search,找到在 collection1 中的 video 语义相似度llm作为排序结果,记为 collection2。
你可以认为最后 collection2中的 video_id 排序结构就是最终答案。
这种思想方式在一些项目上是ok的,思路是没有大问题。但是有的场景确不能使用这种方式。
可能存在的问题
这种思想是局限在所有已经搜索后的视频结果中,完全是以搜索视频内容为主,在他的基础上,在经过一次语义排序。我们只是将最终答案的搜索局限在了视频搜索的基础上,这本身在某些场景下存在不合理性。你可以想象,本来视频内容搜索位于 rank1的video,因为语义描述的偏差 排在了 rank5的位置,这显然是不合理的。另外对于没有入围的video,如果video本身描述高度一致,本来是有机会入围的,所以导致了最终结果的偏差。
一种创新实现方案
在处理这种问题时,我采用将
