InternLM / HuixiangDou

HuixiangDou: Overcoming Group Chat Scenarios with LLM-based Technical Assistance
BSD 3-Clause "New" or "Revised" License
1.12k stars 92 forks source link

多模态RAG相关问题 #297

Closed douyh closed 2 weeks ago

douyh commented 3 weeks ago

detail | 详细描述 | 詳細な説明

最近学习了一些RAG相关的基础知识,想请教一下,如果需要做多模态的RAG有没有什么推荐的流程?

现在我的思路是这样的,搭建检索框架的话应该用langchain, faiss就可以,但是不是很清楚应该使用哪些模型来做特征提取?比如如果是用CLIP做特征提取的话,应该只能得到一个非常笼统的特征,如果需要很细粒度的特征的话,是不是可以把多模态大模型的视觉token存下来,或者用imagebind这种多模态的模型?

请问有什么推荐的思路吗?感谢。

tpoisonooo commented 3 weeks ago

我是产品/需求驱动的思路。 不是 langchain 那套通用的、中间件的思路。

首先,你要拿多模态 RAG 干啥?

然后,才能说是否需要 CLIP 提特征。万一只需要对图像文字描述呢。

tpoisonooo commented 3 weeks ago

要不,先写几个软工视角的用例 ?

douyh commented 3 weeks ago

我是产品/需求驱动的思路。 不是 langchain 那套通用的、中间件的思路。

首先,你要拿多模态 RAG 干啥?

然后,才能说是否需要 CLIP 提特征。万一只需要对图像文字描述呢。

从技术的角度来说,对图像或者视频做文字描述,然后再做文本的embedding是比较容易实现的,但是从产品或者应用的角度来说,这样是有明显的缺陷的。因为做描述的时候可能会有描述不清楚,出现幻觉,或者漏掉关键信息的可能性,这样在检索的时候就会因为描述工具的问题出错。这种错误可能不是描述工具性能导致的,而是我们无法一一列举用户可能的query,因此无法提前设计一个全面且正确的prompt导致的。在这样的情况下,对图像或者视频提取多模态特征,如果这些特征能够跟用户query的文本特征在同一个空间中对齐,就可以实现回答用户所有可能的query。在这种状态下,系统的准确率和召回率压力就会转移到这个多模态对齐的模型上,所以想请教一下这种情况下应该使用什么样的模型来做这个事情?比如是不是可以直接用VLM的视觉token作为特征进行缓存?

tpoisonooo commented 3 weeks ago

我没自己跑过,以下都是揣测:

  1. 直接用 token_id 肯定不对的。 试试 token 映射后的 embedding, 想象中(例如 vary 这篇工作),它的文本和图像,最后都在同一个 latent space 里

  2. multi-vector 查询。 也不是非要找大一统的模型,各论各的,最后加权

tpoisonooo commented 3 weeks ago

顺带,容我给佬打个广告 https://github.com/Ucas-HaoranWei/Vary

代码有点子乱,但设计是没问题的。

tpoisonooo commented 3 weeks ago

https://arxiv.org/pdf/2406.04292 @douyh

douyh commented 3 weeks ago

我没自己跑过,以下都是揣测:

  1. 直接用 token_id 肯定不对的。 试试 token 映射后的 embedding, 想象中(例如 vary 这篇工作),它的文本和图像,最后都在同一个 latent space 里
  2. multi-vector 查询。 也不是非要找大一统的模型,各论各的,最后加权

这里multi-vector查询有一些例子吗,没有太理解

douyh commented 3 weeks ago

顺带,容我给佬打个广告 https://github.com/Ucas-HaoranWei/Vary

代码有点子乱,但设计是没问题的。

我学习一下

douyh commented 3 weeks ago

https://mp.weixin.qq.com/s/0nlDgc6why1X5CaJCGj-pQ 最近还看到有一个这个模型