沈阳网站推广优化公司哪家好,手机网站前端写法,娄底建设网站的公司,wordpress更改域名后一、多模态RAG OpenAI开发日上最令人兴奋的发布之一是GPT-4V API#xff08;https://platform.openai.com/docs/guides/vision#xff09;的发布。GPT-4V是一个多模态模型#xff0c;可以接收文本/图像#xff0c;并可以输出文本响应。最近还有一些其他的多模态模型#x… 一、多模态RAG OpenAI开发日上最令人兴奋的发布之一是GPT-4V APIhttps://platform.openai.com/docs/guides/vision的发布。GPT-4V是一个多模态模型可以接收文本/图像并可以输出文本响应。最近还有一些其他的多模态模型LLaVa和Fuyu-8B。
在过去的一年里大部分应用程序开发都是围绕文本输入/文本输出范式。最典型的例子之一是检索增强生成RAG——将LLM与外部文本语料库相结合对模型未经训练的数据进行推理。通过处理任意文档比如PDF、网页将其切分为块并存储到向量数据库中然后通过检索到相关的块输入给LLM让LLM给出用户期待的回复。 与标准RAG pipeline对比我们看一下多模态RAG的所有步骤
输入输入可以是文本或图像。
检索检索到的上下文可以是文本或图像。
合成答案可以在文本和图像上合成。
响应返回的结果可以是文本和/或图像。 也可以在图像和文本之间采用链式/顺序调用例如检索增强图像字幕或在多模态代理进行循环。
二、多模态LLM OpenAIMultiModal类可以直接支持GPT-4V模型ReplicateMultiModal类可以支持开源多模式模型目前处于测试版因此名称可能会更改。SimpleDirectoryReader能够接收音频、图像和视频现在可以直接将它们传递给GPT-4V并进行问答如下所示
from llama_index.multi_modal_llms import OpenAIMultiModalfrom llama_index import SimpleDirectoryReaderimage_documents SimpleDirectoryReader(local_directory).load_data()openai_mm_llm OpenAIMultiModal( modelgpt-4-vision-preview, api_keyOPENAI_API_TOKEN, max_new_tokens300)response openai_mm_llm.complete( promptwhat is in the image?, image_documentsimage_documents) 与默认具有标准的完成/聊天端点的LLM类不同多模态模型MultiModalLLM可以接受图像和文本作为输入。
三、多模态嵌入 我们介绍一个新的MultiModalEmbedding基类它既可以embedding文本也可以embedding图像。它包含了我们现有嵌入模型的所有方法子类BaseEmbedding但也公开了get_image_embedding。我们在这里的主要实现是使用CLIP模型的ClipEmbedding。
四、多模态索引与检索 MultiModalVectorIndex可以从向量数据库中索引文本和图像。与我们现有的最流行的索引VectorStoreIndex不同这个新索引可以存储文本和图像文档。索引文本与之前是一样的——使用文本嵌入模型嵌入的并存储在矢量数据库中。图像索引是一个单独的过程如下所示、
使用CLIP嵌入图像使用base64编码或路径表示图像节点并将其与嵌入一起存储在矢量数据库中与文本分离。 我们将图像和文本分开存储因为我们可能希望对文本使用纯文本嵌入模型而不是CLIP嵌入例如ada或sbert。
在检索期间我们执行以下操作
通过在文本嵌入上进行矢量搜索来检索文本通过在图像嵌入上进行矢量搜索来检索图像
文本和图像作为节点返回到结果列表中然后再汇总这些结果。
五、多模态RAG实战 下面我们以查询特斯拉为例展示llama_index实现多模态RAG根据给出特斯拉的网站或车辆、SEC填充物和维基百科页面的截图来查询特斯拉。
加载文本和图像混合文本
documents SimpleDirectoryReader(./mixed_wiki/).load_data() 然后我们在Qdrant中定义两个独立的矢量数据库一个用于存储文本文档一个用于存储图像。然后我们定义一个MultiModalVectorStoreIndex。
# Create a local Qdrant vector storeclient qdrant_client.QdrantClient(pathqdrant_mm_db)text_store QdrantVectorStore( clientclient, collection_nametext_collection)image_store QdrantVectorStore( clientclient, collection_nameimage_collection)storage_context StorageContext.from_defaults(vector_storetext_store)# Create the MultiModal indexindex MultiModalVectorStoreIndex.from_documents( documents, storage_contextstorage_context, image_vector_storeimage_store) 最后我们可以通过我们的多模态语料库进行提问。
示例1检索增强字幕 我们复制/粘贴初始图像标题作为输入以获得检索增强输出
retriever_engine index.as_retriever( similarity_top_k3, image_similarity_top_k3)# retrieve more information from the GPT4V responseretrieval_results retriever_engine.retrieve(query_str)
检索到的结果包含图像和文本 我们可以将其提供给GPT-4V以提出后续问题或综合一致的回答 示例2多模态RAG查询 我们提出了一个问题并从整个多模态RAG pipeline中得到回应。SimpleMultiModalQueryEngine首先检索相关图像/文本集并将其输入给视觉模型以便合成响应。
from llama_index.query_engine import SimpleMultiModalQueryEnginequery_engine index.as_query_engine( multi_modal_llmopenai_mm_llm, text_qa_templateqa_tmpl)query_str Tell me more about the Porscheresponse query_engine.query(query_str) 生成的结果来源如下所示 参考文献
[1] https://blog.llamaindex.ai/multi-modal-rag-621de7525fea
[2] https://github.com/run-llama/llama_index/blob/main/docs/examples/multi_modal/llava_multi_modal_tesla_10q.ipynb