你的query是什么,你召回的就是什么?
我们使用的是openai的embedding 模型,对 query 和 目标document 做向量化,然后查找与query 向量距离最小的段落。
对于我们的query,我们要清楚的知道,预期返回的是什么?
比如你的query是一个很细的问题,比如 ai 算力芯片是什么? 你有可能召回很多ai芯片的内容。
比如你的query是一个很宽泛的问题,比如 对比AI算力芯片竞争格局,你可能很难召回有效的零碎信息,除非有一个段落专门讲AI芯片格局。所以你query的总归是要找相似的东西,你召回不了,哪些需要推理,归纳和总结的素材。
ai算力芯片是什么? 这是一个小的query, AI算力芯片竞争格局这是一个很大的query。
对 大query 的拆解
总体的使用效果来看,AI 目前还不适合解决很难的问题,你需要将问题拆分成小问题,可能会达到很好的效果。
比如“AI芯片竞争格局”,你可以拆成,AI 芯片公司有哪些,AI芯片公司的营收有哪些,每一家的技术是怎么样的。然后收集搜索的素材在让AI 做整合归纳。 AI 对小任务的效果好过大任务。
chatpdf等 emebedding模式的局限性
如果你的query是一个大的问答,基本不适合用embedding模式,而适合用推理模式,推理模式是什么?
举一个chatpdf的例子,有很多query 它无法回答,但是你要问:这个是doc的文档目录,请问哪几个小节可能帮我们找到query的答案,他会基于推理给你返回一些范围,在这个小范围内,我们在做素材的整理和归纳,有可能解决你的问题。
embedding 召回的阈值
个人评测下来openai-ada,0.2 召回的的相似度就比较高了,比如90%,超过0.3就会直线下降,比如50%。
其他经验
- 越具体的问题和query,召回效果越好,越宽泛的问题,召回效果越差。
网友评论