La generación aumentada de recuperación (RAG) se ha vuelto cada vez más popular como una forma de mejorar la calidad del texto generado por los modelos de idiomas grandes. Ahora que los LLM multimodales están en Vouge, es hora de extender RAG a datos multimodales.
Cuando agregamos la capacidad de buscar y recuperar datos en múltiples modalidades, obtenemos una herramienta poderosa para interactuar con los modelos de IA más potentes disponibles en la actualidad. Sin embargo, también agregamos nuevas capas de complejidad al proceso.
Algunas de las consideraciones que debemos tener en cuenta incluyen:
En un nivel más práctico, estos son algunos de los perillas básicas que podemos girar:
Este proyecto es un Bed Test para explorar estas preguntas y más. Utiliza tres bibliotecas de código abierto, FiftyOne, Llamaindex y Milvus, para que el proceso de trabajar con datos multimodales, experimentando con diferentes técnicas de RAG multimodal y encontrar lo que funciona mejor para su caso de uso lo más fácil posible.
También tenga en cuenta que Llamaindex actualiza con frecuencia su API. ¿Es por eso que la versión de Llamaindex y sus paquetes asociados están fijados?
Primero, instale FiftyOne:
pip install fiftyoneA continuación, utilizando la sintaxis CLI de FiftyOne, descargue e instale el complemento de RAG multimodal FiftyOne:
fiftyone plugins download https://github.com/jacobmarks/fiftyone-multimodal-rag-pluginLlamaindex tiene un proceso de instalación detallado (si desea construir algo multimodal al menos). Afortunadamente para usted, esta (y todas las demás dependencias de instalación) se encargará de los siguientes comando:
fiftyone plugins requirements @jacobmarks/multimodal_rag --installPara comenzar, inicie la aplicación FiftyOne. Puede hacerlo desde el terminal ejecutando:
fiftyone app launchO puede ejecutar el siguiente código de Python:
import fiftyone as fo
session = fo . launch_app () Ahora presione la tecla Backtick ( ` ) y escriba create_dataset_from_llama_documents . Presione Enter para abrir el modal del operador. Este operador le brinda una interfaz de usuario para elegir un directorio que contenga sus datos multimodales (imágenes, archivos de texto, pdfs, etc.) y cree un conjunto de datos de cincuenta en él.
Una vez que haya seleccionado un directorio, ejecute el operador. Creará un nuevo conjunto de datos en su sesión de cincuenta. Para los archivos de texto, verá una representación de imagen del texto truncado. Para las imágenes, verá la imagen en sí.
Puede agregar directorios adicionales de datos multimodales con el operador add_llama_documents_to_dataset .
Ahora que tiene un conjunto de datos multimodal, puede indexarlo con Llamaindex y Milvus. Utilice el operador create_multimodal_rag_index para ingresar este proceso. Este operador le pedirá que nombre el índice y le dará la opción de indexar las imágenes a través de insertos o subtítulos. Si elige subtítulos, se le solicitará que seleccione el campo de texto para usar como leyenda.
Si no tiene subtítulos en su conjunto de datos, es posible que esté interesado en el complemento de subtitulación de imágenes de cincuenta.
fiftyone plugins download https://github.com/jacobmarks/fiftyone-image-captioning-plugin Una vez que haya creado un índice, puede inspeccionarlo ejecutando el operador get_multimodal_rag_index_info y seleccionando el índice que desea inspeccionar desde el menú desplegable.
Finalmente, puede consultar el índice con el operador query_multimodal_rag_index . Este operador le pedirá que ingrese una cadena de consulta y un índice para consultar.
También puede especificar el modelo multimodal para usar para generar los resultados acuáticos de recuperación, así como tanto el número de resultados de imagen y texto para recuperar.