LlamaIndex MultiModal RAG

Multi-Modal Applications - LlamaIndex

1.用clip图+文转vector 存到并检索向量数据库(dqrant/chroma)

能力:图/文 查 图/文;

图CLIP embedding + 文:默认?(gpt ada embeding ?)

2. 直接使用多模态模型(完整RAG)

图/文 查 图/文;+ 多模型大模型合成;

默认queryengine:图+文转vector 存到并检索向量数据库(dqrant/chroma);大模型合成结果

GPT:      CLIP embedding +  gpt ada embeding ?  +  GPT4V

GEMINI: embeding001                                           + gemini pro

3. 图转文embeding,基于文本(可以时结构化的) 存库并检索。

- 结构的,可以实现类似查询SQL一样查询(过滤出)数据(并且附带对于的图)

- 非结构的,可以查到语言相关的记录,实现RAG。(从库中获取更多事实信息)

LlamaIndex FT 

Fine-Tuning - LlamaIndex

1. FT embedding

基于base embeding模型,训练1个新的adapter embeding (本质上是加深了embeding 网络的层数,甚至可以customize自定义更复杂的结构?)

用于提高对新知识(任意文本) 的表达能力,从而提高检索的性能(更好的相关性)。

2. FT cross-encoder

基于base 模型(默认bert?),训练1个新的小模型,通过cross encoder 监督训练 (训练数据是对文本对和正确性/相关性打标 1代表正确/相关 0代表不正确/不相关)。相当与让ft bert做分类任务?

用于在index检索到相关文本段后,重新排序(rerank),根据相关性排序。

* 好像有个专业的模型cohere,专门做检索(embeding + rerank)?

3. FT LLM (peft + lora)

基于LLM模型(任意),训练出1个新的微调后的FT_LLM。这是真正的微调大模型本身,基于peft lora修改部分模型参数。提高模型性能。

*“蒸馏”训练数据通常是用“最好”的模型基于RAG生成N个QA 或 QueationContextRefrenceAnswer等,喂给待微调的模型。

  • 用于 补充模型知识(减少幻觉)
  • 用于 让模型学会一种“语言”/”风格“,比如更好的按格式输出(SQL)
  • 用于 从更强的模型(已学会相关知识/模式/风格等)“蒸馏”知识到相对小一些模型。
     

4. FT GPT3.5 (open ai ft api)

训练数据准备思路和(3)一样;训练过程 llamaindex 封装了openai的FT接口,数据上传,opanai云服务完成训练。

LlamaIndex Agent

1. Agent with Tools (RAG/Simple Fn/Other Agents)

框架对agent和Tools有统一的接口和封装,Agent (tools, llm) ; 所有LLM需要向外对接的都是工具(subclass)

Llamaindex针对多文档,给出了对应的MultiDocAgent实现(含TopAgent通过ObjectIndex决定需要查询那些subDocs,即调用那些子文档对应的QueryEngineTool),对比nativeRAG(直接使用QueryEngineTool)效果要好。特别是,文档对比时。

2. Agent (Protocol)

Fundamental Protocol: Function Call / Planning/ SubTasking //目前看来是重要的底层protocol,大模型agent的基础
React (Reason and Act)   //可能研究的比较多效果较好的方法
CoA (Chain of abstraction)  //有介绍,论文/文档中建议gpt4级别的,或针对性训练的LLM
Lats (LLM agent with tree search)  //这个是React的升级版?(TOT的一种协议实现?)



3. 改写

输入改写例子:增加步骤,先通过llm尝试理解用户的意图,返回完整的query,再开始pipeline; 比如HyDE,比如textToSQL retry;

输出改写例子:InflectionAgent(mainagent + critricAgent),C打分,M修改,循环直到neutral。

4. WORKFLOW

基于nvidia nim展示了一个workflow例子:写blog。给一堆文档(可以基于multidocumentagent?topAgent + docAgent)作为queryEngineTool,定义一个工作流(outline --> start_loop -> questions -> subquestions -> answer each query by RAG -> critique ->end_loop when pass, else restart loop for revision --> synthesize final blog)

5. Evaluation

例子给了正确性和语义近似,方便开发者使用:

    CorrectnessEvaluator,
    SemanticSimilarityEvaluator,
    BatchEvalRunner,

LlamaIndex Agent (based on OpenAI)

1. OpenAI 提供了Assitant 功能和API

行业标杆?所以几乎所有大模型的平台都有了自定agent的功能,也是低代码的开发,并提供了API。 agent直接封装到了平台里面,应用侧给数据调接口。

2. 基于OpenAI普通模型chat.complete接口

- prompt中system字数限制,改用让模型参考query,并将工具说明写在query里面。

- gpt支持1个response返回多个tool calls

- call parser (给的用例相当于对json报文做修正,避免异常;当然可以更复杂,是人工处理结果的地方)

- with query engine tools (llamaindex的强项,RAG as tool, 将复杂的高级向量查询封装成tool,参考:multiple documents query, sub doc query, object index等)

- force function call 

- Query Planing (先制定计划分解任务,执行,合并结果; 有点类似StructuedPlanningAgent,后者会随着任务执行refineplan)

------------------------------------------------------------------------------------------------------------

x. 开箱即用Agent?

ComplierAgent   //多工具调用参考实现?可能优化了并发调用,计划(找到工具依赖)等技术实现,简化了开发?(input rewrite?) + plan + object index + tool calling + refine + critique ? 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐